# 规格：角色请求验证

## 新增需求

### 需求：Create 方法验证必填字段

RoleHandler.Create 方法必须验证 CreateRoleRequest 的所有必填字段。

#### 场景：缺少 role_name 返回验证错误

- **WHEN** 客户端发送 POST /api/admin/roles 请求，body 缺少 role_name 字段
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）
- **AND** 错误消息提示 "参数验证失败"

#### 场景：缺少 role_type 返回验证错误

- **WHEN** 客户端发送 POST /api/admin/roles 请求，body 缺少 role_type 字段
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）

#### 场景：role_name 过长返回验证错误

- **WHEN** 客户端发送 POST /api/admin/roles 请求，role_name 超过 50 个字符
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）

### 需求：Update 方法验证字段格式

RoleHandler.Update 方法必须验证 UpdateRoleRequest 的字段格式。

#### 场景：role_name 过长返回验证错误

- **WHEN** 客户端发送 PUT /api/admin/roles/:id 请求，role_name 超过 50 个字符
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）

#### 场景：status 值非法返回验证错误

- **WHEN** 客户端发送 PUT /api/admin/roles/:id 请求，status 值不是 0 或 1
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）

### 需求：AssignPermissions 方法验证权限ID列表

RoleHandler.AssignPermissions 方法必须验证权限ID列表不为空。

#### 场景：perm_ids 为空数组返回验证错误

- **WHEN** 客户端发送 POST /api/admin/roles/:id/permissions 请求，perm_ids 为空数组 []
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）

### 需求：UpdateStatus 方法验证状态值

RoleHandler.UpdateStatus 方法必须验证状态值在有效范围内。

#### 场景：status 值非法返回验证错误

- **WHEN** 客户端发送 PUT /api/admin/roles/:id/status 请求，status 值不是 0 或 1
- **THEN** 返回 HTTP 400
- **AND** 响应包含错误码（CodeInvalidParam）

## 测试要求

- 取消 tests/integration/role_test.go 中的 TODO 跳过（第 51 行）
- 验证测试能够通过，证明验证逻辑正常工作
