Browse Source

'角色管理'

wangchuanbao 1 year ago
parent
commit
a188583832

+ 109 - 0
app/admin/controller/role/Role.php

@@ -0,0 +1,109 @@
+<?php
+
+namespace app\admin\controller\role;
+
+use app\admin\service\role\RoleService;
+use app\admin\validate\role\RoleValidate;
+use support\Request;
+
+class Role
+{
+    /**
+     * @Desc 角色列表
+     * @Author Gorden
+     * @Date 2024/2/20 16:30
+     *
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function roleList(Request $request)
+    {
+        $page = intval($request->get('page', 1));
+        $limit = intval($request->get('limit', 10));
+        $keyword = htmlspecialchars(strip_tags($request->get('$keyword', '')));
+
+        return RoleService::roleList($page, $limit, $keyword);
+    }
+
+    /**
+     * @Desc 角色详情
+     * @Author Gorden
+     * @Date 2024/2/20 16:36
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function roleInfo($id)
+    {
+        return RoleService::roleInfo(intval($id));
+    }
+
+    /**
+     * @Desc 添加角色
+     * @Author Gorden
+     * @Date 2024/2/20 15:38
+     *
+     * @param Request $request
+     * @return \support\Response|null
+     */
+    public function addRole(Request $request)
+    {
+        $validate = new RoleValidate();
+        if (!$validate->scene('add')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return RoleService::insertRole($request->post());
+    }
+
+    /**
+     * @Desc 修改角色
+     * @Author Gorden
+     * @Date 2024/2/20 16:07
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateRole($id, Request $request)
+    {
+        $validate = new RoleValidate();
+        if (!$validate->scene('update')->check($request->post())) {
+            return json_fail($validate->getError());
+        }
+
+        return RoleService::updateRole(intval($id), $request->post());
+    }
+
+    /**
+     * @Desc 删除角色
+     * @Author Gorden
+     * @Date 2024/2/20 16:40
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public function delRole($id)
+    {
+        return RoleService::delRole(intval($id));
+    }
+
+    /**
+     * @Desc 修改角色状态
+     * @Author Gorden
+     * @Date 2024/2/20 16:50
+     *
+     * @param $id
+     * @param Request $request
+     * @return \support\Response
+     */
+    public function updateStatus($id, Request $request)
+    {
+        $validate = new RoleValidate();
+        if (!$validate->scene('update_status')->check(['role_status' => $request->post('role_status')])) {
+            return json_fail($validate->getError());
+        }
+
+        return RoleService::updateStatus(intval($id), $request->post('role_status'));
+    }
+}

+ 156 - 0
app/admin/service/role/RoleService.php

@@ -0,0 +1,156 @@
+<?php
+
+namespace app\admin\service\role;
+
+use app\model\SysRole;
+use support\Db;
+
+class RoleService
+{
+    /**
+     * @Desc 角色列表
+     * @Author Gorden
+     * @Date 2024/2/20 16:29
+     *
+     * @param $page
+     * @param $limit
+     * @param $keyword
+     * @return \support\Response
+     */
+    public static function roleList($page, $limit, $keyword)
+    {
+        $list = SysRole::select('*')
+            ->when($keyword != '', function ($query) use ($keyword) {
+                $query->where('role_name', 'like', '%' . $keyword . '%');
+            })
+            ->orderBy('role_addtimes', 'DESC')
+            ->forPage($page, $limit)
+            ->get()
+            ->toArray();
+        $count = SysRole::when($keyword != '', function ($query) use ($keyword) {
+            $query->where('role_name', 'like', '%' . $keyword . '%');
+        })->count();
+
+        return json_success('', compact('list', 'page', 'limit', 'count'));
+    }
+
+    /**
+     * @Desc 角色详情
+     * @Author Gorden
+     * @Date 2024/2/20 16:37
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public static function roleInfo($id)
+    {
+        $role = SysRole::find($id);
+        if (!$role) {
+            return json_fail('角色不存在');
+        }
+
+        $role = $role->toArray();
+        return json_success('', $role);
+    }
+
+    /**
+     * @Desc 添加角色
+     * @Author Gorden
+     * @Date 2024/2/20 16:02
+     *
+     * @param $params
+     * @return \support\Response
+     */
+    public static function insertRole($params)
+    {
+        try {
+            $data = [
+                'role_status' => $params['role_status'],
+                'role_category' => $params['role_category'],
+                'role_name' => $params['role_name'],
+                'role_remark' => $params['role_remark'] ? format_string($params['role_remark']) : null,
+                'role_extend_json' => $params['role_extend_json'] ?? null,
+                'role_addtimes' => time()
+            ];
+
+            // 入库
+            SysRole::insert($data);
+        } catch (\Exception $e) {
+            return json_fail('角色添加失败');
+        }
+
+        return json_success('角色添加成功');
+    }
+
+    /**
+     * @Desc 修改角色
+     * @Author Gorden
+     * @Date 2024/2/20 16:02
+     *
+     * @param $id
+     * @param $params
+     * @return \support\Response
+     */
+    public static function updateRole($id, $params)
+    {
+        $role = SysRole::find($id);
+        if (!$role) {
+            return json_fail('角色不存在');
+        }
+
+        try {
+            $data = [
+                'role_status' => $params['role_status'],
+                'role_category' => $params['role_category'],
+                'role_name' => $params['role_name'],
+                'role_remark' => $params['role_remark'] ? format_string($params['role_remark']) : null,
+                'role_extend_json' => $params['role_extend_json'],
+            ];
+            SysRole::where('role_id', $id)->update($data);
+        } catch (\Exception $e) {
+            dd($e->getMessage());
+            return json_fail('角色修改失败');
+        }
+
+        return json_success('角色修改成功');
+    }
+
+    /**
+     * @Desc 删除角色
+     * @Author Gorden
+     * @Date 2024/2/20 16:40
+     *
+     * @param $id
+     * @return \support\Response
+     */
+    public static function delRole($id)
+    {
+        try {
+            SysRole::where('role_id', $id)->delete();
+        } catch (\Exception $e) {
+            return json_fail('角色删除失败');
+        }
+        return json_success('角色删除成功');
+    }
+
+    /**
+     * @Desc 修改角色状态
+     * @Author Gorden
+     * @Date 2024/2/20 16:50
+     *
+     * @param $id
+     * @param $roleStatus
+     * @return \support\Response
+     */
+    public static function updateStatus($id, $roleStatus)
+    {
+        try {
+            SysRole::where('role_id', $id)->update(['role_status' => $roleStatus]);
+        } catch (\Exception $e) {
+            dd($e->getMessage());
+            return json_fail('角色状态修改失败');
+        }
+
+        return json_success('角色状态修改成功');
+    }
+}

+ 23 - 0
app/admin/validate/role/RoleValidate.php

@@ -0,0 +1,23 @@
+<?php
+
+namespace app\admin\validate\role;
+
+use think\Validate;
+
+class RoleValidate extends Validate
+{
+    protected $rule = [
+        'role_id'       => 'require',
+        'role_status'   => 'require|in:ACTIVED,DISABLED',
+        'role_category' => 'require|in:NORMAL,OTHER',
+        'role_name'     => 'chsDash'
+    ];
+
+    protected $message = [];
+
+    protected $scene = [
+        'add' => ['role_status', 'role_category', 'role_name'],
+        'update' => ['role_status', 'role_category', 'role_name'],
+        'update_status' => ['role_status'],
+    ];
+}

+ 15 - 0
app/model/SysRole.php

@@ -0,0 +1,15 @@
+<?php
+
+namespace app\model;
+
+use support\Model;
+
+class SysRole extends Model
+{
+    // 关联表
+    protected $table = 'sys_role';
+
+    protected $primaryKey = 'role_id';
+
+    public const UPDATED_AT = null;
+}

+ 1 - 0
config/process.php

@@ -27,6 +27,7 @@ return [
                 base_path() . '/process',
                 base_path() . '/support',
                 base_path() . '/resource',
+                base_path() . '/route',
                 base_path() . '/.env',
             ], glob(base_path() . '/plugin/*/app'), glob(base_path() . '/plugin/*/config'), glob(base_path() . '/plugin/*/api')),
             // Files with these suffixes will be monitored

