Browse Source

删除用户、角色时删除其关联

SpringSunYY 4 tháng trước cách đây
mục cha
commit
ef5c15d1b1
2 tập tin đã thay đổi với 25 bổ sung0 xóa
  1. 17 0
      ruoyi_system/mapper/sys_user_role.py
  2. 8 0
      ruoyi_system/service/sys_user.py

+ 17 - 0
ruoyi_system/mapper/sys_user_role.py

@@ -30,6 +30,23 @@ class SysUserRoleMapper:
         """
         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)

+ 8 - 0
ruoyi_system/service/sys_user.py

@@ -296,6 +296,7 @@ class SysUserService:
         cls.insert_user_role(user_id, role_ids)
 
     @classmethod
+    @Transactional(db.session)
     def delete_users_by_id(cls, id: int) -> bool:
         """
         根据用户ID,删除用户
@@ -306,9 +307,12 @@ class SysUserService:
         Returns:
             bool: 操作结果
         """
+        SysUserRoleMapper.delete_user_role_by_user_id(id)
+        SysUserPostMapper.delete_user_post_by_user_id(id)
         return SysUserMapper.delete_user_by_id(id) > 0
 
     @classmethod
+    @Transactional(db.session)
     def delete_users_by_ids(cls, ids: List[int]) -> bool:
         """
         根据用户ID列表,批量删除用户
@@ -319,6 +323,10 @@ class SysUserService:
         Returns:
             bool: 操作结果
         """
+        if not ids:
+            return False
+        SysUserRoleMapper.delete_user_role_by_user_ids(ids)
+        SysUserPostMapper.delete_user_post(ids)
         return SysUserMapper.delete_user_by_ids(ids) > 0
 
     @classmethod