ソースを参照

'分类管理'

gorden 1 年間 前
コミット
7f95c93fa2

+ 109 - 0
app/admin/controller/sys_manage/Category.php

@@ -0,0 +1,109 @@
+<?php
+
+namespace app\admin\controller\sys_manage;
+
+use app\admin\service\sys_manage\CategoryService;
+use app\admin\validate\sys_manage\CategoryValidate;
+use support\Request;
+
+class Category
+{
+    /**
+     * @Desc 分类列表
+     * @Author Gorden
+     * @Date 2024/2/22 11:28
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function categoryList(Request $request)
+    {
+        $page = (int)$request->get('page', 1);
+        $limit = (int)$request->get('limit', 10);
+        $keywords = format_string($request->get('keywords', ''));
+
+        return CategoryService::categoryList($page, $limit, $keywords);
+    }
+
+    /**
+     * @Desc 分类详情
+     * @Author Gorden
+     * @Date 2024/2/22 11:37
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function categoryInfo($id)
+    {
+        return CategoryService::categoryInfo($id);
+    }
+
+    /**
+     * @Desc 添加分类
+     * @Author Gorden
+     * @Date 2024/2/22 10:25
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function addCategory(Request $request)
+    {
+        $validate = new CategoryValidate();
+        if (!$validate->scene('add')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return CategoryService::insertCategory($request->post());
+    }
+
+    /**
+     * @Desc 修改分类
+     * @Author Gorden
+     * @Date 2024/2/22 11:05
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateCategory($id, Request $request)
+    {
+        $validate = new CategoryValidate();
+        if (!$validate->scene('update')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return CategoryService::updateCategory($id, $request->post());
+    }
+
+    /**
+     * @Desc 修改分类状态
+     * @Author Gorden
+     * @Date 2024/2/22 11:49
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateStatus($id, Request $request)
+    {
+        $validate = new CategoryValidate();
+        if (!$validate->scene('update_status')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return CategoryService::updateStatus($id, $request->post());
+    }
+
+    /**
+     * @Desc 删除分类
+     * @Author Gorden
+     * @Date 2024/2/22 11:57
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function delCategory($id)
+    {
+        return CategoryService::delCategory($id);
+    }
+}

+ 205 - 0
app/admin/service/sys_manage/CategoryService.php

@@ -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;
+    }
+}

+ 27 - 0
app/admin/validate/sys_manage/CategoryValidate.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace app\admin\validate\sys_manage;
+
+use think\Validate;
+
+class CategoryValidate extends Validate
+{
+    protected $rule = [
+        'category_name' => 'require|chsDash',
+        'category_super_id' => 'integer',
+        'category_status' => 'require|in:PENDING,ACTIVED,DISABLED',
+        'category_classify' => 'chsDash',
+        'category_type' => 'chsDash',
+        'category_sort' => 'integer',
+        'category_groupby' => 'chsDash',
+        'category_remark' => 'chsDash'
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => ['category_name', 'category_super_id', 'category_status', 'category_classify', 'category_type', 'category_sort', 'category_groupby', 'category_remark'],
+        'update' => ['category_name', 'category_super_id', 'category_classify', 'category_type', 'category_sort', 'category_groupby', 'category_remark'],
+        'update_status' => ['category_status']
+    ];
+}

+ 2 - 0
app/model/SysCategory.php

@@ -9,4 +9,6 @@ class SysCategory extends Model
     public $table = 'sys_category';
 
     public $primaryKey = 'category_id';
+
+    public const UPDATED_AT = null;
 }

+ 2 - 2
config/plugin/tinywan/jwt/app.php

@@ -7,8 +7,8 @@ return [
         'algorithms' => 'HS256',
         // access令牌秘钥
         'access_secret_key' => '2022d3d3LmJq',
-        // access令牌过期时间,单位:秒。默认 2 小时
-        'access_exp' => 7200,
+        // access令牌过期时间,单位:秒。默认 2 小时 7200 , 开发期间 7天
+        'access_exp' => 604800,
         // refresh令牌秘钥
         'refresh_secret_key' => '2022KTxigxc9o50c',
         // refresh令牌过期时间,单位:秒。默认 7 天

+ 48 - 33
route/api.php

@@ -12,39 +12,54 @@ Route::group('/admin', function () {
         \app\middleware\AdminAuthCheck::class
     ]);
 
-    /* 角色管理 */
-    Route::group('/sys/role', function () {
-        Route::get('/list', [\app\admin\controller\sys_manage\Role::class, 'roleList']);
-        Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'roleInfo']);
-        Route::post('/add', [\app\admin\controller\sys_manage\Role::class, 'addRole']);
-        Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'updateRole']);
-        Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'delRole']);
-        Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'updateStatus']);
-    })->middleware([
-        \app\middleware\AdminAuthCheck::class
-    ]);
+    /* 系统管理中心 */
+    Route::group('/sys', function () {
+        /* 角色管理 */
+        Route::group('/role', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\Role::class, 'roleList']);
+            Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'roleInfo']);
+            Route::post('/add', [\app\admin\controller\sys_manage\Role::class, 'addRole']);
+            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'updateRole']);
+            Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'delRole']);
+            Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Role::class, 'updateStatus']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
 
