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