优化中心联系人展示名称解析
- 新增中心联系人展示名解析服务,支持从逗号分隔用户 ID 解析姓名\n- 中心列表接口返回 contact_display,避免前端依赖项目成员权限才能展示联系人姓名\n- 中心管理和立项会议授权页面优先使用后端联系人展示名\n- 补充联系人解析服务测试和立项会议授权页面展示顺序测试
This commit is contained in:
@@ -10,8 +10,10 @@ from app.crud import audit as audit_crud
|
||||
from app.crud import site as site_crud
|
||||
from app.crud import startup as startup_crud
|
||||
from app.crud import study as study_crud
|
||||
from app.crud import user as user_crud
|
||||
from app.schemas.site import SiteCreate, SiteRead, SiteUpdate
|
||||
from app.schemas.startup import StartupEthicsCreate, StartupFeasibilityCreate
|
||||
from app.services.site_contact_display import build_contact_display, parse_contact_user_ids
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@@ -100,7 +102,17 @@ async def list_sites(
|
||||
include_inactive=include_inactive,
|
||||
site_ids=site_ids,
|
||||
)
|
||||
return list(sites)
|
||||
contact_user_ids: set[uuid.UUID] = set()
|
||||
for site in sites:
|
||||
contact_user_ids.update(parse_contact_user_ids(site.contact))
|
||||
users_map = await user_crud.get_users_by_ids(db, contact_user_ids)
|
||||
|
||||
result: list[SiteRead] = []
|
||||
for site in sites:
|
||||
item = SiteRead.model_validate(site)
|
||||
item.contact_display = build_contact_display(site.contact, users_map)
|
||||
result.append(item)
|
||||
return result
|
||||
|
||||
|
||||
@router.patch(
|
||||
|
||||
Reference in New Issue
Block a user