GuessAsk.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\admin\model\GuessAsk as GuessAskModel;
  5. use app\admin\model\GuessAskLanguages;
  6. use app\admin\model\GuessAskType;
  7. use app\admin\validate\GuessAskValidate;
  8. use Exception;
  9. use think\facade\Cache;
  10. /**
  11. * 猜你想问管理
  12. */
  13. class GuessAsk extends BaseController
  14. {
  15. /**
  16. * @api {get} /guessask/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 = GuessAskLanguages::where('language_code', $language_code);
  26. if (!empty($params['name'])) {
  27. $query = $query->where('name', 'like', '%'.$params['name'].'%');
  28. }
  29. if (isset($params['type']) && $params['type'] != '') {
  30. $query = $query->where('type', $params['type']);
  31. }
  32. if (isset($params['is_rec']) && $params['is_rec'] != '') {
  33. $query = $query->where('is_rec', $params['is_rec']);
  34. }
  35. if (isset($params['is_top']) && $params['is_top'] != '') {
  36. $query = $query->where('is_top', $params['is_top']);
  37. }
  38. if (isset($params['status']) && $params['status'] != '') {
  39. $query = $query->where('status', $params['status']);
  40. }
  41. $count = $query->count();
  42. $list = $query->order('is_top','desc')
  43. ->order('click_num','desc')
  44. ->limit($limit)
  45. ->page($page)
  46. ->select();
  47. $typeList = GuessAskLanguages::typeList($language_code,false);
  48. foreach ($list as &$item) {
  49. $item->type_text = $typeList[$item->type] ?? '';
  50. }
  51. } catch (Exception $e) {
  52. return $this->error($e->getMessage());
  53. }
  54. $typeList = GuessAskLanguages::typeList($language_code);
  55. return $this->success(['typeList' => $typeList, 'count' => $count, 'list' => $list]);
  56. }
  57. //新增/编辑
  58. public function update()
  59. {
  60. try {
  61. $params = (new GuessAskValidate())->post()->goCheck('edit');
  62. $id = $this->request->param('id',0);
  63. $status = $params['status'] ?? 1;
  64. $guess_ask_id = $params['guess_ask_id'] ?? 0;
  65. $language_code = $params['language_code'] ?? $this->lang;
  66. $exists = GuessAskLanguages::where('name', $params['name'])->where('language_code', $language_code)->find();
  67. if ($exists ) {
  68. if (!$id || $id != $exists->id) {
  69. return $this->error('关键词已存在');
  70. }
  71. }
  72. if (!$guess_ask_id) {
  73. $guess_ask = GuessAskModel::create([
  74. 'created_at' => date('Y-m-d H:i:s'),
  75. ]);
  76. $guess_ask_id = $guess_ask->id;
  77. }
  78. if (empty($id)) {
  79. $guessAskLanguages = new GuessAskLanguages();
  80. } else {
  81. $guessAskLanguages = GuessAskLanguages::where('id', $id)->find();
  82. if (!$guessAskLanguages) {
  83. return $this->error('关键词不存在');
  84. }
  85. }
  86. $guessAskLanguages->guess_ask_id = $guess_ask_id;
  87. $guessAskLanguages->name = $params['name'];
  88. $guessAskLanguages->type = $params['type'];
  89. $guessAskLanguages->weight = $params['weight'];
  90. $guessAskLanguages->status = $status;
  91. $guessAskLanguages->language_code = $language_code;
  92. $guessAskLanguages->save();
  93. } catch (Exception $e) {
  94. return $this->error($e->getMessage());
  95. }
  96. //删除缓存
  97. Cache::delete('guessaskList');
  98. return $this->success([], '操作成功');
  99. }
  100. //删除
  101. public function delete()
  102. {
  103. try {
  104. $params = (new GuessAskValidate())->goCheck('id');
  105. $info = GuessAskLanguages::where('id', $params['id'])->find();
  106. if (!$info) {
  107. return $this->error('猜你想问不存在');
  108. }
  109. $guess_ask_id = $info->guess_ask_id;
  110. $info->delete();
  111. if (GuessAskLanguages::where('guess_ask_id', $guess_ask_id)->count() == 0) {
  112. GuessAskModel::where('id', $guess_ask_id)->delete();
  113. }
  114. } catch (Exception $e) {
  115. return $this->error($e->getMessage());
  116. }
  117. //删除缓存
  118. Cache::delete('guessaskList');
  119. return $this->success([],'删除成功');
  120. }
  121. //设置状态、是否推荐、是否置顶
  122. public function setStatus()
  123. {
  124. try {
  125. $params = (new GuessAskValidate())->goCheck('status');
  126. $info = GuessAskLanguages::where('id', $params['id'])->find();
  127. if (!$info) {
  128. return $this->error('猜你想问不存在');
  129. }
  130. $field = $params['field'];
  131. $value = $info->$field == 0 ? 1 : 0;
  132. if ($field == 'is_top' && $value == 1) {
  133. GuessAskLanguages::where('is_top', 1)->update(['is_top' => 0]);
  134. }
  135. $info->$field = $value;
  136. $info->save();
  137. } catch (Exception $e) {
  138. return $this->error($e->getMessage());
  139. }
  140. //删除缓存
  141. Cache::delete('guessaskList');
  142. return $this->success([], '操作成功');
  143. }
  144. }