GuessAsk.php 5.5 KB

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