Category.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace app\admin\controller;
  3. use app\BaseController;
  4. use Exception;
  5. use app\admin\model\Category as CategoryModel;
  6. use app\admin\model\CategoryLanguages;
  7. use app\admin\model\QuestionLanguages;
  8. use app\admin\validate\CategoryValidate;
  9. /**
  10. * 问题分类管理
  11. */
  12. class Category extends BaseController
  13. {
  14. /**
  15. * @api {get} /category/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 = CategoryLanguages::where('language_code', $language_code);
  25. $count = $query->count();
  26. $list = $query->where('language_code', $language_code)
  27. ->order('weight','desc')
  28. ->limit($limit)
  29. ->page($page)
  30. ->select();
  31. foreach ($list as &$item) {
  32. $item['num'] = QuestionLanguages::where('category_id', $item->category_id)->count();
  33. }
  34. } catch (Exception $e) {
  35. return $this->error($e->getMessage());
  36. }
  37. return $this->success(['count' => $count, 'list' => $list]);
  38. }
  39. //新增/编辑
  40. public function update()
  41. {
  42. try {
  43. $params = (new CategoryValidate())->post()->goCheck('add');
  44. $id = $this->request->param('id', 0);
  45. $status = $params['status'] ?? 1;
  46. $category_id = $params['category_id'] ?? 0;
  47. $language_code = $params['language_code'] ?? $this->lang;
  48. $exists = CategoryLanguages::where('name', $params['name'])->where('language_code', $language_code)->find();
  49. if ($exists ) {
  50. if (!$id || $id != $exists->id) {
  51. return $this->error('分类名称已存在');
  52. }
  53. }
  54. if (!$category_id) {
  55. $category = CategoryModel::create([
  56. 'created_at' => date('Y-m-d H:i:s'),
  57. ]);
  58. $category_id = $category->id;
  59. }
  60. if (empty($id)) {
  61. $categoryLanguage = new CategoryLanguages();
  62. } else {
  63. $categoryLanguage = CategoryLanguages::where('id', $id)->find();
  64. if (!$categoryLanguage) {
  65. return $this->error('分类不存在');
  66. }
  67. }
  68. $categoryLanguage->category_id = $category_id;
  69. $categoryLanguage->name = $params['name'];
  70. $categoryLanguage->weight = $params['weight'];
  71. $categoryLanguage->status = $status;
  72. $categoryLanguage->language_code = $language_code;
  73. $categoryLanguage->save();
  74. } catch (Exception $e) {
  75. return $this->error($e->getMessage());
  76. }
  77. return $this->success([], '操作成功');
  78. }
  79. //设置状态
  80. public function setStatus()
  81. {
  82. try {
  83. $params = (new CategoryValidate())->sceneId()->goCheck();
  84. $info = CategoryLanguages::where('id', $params['id'])->find();
  85. if (!$info) {
  86. return $this->error('分类不存在');
  87. }
  88. $info->status = $info->status == 0 ? 1 : 0;
  89. $info->save();
  90. } catch (Exception $e) {
  91. return $this->error($e->getMessage());
  92. }
  93. return $this->success([], '操作成功');
  94. }
  95. //删除
  96. public function delete()
  97. {
  98. try {
  99. $params = (new CategoryValidate())->sceneId()->goCheck();
  100. $info = CategoryLanguages::where('id', $params['id'])->find();
  101. if (!$info) {
  102. return $this->error('分类不存在');
  103. }
  104. $category_id = $info->category_id;
  105. $info->delete();
  106. if (CategoryLanguages::where('category_id', $category_id)->count() == 0) {
  107. CategoryModel::where('id', $category_id)->delete();
  108. }
  109. } catch (Exception $e) {
  110. return $this->error($e->getMessage());
  111. }
  112. return $this->success([],'删除成功');
  113. }
  114. }