Skip to content

Commit

Permalink
resolve: solve some problems
Browse files Browse the repository at this point in the history
  • Loading branch information
rolin999 committed Jan 20, 2025
1 parent 9ba1d6e commit 3df45a6
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/bk-user/bkuser/apis/open_v3/views/department.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def get(self, request, *args, **kwargs):
page = self.paginate_queryset(depts)

# 查询 parent
parent_id_map = TenantDepartmentHandler.get_tenant_department_parent_id_map(page)
parent_id_map = TenantDepartmentHandler.get_tenant_department_parent_id_map(self.tenant_id, page)

return self.get_paginated_response(
TenantDepartmentDescendantListOutputSLZ(page, many=True, context={"parent_id_map": parent_id_map}).data
Expand Down
23 changes: 19 additions & 4 deletions src/bk-user/bkuser/biz/organization.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,31 @@ def get_dept_ancestors(dept_id: int) -> List[int]:

class TenantDepartmentHandler:
@staticmethod
def get_tenant_department_parent_id_map(tenant_departments: List[TenantDepartment]) -> Dict[int, int | None]:
def get_tenant_department_parent_id_map(
tenant_id: str, tenant_departments: List[TenantDepartment]
) -> Dict[int, int | None]:
"""
获取部门的父部门 ID 映射
"""

# 获取部门的数据源部门 ID 列表
dept_ids = [dept.data_source_department_id for dept in tenant_departments]

# 获取部门的数据源部门关系
relations = DataSourceDepartmentRelation.objects.filter(department_id__in=dept_ids)

# 部门 ID -> 父部门 ID 映射
parent_id_map = {rel.department_id: rel.parent_id for rel in relations}
# 获取部门 ID 到父部门 ID 的映射
dept_parent_id_map = {rel.department_id: rel.parent_id for rel in relations}

return {dept.id: parent_id_map.get(dept.data_source_department_id) for dept in tenant_departments}
# 获取父部门数据源 ID 到租户父部门 ID 的映射
parent_ids = list(dept_parent_id_map.values())
parent_id_map = dict(
TenantDepartment.objects.filter(tenant_id=tenant_id, data_source_department_id__in=parent_ids).values_list(
"data_source_department_id", "id"
)
)

return {
dept.id: parent_id_map.get(dept_parent_id_map[dept.data_source_department_id])
for dept in tenant_departments
}

0 comments on commit 3df45a6

Please sign in to comment.