-    /* 部门管理 */
-    Route::group('/sys/dept', function () {
-        Route::get('/list', [\app\admin\controller\sys_manage\Dept::class, 'deptList']);
-        Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'deptInfo']);
-        Route::post('/add', [\app\admin\controller\sys_manage\Dept::class, 'addDept']);
-        Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'updateDept']);
-        Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'updateStatus']);
-        Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'delDept']);
-    })->middleware([
-        \app\middleware\AdminAuthCheck::class
-    ]);
+        /* 部门管理 */
+        Route::group('/dept', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\Dept::class, 'deptList']);
+            Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'deptInfo']);
+            Route::post('/add', [\app\admin\controller\sys_manage\Dept::class, 'addDept']);
+            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'updateDept']);
+            Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'updateStatus']);
+            Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Dept::class, 'delDept']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
 
-    /* 用户管理 */
-    Route::group('/sys/user', function () {
-        Route::get('/list', [\app\admin\controller\sys_manage\User::class, 'userList']);
-        Route::get('/info/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'userInfo']);
-        Route::post('/add', [\app\admin\controller\sys_manage\User::class, 'addUser']);
-        Route::post('/update/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'updateUser']);
-        Route::post('/updateStatus/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'updateStatus']);
-        Route::delete('/delete/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'delUser']);
-    })->middleware([
-        \app\middleware\AdminAuthCheck::class
-    ]);
+        /* 用户管理 */
+        Route::group('/user', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\User::class, 'userList']);
+            Route::get('/info/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'userInfo']);
+            Route::post('/add', [\app\admin\controller\sys_manage\User::class, 'addUser']);
+            Route::post('/update/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'updateUser']);
+            Route::post('/updateStatus/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'updateStatus']);
+            Route::delete('/delete/{id:\w+}', [\app\admin\controller\sys_manage\User::class, 'delUser']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
+
+        /* 分类管理 */
+        Route::group('/category', function () {
+            Route::get('/list', [\app\admin\controller\sys_manage\Category::class, 'categoryList']);
+            Route::get('/info/{id:\d+}', [\app\admin\controller\sys_manage\Category::class, 'categoryInfo']);
+            Route::post('/add', [\app\admin\controller\sys_manage\Category::class, 'addCategory']);
+            Route::post('/update/{id:\d+}', [\app\admin\controller\sys_manage\Category::class, 'updateCategory']);
+            Route::post('/updateStatus/{id:\d+}', [\app\admin\controller\sys_manage\Category::class, 'updateStatus']);
+            Route::delete('/delete/{id:\d+}', [\app\admin\controller\sys_manage\Category::class, 'delCategory']);
+        })->middleware([
+            \app\middleware\AdminAuthCheck::class
+        ]);
+    });
 });