增加权限分类

This commit is contained in:
liaofei 2023-04-20 10:48:05 +08:00
parent e1bac8bbf9
commit ea30000dd3
23 changed files with 81 additions and 39 deletions

View File

@ -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' => '分销']);

View File

@ -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' => '应用']);

View File

@ -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' => '文章']);

View File

@ -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' => '公共']);

View File

@ -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']);

View File

@ -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']);

View File

@ -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' => '导出']);

View File

@ -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' => '附件']);

View File

@ -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' => '财务']);

View File

@ -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' => '物流']);

View File

@ -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' => '直播']);

View File

@ -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' => '营销']);

View File

@ -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' => '物流']);

View File

@ -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' => '消息']);

View File

@ -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' => '退款']);

View File

@ -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' => '商品']);

View File

@ -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' => '一号通']);

View File

@ -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' => '设置']);

View File

@ -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' => '统计']);

View File

@ -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' => '文件']);

View File

@ -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' => '用户']);

View File

@ -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();
}
}

View File

@ -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']);
}
}
}
/**