| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- # -*- coding: utf-8 -*-
- # @Author : YY
- from typing import List
- from sqlalchemy import delete, func, insert, select
- from ruoyi_common.sqlalchemy.transaction import Transactional
- from ruoyi_system.domain.entity import SysUserRole
- from ruoyi_admin.ext import db
- from ruoyi_system.domain.po import SysUserRolePo
- class SysUserRoleMapper:
-
- """
- 用户与角色相关联的数据访问层
- """
- @classmethod
- @Transactional(db.session)
- def delete_user_role_by_user_id(cls, user_id: int) -> int:
- """
- 通过用户ID删除用户和角色关联
- Args:
- user_id (int): 用户ID
-
- Returns:
- int: 影响的行数
- """
- stmt = delete(SysUserRolePo).where(SysUserRolePo.user_id==user_id)
- return db.session.execute(stmt).rowcount
-
- @classmethod
- @Transactional(db.session)
- def delete_user_role_by_user_ids(cls, user_ids: List[int]) -> int:
- """
- 批量通过用户ID删除用户和角色关联
- Args:
- user_ids (List[int]): 用户ID列表
- Returns:
- int: 影响的行数
- """
- if not user_ids:
- return 0
- stmt = delete(SysUserRolePo).where(SysUserRolePo.user_id.in_(user_ids))
- return db.session.execute(stmt).rowcount
- @classmethod
- @Transactional(db.session)
- def delete_user_role(cls, ids: List[int]) -> int:
- """
- 批量删除用户和角色关联
- Args:
- ids (List[int]): 需要删除的数据ID列表
-
- Returns:
- int: 影响的行数
- """
- stmt = delete(SysUserRolePo) \
- .where(SysUserRolePo.role_id.in_(ids))
- return db.session.execute(stmt).rowcount
- @classmethod
- def count_user_role_by_role_id(cls, role_id: int) -> int:
- """
- 通过角色ID查询角色使用数量
- Args:
- role_id (int): 角色ID
-
- Returns:
- int: 使用该角色的用户数量
- """
- stmt = select(func.count()).select_from(SysUserRolePo) \
- .where(SysUserRolePo.role_id==role_id)
- return db.session.execute(stmt).scalar() or 0
- @classmethod
- @Transactional(db.session)
- def batch_user_role(cls, user_role_list: List[SysUserRole]) -> int:
- """
- 批量新增用户角色信息
- Args:
- user_role_list (List[SysUserRole]): 用户角色列表
-
- Returns:
- int: 影响的行数
- """
- user_role_list = [
- row.model_dump(
- exclude_none=True,
- exclude_unset=True
- )
- for row in user_role_list]
- stmt = insert(SysUserRolePo).values(user_role_list)
- return db.session.execute(stmt).rowcount
-
- @classmethod
- @Transactional(db.session)
- def delete_user_role_info(cls, user_role: SysUserRole) -> int:
- """
- 删除用户和角色关联信息
- Args:
- user_role (SysUserRole): 用户角色信息
-
- Returns:
- int: 影响的行数
- """
- stmt = delete(SysUserRolePo).where(
- SysUserRolePo.user_id==user_role.user_id,
- SysUserRolePo.role_id==user_role.role_id
- )
- return db.session.execute(stmt).rowcount
- @classmethod
- @Transactional(db.session)
- def delete_user_role_infos(cls, role_id: int, user_ids: List[int]) -> int:
- """
- 批量取消授权用户角色
- Args:
- role_id (int): 角色ID
- user_ids (List[int]): 用户ID列表
-
- Returns:
- int: 影响的行数
- """
- stmt = delete(SysUserRolePo).where(
- SysUserRolePo.user_id.in_(user_ids),
- SysUserRolePo.role_id==role_id
- )
- return db.session.execute(stmt).rowcount
|