Compare commits
2 Commits
ba996d3e45
...
368377f949
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
368377f949 | ||
|
|
1085744981 |
|
|
@ -17,9 +17,9 @@
|
||||||
<div class="sinps"></div>
|
<div class="sinps"></div>
|
||||||
<div class="sbtns">
|
<div class="sbtns">
|
||||||
<button data-lang class="btn" type="submit">查询</button>
|
<button data-lang class="btn" type="submit">查询</button>
|
||||||
<a data-lang class="btn" onclick="ManyKeyWordAdd()">批量添加</a>
|
<!-- <a data-lang class="btn" onclick="ManyKeyWordAdd()">批量添加</a>
|
||||||
<a data-lang class="btn" onclick="GenerateKeywords()">交叉生成</a>
|
<a data-lang class="btn" onclick="GenerateKeywords()">交叉生成</a>
|
||||||
<a data-lang class="btn" onclick="">AI联想</a>
|
<a data-lang class="btn" onclick="">AI联想</a> -->
|
||||||
<a data-lang class="btn" onclick="multiin()">导入</a>
|
<a data-lang class="btn" onclick="multiin()">导入</a>
|
||||||
<a data-lang class="btn" onclick="exportxls()">导出</a>
|
<a data-lang class="btn" onclick="exportxls()">导出</a>
|
||||||
<a data-lang class="btn def" onclick="pagehelp()">帮助</a>
|
<a data-lang class="btn def" onclick="pagehelp()">帮助</a>
|
||||||
|
|
@ -80,7 +80,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 批量添加 -->
|
<!-- 批量添加 -->
|
||||||
<div id="alert_batchAdd" style="display:none;">
|
<!-- <div id="alert_batchAdd" style="display:none;">
|
||||||
<div style="margin-bottom:10px;">
|
<div style="margin-bottom:10px;">
|
||||||
<label class="imp">所属栏目</label>
|
<label class="imp">所属栏目</label>
|
||||||
<ciy-select com="batch_cateid" style="width:200px;"></ciy-select>
|
<ciy-select com="batch_cateid" style="width:200px;"></ciy-select>
|
||||||
|
|
@ -92,37 +92,39 @@
|
||||||
电脑
|
电脑
|
||||||
耳机"></textarea>
|
耳机"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> -->
|
||||||
|
|
||||||
<!-- 交叉生成关键词功能 -->
|
<!-- 交叉生成关键词功能 -->
|
||||||
<div id="generateKeywords" style="display:none;">
|
<!-- <div id="generateKeywords" style="display:none;">
|
||||||
<div style="margin-bottom:10px;">
|
<div style="margin-bottom:10px;">
|
||||||
<label class="imp">所属栏目</label>
|
<label class="imp">所属栏目</label>
|
||||||
<ciy-select com="cross_cateid" style="width:200px;"></ciy-select>
|
<ciy-select com="cross_cateid" style="width:200px;"></ciy-select>
|
||||||
</div>
|
</div> -->
|
||||||
<div style="margin-bottom:10px;">
|
<!-- 三列容器 Flex 同行显示 -->
|
||||||
|
<!-- <div style="display:flex;gap:10px;">
|
||||||
|
<div style="flex:1;">
|
||||||
<label class="imp">核心词</label><br>
|
<label class="imp">核心词</label><br>
|
||||||
<textarea name="cross_dim1" style="width:100%;height:120px;padding:10px;" placeholder="一行一个,例如:
|
<textarea name="cross_dim1" style="width:100%;height:180px;padding:10px;" placeholder="一行一个
|
||||||
手机
|
手机
|
||||||
电脑
|
电脑
|
||||||
耳机"></textarea>
|
平板"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:10px;">
|
<div style="flex:1;">
|
||||||
<label class="imp">修饰词</label><br>
|
<label class="imp">修饰词</label><br>
|
||||||
<textarea name="cross_dim2" style="width:100%;height:120px;padding:10px;" placeholder="一行一个,例如:
|
<textarea name="cross_dim2" style="width:100%;height:180px;padding:10px;" placeholder="一行一个
|
||||||
新款
|
新款
|
||||||
特价
|
特价
|
||||||
防水
|
防水"></textarea>
|
||||||
无线"></textarea>
|
|
||||||
</div>
|
</div>
|
||||||
<div style="margin-bottom:10px;">
|
<div style="flex:1;">
|
||||||
<label>扩展词</label><br>
|
<label>扩展词</label><br>
|
||||||
<textarea name="cross_dim3" style="width:100%;height:80px;padding:10px;" placeholder="一行一个,例如:
|
<textarea name="cross_dim3" style="width:100%;height:180px;padding:10px;" placeholder="一行一个
|
||||||
包邮
|
包邮
|
||||||
官方正品
|
官方正品
|
||||||
2025款"></textarea>
|
2025款"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div> -->
|
||||||
|
|
||||||
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
||||||
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
||||||
|
|
@ -216,66 +218,66 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// 批量添加
|
// 批量添加
|
||||||
function ManyKeyWordAdd() {
|
// function ManyKeyWordAdd() {
|
||||||
ciyfn.alert({
|
// ciyfn.alert({
|
||||||
title: '批量添加关键词',
|
// title: '批量添加关键词',
|
||||||
width: 'pc',
|
// width: 'pc',
|
||||||
content: document.getElementById("alert_batchAdd").innerHTML,
|
// content: document.getElementById("alert_batchAdd").innerHTML,
|
||||||
fn_showed: function (doc, dom) {
|
// fn_showed: function (doc, dom) {
|
||||||
ciycmp({ dom: $5('[com=batch_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
// ciycmp({ dom: $5('[com=batch_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
||||||
},
|
// },
|
||||||
cb: function (opn) {
|
// cb: function (opn) {
|
||||||
if (opn.btn == "关闭") return opn.close();
|
// if (opn.btn == "关闭") return opn.close();
|
||||||
let cateid = $5('[com=batch_cateid]', opn.dom).val();
|
// let cateid = $5('[com=batch_cateid]', opn.dom).val();
|
||||||
let names = $5('[name=batch_names]', opn.dom).val();
|
// let names = $5('[name=batch_names]', opn.dom).val();
|
||||||
if (!cateid) { ciyfn.toast('请选择所属栏目'); return; }
|
// if (!cateid) { ciyfn.toast('请选择所属栏目'); return; }
|
||||||
if (!names) { ciyfn.toast('请输入关键词'); return; }
|
// if (!names) { ciyfn.toast('请输入关键词'); return; }
|
||||||
ciyfn.callfunc('BatchAdd', { cateid, names }, function (json) {
|
// ciyfn.callfunc('BatchAdd', { cateid, names }, function (json) {
|
||||||
table.cachecount = -1;
|
// table.cachecount = -1;
|
||||||
table.callpage();
|
// table.callpage();
|
||||||
opn.close();
|
// opn.close();
|
||||||
ciyfn.toast('批量添加成功');
|
// ciyfn.toast('批量添加成功');
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
btns: ["批量添加", "*关闭"],
|
// btns: ["批量添加", "*关闭"],
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
function GenerateKeywords() {
|
// function GenerateKeywords() {
|
||||||
ciyfn.alert({
|
// ciyfn.alert({
|
||||||
title: '交叉生成关键词',
|
// title: '交叉生成关键词',
|
||||||
width: 'pc',
|
// width: 'pc',
|
||||||
content: document.getElementById("generateKeywords").innerHTML,
|
// content: document.getElementById("generateKeywords").innerHTML,
|
||||||
fn_showed: function (doc, dom) {
|
// fn_showed: function (doc, dom) {
|
||||||
ciycmp({ dom: $5('[com=cross_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
// ciycmp({ dom: $5('[com=cross_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
||||||
},
|
// },
|
||||||
cb: function (opn) {
|
// cb: function (opn) {
|
||||||
if (opn.btn == "关闭") return opn.close();
|
// if (opn.btn == "关闭") return opn.close();
|
||||||
|
|
||||||
let cateid = $5('[com=cross_cateid]' , opn.dom).val();
|
// let cateid = $5('[com=cross_cateid]' , opn.dom).val();
|
||||||
let cross_dim1 = $5('[name=cross_dim1]' , opn.dom).val();//核心词
|
// let cross_dim1 = $5('[name=cross_dim1]' , opn.dom).val();//核心词
|
||||||
let cross_dim2 = $5('[name=cross_dim2]' , opn.dom).val();//修饰词
|
// let cross_dim2 = $5('[name=cross_dim2]' , opn.dom).val();//修饰词
|
||||||
let cross_dim3 = $5('[name=cross_dim3]',opn.dom).val();//扩展词
|
// let cross_dim3 = $5('[name=cross_dim3]',opn.dom).val();//扩展词
|
||||||
// console.log(cross_dim1);
|
// // console.log(cross_dim1);
|
||||||
if(!cateid) {ciyfn.toast('请选择所属栏目'); return;}
|
// if(!cateid) {ciyfn.toast('请选择所属栏目'); return;}
|
||||||
if (!cross_dim1) { ciyfn.toast('请填写核心词'); return; }
|
// if (!cross_dim1) { ciyfn.toast('请填写核心词'); return; }
|
||||||
if (!cross_dim2) { ciyfn.toast('请填写修饰词'); return; }
|
// if (!cross_dim2) { ciyfn.toast('请填写修饰词'); return; }
|
||||||
|
|
||||||
ciyfn.callfunc('GenerateKeywords', {
|
// ciyfn.callfunc('GenerateKeywords', {
|
||||||
cateid : cateid,
|
// cateid : cateid,
|
||||||
dim1 : cross_dim1,
|
// dim1 : cross_dim1,
|
||||||
dim2 : cross_dim2,
|
// dim2 : cross_dim2,
|
||||||
dim3 : cross_dim3
|
// dim3 : cross_dim3
|
||||||
}, function (json) {
|
// }, function (json) {
|
||||||
table.cachecount = -1;
|
// table.cachecount = -1;
|
||||||
table.callpage();
|
// table.callpage();
|
||||||
opn.close();
|
// opn.close();
|
||||||
ciyfn.toast(json.msg);
|
// ciyfn.toast(json.msg);
|
||||||
});
|
// });
|
||||||
},
|
// },
|
||||||
btns: ["生成", "*关闭"],
|
// btns: ["生成", "*关闭"],
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
// }
|
// }
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
||||||
|
|
@ -391,142 +391,143 @@ class keyword
|
||||||
return succjson();
|
return succjson();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 后端批量导入接口
|
// // 后端批量导入接口
|
||||||
public static function json_BatchAdd()
|
// public static function json_BatchAdd()
|
||||||
{
|
// {
|
||||||
global $db;
|
// global $db;
|
||||||
$rsuser = verifyfast();
|
// $rsuser = verifyfast();
|
||||||
$post = new \ciy\post();
|
// $post = new \ciy\post();
|
||||||
|
|
||||||
$font_cateid = $post->getint('cateid');
|
// $font_cateid = $post->getint('cateid');
|
||||||
$font_names = trim($post->get('names'));
|
// $font_names = trim($post->get('names'));
|
||||||
|
|
||||||
$Array_name = explode("\n", $font_names);
|
// $Array_name = explode("\n", $font_names);
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
$db->begin();
|
// $db->begin();
|
||||||
|
|
||||||
foreach ($Array_name as $name) {
|
// foreach ($Array_name as $name) {
|
||||||
$name = trim($name);
|
// $name = trim($name);
|
||||||
if ($name === '') continue;
|
// if ($name === '') continue;
|
||||||
|
|
||||||
$csql = new \ciy\sql('www_keyword');
|
// $csql = new \ciy\sql('www_keyword');
|
||||||
$csql->where('name', $name);
|
// $csql->where('name', $name);
|
||||||
$isExist = $db->get1($csql);
|
// $isExist = $db->get1($csql);
|
||||||
|
|
||||||
if ($isExist === '') {
|
// if ($isExist === '') {
|
||||||
$insertData = [
|
// $insertData = [
|
||||||
'cateid' => $font_cateid,
|
// 'cateid' => $font_cateid,
|
||||||
'name' => $name,
|
// 'name' => $name,
|
||||||
'usetime' => 0,
|
// 'usetime' => 0,
|
||||||
'addtimes' => tostamp()
|
// 'addtimes' => tostamp()
|
||||||
];
|
// ];
|
||||||
|
|
||||||
$csql_insert = new \ciy\sql('www_keyword');
|
// $csql_insert = new \ciy\sql('www_keyword');
|
||||||
$db->insert($csql_insert, $insertData);
|
// $db->insert($csql_insert, $insertData);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
$db->commit();
|
// $db->commit();
|
||||||
return succjson('批量添加成功');
|
// return succjson('批量添加成功');
|
||||||
// return succjson([
|
// // return succjson([
|
||||||
// 'data'=> $font_names,
|
// // 'data'=> $font_names,
|
||||||
// 'cateid'=>$font_cateid
|
// // 'cateid'=>$font_cateid
|
||||||
// ]);
|
// // ]);
|
||||||
} catch (\Exception $ex) {
|
// } catch (\Exception $ex) {
|
||||||
$db->rollback();
|
// $db->rollback();
|
||||||
return errjson('错误:'.$ex->getMessage());
|
// return errjson('错误:'.$ex->getMessage());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 交叉生成关键词
|
// 交叉生成关键词
|
||||||
public static function json_GenerateKeywords()
|
// public static function json_GenerateKeywords()
|
||||||
{
|
// {
|
||||||
global $db;
|
// global $db;
|
||||||
$rsuser = verifyfast();
|
// $rsuser = verifyfast();
|
||||||
$post = new \ciy\post();
|
// $post = new \ciy\post();
|
||||||
|
|
||||||
// 获取前端传参
|
// // 获取前端传参
|
||||||
$cateid = $post->getint('cateid');
|
// $cateid = $post->getint('cateid');
|
||||||
$dim1 = trim($post->get('dim1'));
|
// $dim1 = trim($post->get('dim1'));
|
||||||
$dim2 = trim($post->get('dim2'));
|
// $dim2 = trim($post->get('dim2'));
|
||||||
$dim3 = trim($post->get('dim3'));
|
// $dim3 = trim($post->get('dim3'));
|
||||||
|
|
||||||
if ($cateid == 0) {
|
// if ($cateid == 0) {
|
||||||
return errjson('请选择所属栏目');
|
// return errjson('请选择所属栏目');
|
||||||
}
|
// }
|
||||||
if (empty($dim1) || empty($dim2)) {
|
// if (empty($dim1) || empty($dim2)) {
|
||||||
return errjson('核心词 和 修饰词 不能为空');
|
// return errjson('核心词 和 修饰词 不能为空');
|
||||||
}
|
// }
|
||||||
|
|
||||||
// 转为数组
|
// 转为数组
|
||||||
$toArray = function ($text) {
|
// $toArray = function ($text) {
|
||||||
$arr = explode("\n", $text);
|
// $arr = explode("\n", $text);
|
||||||
$arr = array_map('trim', $arr);
|
// $arr = array_map('trim', $arr);
|
||||||
$arr = array_filter($arr);
|
// $arr = array_filter($arr);
|
||||||
return array_unique($arr);
|
// return array_unique($arr);
|
||||||
};
|
// };
|
||||||
|
|
||||||
$arr1 = $toArray($dim1);
|
// $arr1 = $toArray($dim1);
|
||||||
$arr2 = $toArray($dim2);
|
// $arr2 = $toArray($dim2);
|
||||||
$arr3 = $toArray($dim3);
|
// $arr3 = $toArray($dim3);
|
||||||
$keywords = [];
|
// $keywords = [];
|
||||||
|
|
||||||
if (!empty($arr3)) {
|
// if (!empty($arr3)) {
|
||||||
foreach ($arr2 as $a) {
|
// foreach ($arr2 as $a) {
|
||||||
foreach ($arr1 as $b) {
|
// foreach ($arr1 as $b) {
|
||||||
foreach ($arr3 as $c) {
|
// foreach ($arr3 as $c) {
|
||||||
$kw = $a . $b . $c;
|
// $kw = $a . $b . $c;
|
||||||
$keywords[$kw] = true;
|
// $keywords[$kw] = true;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
foreach ($arr2 as $a) {
|
// foreach ($arr2 as $a) {
|
||||||
foreach ($arr1 as $b) {
|
// foreach ($arr1 as $b) {
|
||||||
$kw = $a . $b;
|
// $kw = $a . $b;
|
||||||
$keywords[$kw] = true;
|
// $keywords[$kw] = true;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
$finalList = array_keys($keywords);
|
// $finalList = array_keys($keywords);
|
||||||
$total = count($finalList);
|
// $total = count($finalList);
|
||||||
$added = 0;
|
// $added = 0;
|
||||||
|
|
||||||
if ($total == 0) {
|
// if ($total == 0) {
|
||||||
return errjson('未生成有效关键词');
|
// return errjson('未生成有效关键词');
|
||||||
}
|
// }
|
||||||
|
|
||||||
try {
|
// try {
|
||||||
$db->begin();
|
// $db->begin();
|
||||||
foreach ($finalList as $name) {
|
|
||||||
$csql = new \ciy\sql('www_keyword');
|
// foreach ($finalList as $name) {
|
||||||
$csql->where('name', $name);
|
// $csql = new \ciy\sql('www_keyword');
|
||||||
$csql->column = 'id';
|
// $csql->where('name', $name);
|
||||||
|
// $csql->column = 'id';
|
||||||
$exists = $db->get1($csql);
|
|
||||||
|
// $exists = $db->get1($csql);
|
||||||
if ($exists) {
|
|
||||||
continue;
|
// if ($exists) {
|
||||||
}
|
// continue;
|
||||||
|
// }
|
||||||
$insert = [
|
|
||||||
'cateid' => $cateid,
|
// $insert = [
|
||||||
'name' => $name,
|
// 'cateid' => $cateid,
|
||||||
'usetime' => 0,
|
// 'name' => $name,
|
||||||
'addtimes' => tostamp()
|
// 'usetime' => 0,
|
||||||
];
|
// 'addtimes' => tostamp()
|
||||||
$db->insert(new \ciy\sql('www_keyword'), $insert);
|
// ];
|
||||||
$added++;
|
// $db->insert(new \ciy\sql('www_keyword'), $insert);
|
||||||
}
|
// $added++;
|
||||||
|
// }
|
||||||
$db->commit();
|
|
||||||
return succjson("生成成功:共 {$total} 条,新增 {$added} 条");
|
// $db->commit();
|
||||||
|
// return succjson("生成成功:共 {$total} 条,新增 {$added} 条");
|
||||||
} catch (\Exception $e) {
|
|
||||||
$db->rollback();
|
// } catch (\Exception $e) {
|
||||||
return errjson("错误:" . $e->getMessage());
|
// $db->rollback();
|
||||||
}
|
// return errjson("错误:" . $e->getMessage());
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,169 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
|
||||||
|
<link href="/jscss/style.css" rel="stylesheet" type="text/css" />
|
||||||
|
<script type="text/javascript" charset="utf-8" src="/jscss/theme.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<!-- 交叉生成区域 -->
|
||||||
|
<div style="border:1px solid #eee;padding:15px;border-radius:6px;margin:10px 0;">
|
||||||
|
<div style="margin-bottom:10px;">
|
||||||
|
<label class="imp">所属栏目</label>
|
||||||
|
<ciy-select id="cross_cateid_select" style="width:200px;"></ciy-select>
|
||||||
|
</div>
|
||||||
|
<div style="display:flex;gap:10px;">
|
||||||
|
<div style="flex:1;">
|
||||||
|
<label>前缀词(非必填)</label><br>
|
||||||
|
<textarea name="cross_dim1" style="width:100%;height:140px;padding:10px;" placeholder="一行一个 2025款 新款 防水"></textarea>
|
||||||
|
</div>
|
||||||
|
<div style="flex:1;">
|
||||||
|
<label class="imp">核心词(必填)</label><br>
|
||||||
|
<textarea name="cross_dim2" style="width:100%;height:140px;padding:10px;" placeholder="一行一个 手机 电脑 平板"></textarea>
|
||||||
|
</div>
|
||||||
|
<div style="flex:1;">
|
||||||
|
<label>扩展词(非必填)</label><br>
|
||||||
|
<textarea name="cross_dim3" style="width:100%;height:140px;padding:10px;" placeholder="一行一个 包邮 官方正品"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="margin-top:12px;text-align:right;margin-top:12px;">
|
||||||
|
<button class="btn lg" onclick="GenerateKeywords()">交叉生成预览</button>
|
||||||
|
<button class="btn lg" onclick="BatchAdd()" style="margin-left:8px;">批量添加</button>
|
||||||
|
<button class="btn lg" onclick="AIGenerateKeyWord()" style="margin-left:8px;">AI联想</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 可编辑预览区域 -->
|
||||||
|
<div id="editBox" style="display:none;border:1px solid #eee;padding:15px;border-radius:6px;margin:10px 0;">
|
||||||
|
<h4>预览生成关键词</h4>
|
||||||
|
<textarea id="editKeywordText" style="width:100px;width:100%;height:260px;padding:10px;margin:10px 0;resize:vertical;"></textarea>
|
||||||
|
<div style="text-align:right;">
|
||||||
|
<button class="btn lg" onclick="AIModify()">AI修改</button>
|
||||||
|
<button class="btn lg" onclick="saveEditKeywords()">确认保存入库</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="table" style="display:none !important; height:0; overflow:hidden;">
|
||||||
|
<div class="loading">Loading...</div>
|
||||||
|
<div class="list"></div>
|
||||||
|
<div class="page"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
||||||
|
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
||||||
|
<script type="text/javascript" src="/jscss/ciytable.js"></script>
|
||||||
|
<script type="text/javascript" src="../common.js"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
'use strict';
|
||||||
|
var table = null;
|
||||||
|
var currentCateid = 0;
|
||||||
|
|
||||||
|
ciyfn.pageload(function () {
|
||||||
|
table = new ciyclass.table({
|
||||||
|
dom: '.table',
|
||||||
|
url: 'list',
|
||||||
|
fn_done: function (json) {
|
||||||
|
if (json && json.www_list_cate) {
|
||||||
|
ciycmp({
|
||||||
|
dom: document.getElementById('cross_cateid_select'),
|
||||||
|
value: 0,
|
||||||
|
range: json.www_list_cate
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
table.callpage(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 生成预览
|
||||||
|
function GenerateKeywords() {
|
||||||
|
var cateid = $5('[id=cross_cateid_select]').val();
|
||||||
|
var dim1 = $5('[name=cross_dim1]').val().trim();
|
||||||
|
var dim2 = $5('[name=cross_dim2]').val().trim();
|
||||||
|
var dim3 = $5('[name=cross_dim3]').val().trim();
|
||||||
|
|
||||||
|
if (!cateid) {
|
||||||
|
ciyfn.toast('请选择所属栏目');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!dim2) {
|
||||||
|
ciyfn.toast('请填写核心词');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
currentCateid = cateid;
|
||||||
|
|
||||||
|
ciyfn.callfunc('GenerateKeywords', {
|
||||||
|
cateid: cateid,
|
||||||
|
dim1: dim1,
|
||||||
|
dim2: dim2,
|
||||||
|
dim3: dim3
|
||||||
|
}, function (res) {
|
||||||
|
if (res.code === 1) {
|
||||||
|
// 数组转换行文本,给用户编辑
|
||||||
|
let str = res.list.join("\n");
|
||||||
|
$5('[id=editKeywordText]').val(str);
|
||||||
|
$5('[id=editBox]').show();
|
||||||
|
ciyfn.toast('已生成,可手动修改后保存');
|
||||||
|
} else {
|
||||||
|
ciyfn.toast(res.errmsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存编辑后的关键词入库
|
||||||
|
function saveEditKeywords(){
|
||||||
|
let text = $5('[id=editKeywordText]').val().trim();
|
||||||
|
if(!text){
|
||||||
|
ciyfn.toast('没有需要保存的关键词');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ciyfn.callfunc('ConfirmSaveKeywords',{
|
||||||
|
cateid:currentCateid,
|
||||||
|
text:text
|
||||||
|
},function(res){
|
||||||
|
if(res.code === 1){
|
||||||
|
ciyfn.toast(res.msg);
|
||||||
|
$5('[id=editBox]').hide();
|
||||||
|
$5('[id=editKeywordText]').val('');
|
||||||
|
}else{
|
||||||
|
ciyfn.toast(res.errmsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 原有批量添加不变
|
||||||
|
function BatchAdd() {
|
||||||
|
var cateid = $5('[id=cross_cateid_select]').val();
|
||||||
|
var names = $5('[name=cross_dim2]').val().trim();
|
||||||
|
|
||||||
|
if (!cateid) {
|
||||||
|
ciyfn.toast('请选择所属栏目');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!names) {
|
||||||
|
ciyfn.toast('请输入关键词');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ciyfn.callfunc('BatchAdd', {
|
||||||
|
cateid: cateid,
|
||||||
|
names: names
|
||||||
|
}, function (res) {
|
||||||
|
if (res.code === 1) {
|
||||||
|
ciyfn.toast(res.msg);
|
||||||
|
} else {
|
||||||
|
ciyfn.toast(res.errmsg);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -0,0 +1,539 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace web\admin\www;
|
||||||
|
|
||||||
|
class keywordManage
|
||||||
|
{
|
||||||
|
static function setwhere($db, $post, $rsuser)
|
||||||
|
{
|
||||||
|
$query = $post->get('query', array());
|
||||||
|
$csql = new \ciy\sql('www_keyword');
|
||||||
|
$val = objstr($query, 'cateid');
|
||||||
|
if (!empty($val)) {
|
||||||
|
$csqlt = new \ciy\sql('www_list_cate');
|
||||||
|
$csqlt->where('name like', $val);
|
||||||
|
$trow = $db->getone($csqlt);
|
||||||
|
if (is_array($trow)) {
|
||||||
|
$csql->where('cateid', $trow['id']);
|
||||||
|
$query['cateid'] = $trow['name'];
|
||||||
|
} else {
|
||||||
|
$csql->where('cateid=0');
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
$csql->where('cateid', get('_cateid'));
|
||||||
|
$csql->where('name like', objstr($query, 'name'));
|
||||||
|
$csql->where('usetime like', objstr($query, 'usetime'));
|
||||||
|
$csql->wheredaterange('addtimes', objstr($query, 'addtimes'));
|
||||||
|
$order = objstr($query, 'order', 'id desc');
|
||||||
|
$csql->order($order);
|
||||||
|
$query['order'] = $order;
|
||||||
|
return [$query, $csql];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_list()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
list($where, $csql) = self::setwhere($db, $post, $rsuser);
|
||||||
|
$pageno = $post->getint('pageno', 1);
|
||||||
|
$pagecount = $post->getint('pagecount', 10);
|
||||||
|
$csql->limit($pageno, $pagecount);
|
||||||
|
$mainrowcount = $post->getint('count');
|
||||||
|
$mrows = $db->get($csql, $mainrowcount);
|
||||||
|
if ($mrows === false)
|
||||||
|
return errjson($db->error);
|
||||||
|
$ret = array('searchwhere' => $where, 'pageno' => $pageno, 'pagecount' => $pagecount, 'count' => $mainrowcount, 'list' => $mrows);
|
||||||
|
if ($post->getbool('field')) {
|
||||||
|
$field = array();
|
||||||
|
$fshow = $db->getfield($field, 'www_keyword');
|
||||||
|
foreach ($field as $fr => $v) {
|
||||||
|
if (get('_' . $fr))
|
||||||
|
$field[$fr]['c'] = ',' . $field[$fr]['c'];
|
||||||
|
}
|
||||||
|
$fshow = fieldadd($fshow, $field, 0, '_btn', '操作');
|
||||||
|
$ret['field'] = $field;
|
||||||
|
$ret['fshow'] = $fshow;
|
||||||
|
}
|
||||||
|
if ($post->getbool('once')) {
|
||||||
|
$ret['once'] = true;
|
||||||
|
$input = array();
|
||||||
|
if (!get('_cateid'))
|
||||||
|
$input[] = array('type' => 'input', 'form' => 'cateid', 'name' => '所属栏目', 'prop' => ' style="width:8em;"');
|
||||||
|
$input[] = array('type' => 'input', 'form' => 'name', 'name' => '关键词', 'prop' => ' style="width:8em;"');
|
||||||
|
$input[] = array('type' => 'input', 'form' => 'usetime', 'name' => '使用次数', 'prop' => ' style="width:8em;"');
|
||||||
|
$input[] = array('type' => 'daterange', 'form' => 'addtimes', 'name' => '添加时间');
|
||||||
|
$ret['searchinput'] = $input;
|
||||||
|
$csql = (new \ciy\sql('www_list_cate'))->column('id,name');
|
||||||
|
$ret['www_list_cate'] = $db->get($csql);
|
||||||
|
}
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
public static function json_update()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p u'))
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
//$db->trace($post->get('_pf'), $rsuser);
|
||||||
|
$id = $post->getint('id');
|
||||||
|
$cateid = $post->getint('cateid');
|
||||||
|
$name = $post->get('name');
|
||||||
|
if ($cateid == 0)
|
||||||
|
return errjson('请填写所属栏目');
|
||||||
|
if (empty($name))
|
||||||
|
return errjson('请填写关键词');
|
||||||
|
$datarow = null;
|
||||||
|
if ($id > 0) {
|
||||||
|
$csql = new \ciy\sql('www_keyword');
|
||||||
|
$csql->where('id', $id);
|
||||||
|
$datarow = $db->getone($csql);
|
||||||
|
if (!is_array($datarow))
|
||||||
|
return errjson('数据不存在');
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
$updata = array();
|
||||||
|
$updata['cateid'] = $cateid;
|
||||||
|
$updata['name'] = $name;
|
||||||
|
$csql = new \ciy\sql('www_keyword'); //auto
|
||||||
|
if ($id > 0) {
|
||||||
|
$csql->where('id', $id);
|
||||||
|
if ($db->update($csql, $updata) === false)
|
||||||
|
throw new \Exception('更新失败:' . $db->error);
|
||||||
|
} else {
|
||||||
|
$updata['usetime'] = 0;
|
||||||
|
$updata['addtimes'] = tostamp();
|
||||||
|
if ($db->insert($csql, $updata) === false)
|
||||||
|
throw new \Exception('新增失败:' . $db->error);
|
||||||
|
$id = $db->insert_id();
|
||||||
|
}
|
||||||
|
$updata['id'] = $id;
|
||||||
|
//savelogdb($db, $rsuser['id'], 'www_keyword', $datarow, $updata);
|
||||||
|
$db->commit();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$db->rollback();
|
||||||
|
savelogfile('err_db', $ex->getMessage());
|
||||||
|
return errjson($ex->getMessage());
|
||||||
|
}
|
||||||
|
$ret['data'] = $updata;
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_del()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p d'))
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
//$db->trace($post->get('_pf'), $rsuser);
|
||||||
|
$ids = $post->get('ids');
|
||||||
|
if (empty($ids))
|
||||||
|
return errjson('请选择至少一条');
|
||||||
|
$csql = new \ciy\sql('www_keyword');
|
||||||
|
$csql->where('id in', $ids);
|
||||||
|
$mrows = $db->get($csql);
|
||||||
|
$vids = array();
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
foreach ($mrows as $mrow) {
|
||||||
|
$delid = $mrow['id'];
|
||||||
|
//delcheck($db, $delid, 'tablexx', 'xxid', '管理员');
|
||||||
|
//delall($db, $delid, 'tablexx', 'xxid', '运动员'); //deltimeall
|
||||||
|
delme($db, $delid, 'www_keyword');
|
||||||
|
savelogdb($db, $rsuser['id'], 'www_keyword', $mrow, null);
|
||||||
|
$vids[] = $delid;
|
||||||
|
}
|
||||||
|
$db->commit();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$db->rollback();
|
||||||
|
savelogfile('err_db', $ex->getMessage());
|
||||||
|
return errjson($ex->getMessage());
|
||||||
|
}
|
||||||
|
$ret['ids'] = $vids;
|
||||||
|
return succjson($ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_exportxls()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p e'))a
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
list($where, $csql) = self::setwhere($db, $post, $rsuser);
|
||||||
|
$mrows = $db->get($csql);
|
||||||
|
if (count($mrows) > 10000)
|
||||||
|
return errjson('将导出' . count($mrows) . '条,不建议超过1万条,请筛选缩小范围');
|
||||||
|
$fields = array();
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 60, 'field' => 'id', 'name' => '行码');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'cateid', 'name' => '所属栏目');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 150, 'field' => 'name', 'name' => '关键词');
|
||||||
|
$fields[] = array('style' => 'r', 'width' => 100, 'field' => 'usetime', 'name' => '使用次数');
|
||||||
|
$fields[] = array('style' => 'l', 'width' => 100, 'field' => 'addtimes', 'name' => '添加时间');
|
||||||
|
$code_cateid = $db->get((new \ciy\sql('www_list_cate'))->column('id,name'));
|
||||||
|
$datas = array();
|
||||||
|
foreach ($mrows as $mrow) {
|
||||||
|
$dat = array();
|
||||||
|
foreach ($fields as $field) {
|
||||||
|
$field = $field['field'];
|
||||||
|
$val = isset($mrow[$field]) ? $mrow[$field] : '';
|
||||||
|
if ($field == 'id')
|
||||||
|
$val = enid($val);
|
||||||
|
if ($field == 'cateid')
|
||||||
|
$val = ccode($code_cateid, $val);
|
||||||
|
if ($field == 'addtimes')
|
||||||
|
$val = ($val <= 0 ? '--' : date('Y-m-d H:i', $val));
|
||||||
|
$dat[] = $val;
|
||||||
|
}
|
||||||
|
$datas[] = $dat;
|
||||||
|
}
|
||||||
|
$param = array();
|
||||||
|
$param['field'] = $fields;
|
||||||
|
$param['data'] = $datas;
|
||||||
|
$param['sheetname'] = '数据报表';
|
||||||
|
$param['titleheight'] = '25'; //列头高度
|
||||||
|
$param['landscape'] = true; //横向打印
|
||||||
|
$param['fixtopage'] = true; //打印整个工作表
|
||||||
|
$param['toptitle'] = '关键词库数据报表';
|
||||||
|
$str = \ciy\excel::general_excel_xml($param);
|
||||||
|
$filename = '';
|
||||||
|
if (empty($filename))
|
||||||
|
$filename = date('Y-m-d_H-i-s') . rand(1000, 9999);
|
||||||
|
$filename .= '.xls';
|
||||||
|
file_put_contents(PATH_WEB . 'ud/tmp/' . $filename, $str);
|
||||||
|
return succjson(array('url' => '/ud/tmp/' . $filename));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_importxls_in()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p i'))
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
$file = PATH_WEB . '/ud' . $post->get('file');
|
||||||
|
if (!file_exists($file))
|
||||||
|
return errjson('文件不存在');
|
||||||
|
require_once PATH_ROOT . '../libs/phpoffice/autoload.php';
|
||||||
|
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);
|
||||||
|
$sheet = $spreadsheet->getActiveSheet();
|
||||||
|
$datas = $sheet->toArray('', true, true, false);
|
||||||
|
$datacnt = count($datas);
|
||||||
|
if ($datacnt < 2)
|
||||||
|
return errjson('数据为空');
|
||||||
|
$html = '';
|
||||||
|
$headsn = array();
|
||||||
|
$headsn[] = '行码.id';
|
||||||
|
$headsn[] = '所属栏目.cateid';
|
||||||
|
$headsn[] = '关键词.name';
|
||||||
|
$headsn[] = '使用次数.usetime';
|
||||||
|
$xlsidx = 1;
|
||||||
|
if (empty($datas[0][count($headsn) - 1]))
|
||||||
|
$xlsidx = 2;
|
||||||
|
$heads = array();
|
||||||
|
foreach ($headsn as $_head) {
|
||||||
|
$hd = explode('.', $_head);
|
||||||
|
if (count($hd) < 2)
|
||||||
|
continue;
|
||||||
|
$heads[] = array(
|
||||||
|
'idx' => array_search($hd[0], $datas[$xlsidx - 1]),
|
||||||
|
'fld' => $hd[1],
|
||||||
|
'name' => $hd[0]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$code_cateid = $db->get((new \ciy\sql('www_list_cate'))->column('id,name'));
|
||||||
|
$html .= '<div class="table" style="width: 100%;height: calc(100% - 2.2em);overflow: auto;">';
|
||||||
|
$html .= '<table><tbody><tr>';
|
||||||
|
$html .= '<th>#</th>';
|
||||||
|
foreach ($heads as $arr) {
|
||||||
|
$html .= '<th>' . $arr['name'] . '</th>';
|
||||||
|
}
|
||||||
|
$html .= '</tr>';
|
||||||
|
$cnt = 0;
|
||||||
|
$uniques = array();
|
||||||
|
$id = 0;
|
||||||
|
for ($rowidx = $xlsidx; $rowidx < $datacnt; $rowidx++) {
|
||||||
|
$bfull = false;
|
||||||
|
foreach ($datas[$rowidx] as $dat) {
|
||||||
|
if (empty($dat))
|
||||||
|
continue;
|
||||||
|
$bfull = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!$bfull)
|
||||||
|
continue;
|
||||||
|
$lineidx = $rowidx - $xlsidx + 1;
|
||||||
|
$hrhtml = '';
|
||||||
|
$firsthtml = '<td><div>' . $lineidx . '</div></td>';
|
||||||
|
$bempty = true;
|
||||||
|
$unqs = array();
|
||||||
|
$csql = new \ciy\sql('www_keyword');
|
||||||
|
foreach ($heads as $arr) {
|
||||||
|
$name = $arr['name'];
|
||||||
|
$errmsg = ''; //数据有误,显示红色说明
|
||||||
|
$showdat = ''; //显示在表格中的数据
|
||||||
|
if ($arr['idx'] > -1)
|
||||||
|
$showdat = trim($datas[$rowidx][$arr['idx']]);
|
||||||
|
if ($showdat == '--')
|
||||||
|
$showdat = '';
|
||||||
|
$value = $showdat; //在表单中的数据(转换后)
|
||||||
|
$ext = ''; //扩展表单
|
||||||
|
if ($name == '行码') {
|
||||||
|
if (empty($showdat)) {
|
||||||
|
$value = 0;
|
||||||
|
$showdat = '<kbd>新增</kbd>';
|
||||||
|
} else {
|
||||||
|
$id = deid($showdat);
|
||||||
|
if ($id == 0)
|
||||||
|
$errmsg = $name . '解析错误';
|
||||||
|
else {
|
||||||
|
$csqlchk = new \ciy\sql('www_keyword');
|
||||||
|
$csqlchk->where('id', $id)->column('id');
|
||||||
|
$chkid = toint($db->get1($csqlchk));
|
||||||
|
if ($chkid != $id)
|
||||||
|
$errmsg = $name . '在数据库中不存在';
|
||||||
|
$value = $id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if ($name == '所属栏目') {
|
||||||
|
if (empty($showdat)) {
|
||||||
|
$errmsg = $name . '为必填项';
|
||||||
|
} else {
|
||||||
|
$value = dcode($code_cateid, $showdat);
|
||||||
|
if ($value == -1)
|
||||||
|
$errmsg = $name . '文字与系统数据不匹配';
|
||||||
|
}
|
||||||
|
} else if ($name == '关键词') {
|
||||||
|
if (empty($showdat)) {
|
||||||
|
$errmsg = $name . '为必填项';
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
} else if ($name == '使用次数') {
|
||||||
|
if (empty($showdat)) {
|
||||||
|
$value = 0;
|
||||||
|
} else {
|
||||||
|
$showdat = str_replace(',', '', $showdat);
|
||||||
|
if (!is_numeric($showdat))
|
||||||
|
$errmsg = $name . '不是数字';
|
||||||
|
else
|
||||||
|
$value = toint($showdat);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($showdat))
|
||||||
|
$bempty = false;
|
||||||
|
if (empty($errmsg))
|
||||||
|
$hrhtml .= '<td><div>' . $showdat . '<input type="hidden" name="' . $arr['fld'] . '_' . $lineidx . '" value="' . $value . '"/>' . $ext . '</div></td>';
|
||||||
|
else
|
||||||
|
$hrhtml .= '<td style="background:#ffe8c5;" title="#' . $lineidx . ':' . $errmsg . '"><div>' . $showdat . '</div></td>';
|
||||||
|
}
|
||||||
|
if ($bempty)
|
||||||
|
continue;
|
||||||
|
if (count($unqs) > 0) {
|
||||||
|
$unq = implode('|', $unqs);
|
||||||
|
if (in_array($unq, $uniques))
|
||||||
|
$firsthtml = '<td style="background:#ffe8c5;" title="#' . $lineidx . ':该行与待导入数据有重复"><div data-lang>重复</div></td>';
|
||||||
|
else {
|
||||||
|
$uniques[] = $unq;
|
||||||
|
$csql->column('id');
|
||||||
|
$chkid = toint($db->get1($csql));
|
||||||
|
if ($chkid > 0 && (($id > 0 && $chkid != $id) || $id == 0))
|
||||||
|
$firsthtml = '<td style="background:#ffe8c5;" title="#' . $lineidx . ':该行与数据库数据有重复"><div data-lang>重复</div></td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$html .= '<tr>' . $firsthtml . $hrhtml . '</tr>';
|
||||||
|
$cnt++;
|
||||||
|
}
|
||||||
|
$html .= '</tbody></table></div>';
|
||||||
|
$html .= '<input type="hidden" name="total" value="' . $cnt . '"/>';
|
||||||
|
$html .= '<code>共' . $cnt . '条数据</code>';
|
||||||
|
return succjson(array('html' => $html, 'count' => $cnt));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function json_importxls_data()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
//if (nopower($db, $rsuser['id'], 'p i'))
|
||||||
|
// return errjson('您未被授权操作');
|
||||||
|
$post = new \ciy\post();
|
||||||
|
//$db->trace($post->get('_pf'), $rsuser);
|
||||||
|
$total = $post->getint('total');
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
for ($i = 1; $i <= $total; $i++) {
|
||||||
|
$id = $post->getint('id_' . $i);
|
||||||
|
$updata = array();
|
||||||
|
$updata['cateid'] = $post->get('cateid_' . $i);
|
||||||
|
$updata['name'] = $post->get('name_' . $i);
|
||||||
|
$updata['usetime'] = $post->get('usetime_' . $i);
|
||||||
|
$csql = new \ciy\sql('www_keyword');
|
||||||
|
if ($id == 0) {
|
||||||
|
$updata['addtimes'] = tostamp();
|
||||||
|
if ($db->insert($csql, $updata) === false)
|
||||||
|
throw new \Exception('新增导入失败:' . $db->error);
|
||||||
|
} else {
|
||||||
|
$csql->where('id', $id);
|
||||||
|
if ($db->update($csql, $updata) === false)
|
||||||
|
throw new \Exception('更新导入失败:' . $db->error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$db->commit();
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$db->rollback();
|
||||||
|
savelogfile('err_db', $ex->getMessage());
|
||||||
|
return errjson($ex->getMessage());
|
||||||
|
}
|
||||||
|
return succjson();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 后端批量导入接口
|
||||||
|
public static function json_BatchAdd()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
|
||||||
|
$font_cateid = $post->getint('cateid');
|
||||||
|
$font_names = trim($post->get('names'));
|
||||||
|
|
||||||
|
$Array_name = explode("\n", $font_names);
|
||||||
|
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
|
||||||
|
foreach ($Array_name as $name) {
|
||||||
|
$name = trim($name);
|
||||||
|
if ($name === '') continue;
|
||||||
|
|
||||||
|
$csql = new \ciy\sql('www_keyword');
|
||||||
|
$csql->where('name', $name);
|
||||||
|
$isExist = $db->get1($csql);
|
||||||
|
|
||||||
|
if ($isExist === '') {
|
||||||
|
$insertData = [
|
||||||
|
'cateid' => $font_cateid,
|
||||||
|
'name' => $name,
|
||||||
|
'usetime' => 0,
|
||||||
|
'addtimes' => tostamp()
|
||||||
|
];
|
||||||
|
|
||||||
|
$csql_insert = new \ciy\sql('www_keyword');
|
||||||
|
$db->insert($csql_insert, $insertData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->commit();
|
||||||
|
return succjson('批量添加成功');
|
||||||
|
// return succjson([
|
||||||
|
// 'data'=> $font_names,
|
||||||
|
// 'cateid'=>$font_cateid
|
||||||
|
// ]);
|
||||||
|
} catch (\Exception $ex) {
|
||||||
|
$db->rollback();
|
||||||
|
return errjson('错误:'.$ex->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 交叉生成关键词
|
||||||
|
public static function json_GenerateKeywords()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
|
||||||
|
$cateid = $post->getint('cateid');
|
||||||
|
$dim1 = trim($post->get('dim1'));
|
||||||
|
$dim2 = trim($post->get('dim2'));
|
||||||
|
$dim3 = trim($post->get('dim3'));
|
||||||
|
|
||||||
|
if ($cateid == 0) {
|
||||||
|
return errjson('请选择所属栏目');
|
||||||
|
}
|
||||||
|
if (empty($dim2)) {
|
||||||
|
return errjson('核心词不能为空');
|
||||||
|
}
|
||||||
|
|
||||||
|
$toArray = function ($text) {
|
||||||
|
$arr = explode("\n", $text);
|
||||||
|
$arr = array_map('trim', $arr);
|
||||||
|
$arr = array_filter($arr);
|
||||||
|
return array_unique($arr);
|
||||||
|
};
|
||||||
|
|
||||||
|
$arr1 = $toArray($dim1);
|
||||||
|
$arr2 = $toArray($dim2);
|
||||||
|
$arr3 = $toArray($dim3);
|
||||||
|
$keywords = [];
|
||||||
|
|
||||||
|
if (!empty($arr3) && !empty($arr1)) {
|
||||||
|
foreach ($arr1 as $a) {
|
||||||
|
foreach ($arr2 as $b) {
|
||||||
|
foreach ($arr3 as $c) {
|
||||||
|
$keywords[] = $a . $b . $c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
foreach ($arr2 as $b) {
|
||||||
|
$keywords[] = $b;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$keywords = array_unique($keywords);
|
||||||
|
if (empty($keywords)) {
|
||||||
|
return errjson('未生成有效关键词');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 返回数组给前端编辑
|
||||||
|
return succjson([
|
||||||
|
'list' => $keywords
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认后入库
|
||||||
|
public static function json_ConfirmSaveKeywords()
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
$rsuser = verifyfast();
|
||||||
|
$post = new \ciy\post();
|
||||||
|
|
||||||
|
$cateid = $post->getint('cateid');
|
||||||
|
$text = trim($post->get('text'));
|
||||||
|
|
||||||
|
if (empty($cateid) || empty($text)) {
|
||||||
|
return errjson('请填写相应的信息');
|
||||||
|
}
|
||||||
|
|
||||||
|
$lines = explode("\n", $text);
|
||||||
|
$lines = array_map('trim', $lines);
|
||||||
|
$lines = array_filter($lines);
|
||||||
|
$lines = array_unique($lines);
|
||||||
|
|
||||||
|
$addNum = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$db->begin();
|
||||||
|
foreach ($lines as $name) {
|
||||||
|
$sql = new \ciy\sql('www_keyword');
|
||||||
|
$sql->where('name', $name);
|
||||||
|
if ($db->get1($sql)) continue;
|
||||||
|
$ins = [
|
||||||
|
'cateid' => $cateid,
|
||||||
|
'name' => $name,
|
||||||
|
'usetime' => 0,
|
||||||
|
'addtimes' => tostamp()
|
||||||
|
];
|
||||||
|
$db->insert(new \ciy\sql('www_keyword'), $ins);
|
||||||
|
$addNum++;
|
||||||
|
}
|
||||||
|
$db->commit();
|
||||||
|
return succjson(['msg' => "保存完成,新增 {$addNum} 条"]);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
$db->rollback();
|
||||||
|
return errjson($e->getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -876,6 +876,16 @@ function succjson($ext = null) {
|
||||||
$ret['code'] = 1;
|
$ret['code'] = 1;
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function succjson_liu($ext = null) {
|
||||||
|
if (is_array($ext))
|
||||||
|
$ret = $ext;
|
||||||
|
else
|
||||||
|
$ret = array();
|
||||||
|
if(is_string($ext)) $ret['msg'] = $ext;
|
||||||
|
$ret['code'] = 1;
|
||||||
|
return $ret;
|
||||||
|
}
|
||||||
function memadd($key) {
|
function memadd($key) {
|
||||||
}
|
}
|
||||||
function randstr($num, $letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890') {
|
function randstr($num, $letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890') {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user