|
@@ -0,0 +1,205 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace app\admin\service\sys_manage;
|
|
|
+
|
|
|
+use app\model\SysCategory;
|
|
|
+use support\Db;
|
|
|
+use support\Request;
|
|
|
+
|
|
|
+class CategoryService
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * @Desc 分类列表
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 11:28
|
|
|
+ *
|
|
|
+ * @param $page
|
|
|
+ * @param $limit
|
|
|
+ * @param $keywords
|
|
|
+ * @return \support\Response
|
|
|
+ */
|
|
|
+ public static function categoryList($page, $limit, $keywords)
|
|
|
+ {
|
|
|
+ $list = SysCategory::select('*')
|
|
|
+ ->when($keywords != '', function ($query) use ($keywords) {
|
|
|
+ $query->where('category_name', 'like', '%' . $keywords . '%');
|
|
|
+ })
|
|
|
+ ->orderBy('category_addtimes', 'DESC')
|
|
|
+ ->forPage($page, $limit)
|
|
|
+ ->get()
|
|
|
+ ->toArray();
|
|
|
+ $count = SysCategory::when($keywords != '', function ($query) use ($keywords) {
|
|
|
+ $query->where('category_name', 'like', '%' . $keywords . '%');
|
|
|
+ })->count();
|
|
|
+
|
|
|
+ return json_success('', compact('list', 'page', 'limit', 'count'));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 分类详情
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 11:37
|
|
|
+ *
|
|
|
+ * @param $id
|
|
|
+ * @return \support\Response
|
|
|
+ */
|
|
|
+ public static function categoryInfo($id)
|
|
|
+ {
|
|
|
+ $category = SysCategory::where('category_id', $id)->first();
|
|
|
+ if (!$category) {
|
|
|
+ return json_fail('分类不存在');
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('', $category->toArray());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 添加分类
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 10:25
|
|
|
+ *
|
|
|
+ * @param $params
|
|
|
+ * @return \support\Response
|
|
|
+ */
|
|
|
+ public static function insertCategory($params)
|
|
|
+ {
|
|
|
+ DB::beginTransaction();
|
|
|
+ try {
|
|
|
+ $data = [
|
|
|
+ 'category_name' => $params['category_name'],
|
|
|
+ 'category_super_id' => $params['category_super_id'] ?? 0,
|
|
|
+ 'category_status' => $params['category_status'],
|
|
|
+ 'category_classify' => $params['category_classify'] ?? '',
|
|
|
+ 'category_type' => $params['category_type'] ?? '',
|
|
|
+ 'category_icon' => $params['category_icon'] ?? '',
|
|
|
+ 'category_images' => $params['category_images'] ?? '',
|
|
|
+ 'category_url' => $params['category_url'] ?? '',
|
|
|
+ 'category_page' => $params['category_page'] ?? '',
|
|
|
+ 'category_sort' => $params['category_sort'] ?? '',
|
|
|
+ 'category_groupby' => $params['category_groupby'] ?? '',
|
|
|
+ 'category_remark' => $params['category_remark'] ?? '',
|
|
|
+ 'category_extend_json' => !empty($params['category_extend_json']) ? $params['category_extend_json'] : '{}',
|
|
|
+ 'category_addtimes' => time()
|
|
|
+ ];
|
|
|
+ $categoryId = SysCategory::insertGetId($data);
|
|
|
+ if (!$categoryId) {
|
|
|
+ throw new \Exception('添加分类失败');
|
|
|
+ }
|
|
|
+ // 回填path
|
|
|
+ $categoryPath = self::getCategoryPath($params['category_super_id']) . $categoryId . '/';
|
|
|
+ SysCategory::where('category_id', $categoryId)->update(['category_super_path' => $categoryPath]);
|
|
|
+ // 提交事务
|
|
|
+ DB::commit();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ DB::rollBack();
|
|
|
+ return json_fail('添加分类失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('添加分类成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 修改分类
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 11:14
|
|
|
+ *
|
|
|
+ * @param $id
|
|
|
+ * @param $params
|
|
|
+ * @return \support\Response
|
|
|
+ */
|
|
|
+ public static function updateCategory($id, $params)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $category = SysCategory::select('category_super_id')->where('category_id', $id)->first();
|
|
|
+ if (!$category) {
|
|
|
+ throw new \Exception('分类不存在');
|
|
|
+ }
|
|
|
+ $data = [
|
|
|
+ 'category_name' => $params['category_name'],
|
|
|
+ 'category_classify' => $params['category_classify'] ?? '',
|
|
|
+ 'category_type' => $params['category_type'] ?? '',
|
|
|
+ 'category_icon' => $params['category_icon'] ?? '',
|
|
|
+ 'category_images' => $params['category_images'] ?? '',
|
|
|
+ 'category_url' => $params['category_url'] ?? '',
|
|
|
+ 'category_page' => $params['category_page'] ?? '',
|
|
|
+ 'category_sort' => $params['category_sort'] ?? '',
|
|
|
+ 'category_groupby' => $params['category_groupby'] ?? '',
|
|
|
+ 'category_remark' => $params['category_remark'] ?? '',
|
|
|
+ 'category_extend_json' => !empty($params['category_extend_json']) ? $params['category_extend_json'] : '{}',
|
|
|
+ 'category_addtimes' => time()
|
|
|
+ ];
|
|
|
+ if ($category->category_super_id != $params['category_super_id']) {
|
|
|
+ $data['category_super_id'] = $params['category_super_id'];
|
|
|
+ $data['category_super_path'] = self::getCategoryPath($params['category_super_id']) . $id . '/';
|
|
|
+ }
|
|
|
+ if (!SysCategory::where('category_id', $id)->update($data)) {
|
|
|
+ throw new \Exception('分类修改失败');
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_fail('分类修改失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('分类修改成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 修改分类状态
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 11:49
|
|
|
+ *
|
|
|
+ * @param $id
|
|
|
+ * @param $params
|
|
|
+ * @return \support\Response
|
|
|
+ */
|
|
|
+ public static function updateStatus($id, $params)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ SysCategory::where('category_id', $id)->update(['category_status' => $params['category_status']]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_fail('分类状态修改失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('分类状态修改成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 删除分类
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 11:56
|
|
|
+ *
|
|
|
+ * @param $id
|
|
|
+ * @return \support\Response
|
|
|
+ */
|
|
|
+ public static function delCategory($id)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ SysCategory::where('category_id', $id)->delete();
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return json_fail('分类删除失败');
|
|
|
+ }
|
|
|
+
|
|
|
+ return json_success('分类删除成功');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @Desc 获取path
|
|
|
+ * @Author Gorden
|
|
|
+ * @Date 2024/2/22 10:40
|
|
|
+ *
|
|
|
+ * @param $categoryId
|
|
|
+ * @return int|mixed
|
|
|
+ */
|
|
|
+ public static function getCategoryPath($categoryId)
|
|
|
+ {
|
|
|
+ if ($categoryId == 0) {
|
|
|
+ return '/0/';
|
|
|
+ }
|
|
|
+
|
|
|
+ $path = SysCategory::where('category_id', $categoryId)->value('category_super_path');
|
|
|
+ if (!$path) {
|
|
|
+ throw new \Exception('分类不存在');
|
|
|
+ }
|
|
|
+
|
|
|
+ return $path;
|
|
|
+ }
|
|
|
+}
|