Sensitivec.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Loader;
  4. use think\Controller;
  5. class Sensitivec extends Base
  6. {
  7. //敏感词管理
  8. public function index()
  9. {
  10. if (request()->isAjax()) {
  11. $param = input('param.');
  12. $limit = $param['pageSize'];
  13. $offset = (($param['pageNumber'] - 1) * $limit);
  14. $where['sensitivewords_for'] = $param['type'];
  15. if (strlen($param['searchText'])) {
  16. $where['sensitivewords_word'] = ['like', '%' . $param['searchText'] . '%'];
  17. }
  18. $result = db('sensitivewords')
  19. ->field(['sensitivewords_id', 'sensitivewords_word', 'sensitivewords_time', 'sensitivewords_status', 'user_name'])
  20. ->alias('a')
  21. ->join('admins b', 'a.sensitivewords_uid = b.id','left')
  22. ->where($where)
  23. ->limit($offset, $limit)
  24. ->select();
  25. foreach ($result as $key => $vo) {
  26. // 优化显示状态.
  27. if(1 == $vo['sensitivewords_status']) {
  28. $result[$key]['sensitivewords_status'] = '<span style="color: #2fbe1b">启用</span>';
  29. } else {
  30. $result[$key]['sensitivewords_status'] = '<span style="color: red">禁用</span>';
  31. }
  32. // 生成操作按钮.
  33. $result[$key]['operate'] = $this->makeBtn($vo['sensitivewords_id']);
  34. }
  35. // 总数据.
  36. $return['total'] = db('sensitivewords')->where($where)->count(); //总数据
  37. $return['rows'] = $result;
  38. return json($return);
  39. }
  40. return $this->fetch();
  41. }
  42. //敏感词添加
  43. public function addsensitive(){
  44. if(request()->isPost()){
  45. $param = input('post.');
  46. $findWhere = [
  47. 'sensitivewords_word' => $param['sensitivewords_word'],
  48. 'sensitivewords_for' => $param['sensitivewords_for'],
  49. ];
  50. $has = db('sensitivewords')->field('sensitivewords_id')->where($findWhere)->find();
  51. if (empty($has) === false) {
  52. return json(['code' => -1, 'data' => '', 'msg' => '该敏感词已经存在']);
  53. }
  54. $param['sensitivewords_time'] = date('Y-m-d H:i:s');
  55. $param['sensitivewords_uid'] = session('user_id');
  56. try {
  57. db('sensitivewords')->insert($param);
  58. } catch(\Exception $e) {
  59. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  60. }
  61. return json(['code' => 1, 'data' => '', 'msg' => '添加敏感词成功']);
  62. }
  63. $this->assign([
  64. 'status' => config('kf_status')
  65. ]);
  66. return $this->fetch();
  67. }
  68. //敏感词编辑
  69. public function editsensitive(){
  70. if(request()->isAjax()){
  71. $param = input('post.');
  72. // 检测用户修改的管理员是否重复
  73. $has = db('sensitivewords')->where('sensitivewords_word', $param['sensitivewords_word'])->where('sensitivewords_id', '<>', $param['sensitivewords_id'])->find();
  74. if(!empty($has)){
  75. return json(['code' => -1, 'data' => '', 'msg' => '该敏感词已经存在']);
  76. }
  77. $param['sensitivewords_time'] = date('Y-m-d H:i:s');
  78. $param['sensitivewords_uid'] = session('user_id');//uid
  79. try{
  80. db('sensitivewords')->where('sensitivewords_id', $param['sensitivewords_id'])->update($param);
  81. }catch(\Exception $e){
  82. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  83. }
  84. return json(['code' => 1, 'data' => '', 'msg' => '编辑敏感词成功']);
  85. }
  86. $id = input('param.sensitivewords_id/d');
  87. $info = db('sensitivewords')->where('sensitivewords_id', $id)->find();
  88. $this->assign([
  89. 'info' => $info,
  90. 'status' => config('kf_status')
  91. ]);
  92. return $this->fetch();
  93. }
  94. //删除
  95. public function delWord(){
  96. if(request()->isAjax()){
  97. $id = input('param.id/d');
  98. // return $id;
  99. try{
  100. db('sensitivewords')->where('sensitivewords_id', $id)->delete();
  101. }catch(\Exception $e){
  102. return json(['code' => -1, 'data' => '', 'msg' => $e->getMessage()]);
  103. }
  104. return json(['code' => 1, 'data' => '', 'msg' => '删除敏感词成功']);
  105. }
  106. }
  107. // 生成按钮
  108. private function makeBtn($id)
  109. {
  110. $operate = '<a href="' . url('sensitivec/editsensitive', ['sensitivewords_id' => $id]) . '">';
  111. $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  112. $operate .= '<a href="javascript:userDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
  113. $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
  114. return $operate;
  115. }
  116. //导入敏感词
  117. function inserExcel()
  118. {
  119. Loader::import('PHPExcel.PHPExcel');
  120. Loader::import('PHPExcel.PHPExcel.PHPExcel_IOFactory');
  121. Loader::import('PHPExcel.PHPExcel.PHPExcel_Cell');
  122. //获取表单上传文件
  123. $file = request()->file('excel');
  124. $info = $file->validate(['ext' => 'xlsx'])->move(ROOT_PATH . 'public' . DS . 'uploads');
  125. //上传验证后缀名,以及上传之后移动的地址
  126. if ($info) {
  127. // echo $info->getFilename();
  128. $exclePath = $info->getSaveName(); //获取文件名
  129. $file_name = ROOT_PATH . 'public' . DS . 'uploads' . DS . $exclePath; //上传文件的地址
  130. $objReader = \PHPExcel_IOFactory::createReader('Excel2007');
  131. $obj_PHPExcel = $objReader->load($file_name, $encode = 'utf-8'); //加载文件内容,编码utf-8
  132. $excel_array = $obj_PHPExcel->getsheet(0)->toArray(); //转换为数组格式
  133. array_shift($excel_array); //删除第一个数组(标题);
  134. $info = [];
  135. foreach ($excel_array as $k => $v) {
  136. $info[$k]['sensitivewords_word'] = $v[0];
  137. $info[$k]['sensitivewords_status'] = $v[1];
  138. $info[$k]['sensitivewords_for'] = $v[2];
  139. $info[$k]['sensitivewords_time'] = date('Y-m-d H:m:s',time());
  140. $info[$k]['sensitivewords_uid'] = session('user_id');
  141. }
  142. //检查表中数据是否有重复
  143. for($a=0;$a<count($info);$a++){
  144. for($b=$a+1;$b<count($info);$b++){
  145. if($info[$a]['sensitivewords_word'] == $info[$b]['sensitivewords_word'] && $info[$a]['sensitivewords_for'] == $info[$b]['sensitivewords_for']){
  146. return json(['code' => -1, 'data' => url('sensitivec/index'), 'msg' => 'excel表第'.($a+1).'行与第'.($b+1).'行敏感词重复']);
  147. }
  148. }
  149. }
  150. //检查表格中数据是否已存在与数据库
  151. $sensitivewords = db('sensitivewords')->select();
  152. for($i=0;$i<count($info);$i++){
  153. for($j=0;$j<count($sensitivewords);$j++){
  154. if($info[$i]['sensitivewords_word'] == $sensitivewords[$j]['sensitivewords_word'] && $info[$i]['sensitivewords_for'] == $sensitivewords[$j]['sensitivewords_for']){
  155. return json(['code' => -1, 'data' => url('sensitivec/index'), 'msg' => 'excel表第'.($i+1).'行敏感词已存在']);
  156. }
  157. }
  158. }
  159. db('sensitivewords')->insertAll($info); //批量插入数据
  160. return json(['code' => 1, 'data' => $this->redirect('sensitivec/index'), 'msg' => '插入敏感词成功']);
  161. } else {
  162. return json(['code' => -2, 'data' => url('sensitivec/index'), 'msg' => '插入敏感词失败']);
  163. }
  164. }
  165. }