| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- # -*- 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 SysUserPost
- from ruoyi_system.domain.po import SysUserPostPo
- from ruoyi_admin.ext import db
- class SysUserPostMapper:
-
- """
- 用户与岗位相关联的数据访问层
- """
- @classmethod
- @Transactional(db.session)
- def delete_user_post_by_user_id(cls, user_id: int) -> int:
- """
- 通过用户ID删除用户和岗位关联
- Args:
- user_id (int): 用户ID
- Returns:
- int: 影响的行数
- """
- stmt = delete(SysUserPostPo).where(SysUserPostPo.user_id == user_id)
- return db.session.execute(stmt).rowcount
- @classmethod
- def count_user_post_by_id(cls, post_id: int) -> int:
- """
- 通过岗位ID查询岗位使用数量
- Args:
- post_id (int): 岗位ID
- Returns:
- int: 使用该岗位的用户数量
- """
- stmt = select(func.count()).select_from(SysUserPostPo) \
- .where(SysUserPostPo.post_id == post_id)
- return db.session.execute(stmt).scalar_one_or_none() or 0
- @classmethod
- @Transactional(db.session)
- def delete_user_post(cls, ids: List[int]) -> int:
- """
- 批量删除用户和岗位关联
- Args:
- ids (List[int]): 用户ID列表
-
- Returns:
- int: 影响的行数
- """
- stmt = delete(SysUserPostPo).where(SysUserPostPo.user_id.in_(ids))
- return db.session.execute(stmt).rowcount
- @classmethod
- @Transactional(db.session)
- def batch_user_post(cls, user_post_list: List[SysUserPost]) -> int:
- """
- 批量新增用户岗位信息
- Args:
- user_post_list (List[SysUserPost]): 用户岗位列表
- Returns:
- int: 影响的行数
- """
- user_post_list = [
- row.model_dump(
- exclude_none=True,
- exclude_unset=True
- )
- for row in user_post_list]
- stmt = insert(SysUserPostPo).values(user_post_list)
- return db.session.execute(stmt).rowcount
|