CategoryService.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. namespace app\admin\service\sys_manage;
  3. use app\model\SysCategory;
  4. use support\Db;
  5. use support\Request;
  6. class CategoryService
  7. {
  8. /**
  9. * @Desc 分类列表
  10. * @Author Gorden
  11. * @Date 2024/2/22 11:28
  12. *
  13. * @param $page
  14. * @param $limit
  15. * @param $keywords
  16. * @return \support\Response
  17. */
  18. public static function categoryList($page, $limit, $keywords)
  19. {
  20. $list = SysCategory::select('*')
  21. ->when($keywords != '', function ($query) use ($keywords) {
  22. $query->where('category_name', 'like', '%' . $keywords . '%');
  23. })
  24. ->orderBy('category_addtimes', 'DESC')
  25. ->forPage($page, $limit)
  26. ->get()
  27. ->toArray();
  28. $count = SysCategory::when($keywords != '', function ($query) use ($keywords) {
  29. $query->where('category_name', 'like', '%' . $keywords . '%');
  30. })->count();
  31. return json_success('', compact('list', 'page', 'limit', 'count'));
  32. }
  33. /**
  34. * @Desc 分类详情
  35. * @Author Gorden
  36. * @Date 2024/2/22 11:37
  37. *
  38. * @param $id
  39. * @return \support\Response
  40. */
  41. public static function categoryInfo($id)
  42. {
  43. $category = SysCategory::where('category_id', $id)->first();
  44. if (!$category) {
  45. return json_fail('分类不存在');
  46. }
  47. return json_success('', $category->toArray());
  48. }
  49. /**
  50. * @Desc 添加分类
  51. * @Author Gorden
  52. * @Date 2024/2/22 10:25
  53. *
  54. * @param $params
  55. * @return \support\Response
  56. */
  57. public static function insertCategory($params)
  58. {
  59. DB::beginTransaction();
  60. try {
  61. $data = [
  62. 'category_name' => $params['category_name'],
  63. 'category_super_id' => $params['category_super_id'] ?? 0,
  64. 'category_status' => $params['category_status'],
  65. 'category_classify' => $params['category_classify'] ?? '',
  66. 'category_type' => $params['category_type'] ?? '',
  67. 'category_icon' => $params['category_icon'] ?? '',
  68. 'category_images' => $params['category_images'] ?? '',
  69. 'category_url' => $params['category_url'] ?? '',
  70. 'category_page' => $params['category_page'] ?? '',
  71. 'category_sort' => $params['category_sort'] ?? '',
  72. 'category_groupby' => $params['category_groupby'] ?? '',
  73. 'category_remark' => $params['category_remark'] ?? '',
  74. 'category_extend_json' => !empty($params['category_extend_json']) ? $params['category_extend_json'] : '{}',
  75. 'category_addtimes' => time()
  76. ];
  77. $categoryId = SysCategory::insertGetId($data);
  78. if (!$categoryId) {
  79. throw new \Exception('添加分类失败');
  80. }
  81. // 回填path
  82. $categoryPath = self::getCategoryPath($params['category_super_id']) . $categoryId . '/';
  83. SysCategory::where('category_id', $categoryId)->update(['category_super_path' => $categoryPath]);
  84. // 提交事务
  85. DB::commit();
  86. } catch (\Exception $e) {
  87. DB::rollBack();
  88. return json_fail('添加分类失败');
  89. }
  90. return json_success('添加分类成功');
  91. }
  92. /**
  93. * @Desc 修改分类
  94. * @Author Gorden
  95. * @Date 2024/2/22 11:14
  96. *
  97. * @param $id
  98. * @param $params
  99. * @return \support\Response
  100. */
  101. public static function updateCategory($id, $params)
  102. {
  103. try {
  104. $category = SysCategory::select('category_super_id')->where('category_id', $id)->first();
  105. if (!$category) {
  106. throw new \Exception('分类不存在');
  107. }
  108. $data = [
  109. 'category_name' => $params['category_name'],
  110. 'category_classify' => $params['category_classify'] ?? '',
  111. 'category_type' => $params['category_type'] ?? '',
  112. 'category_icon' => $params['category_icon'] ?? '',
  113. 'category_images' => $params['category_images'] ?? '',
  114. 'category_url' => $params['category_url'] ?? '',
  115. 'category_page' => $params['category_page'] ?? '',
  116. 'category_sort' => $params['category_sort'] ?? '',
  117. 'category_groupby' => $params['category_groupby'] ?? '',
  118. 'category_remark' => $params['category_remark'] ?? '',
  119. 'category_extend_json' => !empty($params['category_extend_json']) ? $params['category_extend_json'] : '{}',
  120. 'category_addtimes' => time()
  121. ];
  122. if ($category->category_super_id != $params['category_super_id']) {
  123. $data['category_super_id'] = $params['category_super_id'];
  124. $data['category_super_path'] = self::getCategoryPath($params['category_super_id']) . $id . '/';
  125. }
  126. if (!SysCategory::where('category_id', $id)->update($data)) {
  127. throw new \Exception('分类修改失败');
  128. }
  129. } catch (\Exception $e) {
  130. return json_fail('分类修改失败');
  131. }
  132. return json_success('分类修改成功');
  133. }
  134. /**
  135. * @Desc 修改分类状态
  136. * @Author Gorden
  137. * @Date 2024/2/22 11:49
  138. *
  139. * @param $id
  140. * @param $params
  141. * @return \support\Response
  142. */
  143. public static function updateStatus($id, $params)
  144. {
  145. try {
  146. SysCategory::where('category_id', $id)->update(['category_status' => $params['category_status']]);
  147. } catch (\Exception $e) {
  148. return json_fail('分类状态修改失败');
  149. }
  150. return json_success('分类状态修改成功');
  151. }
  152. /**
  153. * @Desc 删除分类
  154. * @Author Gorden
  155. * @Date 2024/2/22 11:56
  156. *
  157. * @param $id
  158. * @return \support\Response
  159. */
  160. public static function delCategory($id)
  161. {
  162. try {
  163. SysCategory::where('category_id', $id)->delete();
  164. } catch (\Exception $e) {
  165. return json_fail('分类删除失败');
  166. }
  167. return json_success('分类删除成功');
  168. }
  169. /**
  170. * @Desc 获取path
  171. * @Author Gorden
  172. * @Date 2024/2/22 10:40
  173. *
  174. * @param $categoryId
  175. * @return int|mixed
  176. */
  177. public static function getCategoryPath($categoryId)
  178. {
  179. if ($categoryId == 0) {
  180. return '/0/';
  181. }
  182. $path = SysCategory::where('category_id', $categoryId)->value('category_super_path');
  183. if (!$path) {
  184. throw new \Exception('分类不存在');
  185. }
  186. return $path;
  187. }
  188. }