Skip to content

Commit 73adea2

Browse files
author
JiayuXu
committed
fix: 修复角色权限接口响应模型导致m2m字段信息丢失的问题
1 parent e3a74d6 commit 73adea2

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

src/api/v1/roles/roles.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from schemas.base import Success, SuccessExtra
1010
from schemas.response import (
1111
ResponseBase,
12+
RoleAuthorizedResponse,
1213
RoleDetailResponse,
1314
RoleListResponse,
1415
)
@@ -72,7 +73,7 @@ async def delete_role(
7273
return json.loads(result.body)
7374

7475

75-
@router.get("/authorized", summary="查看角色权限", response_model=RoleDetailResponse)
76+
@router.get("/authorized", summary="查看角色权限", response_model=RoleAuthorizedResponse)
7677
async def get_role_authorized(id: int = Query(..., description="角色ID")):
7778
role_obj = await role_repository.get(id=id)
7879
data = await role_obj.to_dict(m2m=True)

src/schemas/response.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,17 @@ class RoleListItem(BaseModel):
171171
created_at: datetime | None = Field(description="创建时间")
172172

173173

174+
class RoleAuthorizedInfo(BaseModel):
175+
"""角色权限详情(包含完整的菜单和API信息)"""
176+
id: int = Field(description="角色ID")
177+
name: str = Field(description="角色名称")
178+
desc: str | None = Field(description="角色描述")
179+
menus: list[MenuItem] = Field(default_factory=list, description="菜单列表")
180+
apis: list["ApiInfo"] = Field(default_factory=list, description="API权限列表")
181+
created_at: datetime | None = Field(description="创建时间")
182+
updated_at: datetime | None = Field(description="更新时间")
183+
184+
174185
# ============= 部门相关响应模型 =============
175186
class DeptInfo(BaseModel):
176187
"""部门信息"""
@@ -212,6 +223,7 @@ class AuditLogItem(BaseModel):
212223
# 递归模型更新
213224
MenuItem.model_rebuild()
214225
DeptInfo.model_rebuild()
226+
RoleAuthorizedInfo.model_rebuild()
215227

216228

217229
# ============= 类型别名(便于使用) =============
@@ -235,6 +247,7 @@ class AuditLogItem(BaseModel):
235247
# 角色相关
236248
RoleListResponse = PageResponse[list[RoleListItem]]
237249
RoleDetailResponse = ResponseBase[RoleInfo]
250+
RoleAuthorizedResponse = ResponseBase[RoleAuthorizedInfo]
238251

239252
# 部门相关
240253
DeptListResponse = ResponseBase[list[DeptInfo]]

0 commit comments

Comments
 (0)