浏览代码

增加权限分类

liaofei 2 年之前
父节点
当前提交
ea30000dd3

+ 1 - 1
crmeb/app/adminapi/route/agent.php

@@ -93,4 +93,4 @@ Route::group('agent', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '分销']);

+ 1 - 1
crmeb/app/adminapi/route/app.php

@@ -154,4 +154,4 @@ Route::group('app', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '应用']);

+ 1 - 1
crmeb/app/adminapi/route/cms.php

@@ -52,4 +52,4 @@ Route::group('cms', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '文章']);

+ 1 - 1
crmeb/app/adminapi/route/common.php

@@ -48,5 +48,5 @@ Route::group(function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '公共']);
 

+ 1 - 1
crmeb/app/adminapi/route/crud.php

@@ -32,4 +32,4 @@ Route::group(function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => 'CRUD']);

+ 1 - 1
crmeb/app/adminapi/route/diy.php

@@ -74,4 +74,4 @@ Route::group('diy', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => 'DIY']);

+ 1 - 1
crmeb/app/adminapi/route/export.php

@@ -60,4 +60,4 @@ Route::group('export', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '导出']);

+ 1 - 1
crmeb/app/adminapi/route/file.php

@@ -47,4 +47,4 @@ Route::group('file', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '附件']);

+ 1 - 1
crmeb/app/adminapi/route/finance.php

@@ -54,4 +54,4 @@ Route::group('finance', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '财务']);

+ 1 - 1
crmeb/app/adminapi/route/freight.php

@@ -39,4 +39,4 @@ Route::group('freight', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '物流']);

+ 1 - 1
crmeb/app/adminapi/route/live.php

@@ -68,4 +68,4 @@ Route::group('live', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '直播']);

+ 3 - 3
crmeb/app/adminapi/route/marketing.php

@@ -97,9 +97,9 @@ Route::group('marketing', function () {
     //秒杀统计
     Route::get('seckill/statistics/head/:id', 'v1.marketing.StoreSeckill/seckillStatistics')->option(['real_name' => '秒杀统计']);
     //参与活动人员
-    Route::get('seckill/statistics/people/:id','v1.marketing.StoreSeckill/seckillPeople')->option(['real_name' => '秒杀参与人']);
+    Route::get('seckill/statistics/people/:id', 'v1.marketing.StoreSeckill/seckillPeople')->option(['real_name' => '秒杀参与人']);
     //秒杀订单
-    Route::get('seckill/statistics/order/:id','v1.marketing.StoreSeckill/seckillOrder')->option(['real_name' => '秒杀参与人']);
+    Route::get('seckill/statistics/order/:id', 'v1.marketing.StoreSeckill/seckillOrder')->option(['real_name' => '秒杀参与人']);
 
     //积分日志列表
     Route::get('integral', 'v1.marketing.UserPoint/index')->option(['real_name' => '积分日志列表']);
@@ -196,4 +196,4 @@ Route::group('marketing', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '营销']);

+ 1 - 1
crmeb/app/adminapi/route/merchant.php

@@ -53,4 +53,4 @@ Route::group('merchant', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '物流']);

+ 1 - 1
crmeb/app/adminapi/route/notify.php

@@ -48,4 +48,4 @@ Route::group('notify', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '消息']);

+ 2 - 2
crmeb/app/adminapi/route/order.php

@@ -111,7 +111,7 @@ Route::group('order', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '订单']);
 
 /**
  * 售后 相关路由
@@ -138,4 +138,4 @@ Route::group('refund', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '退款']);

+ 1 - 1
crmeb/app/adminapi/route/product.php

@@ -105,4 +105,4 @@ Route::group('product', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '商品']);

+ 1 - 1
crmeb/app/adminapi/route/serve.php

@@ -65,4 +65,4 @@ Route::group('serve', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '一号通']);

+ 1 - 1
crmeb/app/adminapi/route/setting.php

@@ -322,4 +322,4 @@ Route::group('setting', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '设置']);

+ 1 - 1
crmeb/app/adminapi/route/statistic.php

@@ -76,4 +76,4 @@ Route::group('statistic', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '统计']);

+ 2 - 2
crmeb/app/adminapi/route/system.php

@@ -154,7 +154,7 @@ Route::group('system', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '维护']);
 
 Route::group('system', function () {
 
@@ -182,5 +182,5 @@ Route::group('system', function () {
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminEditorTokenMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '文件']);
 

+ 1 - 1
crmeb/app/adminapi/route/user.php

@@ -164,4 +164,4 @@ Route::group('user', function () {
     \app\adminapi\middleware\AdminAuthTokenMiddleware::class,
     \app\adminapi\middleware\AdminCheckRoleMiddleware::class,
     \app\adminapi\middleware\AdminLogMiddleware::class
-]);
+])->option(['cate_name' => '用户']);

+ 13 - 0
crmeb/app/dao/system/SystemMenusDao.php

@@ -145,4 +145,17 @@ class SystemMenusDao extends BaseDao
         return $this->search(['is_show' => 1, 'auth_type' => 1, 'is_del' => 0, 'is_show_path' => 0])
             ->field('id,pid,menu_name,menu_path,unique_auth,sort')->order('sort DESC')->select();
     }
+
+    /**
+     * @param string $path
+     * @param string $method
+     * @return bool
+     * @author 等风来
+     * @email 136327134@qq.com
+     * @date 2023/4/20
+     */
+    public function deleteMenu(string $path, string $method)
+    {
+        return $this->getModel()->where('api_url', $path)->where('methods', $method)->delete();
+    }
 }

