Compare commits
2 Commits
ba996d3e45
...
368377f949
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
368377f949 | ||
|
|
1085744981 |
|
|
@ -17,9 +17,9 @@
|
|||
<div class="sinps"></div>
|
||||
<div class="sbtns">
|
||||
<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="">AI联想</a>
|
||||
<a data-lang class="btn" onclick="">AI联想</a> -->
|
||||
<a data-lang class="btn" onclick="multiin()">导入</a>
|
||||
<a data-lang class="btn" onclick="exportxls()">导出</a>
|
||||
<a data-lang class="btn def" onclick="pagehelp()">帮助</a>
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
</div>
|
||||
|
||||
<!-- 批量添加 -->
|
||||
<div id="alert_batchAdd" style="display:none;">
|
||||
<!-- <div id="alert_batchAdd" style="display:none;">
|
||||
<div style="margin-bottom:10px;">
|
||||
<label class="imp">所属栏目</label>
|
||||
<ciy-select com="batch_cateid" style="width:200px;"></ciy-select>
|
||||
|
|
@ -92,37 +92,39 @@
|
|||
电脑
|
||||
耳机"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<!-- 交叉生成关键词功能 -->
|
||||
<div id="generateKeywords" style="display:none;">
|
||||
<!-- <div id="generateKeywords" style="display:none;">
|
||||
<div style="margin-bottom:10px;">
|
||||
<label class="imp">所属栏目</label>
|
||||
<ciy-select com="cross_cateid" style="width:200px;"></ciy-select>
|
||||
</div>
|
||||
<div style="margin-bottom:10px;">
|
||||
</div> -->
|
||||
<!-- 三列容器 Flex 同行显示 -->
|
||||
<!-- <div style="display:flex;gap:10px;">
|
||||
<div style="flex:1;">
|
||||
<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 style="margin-bottom:10px;">
|
||||
<div style="flex:1;">
|
||||
<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 style="margin-bottom:10px;">
|
||||
<div style="flex:1;">
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
<script type="text/javascript" src="/jscss/ciy.js"></script>
|
||||
<script type="text/javascript" src="/jscss/ciycmp.js"></script>
|
||||
|
|
@ -216,66 +218,66 @@
|
|||
}
|
||||
|
||||
// 批量添加
|
||||
function ManyKeyWordAdd() {
|
||||
ciyfn.alert({
|
||||
title: '批量添加关键词',
|
||||
width: 'pc',
|
||||
content: document.getElementById("alert_batchAdd").innerHTML,
|
||||
fn_showed: function (doc, dom) {
|
||||
ciycmp({ dom: $5('[com=batch_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
||||
},
|
||||
cb: function (opn) {
|
||||
if (opn.btn == "关闭") return opn.close();
|
||||
let cateid = $5('[com=batch_cateid]', opn.dom).val();
|
||||
let names = $5('[name=batch_names]', opn.dom).val();
|
||||
if (!cateid) { ciyfn.toast('请选择所属栏目'); return; }
|
||||
if (!names) { ciyfn.toast('请输入关键词'); return; }
|
||||
ciyfn.callfunc('BatchAdd', { cateid, names }, function (json) {
|
||||
table.cachecount = -1;
|
||||
table.callpage();
|
||||
opn.close();
|
||||
ciyfn.toast('批量添加成功');
|
||||
});
|
||||
},
|
||||
btns: ["批量添加", "*关闭"],
|
||||
});
|
||||
}
|
||||
// function ManyKeyWordAdd() {
|
||||
// ciyfn.alert({
|
||||
// title: '批量添加关键词',
|
||||
// width: 'pc',
|
||||
// content: document.getElementById("alert_batchAdd").innerHTML,
|
||||
// fn_showed: function (doc, dom) {
|
||||
// ciycmp({ dom: $5('[com=batch_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
||||
// },
|
||||
// cb: function (opn) {
|
||||
// if (opn.btn == "关闭") return opn.close();
|
||||
// let cateid = $5('[com=batch_cateid]', opn.dom).val();
|
||||
// let names = $5('[name=batch_names]', opn.dom).val();
|
||||
// if (!cateid) { ciyfn.toast('请选择所属栏目'); return; }
|
||||
// if (!names) { ciyfn.toast('请输入关键词'); return; }
|
||||
// ciyfn.callfunc('BatchAdd', { cateid, names }, function (json) {
|
||||
// table.cachecount = -1;
|
||||
// table.callpage();
|
||||
// opn.close();
|
||||
// ciyfn.toast('批量添加成功');
|
||||
// });
|
||||
// },
|
||||
// btns: ["批量添加", "*关闭"],
|
||||
// });
|
||||
// }
|
||||
|
||||
function GenerateKeywords() {
|
||||
ciyfn.alert({
|
||||
title: '交叉生成关键词',
|
||||
width: 'pc',
|
||||
content: document.getElementById("generateKeywords").innerHTML,
|
||||
fn_showed: function (doc, dom) {
|
||||
ciycmp({ dom: $5('[com=cross_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
||||
},
|
||||
cb: function (opn) {
|
||||
if (opn.btn == "关闭") return opn.close();
|
||||
// function GenerateKeywords() {
|
||||
// ciyfn.alert({
|
||||
// title: '交叉生成关键词',
|
||||
// width: 'pc',
|
||||
// content: document.getElementById("generateKeywords").innerHTML,
|
||||
// fn_showed: function (doc, dom) {
|
||||
// ciycmp({ dom: $5('[com=cross_cateid]', dom), value: 0, range: table.json.www_list_cate });
|
||||
// },
|
||||
// cb: function (opn) {
|
||||
// if (opn.btn == "关闭") return opn.close();
|
||||
|
||||
let cateid = $5('[com=cross_cateid]' , 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_dim3 = $5('[name=cross_dim3]',opn.dom).val();//扩展词
|
||||
// console.log(cross_dim1);
|
||||
if(!cateid) {ciyfn.toast('请选择所属栏目'); return;}
|
||||
if (!cross_dim1) { ciyfn.toast('请填写核心词'); return; }
|
||||
if (!cross_dim2) { ciyfn.toast('请填写修饰词'); return; }
|
||||
// let cateid = $5('[com=cross_cateid]' , 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_dim3 = $5('[name=cross_dim3]',opn.dom).val();//扩展词
|
||||
// // console.log(cross_dim1);
|
||||
// if(!cateid) {ciyfn.toast('请选择所属栏目'); return;}
|
||||
// if (!cross_dim1) { ciyfn.toast('请填写核心词'); return; }
|
||||
// if (!cross_dim2) { ciyfn.toast('请填写修饰词'); return; }
|
||||
|
||||
ciyfn.callfunc('GenerateKeywords', {
|
||||
cateid : cateid,
|
||||
dim1 : cross_dim1,
|
||||
dim2 : cross_dim2,
|
||||
dim3 : cross_dim3
|
||||
}, function (json) {
|
||||
table.cachecount = -1;
|
||||
table.callpage();
|
||||
opn.close();
|
||||
ciyfn.toast(json.msg);
|
||||
});
|
||||
},
|
||||
btns: ["生成", "*关闭"],
|
||||
});
|
||||
}
|
||||
// ciyfn.callfunc('GenerateKeywords', {
|
||||
// cateid : cateid,
|
||||
// dim1 : cross_dim1,
|
||||
// dim2 : cross_dim2,
|
||||
// dim3 : cross_dim3
|
||||
// }, function (json) {
|
||||
// table.cachecount = -1;
|
||||
// table.callpage();
|
||||
// opn.close();
|
||||
// ciyfn.toast(json.msg);
|
||||
// });
|
||||
// },
|
||||
// btns: ["生成", "*关闭"],
|
||||
// });
|
||||
// }
|
||||
// }
|
||||
</script>
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -391,142 +391,143 @@ class keyword
|
|||
return succjson();
|
||||
}
|
||||
|
||||
// 后端批量导入接口
|
||||
public static function json_BatchAdd()
|
||||
{
|
||||
global $db;
|
||||
$rsuser = verifyfast();
|
||||
$post = new \ciy\post();
|
||||
// // 后端批量导入接口
|
||||
// public static function json_BatchAdd()
|
||||
// {
|
||||
// global $db;
|
||||
// $rsuser = verifyfast();
|
||||
// $post = new \ciy\post();
|
||||
|
||||
$font_cateid = $post->getint('cateid');
|
||||
$font_names = trim($post->get('names'));
|
||||
// $font_cateid = $post->getint('cateid');
|
||||
// $font_names = trim($post->get('names'));
|
||||
|
||||
$Array_name = explode("\n", $font_names);
|
||||
// $Array_name = explode("\n", $font_names);
|
||||
|
||||
try {
|
||||
$db->begin();
|
||||
// try {
|
||||
// $db->begin();
|
||||
|
||||
foreach ($Array_name as $name) {
|
||||
$name = trim($name);
|
||||
if ($name === '') continue;
|
||||
// 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);
|
||||
// $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()
|
||||
];
|
||||
// if ($isExist === '') {
|
||||
// $insertData = [
|
||||
// 'cateid' => $font_cateid,
|
||||
// 'name' => $name,
|
||||
// 'usetime' => 0,
|
||||
// 'addtimes' => tostamp()
|
||||
// ];
|
||||
|
||||
$csql_insert = new \ciy\sql('www_keyword');
|
||||
$db->insert($csql_insert, $insertData);
|
||||
}
|
||||
}
|
||||
// $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());
|
||||
}
|
||||
}
|
||||
// $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();
|
||||
// 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'));
|
||||
// // 获取前端传参
|
||||
// $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($dim1) || empty($dim2)) {
|
||||
return errjson('核心词 和 修饰词 不能为空');
|
||||
}
|
||||
// if ($cateid == 0) {
|
||||
// return errjson('请选择所属栏目');
|
||||
// }
|
||||
// if (empty($dim1) || empty($dim2)) {
|
||||
// return errjson('核心词 和 修饰词 不能为空');
|
||||
// }
|
||||
|
||||
// 转为数组
|
||||
$toArray = function ($text) {
|
||||
$arr = explode("\n", $text);
|
||||
$arr = array_map('trim', $arr);
|
||||
$arr = array_filter($arr);
|
||||
return array_unique($arr);
|
||||
};
|
||||
// $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 = [];
|
||||
// $arr1 = $toArray($dim1);
|
||||
// $arr2 = $toArray($dim2);
|
||||
// $arr3 = $toArray($dim3);
|
||||
// $keywords = [];
|
||||
|
||||
if (!empty($arr3)) {
|
||||
foreach ($arr2 as $a) {
|
||||
foreach ($arr1 as $b) {
|
||||
foreach ($arr3 as $c) {
|
||||
$kw = $a . $b . $c;
|
||||
$keywords[$kw] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
foreach ($arr2 as $a) {
|
||||
foreach ($arr1 as $b) {
|
||||
$kw = $a . $b;
|
||||
$keywords[$kw] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// if (!empty($arr3)) {
|
||||
// foreach ($arr2 as $a) {
|
||||
// foreach ($arr1 as $b) {
|
||||
// foreach ($arr3 as $c) {
|
||||
// $kw = $a . $b . $c;
|
||||
// $keywords[$kw] = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// foreach ($arr2 as $a) {
|
||||
// foreach ($arr1 as $b) {
|
||||
// $kw = $a . $b;
|
||||
// $keywords[$kw] = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
$finalList = array_keys($keywords);
|
||||
$total = count($finalList);
|
||||
$added = 0;
|
||||
// $finalList = array_keys($keywords);
|
||||
// $total = count($finalList);
|
||||
// $added = 0;
|
||||
|
||||
if ($total == 0) {
|
||||
return errjson('未生成有效关键词');
|
||||
}
|
||||
// if ($total == 0) {
|
||||
// return errjson('未生成有效关键词');
|
||||
// }
|
||||
|
||||
try {
|
||||
$db->begin();
|
||||
foreach ($finalList as $name) {
|
||||
$csql = new \ciy\sql('www_keyword');
|
||||
$csql->where('name', $name);
|
||||
$csql->column = 'id';
|
||||
// try {
|
||||
// $db->begin();
|
||||
|
||||
$exists = $db->get1($csql);
|
||||
// foreach ($finalList as $name) {
|
||||
// $csql = new \ciy\sql('www_keyword');
|
||||
// $csql->where('name', $name);
|
||||
// $csql->column = 'id';
|
||||
|
||||
if ($exists) {
|
||||
continue;
|
||||
}
|
||||
// $exists = $db->get1($csql);
|
||||
|
||||
$insert = [
|
||||
'cateid' => $cateid,
|
||||
'name' => $name,
|
||||
'usetime' => 0,
|
||||
'addtimes' => tostamp()
|
||||
];
|
||||
$db->insert(new \ciy\sql('www_keyword'), $insert);
|
||||
$added++;
|
||||
}
|
||||
// if ($exists) {
|
||||
// continue;
|
||||
// }
|
||||
|
||||
$db->commit();
|
||||
return succjson("生成成功:共 {$total} 条,新增 {$added} 条");
|
||||
// $insert = [
|
||||
// 'cateid' => $cateid,
|
||||
// 'name' => $name,
|
||||
// 'usetime' => 0,
|
||||
// 'addtimes' => tostamp()
|
||||
// ];
|
||||
// $db->insert(new \ciy\sql('www_keyword'), $insert);
|
||||
// $added++;
|
||||
// }
|
||||
|
||||
} catch (\Exception $e) {
|
||||
$db->rollback();
|
||||
return errjson("错误:" . $e->getMessage());
|
||||
}
|
||||
}
|
||||
// $db->commit();
|
||||
// return succjson("生成成功:共 {$total} 条,新增 {$added} 条");
|
||||
|
||||
// } catch (\Exception $e) {
|
||||
// $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;
|
||||
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 randstr($num, $letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890') {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user