study-api-v2/app/Http/Requests/Admin/System/SystemUserRoleRequest.php
hx a621de91ff feat(system): 添加系统菜单、角色菜单关联和用户角色关联功能- 新增系统菜单模型、控制器、请求验证和业务逻辑
- 新增角色菜单关联模型、控制器、请求验证和业务逻辑
- 新增用户角色关联模型、控制器、请求验证和业务逻辑
- 更新系统角色模型,增加与用户和菜单的关联
- 更新用户模型,增加与角色的关联和相关方法
- 在路由文件中添加新功能的路由定义
2025-07-15 01:14:15 +08:00

213 lines
6.5 KiB
PHP

<?php
namespace App\Http\Requests\Admin\System;
use App\Http\Requests\BaseRequest;
/**
* 系统用户角色关联请求验证
*/
class SystemUserRoleRequest extends BaseRequest
{
/**
* 获取特定验证规则
*/
protected function getSpecificRules(): array
{
$action = $this->route()->getActionMethod();
return match($action) {
'list' => $this->listRules(),
'getUserRoles' => $this->getUserRolesRules(),
'getRoleUsers' => $this->getRoleUsersRules(),
'getUserRoleDetails' => $this->getUserRoleDetailsRules(),
'setUserRoles' => $this->setUserRolesRules(),
'setRoleUsers' => $this->setRoleUsersRules(),
'batchSetUserRoles' => $this->batchSetUserRolesRules(),
'hasRole' => $this->hasRoleRules(),
'hasRoleCode' => $this->hasRoleCodeRules(),
'clearUserRoles' => $this->clearUserRolesRules(),
'clearRoleUsers' => $this->clearRoleUsersRules(),
default => []
};
}
/**
* 获取分页验证规则
*/
private function getPaginationRules(): array
{
return [
'page' => ['sometimes', 'integer', 'min:1'],
'page_size' => ['sometimes', 'integer', 'min:1', 'max:100'],
];
}
/**
* 列表查询验证规则
*/
private function listRules(): array
{
return array_merge($this->getPaginationRules(), [
'user_id' => ['sometimes', 'integer', 'exists:system_users,id'],
'role_id' => ['sometimes', 'integer', 'exists:system_role,id'],
]);
}
/**
* 获取用户角色验证规则
*/
private function getUserRolesRules(): array
{
return [
'user_id' => ['required', 'integer', 'exists:system_users,id'],
];
}
/**
* 获取角色用户验证规则
*/
private function getRoleUsersRules(): array
{
return [
'role_id' => ['required', 'integer', 'exists:system_role,id'],
];
}
/**
* 获取用户角色详情验证规则
*/
private function getUserRoleDetailsRules(): array
{
return [
'user_id' => ['required', 'integer', 'exists:system_users,id'],
];
}
/**
* 设置用户角色验证规则
*/
private function setUserRolesRules(): array
{
return [
'user_id' => ['required', 'integer', 'exists:system_users,id'],
'role_ids' => ['sometimes', 'array'],
'role_ids.*' => ['integer', 'exists:system_role,id'],
];
}
/**
* 设置角色用户验证规则
*/
private function setRoleUsersRules(): array
{
return [
'role_id' => ['required', 'integer', 'exists:system_role,id'],
'user_ids' => ['sometimes', 'array'],
'user_ids.*' => ['integer', 'exists:system_users,id'],
];
}
/**
* 批量设置用户角色验证规则
*/
private function batchSetUserRolesRules(): array
{
return [
'user_role_data' => ['required', 'array', 'min:1'],
'user_role_data.*.user_id' => ['required', 'integer', 'exists:system_users,id'],
'user_role_data.*.role_ids' => ['sometimes', 'array'],
'user_role_data.*.role_ids.*' => ['integer', 'exists:system_role,id'],
];
}
/**
* 检查用户角色验证规则
*/
private function hasRoleRules(): array
{
return [
'user_id' => ['required', 'integer', 'exists:system_users,id'],
'role_id' => ['required', 'integer', 'exists:system_role,id'],
];
}
/**
* 检查用户角色编码验证规则
*/
private function hasRoleCodeRules(): array
{
return [
'user_id' => ['required', 'integer', 'exists:system_users,id'],
'role_code' => ['required', 'string', 'exists:system_role,code'],
];
}
/**
* 清除用户角色验证规则
*/
private function clearUserRolesRules(): array
{
return [
'user_id' => ['required', 'integer', 'exists:system_users,id'],
];
}
/**
* 清除角色用户验证规则
*/
private function clearRoleUsersRules(): array
{
return [
'role_id' => ['required', 'integer', 'exists:system_role,id'],
];
}
/**
* 获取验证错误消息
*/
protected function getSpecificMessages(): array
{
return [
'user_id.required' => '用户ID不能为空',
'user_id.integer' => '用户ID必须是整数',
'user_id.exists' => '指定的用户不存在',
'role_id.required' => '角色ID不能为空',
'role_id.integer' => '角色ID必须是整数',
'role_id.exists' => '指定的角色不存在',
'role_code.required' => '角色编码不能为空',
'role_code.string' => '角色编码必须是字符串',
'role_code.exists' => '指定的角色编码不存在',
'role_ids.array' => '角色ID列表必须是数组',
'role_ids.*.integer' => '角色ID必须是整数',
'role_ids.*.exists' => '指定的角色不存在',
'user_ids.array' => '用户ID列表必须是数组',
'user_ids.*.integer' => '用户ID必须是整数',
'user_ids.*.exists' => '指定的用户不存在',
'user_role_data.required' => '用户角色数据不能为空',
'user_role_data.array' => '用户角色数据必须是数组',
'user_role_data.min' => '至少需要一组用户角色数据',
'user_role_data.*.user_id.required' => '用户ID不能为空',
'user_role_data.*.user_id.integer' => '用户ID必须是整数',
'user_role_data.*.user_id.exists' => '指定的用户不存在',
'user_role_data.*.role_ids.array' => '角色ID列表必须是数组',
'user_role_data.*.role_ids.*.integer' => '角色ID必须是整数',
'user_role_data.*.role_ids.*.exists' => '指定的角色不存在',
];
}
/**
* 字段别名
*/
public function attributes(): array
{
return [
'user_id' => '用户',
'role_id' => '角色',
'role_code' => '角色编码',
'role_ids' => '角色列表',
'user_ids' => '用户列表',
'user_role_data' => '用户角色数据',
];
}
}