瀏覽代碼

Merge branch 'dev_wf' of wufeng/fuse into version1.5

wufeng 2 年之前
父節點
當前提交
60181097dc

+ 13 - 0
app/admin/config/validate_rules.php

@@ -2,6 +2,7 @@
 
 use app\model\AdminMenuModel;
 use app\model\CommonModel;
+use app\model\RoleModel;
 
 return [
     //【通用】
@@ -98,4 +99,16 @@ return [
         'remark|备注' => 'max:255',
     ],
 
+    //【角色】
+    'roleList'=>[
+        'name|角色名称'=>'max:255',
+        'level|角色等级'=>'number|in:'.implode(',',[RoleModel::$level_super_administrator,RoleModel::$level_administrator,RoleModel::$level_normal_role]),
+    ],
+    'RoleAdd'=>[
+        'name|角色名称'=>'require|max:255',
+        'level|角色等级'=>'require|number|in:'.implode(',',[RoleModel::$level_super_administrator,RoleModel::$level_administrator,RoleModel::$level_normal_role]),
+        'remark|备注'=>'max:255',
+        'action_data|功能权限'=>'require|array'
+    ],
+
 ];

+ 84 - 0
app/admin/controller/Role.php

@@ -0,0 +1,84 @@
+<?php
+
+namespace app\admin\controller;
+
+use app\admin\logic\RoleLogic;
+use app\BaseController;
+use think\exception\ValidateException;
+use think\facade\Config;
+use think\facade\Validate;
+
+//角色
+class Role extends BaseController
+{
+    //获取角色列表
+    public function List()
+    {
+        $param = $this->request->only([
+            'page'=>1,
+            'size'=>10,
+            'name'=>'',
+            'level'=>'',
+            'status'=>''
+        ],'post');
+
+        $val= Validate::rule(array_merge(Config::get('validate_rules.common'),Config::get('validate_rules.roleList')));
+
+        if(!$val->check($param)) throw new ValidateException($val->getError());
+
+        return RoleLogic::List($param);
+    }
+
+    //添加角色
+    public function Add()
+    {
+        $param = $this->request->only(['name','level','remark','action_data'],'post');
+
+        $val= Validate::rule(Config::get('validate_rules.RoleAdd'));
+
+        if(!$val->check($param)) throw new ValidateException($val->getError());
+
+        return RoleLogic::Add($param);
+    }
+
+    //获取角色详情
+    public function Read()
+    {
+        $id=$this->request->post('id/d',0);
+        return RoleLogic::Read($id);
+    }
+
+    //编辑角色
+    public function Edit()
+    {
+        $param = $this->request->only(['id','name','level','remark','action_data'],'post');
+
+        $val= Validate::rule(array_merge(Config::get('validate_rules.RoleAdd'),['id'=>'require|number|gt:0']));
+
+        if(!$val->check($param)) throw new ValidateException($val->getError());
+
+        return RoleLogic::Edit($param);
+
+    }
+
+    //删除角色
+    public function Delete()
+    {
+        $id = $this->request->post('id/d', 0);
+
+        return RoleLogic::Delete($id);
+    }
+
+    //启禁用角色
+    public function Status()
+    {
+        $param = $this->request->only(['id', 'status'], 'post');
+
+        $val = Validate::rule(Config::get('validate_rules.status'));
+
+        if (!$val->check($param)) throw new ValidateException($val->getError());
+
+        return RoleLogic::Status($param);
+    }
+
+}

+ 5 - 3
app/admin/logic/MenuLogic.php

