diff --git a/backend/app/Controller/api/v1/DataScopeController.php b/backend/app/Controller/api/v1/DataScopeController.php index ac90695..b845930 100644 --- a/backend/app/Controller/api/v1/DataScopeController.php +++ b/backend/app/Controller/api/v1/DataScopeController.php @@ -266,6 +266,7 @@ class DataScopeController extends AbstractController 'company' => $company_ids[] = $scope['scope_id'], 'platform' => $platform_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, 'platform' => isset($platform_names[$scope['scope_id']]) ? "Platform #{$scope['scope_id']}" : null, 'store' => $store_names[$scope['scope_id']] ?? null, + default => null, }; return [ diff --git a/backend/app/Controller/api/v1/RoleController.php b/backend/app/Controller/api/v1/RoleController.php index f566f01..b73ef4c 100644 --- a/backend/app/Controller/api/v1/RoleController.php +++ b/backend/app/Controller/api/v1/RoleController.php @@ -10,6 +10,7 @@ use App\Middleware\PermissionMiddleware; use App\Model\Role; use App\Model\RoleRouteOverride; use App\Model\Route; +use App\Model\RouteGroup; use App\Model\User; use App\Service\ScopeTableManager; use Hyperf\DbConnection\Db; @@ -313,6 +314,17 @@ class RoleController extends AbstractController $group_ids = array_map('intval', $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 全量替换 $role->routeGroups()->sync($group_ids); diff --git a/backend/app/Controller/api/v1/RouteGroupController.php b/backend/app/Controller/api/v1/RouteGroupController.php index 6e75696..bf18cae 100644 --- a/backend/app/Controller/api/v1/RouteGroupController.php +++ b/backend/app/Controller/api/v1/RouteGroupController.php @@ -45,7 +45,6 @@ class RouteGroupController extends AbstractController new OA\Property(property: 'sort_order', type: 'integer', example: 0), 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: '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: 'sort_order', type: 'integer', example: 0), new OA\Property(property: 'created_at', type: 'string', format: 'date-time'), - new OA\Property(property: 'updated_at', type: 'string', format: 'date-time'), ], type: 'object'), ]) ), @@ -227,7 +225,6 @@ class RouteGroupController extends AbstractController new OA\Property(property: 'description', type: 'string', nullable: true), 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: 'updated_at', type: 'string', format: 'date-time'), ], type: 'object'), ]) ), @@ -401,8 +398,6 @@ class RouteGroupController extends AbstractController new OA\Property(property: 'method', type: 'string', example: 'GET'), 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: '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: 'id', type: 'integer', example: 1), 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: 'path', type: 'string', example: '/api/v1/users'), 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: 'id', type: 'integer', example: 1), new OA\Property(property: 'name', type: 'string', example: 'user-management'),