覆盖所有模块: - api 层:17 个路由文件,每个接口标注用途、参数、返回值、权限 - services 层:18 个服务文件,每个方法标注作用、参数、返回值、调用方 - repositories 层:13 个仓储文件,每个方法标注查询逻辑和被调用方 - schemas 层:11 个请求/响应体文件,每个字段标注业务含义 - core 层:config、security、exceptions、responses、error_codes - models 层:19 个 ORM 模型类,每个表标注业务含义和关联关系 - scripts:bootstrap_data、smoke_check - migrations:env.py 和版本迁移文件 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
156 lines
3.3 KiB
Python
156 lines
3.3 KiB
Python
"""
|
||
系统管理模块请求模型
|
||
|
||
定义系统管理相关的请求体数据模型,供 system 路由使用。
|
||
包含用户管理、角色管理和菜单管理三个子模块的 CRUD 操作。
|
||
"""
|
||
|
||
from pydantic import BaseModel
|
||
|
||
|
||
class CreateUserRequest(BaseModel):
|
||
"""创建用户请求体。被 POST /api/system/users 路由使用。"""
|
||
|
||
username: str
|
||
"""登录用户名"""
|
||
|
||
password: str
|
||
"""登录密码"""
|
||
|
||
real_name: str
|
||
"""真实姓名"""
|
||
|
||
mobile: str | None = None
|
||
"""手机号,可选"""
|
||
|
||
role_id: int
|
||
"""关联角色 ID"""
|
||
|
||
status: int = 1
|
||
"""状态:1-启用,0-禁用"""
|
||
|
||
|
||
class UpdateUserRequest(BaseModel):
|
||
"""更新用户请求体(不含用户名和密码)。被 PUT /api/system/users/{id} 路由使用。"""
|
||
|
||
real_name: str
|
||
"""真实姓名"""
|
||
|
||
mobile: str | None = None
|
||
"""手机号"""
|
||
|
||
role_id: int
|
||
"""关联角色 ID"""
|
||
|
||
status: int = 1
|
||
"""状态:1-启用,0-禁用"""
|
||
|
||
|
||
class ResetPasswordRequest(BaseModel):
|
||
"""重置密码请求体。被 POST /api/system/users/{id}/reset-password 路由使用。"""
|
||
|
||
new_password: str
|
||
"""新密码"""
|
||
|
||
|
||
class ChangeUserStatusRequest(BaseModel):
|
||
"""切换用户状态请求体。被 POST /api/system/users/{id}/status 路由使用。"""
|
||
|
||
status: int
|
||
"""目标状态:1-启用,0-禁用"""
|
||
|
||
|
||
class CreateRoleRequest(BaseModel):
|
||
"""创建角色请求体。被 POST /api/system/roles 路由使用。"""
|
||
|
||
role_name: str
|
||
"""角色名称"""
|
||
|
||
role_code: str
|
||
"""角色编码(唯一标识,如 admin、sales)"""
|
||
|
||
status: int = 1
|
||
"""状态:1-启用,0-禁用"""
|
||
|
||
remark: str | None = None
|
||
"""备注信息"""
|
||
|
||
|
||
class UpdateRoleRequest(BaseModel):
|
||
"""更新角色请求体。被 PUT /api/system/roles/{id} 路由使用。"""
|
||
|
||
role_name: str
|
||
"""角色名称"""
|
||
|
||
status: int = 1
|
||
"""状态:1-启用,0-禁用"""
|
||
|
||
remark: str | None = None
|
||
"""备注信息"""
|
||
|
||
|
||
class CreateMenuRequest(BaseModel):
|
||
"""创建菜单请求体。被 POST /api/system/menus 路由使用。"""
|
||
|
||
parent_id: int = 0
|
||
"""父菜单 ID,0 表示顶级菜单"""
|
||
|
||
menu_name: str
|
||
"""菜单名称"""
|
||
|
||
menu_path: str = ""
|
||
"""菜单路由路径"""
|
||
|
||
menu_type: str = "page"
|
||
"""菜单类型:page-页面,button-按钮权限"""
|
||
|
||
permission_code: str
|
||
"""权限编码"""
|
||
|
||
icon: str | None = None
|
||
"""图标标识"""
|
||
|
||
sort_no: int = 0
|
||
"""排序号,数值越小越靠前"""
|
||
|
||
status: int = 1
|
||
"""状态:1-启用,0-禁用"""
|
||
|
||
|
||
class UpdateMenuRequest(BaseModel):
|
||
"""更新菜单请求体。被 PUT /api/system/menus/{id} 路由使用。"""
|
||
|
||
parent_id: int = 0
|
||
"""父菜单 ID"""
|
||
|
||
menu_name: str
|
||
"""菜单名称"""
|
||
|
||
menu_path: str = ""
|
||
"""菜单路由路径"""
|
||
|
||
menu_type: str = "page"
|
||
"""菜单类型:page-页面,button-按钮权限"""
|
||
|
||
permission_code: str
|
||
"""权限编码"""
|
||
|
||
icon: str | None = None
|
||
"""图标标识"""
|
||
|
||
sort_no: int = 0
|
||
"""排序号"""
|
||
|
||
status: int = 1
|
||
"""状态:1-启用,0-禁用"""
|
||
|
||
|
||
class AssignRoleMenusRequest(BaseModel):
|
||
"""为角色分配菜单权限请求体。被 POST /api/system/roles/{id}/menus 路由使用。"""
|
||
|
||
menu_ids: list[int] = []
|
||
"""菜单 ID 列表"""
|
||
|
||
permission_codes: list[str] = []
|
||
"""权限编码列表"""
|