Category.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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\validate\CategoryValidate;
  8. /**
  9. * 问题分类管理
  10. */
  11. class Category extends BaseController
  12. {
  13. /**
  14. * @api {get} /category/list 列表
  15. */
  16. function list()
  17. {
  18. try {
  19. $params = $this->request->param();
  20. $page = $params['page'] ?? 1;
  21. $limit = $params['limit'] ?? 15;
  22. $language_code = $params['language_code'] ?? $this->lang;
  23. $query = CategoryLanguages::where('language_code', $language_code);
  24. $count = $query->count();
  25. $list = $query->where('language_code', $language_code)
  26. ->order('weight','desc')
  27. ->paginate(['list_rows'=>$limit,'page'=>$page]);
  28. } catch (Exception $e) {
  29. return $this->error($e->getMessage());
  30. }
  31. return $this->success(['count' => $count, 'list' => $list]);
  32. }
  33. //新增/编辑
  34. public function update()
  35. {
  36. try {
  37. $params = (new CategoryValidate())->sceneAdd()->goCheck();
  38. $id = $params['id'] ?? 0;
  39. $status = $params['status'] ?? 1;
  40. $category_id = $params['category_id'] ?? 0;
  41. $language_code = $params['language_code'] ?? $this->lang;
  42. $exists = CategoryLanguages::where('name', $params['name'])->where('language_code', $language_code)->find();
  43. if ($exists ) {
  44. if (!$id || $id != $exists->id) {
  45. return $this->error('分类名称已存在');
  46. }
  47. }
  48. if (!$category_id) {
  49. $category = CategoryModel::create([
  50. 'category_id' => $category_id,
  51. ]);
  52. $category_id = $category->id;
  53. }
  54. if (empty($params['id'])) {
  55. $categoryLanguage = new CategoryLanguages();
  56. } else {
  57. $categoryLanguage = CategoryLanguages::where('id', $id)->find();
  58. if (!$categoryLanguage) {
  59. return $this->error('分类不存在');
  60. }
  61. }
  62. $categoryLanguage->category_id = $category_id;
  63. $categoryLanguage->name = $params['name'];
  64. $categoryLanguage->weight = $params['weight'];
  65. $categoryLanguage->status = $status;
  66. $categoryLanguage->language_code = $language_code;
  67. $categoryLanguage->save();
  68. } catch (Exception $e) {
  69. return $this->error($e->getMessage());
  70. }
  71. return $this->success([], '操作成功');
  72. }
  73. //设置状态
  74. public function setStatus()
  75. {
  76. try {
  77. $params = (new CategoryValidate())->sceneId()->goCheck();
  78. $info = CategoryLanguages::where('id', $params['id'])->find();
  79. if (!$info) {
  80. return $this->error('分类不存在');
  81. }
  82. $info->status = $info->status == 0 ? 1 : 0;
  83. $info->save();
  84. } catch (Exception $e) {
  85. return $this->error($e->getMessage());
  86. }
  87. return $this->success([], '操作成功');
  88. }
  89. //删除
  90. public function delete()
  91. {
  92. try {
  93. $params = (new CategoryValidate())->sceneId()->goCheck();
  94. $info = CategoryLanguages::where('id', $params['id'])->find();
  95. if (!$info) {
  96. return $this->error('分类不存在');
  97. }
  98. $category_id = $info->category_id;
  99. $info->delete();
  100. if (CategoryLanguages::where('category_id', $category_id)->count() == 0) {
  101. CategoryModel::where('id', $category_id)->delete();
  102. }
  103. } catch (Exception $e) {
  104. return $this->error($e->getMessage());
  105. }
  106. return $this->success([],'删除成功');
  107. }
  108. }