Keyword.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\admin\model\Keyword as KeywordModel;
  5. use app\admin\model\KeywordLanguages;
  6. use app\admin\model\QuestionLanguages;
  7. use app\admin\validate\KeywordValidate;
  8. use Exception;
  9. use think\facade\Cache;
  10. /**
  11. * 关键词管理
  12. */
  13. class Keyword extends BaseController
  14. {
  15. /**
  16. * @api {get} /keyword/list 列表
  17. */
  18. function list()
  19. {
  20. try {
  21. $params = $this->request->param();
  22. $page = $params['page'] ?? 1;
  23. $limit = $params['limit'] ?? 15;
  24. $language_code = $params['language_code'] ?? $this->lang;
  25. $query = KeywordLanguages::where('language_code', $language_code);
  26. if (!empty($params['name'])) {
  27. $query = $query->where('name', 'like', '%'.$params['name'].'%');
  28. }
  29. $field = !empty($params['field']) ? $params['field'] : 'weight';
  30. $order = !empty($params['order']) ? $params['order'] : 'desc';
  31. $count = $query->count();
  32. $list = $query->where('language_code', $language_code)
  33. ->order($field,$order)
  34. ->limit($limit)
  35. ->page($page)
  36. ->select();
  37. foreach($list as &$item) {
  38. $item['question_num'] = QuestionLanguages::where('keyword_id', $item['keyword_id'])->count();
  39. }
  40. } catch (Exception $e) {
  41. return $this->error($e->getMessage());
  42. }
  43. return $this->success(['count' => $count, 'list' => $list]);
  44. }
  45. //新增/编辑
  46. public function update()
  47. {
  48. try {
  49. $params = (new KeywordValidate)->post()->goCheck('edit');
  50. $id = $this->request->param('id',0);
  51. $status = $params['status'] ?? 1;
  52. $keyword_id = $params['keyword_id'] ?? 0;
  53. $language_code = $params['language_code'] ?? $this->lang;
  54. $exists = KeywordLanguages::where('name', $params['name'])->where('language_code', $language_code)->find();
  55. if ($exists ) {
  56. if (!$id || $id != $exists->id) {
  57. return $this->error('关键词已存在');
  58. }
  59. }
  60. if (!$keyword_id) {
  61. $keyword = KeywordModel::create([
  62. 'created_at' => date('Y-m-d H:i:s'),
  63. ]);
  64. $keyword_id = $keyword->id;
  65. }
  66. if (!$id) {
  67. $keywordLanguages = new KeywordLanguages();
  68. } else {
  69. $keywordLanguages = KeywordLanguages::where('id', $id)->find();
  70. if (!$keywordLanguages) {
  71. return $this->error('关键词不存在');
  72. }
  73. }
  74. $keywordLanguages->keyword_id = $keyword_id;
  75. $keywordLanguages->name = $params['name'];
  76. $keywordLanguages->weight = $params['weight'] ?? 1;
  77. $keywordLanguages->status = $status;
  78. $keywordLanguages->language_code = $language_code;
  79. $keywordLanguages->save();
  80. } catch (Exception $e) {
  81. return $this->error($e->getMessage());
  82. }
  83. //删除缓存
  84. Cache::delete('keywordList');
  85. return $this->success([], '操作成功');
  86. }
  87. //设置状态
  88. public function setStatus()
  89. {
  90. try {
  91. $params = (new KeywordValidate)->goCheck('id');
  92. $info = KeywordLanguages::where('id', $params['id'])->find();
  93. if (!$info) {
  94. return $this->error('关键词不存在');
  95. }
  96. $info->status = $info->status == 0 ? 1 : 0;
  97. $info->save();
  98. } catch (Exception $e) {
  99. return $this->error($e->getMessage());
  100. }
  101. //删除缓存
  102. Cache::delete('keywordList');
  103. return $this->success([], '操作成功');
  104. }
  105. //删除
  106. public function delete()
  107. {
  108. try {
  109. $params = (new KeywordValidate)->goCheck('id');
  110. $info = KeywordLanguages::where('id', $params['id'])->find();
  111. if (!$info) {
  112. return $this->error('关键词不存在');
  113. }
  114. $keyword_id = $info->keyword_id;
  115. $info->delete();
  116. if (KeywordLanguages::where('keyword_id', $keyword_id)->count() == 0) {
  117. KeywordModel::where('id', $keyword_id)->delete();
  118. }
  119. } catch (Exception $e) {
  120. return $this->error($e->getMessage());
  121. }
  122. //删除缓存
  123. Cache::delete('keywordList');
  124. return $this->success([],'删除成功');
  125. }
  126. }