Files
DjangoAdmin_FastAPI_EleVue/apps/services/user_role.py
T
ClaudeandClaude dbcce79536 chore: 基线提交(重构前快照)
重构前保存现有 apps/ 结构基线,供后续各阶段回滚。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 09:43:18 +08:00

49 lines
1.4 KiB
Python

from apps.models.user_role import UserRole
from apps.models.role import Role
from extensions import get_db_session
# 根据用户ID查询角色列表
def get_user_role_list(userId):
db = get_db_session()
rows = (
db.query(Role.id, Role.name)
.join(UserRole, UserRole.role_id == Role.id)
.filter(UserRole.user_id == userId, Role.is_delete == 0)
.all()
)
role_list = []
if rows:
for v in rows:
item = {
'id': v.id,
'name': v.name,
}
role_list.append(item)
return role_list
# 根据用户ID列表批量查询角色,返回 {user_id: [{id, name}, ...]} 字典
def get_user_role_map(user_ids):
if not user_ids:
return {}
db = get_db_session()
# 用ORM查询替代原生SQL,避免tuple单元素/空列表的IN语法问题
from apps.models.user_role import UserRole
from apps.models.role import Role
rows = (
db.query(UserRole.user_id, Role.id.label('role_id'), Role.name.label('role_name'))
.join(Role, Role.id == UserRole.role_id)
.filter(UserRole.user_id.in_(user_ids), Role.is_delete == 0)
.all()
)
role_map = {}
for row in rows:
uid = row.user_id
if uid not in role_map:
role_map[uid] = []
role_map[uid].append({'id': row.role_id, 'name': row.role_name})
return role_map