fix scope

This commit is contained in:
2026-03-13 09:15:52 +08:00
parent 63786e5876
commit 48a2a025f1
3 changed files with 14 additions and 7 deletions
@@ -266,6 +266,7 @@ class DataScopeController extends AbstractController
'company' => $company_ids[] = $scope['scope_id'], 'company' => $company_ids[] = $scope['scope_id'],
'platform' => $platform_ids[] = $scope['scope_id'], 'platform' => $platform_ids[] = $scope['scope_id'],
'store' => $store_ids[] = $scope['scope_id'], 'store' => $store_ids[] = $scope['scope_id'],
default => null,
}; };
} }
@@ -286,6 +287,7 @@ class DataScopeController extends AbstractController
'company' => $company_names[$scope['scope_id']] ?? null, 'company' => $company_names[$scope['scope_id']] ?? null,
'platform' => isset($platform_names[$scope['scope_id']]) ? "Platform #{$scope['scope_id']}" : null, 'platform' => isset($platform_names[$scope['scope_id']]) ? "Platform #{$scope['scope_id']}" : null,
'store' => $store_names[$scope['scope_id']] ?? null, 'store' => $store_names[$scope['scope_id']] ?? null,
default => null,
}; };
return [ return [
@@ -10,6 +10,7 @@ use App\Middleware\PermissionMiddleware;
use App\Model\Role; use App\Model\Role;
use App\Model\RoleRouteOverride; use App\Model\RoleRouteOverride;
use App\Model\Route; use App\Model\Route;
use App\Model\RouteGroup;
use App\Model\User; use App\Model\User;
use App\Service\ScopeTableManager; use App\Service\ScopeTableManager;
use Hyperf\DbConnection\Db; use Hyperf\DbConnection\Db;
@@ -313,6 +314,17 @@ class RoleController extends AbstractController
$group_ids = array_map('intval', $group_ids); $group_ids = array_map('intval', $group_ids);
$group_ids = array_unique($group_ids); $group_ids = array_unique($group_ids);
// 校验 group_ids 都存在
if (!empty($group_ids)) {
$existing_count = RouteGroup::query()->whereIn('id', $group_ids)->count();
if ($existing_count !== count($group_ids)) {
return $this->response->json([
'code' => 400,
'message' => '包含不存在的 group_id',
])->withStatus(400);
}
}
// 使用 sync 全量替换 // 使用 sync 全量替换
$role->routeGroups()->sync($group_ids); $role->routeGroups()->sync($group_ids);
@@ -45,7 +45,6 @@ class RouteGroupController extends AbstractController
new OA\Property(property: 'sort_order', type: 'integer', example: 0), new OA\Property(property: 'sort_order', type: 'integer', example: 0),
new OA\Property(property: 'routes_count', type: 'integer', example: 5), new OA\Property(property: 'routes_count', type: 'integer', example: 5),
new OA\Property(property: 'created_at', type: 'string', format: 'date-time'), new OA\Property(property: 'created_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'updated_at', type: 'string', format: 'date-time'),
])), ])),
]) ])
), ),
@@ -104,7 +103,6 @@ class RouteGroupController extends AbstractController
new OA\Property(property: 'description', type: 'string', nullable: true), new OA\Property(property: 'description', type: 'string', nullable: true),
new OA\Property(property: 'sort_order', type: 'integer', example: 0), new OA\Property(property: 'sort_order', type: 'integer', example: 0),
new OA\Property(property: 'created_at', type: 'string', format: 'date-time'), new OA\Property(property: 'created_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'updated_at', type: 'string', format: 'date-time'),
], type: 'object'), ], type: 'object'),
]) ])
), ),
@@ -227,7 +225,6 @@ class RouteGroupController extends AbstractController
new OA\Property(property: 'description', type: 'string', nullable: true), new OA\Property(property: 'description', type: 'string', nullable: true),
new OA\Property(property: 'sort_order', type: 'integer', example: 0), new OA\Property(property: 'sort_order', type: 'integer', example: 0),
new OA\Property(property: 'created_at', type: 'string', format: 'date-time'), new OA\Property(property: 'created_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'updated_at', type: 'string', format: 'date-time'),
], type: 'object'), ], type: 'object'),
]) ])
), ),
@@ -401,8 +398,6 @@ class RouteGroupController extends AbstractController
new OA\Property(property: 'method', type: 'string', example: 'GET'), new OA\Property(property: 'method', type: 'string', example: 'GET'),
new OA\Property(property: 'path', type: 'string', example: '/api/v1/users'), new OA\Property(property: 'path', type: 'string', example: '/api/v1/users'),
new OA\Property(property: 'group_id', type: 'integer', nullable: true, example: 1), new OA\Property(property: 'group_id', type: 'integer', nullable: true, example: 1),
new OA\Property(property: 'created_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'updated_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'group', nullable: true, properties: [ new OA\Property(property: 'group', nullable: true, properties: [
new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'id', type: 'integer', example: 1),
new OA\Property(property: 'name', type: 'string', example: 'user-management'), new OA\Property(property: 'name', type: 'string', example: 'user-management'),
@@ -490,8 +485,6 @@ class RouteGroupController extends AbstractController
new OA\Property(property: 'method', type: 'string', example: 'GET'), new OA\Property(property: 'method', type: 'string', example: 'GET'),
new OA\Property(property: 'path', type: 'string', example: '/api/v1/users'), new OA\Property(property: 'path', type: 'string', example: '/api/v1/users'),
new OA\Property(property: 'group_id', type: 'integer', nullable: true, example: 1), new OA\Property(property: 'group_id', type: 'integer', nullable: true, example: 1),
new OA\Property(property: 'created_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'updated_at', type: 'string', format: 'date-time'),
new OA\Property(property: 'group', nullable: true, properties: [ new OA\Property(property: 'group', nullable: true, properties: [
new OA\Property(property: 'id', type: 'integer', example: 1), new OA\Property(property: 'id', type: 'integer', example: 1),
new OA\Property(property: 'name', type: 'string', example: 'user-management'), new OA\Property(property: 'name', type: 'string', example: 'user-management'),