@@ -56,14 +56,16 @@ class MenuLogic extends BaseLogic
     public static function All(): Json
     {
         $list = AdminMenuModel::field('id,menu_name,menu_type,menu_img,menu_route,menu_url,status,weight,addtime,is_private private')
-            ->where('pid', 0)
+            ->where(['pid' => 0, 'is_show' => AdminMenuModel::$show])
             ->append(['child'])
             ->withAttr('child', function ($val, $data) {
-                return AdminMenuModel::field('id,menu_name,menu_type,menu_img,menu_route,menu_url,status,weight,addtime,is_private private')
-                    ->where('pid', $data['id'])
+                return AdminMenuModel::field('id,menu_name,menu_type,menu_img,menu_route,menu_url,status,weight,addtime,is_private private,pid')
+                    ->where(['pid' => $data['id'], 'is_show' => AdminMenuModel::$show])
+                    ->order('weight', 'desc')
                     ->select()
                     ->toArray();
             })
+            ->order('weight', 'desc')
             ->select()
             ->toArray();
 

+ 204 - 0
app/admin/logic/RoleLogic.php

@@ -0,0 +1,204 @@
+<?php
+
+namespace app\admin\logic;
+
+use app\model\CommonModel;
+use app\model\RoleModel;
+use think\Exception;
+use think\facade\Db;
+use think\response\Json;
+
+class RoleLogic extends BaseLogic
+{
+    //获取角色列表
+    public static function List(array $data = []): Json
+    {
+        $db = RoleModel::where('is_del', CommonModel::$del_normal);
+        if ($data['name'] != '') $db->whereLike('name', '%' . $data['name'] . '%');
+        if ($data['level'] != '') $db->where('level', $data['level']);
+        if ($data['status'] != '') $db->where('status', $data['status']);
+
+        $count = $db->count('id');
+
+        $list = $db
+            ->field('id,name,level,status')
+            ->page($data['page'], $data['size'])
+            ->order(['id' => 'desc'])
+            ->select()
+            ->toArray();
+        return json_show(CommonModel::$success, '获取角色列表成功', ['count' => $count, 'list' => $list]);
+    }
+
+    //添加角色
+    public static function Add(array $data = []): Json
+    {
+        Db::startTrans();
+        try {
+
+            $rs = RoleModel::field('id')
+                ->where(['is_del' => CommonModel::$del_normal, 'name' => $data['name']])
+                ->findOrEmpty()
+                ->isEmpty();
+            if (!$rs) throw new Exception('该角色名已存在');
+
+            $date = date('Y-m-d H:i:s');
+
+            $roleid = Db::name('role')->strict(false)->insertGetId(array_merge($data, [
+                'status' => CommonModel::$status_normal,
+                'is_del' => CommonModel::$del_normal,
+                'creater' => self::$uname,
+                'createrid' => self::$uid,
+                'addtime' => $date,
+                'updater' => self::$uname,
+                'updaterid' => self::$uid,
+                'updatetime' => $date,
+            ]));
+
+            Db::name('role_action')->insert([
+                'roleid' => $roleid,
+                'action_data' => implode(',', $data['action_data']),
+                'status' => CommonModel::$status_normal,
+                'addtime' => $date,
+                'updatetime' => $date,
+            ]);
+
+            Db::commit();
+
+            return json_show(CommonModel::$success, '添加角色成功');
+
+        } catch (Exception $exception) {
+            Db::rollback();
+            return json_show(CommonModel::$error_default, $exception->getMessage());
+        }
+    }
+
+    //获取角色详情
+    public static function Read(int $id = 0): Json
+    {
+        $rs = RoleModel::field(true)
+            ->where(['id' => $id, 'is_del' => CommonModel::$del_normal])
+            ->findOrEmpty()
+            ->toArray();
+        return json_show(CommonModel::$success, '获取角色详情成功', $rs);
+
+    }
+
+    //编辑角色
+    public static function Edit(array $data = []): Json
+    {
+        Db::startTrans();
+        try {
+
+            $rs = RoleModel::field('id,name')
+                ->where(['id' => $data['id'], 'is_del' => CommonModel::$del_normal])
+                ->findOrEmpty();
+            if ($rs->isEmpty()) throw new Exception('该角色不存在');
+
+            if ($rs->name != $data['name']) {
+                $rs = RoleModel::field('id')
+                    ->where(['is_del' => CommonModel::$del_normal, 'name' => $data['name']])
+                    ->findOrEmpty()
+                    ->isEmpty();
+                if (!$rs) throw new Exception('该角色名已存在');
+            }
+
+            $date = date('Y-m-d H:i:s');
+
+            RoleModel::where('id', $data['id'])->strict(false)->save(array_merge($data, [
+                'updater' => self::$uname,
+                'updaterid' => self::$uid,
+                'updatetime' => $date,
+            ]));
+
+            Db::name('role_action')
+                ->where('roleid', $data['id'])
+                ->save([
+                    'action_data' => implode(',', $data['action_data']),
+                    'updatetime' => $date,
+                ]);
+
+            Db::commit();
+
+            return json_show(CommonModel::$success, '编辑角色成功');
+
+        } catch (Exception $exception) {
+            Db::rollback();
+            return json_show(CommonModel::$error_default, $exception->getMessage());
+        }
+    }
+
+    //删除角色
+    public static function Delete(int $id = 0): Json
+    {
+        Db::startTrans();
+        try {
+
+
+            $date = date('Y-m-d H:i:s');
+
+            RoleModel::where(['id' => $id, 'is_del' => CommonModel::$del_normal])->save([
+                'is_del' => CommonModel::$del_deleted,
+                'updater' => self::$uname,
+                'updaterid' => self::$uid,
+                'updatetime' => $date,
+            ]);
+
+            Db::name('role_action')
+                ->where(['roleid' => $id, 'is_del' => CommonModel::$del_normal])
+                ->save([
+                    'is_del' => CommonModel::$del_deleted,
+                    'updatetime' => $date,
+                ]);
+
+            Db::commit();
+
+            return json_show(CommonModel::$success, '删除角色成功');
+
+        } catch (Exception $exception) {
+            Db::rollback();
+            return json_show(CommonModel::$error_default, $exception->getMessage());
+        }
+    }
+
+    //启禁用菜单
+    public static function Status(array $data = []): Json
+    {
+        Db::startTrans();
+        try {
+
+            $rs = RoleModel::field('id,name')
+                ->where(['id' => $data['id'], 'is_del' => CommonModel::$del_normal])
+                ->where('status', '<>', $data['status'])
+                ->findOrEmpty()
+                ->isEmpty();
+            if ($rs) throw new Exception('该角色不存在或重复操作');
+
+            $date = date('Y-m-d H:i:s');
+
+            RoleModel::where(['id' => $data['id'], 'is_del' => CommonModel::$del_normal])
+                ->where('status', '<>', $data['status'])
+                ->save(array_merge($data, [
+                    'updater' => self::$uname,
+                    'updaterid' => self::$uid,
+                    'updatetime' => $date,
+                ]));
+
+            Db::name('role_action')
+                ->where('roleid', $data['id'])
+                ->save([
+                    'status' => $data['status'],
+                    'updatetime' => $date,
+                ]);
+
+            Db::commit();
+
+            return json_show(CommonModel::$success, '操作成功');
+
+        } catch (Exception $exception) {
+            Db::rollback();
+            return json_show(CommonModel::$error_default, $exception->getMessage());
+        }
+    }
+
+
+}

+ 20 - 2
app/admin/route/app.php

@@ -15,9 +15,26 @@ Route::rule('menuList', 'admin/Menu/List');//获取用户菜单列表
 Route::rule('menuAll', 'admin/Menu/All');//获取全部菜单
 Route::rule('menuAdd', 'admin/Menu/Add');//添加菜单
 Route::rule('menuSave', 'admin/Menu/Edit');//编辑菜单
-Route::rule('menuDel', 'admin/Menu/Del');//删除菜单
+Route::rule('menuDel', 'admin/Menu/Delete');//删除菜单
 Route::rule('menuStatus', 'admin/Menu/Status');//启禁用菜单
 
+//【权限】
+Route::rule('ActionList', 'admin/Action/List');//获取权限列表
+Route::rule('ActionAdd', 'admin/Action/Add');//添加权限
+Route::rule('ActionRead', 'admin/Action/Read');//获取权限详情
+Route::rule('ActionEdit', 'admin/Action/Edit');//编辑权限
+Route::rule('ActionDelete', 'admin/Action/Delete');//删除权限
+Route::rule('ActionStatus', 'admin/Action/Status');//启禁用权限
+
+//【角色】
+Route::rule('roleList', 'admin/Role/List');//获取角色列表
+Route::rule('roleAdd', 'admin/Role/Add');//添加角色
+Route::rule('roleRead', 'admin/Role/Read');//获取角色详情
+Route::rule('roleEdit', 'admin/Role/Edit');//编辑角色
+Route::rule('roleDelete', 'admin/Role/Delete');//删除角色
+Route::rule('roleStatus', 'admin/Role/Status');//启禁用角色
+
+
 //【视频】
 Route::rule('videoList', 'admin/Video/List');//获取视频列表
 Route::rule('videoAdd', 'admin/Video/Add');//添加视频
@@ -40,4 +57,5 @@ Route::rule('companyAdd', 'admin/Company/Add');//添加企业
 Route::rule('companyRead', 'admin/Company/Read');//获取企业详情
 Route::rule('companyEdit', 'admin/Company/Edit');//编辑企业
 Route::rule('companyChange', 'admin/Company/Change');//企业启禁用
-Route::rule('companyDelete', 'admin/Company/Delete');//删除企业
+Route::rule('companyDelete', 'admin/Company/Delete');//删除企业
+

+ 17 - 0
app/model/RoleModel.php

@@ -0,0 +1,17 @@
+<?php
+
+namespace app\model;
+
+use think\Model;
+
+class RoleModel extends Model
+{
+    protected $table = 'fc_role';
+    protected $pk = 'id';
+
+    //角色等级
+    public static $level_super_administrator = 1;//超级管理员
+    public static $level_administrator = 2;//专项管理员
+    public static $level_normal_role = 3;//普通角色
+
+}