diff --git a/crmeb/app/adminapi/route/agent.php b/crmeb/app/adminapi/route/agent.php index d5d1244e0..273221a26 100644 --- a/crmeb/app/adminapi/route/agent.php +++ b/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' => '分销']); diff --git a/crmeb/app/adminapi/route/app.php b/crmeb/app/adminapi/route/app.php index 48d9fe869..31ffaed14 100644 --- a/crmeb/app/adminapi/route/app.php +++ b/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' => '应用']); diff --git a/crmeb/app/adminapi/route/cms.php b/crmeb/app/adminapi/route/cms.php index 8048499e4..861b31f8c 100644 --- a/crmeb/app/adminapi/route/cms.php +++ b/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' => '文章']); diff --git a/crmeb/app/adminapi/route/common.php b/crmeb/app/adminapi/route/common.php index 67ca6b220..6ab963a69 100644 --- a/crmeb/app/adminapi/route/common.php +++ b/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' => '公共']); diff --git a/crmeb/app/adminapi/route/crud.php b/crmeb/app/adminapi/route/crud.php index 68460e244..2d1529c13 100644 --- a/crmeb/app/adminapi/route/crud.php +++ b/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']); diff --git a/crmeb/app/adminapi/route/diy.php b/crmeb/app/adminapi/route/diy.php index c304138f8..9d8234c42 100644 --- a/crmeb/app/adminapi/route/diy.php +++ b/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']); diff --git a/crmeb/app/adminapi/route/export.php b/crmeb/app/adminapi/route/export.php index 4ce777012..a7024772c 100644 --- a/crmeb/app/adminapi/route/export.php +++ b/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' => '导出']); diff --git a/crmeb/app/adminapi/route/file.php b/crmeb/app/adminapi/route/file.php index 20f00c334..16f1a9bdc 100644 --- a/crmeb/app/adminapi/route/file.php +++ b/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' => '附件']); diff --git a/crmeb/app/adminapi/route/finance.php b/crmeb/app/adminapi/route/finance.php index 3d5945f1a..9c94fd175 100644 --- a/crmeb/app/adminapi/route/finance.php +++ b/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' => '财务']); diff --git a/crmeb/app/adminapi/route/freight.php b/crmeb/app/adminapi/route/freight.php index 271fa6a3e..943b69ae5 100644 --- a/crmeb/app/adminapi/route/freight.php +++ b/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' => '物流']); diff --git a/crmeb/app/adminapi/route/live.php b/crmeb/app/adminapi/route/live.php index 9ea15bfcb..2f9cabe9e 100644 --- a/crmeb/app/adminapi/route/live.php +++ b/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' => '直播']); diff --git a/crmeb/app/adminapi/route/marketing.php b/crmeb/app/adminapi/route/marketing.php index af81edda4..612f8fbf2 100644 --- a/crmeb/app/adminapi/route/marketing.php +++ b/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' => '营销']); diff --git a/crmeb/app/adminapi/route/merchant.php b/crmeb/app/adminapi/route/merchant.php index 7079308ab..559142eec 100644 --- a/crmeb/app/adminapi/route/merchant.php +++ b/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' => '物流']); diff --git a/crmeb/app/adminapi/route/notify.php b/crmeb/app/adminapi/route/notify.php index f3723a4d5..13508417b 100644 --- a/crmeb/app/adminapi/route/notify.php +++ b/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' => '消息']); diff --git a/crmeb/app/adminapi/route/order.php b/crmeb/app/adminapi/route/order.php index 83ccb12a0..2aadfcc3c 100644 --- a/crmeb/app/adminapi/route/order.php +++ b/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' => '退款']); diff --git a/crmeb/app/adminapi/route/product.php b/crmeb/app/adminapi/route/product.php index e5926cb56..f856ac836 100644 --- a/crmeb/app/adminapi/route/product.php +++ b/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' => '商品']); diff --git a/crmeb/app/adminapi/route/serve.php b/crmeb/app/adminapi/route/serve.php index c08effe37..ae3b374a9 100644 --- a/crmeb/app/adminapi/route/serve.php +++ b/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' => '一号通']); diff --git a/crmeb/app/adminapi/route/setting.php b/crmeb/app/adminapi/route/setting.php index db273bf9a..39c6d6d60 100644 --- a/crmeb/app/adminapi/route/setting.php +++ b/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' => '设置']); diff --git a/crmeb/app/adminapi/route/statistic.php b/crmeb/app/adminapi/route/statistic.php index 15e3817e8..dd1f85908 100644 --- a/crmeb/app/adminapi/route/statistic.php +++ b/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' => '统计']); diff --git a/crmeb/app/adminapi/route/system.php b/crmeb/app/adminapi/route/system.php index 75158915a..9be1bfd3b 100644 --- a/crmeb/app/adminapi/route/system.php +++ b/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' => '文件']); diff --git a/crmeb/app/adminapi/route/user.php b/crmeb/app/adminapi/route/user.php index ad69636b2..df049131f 100644 --- a/crmeb/app/adminapi/route/user.php +++ b/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' => '用户']); diff --git a/crmeb/app/dao/system/SystemMenusDao.php b/crmeb/app/dao/system/SystemMenusDao.php index f394aa3f9..8c6af977a 100644 --- a/crmeb/app/dao/system/SystemMenusDao.php +++ b/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(); + } } diff --git a/crmeb/app/services/system/SystemRouteServices.php b/crmeb/app/services/system/SystemRouteServices.php index 7e0e07337..73fa48f41 100644 --- a/crmeb/app/services/system/SystemRouteServices.php +++ b/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'], '') === 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'], '') === 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'] !== '') { $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']); + } + } } /**