Question.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use app\admin\model\Question as QuestionModel;
  5. use app\admin\model\QuestionLanguages;
  6. use app\admin\validate\QuestionValidate;
  7. use Exception;
  8. /**
  9. * 问题管理
  10. */
  11. class Question extends BaseController
  12. {
  13. /**
  14. * @api {get} /question/list 列表
  15. */
  16. function list()
  17. {
  18. try {
  19. $params = $this->request->param();
  20. $page = $params['page'] ?? 1;
  21. $limit = $params['limit'] ?? 15;
  22. $question = $params['question'] ?? '';
  23. $language_code = $params['language_code'] ?? $this->lang;
  24. $query = QuestionLanguages::alias('question_languages')
  25. ->join('keyword_languages', 'keyword_languages.id = question_languages.keyword_id', 'left');
  26. if (!empty($language_code)) {
  27. $query->where('question_languages.language_code', $language_code);
  28. }
  29. if (!empty($question)) {
  30. $query->where(function ($query) use ($question) {
  31. $query->where('question_languages.question', 'like', "%{$question}%")
  32. ->whereOr('keyword_languages.name', 'like', "%{$question}%");
  33. });
  34. }
  35. if (!empty($params['category_id'])) {
  36. $query->where('question_languages.category_id', $params['category_id']);
  37. }
  38. if (!empty($params['question_type'])) {
  39. $query->where('question_languages.question_type', $params['question_type']);
  40. }
  41. if (!empty($params['start_time'])) {
  42. $query->where('question_languages.created_at', '>=', $params['start_time'].'00:00:00');
  43. }
  44. if (!empty($params['end_time'])) {
  45. $query->where('question_languages.created_at', '<=', $params['end_time'].'23:59:59');
  46. }
  47. $count = $query->count();
  48. $list = $query->join('category_languages', 'question_languages.category_id = category_languages.category_id', 'left')
  49. ->field(['question_languages.*', 'question_languages.category_id', 'category_languages.name as category_name', 'keyword_languages.name as keyword_name'])
  50. // ->where('category_languages.language_code', $language_code)
  51. ->order('weight','desc')
  52. ->limit($limit)
  53. ->page($page)
  54. ->select();
  55. $questionTypeList = QuestionModel::questionTypeList($language_code, false);
  56. foreach($list as &$item) {
  57. $item['question_type_text'] = $questionTypeList[$item['question_type']] ?? '';
  58. }
  59. } catch (Exception $e) {
  60. return $this->error($e->getMessage());
  61. }
  62. return $this->success(['questionTypeList' => QuestionModel::questionTypeList($language_code), 'count' => $count, 'list' => $list]);
  63. }
  64. //新增/编辑
  65. public function update()
  66. {
  67. try {
  68. $params = (new QuestionValidate)->post()->goCheck('edit');
  69. $id = $this->request->param('id',0);
  70. $language_code = $params['language_code'] ?? $this->lang;
  71. if (!$id) {
  72. $questionLanguage = new QuestionLanguages();
  73. } else {
  74. $questionLanguage = QuestionLanguages::where('id', $id)->find();
  75. if (!$questionLanguage) {
  76. return $this->error('问题不存在');
  77. }
  78. }
  79. $questionLanguage->category_id = $params['category_id'];
  80. $questionLanguage->question_type = $params['question_type'];
  81. $questionLanguage->question = $params['question'];
  82. $questionLanguage->answer = $params['answer'];
  83. $questionLanguage->keyword_id = $params['keyword_id']??0;
  84. $questionLanguage->weight = $params['weight'];
  85. $questionLanguage->language_code = $language_code;
  86. $questionLanguage->save();
  87. } catch (Exception $e) {
  88. return $this->error($e->getMessage());
  89. }
  90. return $this->success([],'保存成功');
  91. }
  92. //设置状态
  93. public function setStatus()
  94. {
  95. try {
  96. $params = (new QuestionValidate)->goCheck('id');
  97. $info = QuestionLanguages::where('id', $params['id'])->find();
  98. if (!$info) {
  99. return $this->error('问题不存在');
  100. }
  101. $info->status = $info->status == 0 ? 1 : 0;
  102. $info->save();
  103. } catch (Exception $e) {
  104. return $this->error($e->getMessage());
  105. }
  106. return $this->success([], '操作成功');
  107. }
  108. //批量修改权重
  109. public function setWeight()
  110. {
  111. try {
  112. $id = request()->post('id');
  113. $weight = request()->post('weight');
  114. if (empty($id) || empty($weight) || !is_array($id)) {
  115. return $this->error('参数错误');
  116. }
  117. QuestionLanguages::whereIn('id', $id)->update(['weight' => $weight]);
  118. } catch (Exception $e) {
  119. return $this->error($e->getMessage());
  120. }
  121. return $this->success([], '操作成功');
  122. }
  123. //批量修改问题类别
  124. public function setQuestionType()
  125. {
  126. try {
  127. $id = request()->post('id');
  128. $question_type = request()->post('question_type');
  129. if (empty($id) || empty($question_type) || !is_array($id)) {
  130. return $this->error('参数错误');
  131. }
  132. QuestionLanguages::whereIn('id', $id)->update(['question_type' => $question_type]);
  133. } catch (Exception $e) {
  134. return $this->error($e->getMessage());
  135. }
  136. return $this->success([], '操作成功');
  137. }
  138. //删除
  139. public function delete()
  140. {
  141. try {
  142. $params = (new QuestionValidate)->goCheck('id');
  143. $info = QuestionLanguages::where('id', $params['id'])->find();
  144. if (!$info) {
  145. return $this->error('问题不存在');
  146. }
  147. $question_id = $info->question_id;
  148. $info->delete();
  149. } catch (Exception $e) {
  150. return $this->error($e->getMessage());
  151. }
  152. return $this->success([], '删除成功');
  153. }
  154. }