Skip to content

Commit af61494

Browse files
committed
refactor: user
1 parent 9891c96 commit af61494

File tree

1 file changed

+7
-13
lines changed

1 file changed

+7
-13
lines changed

apps/users/serializers/user.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -202,13 +202,14 @@ def _get_user_roles(user_ids):
202202
user_role_relations = (
203203
user_role_relation_model.objects
204204
.filter(user_id__in=user_ids)
205+
.distinct('user_id', 'role_id') # 确保每个用户每个角色只返回一次
205206
.select_related('role') # 预加载外键数据
206207
)
207208

208209
# 构建用户ID到角色名称列表的映射
209210
user_role_mapping = defaultdict(list)
210211
for relation in user_role_relations:
211-
user_role_mapping[relation.user_id].append(relation.role.role_name)
212+
user_role_mapping[str(relation.user_id)].append(relation.role.role_name)
212213

213214
return user_role_mapping
214215

@@ -218,7 +219,7 @@ def _get_user_roles(user_ids):
218219

219220
# 将角色信息添加回用户数据中
220221
for user in result['records']:
221-
user['role'] = user_role_mapping.get(user['id'], [])
222+
user['role'] = user_role_mapping.get(str(user['id']), [])
222223
return result
223224

224225
@valid_license(model=User, count=2,
@@ -486,22 +487,15 @@ def get_all_user_list(self):
486487

487488
def update_user_role(instance, user):
488489
workspace_user_role_mapping_model = DatabaseModelManage.get_model("workspace_user_role_mapping")
489-
role_setting_model = DatabaseModelManage.get_model("role_model")
490490
if workspace_user_role_mapping_model:
491491
role_setting = instance.get('role_setting')
492492
workspace_user_role_mapping_model.objects.filter(user_id=user.id).delete()
493493
relations = set()
494494
for item in role_setting:
495-
for role_id, workspace_ids in item.items():
496-
relations.update(set(product([role_id], workspace_ids)))
497-
498-
role_ids = {role_id for item in role_setting for role_id in item}
499-
role_ids_is_system = role_setting_model.objects.filter(id__in=role_ids,
500-
type=RoleConstants.ADMIN.name).values_list(
501-
'id', flat=True)
502-
if role_ids_is_system:
503-
relations = {(role_id, 'SYSTEM') if role_id in role_ids_is_system else (role_id, workspace_id)
504-
for role_id, workspace_id in relations}
495+
role_id = item['role_id']
496+
workspace_ids = item['workspace_ids'] if item['workspace_ids'] else ['None']
497+
for workspace_id in workspace_ids:
498+
relations.add((role_id, workspace_id))
505499
for role_id, workspace_id in relations:
506500
workspace_user_role_mapping_model.objects.create(
507501
id=uuid.uuid7(),

0 commit comments

Comments
 (0)