+ 43 - 14
crmeb/app/services/system/SystemRouteServices.php

@@ -170,13 +170,13 @@ class SystemRouteServices extends BaseServices
      * @email 136327134@qq.com
      * @date 2023/4/11
      */
-    public function topCateId(string $app)
+    public function topCateId(string $app, string $name = '全部权限')
     {
-        $id = app()->make(SystemRouteCateServices::class)->value(['app_name' => $app, 'name' => '全部权限', 'pid' => 0], 'id');
+        $id = app()->make(SystemRouteCateServices::class)->value(['app_name' => $app, 'name' => $name, 'pid' => 0], 'id');
         if (!$id) {
             $res = app()->make(SystemRouteCateServices::class)->save([
                 'app_name' => $app,
-                'name' => '全部权限',
+                'name' => $name,
                 'pid' => 0,
                 'add_time' => time(),
             ]);
@@ -195,21 +195,38 @@ class SystemRouteServices extends BaseServices
     public function syncRoute(string $app = 'adminapi')
     {
         $id = $this->topCateId($app);
+        $commmonId = $this->topCateId($app, '公共权限');
         $listAll = $this->getRouteListAll($app);
+
+        $list = [];
+        foreach ($listAll as $item) {
+            if (isset($item['option']['is_common']) && $item['option']['is_common']) {
+                $cateId = $commmonId;
+            } else {
+                if (!isset($item['option']['cate_name'])) {
+                    $cateId = $id;
+                } else {
+                    $cateId = $this->topCateId($app, $item['option']['cate_name']);
+                }
+            }
+            $list[$cateId][] = $item;
+        }
         //保持新增的权限路由
         $data = $this->dao->selectList(['app_name' => $app], 'path,method')->toArray();
         $save = [];
-        foreach ($listAll as $item) {
-            if (!$this->diffRoute($data, $item['rule'], $item['method']) && strstr($item['rule'], '<MISS>') === false) {
-                $save[] = [
-                    'name' => $item['option']['real_name'] ?? $item['name'],
-                    'path' => $item['rule'],
-                    'cate_id' => $id,
-                    'app_name' => $app,
-                    'type' => isset($item['option']['is_common']) && $item['option']['is_common'] ? 1 : 0,
-                    'method' => $item['method'],
-                    'add_time' => date('Y-m-d H:i:s'),
-                ];
+        foreach ($list as $key => $value) {
+            foreach ($value as $item) {
+                if (!$this->diffRoute($data, $item['rule'], $item['method']) && strstr($item['rule'], '<MISS>') === false) {
+                    $save[] = [
+                        'name' => $item['option']['real_name'] ?? $item['name'],
+                        'path' => $item['rule'],
+                        'cate_id' => $key,
+                        'app_name' => $app,
+                        'type' => isset($item['option']['is_common']) && $item['option']['is_common'] ? 1 : 0,
+                        'method' => $item['method'],
+                        'add_time' => date('Y-m-d H:i:s'),
+                    ];
+                }
             }
         }
 
@@ -219,14 +236,26 @@ class SystemRouteServices extends BaseServices
         //删除不存在的权限路由
         $data = $this->dao->selectList(['app_name' => $app], 'path,method,id')->toArray();
         $delete = [];
+        $deleteData = [];
         foreach ($data as $item) {
             if (!$this->diffRoute($listAll, $item['path'], $item['method'], 'rule') && $item['path'] !== '<MISS>') {
                 $delete[] = $item['id'];
+                $deleteData[] = [
+                    'path' => $item['path'],
+                    'methods' => $item['method']
+                ];
             }
         }
+        //删除不存在的路由
         if ($delete) {
             $this->dao->delete([['id', 'in', $delete]]);
         }
+        //删除不存在的权限
+        if ($deleteData) {
+            foreach ($deleteData as $item) {
+                app()->make(SystemMenusServices::class)->deleteMenu($item['path'], $item['method']);
+            }
+        }
     }
 
     /**