+ 8 - 0
route/api.php

@@ -2,3 +2,11 @@
 
 use Webman\Route;
 
+Route::group('/role', function () {
+    Route::get('/list', [\app\admin\controller\role\Role::class, 'roleList']);
+    Route::get('/info/{id}', [\app\admin\controller\role\Role::class, 'roleInfo']);
+    Route::post('/add', [\app\admin\controller\role\Role::class, 'addRole']);
+    Route::post('/update/{id}', [\app\admin\controller\role\Role::class, 'updateRole']);
+    Route::delete('/delete/{id}', [\app\admin\controller\role\Role::class, 'delRole']);
+    Route::patch('/updateStatus/{id}', [\app\admin\controller\role\Role::class, 'updateStatus']);
+});

+ 27 - 0
support/helpers.php

@@ -142,6 +142,33 @@ function json($data, int $options = JSON_UNESCAPED_UNICODE): Response
     return new Response(200, ['Content-Type' => 'application/json'], json_encode($data, $options));
 }
 
+function json_success($message, $data = '', $options = JSON_UNESCAPED_UNICODE)
+{
+    $return = [
+        'code' => 200,
+        'message' => $message,
+        'data' => $data,
+    ];
+
+    return new Response(200, ['Content-Type' => 'application/json'], json_encode($return, $options));
+}
+
+function json_fail($message, $options = JSON_UNESCAPED_UNICODE)
+{
+    $return = [
+        'code' => 0,
+        'message' => $message,
+        'data' => ''
+    ];
+
+    return new Response(200, ['Content-Type' => 'application/json'], json_encode($return, $options));
+}
+
+function format_string($string)
+{
+    return htmlspecialchars(strip_tags($string));
+}
+
 /**
  * Xml response
  * @param $xml