From dc3336685e80c593a3654a6e53e3e1d1d13b2b50 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 06 五月 2026 15:30:13 +0800
Subject: [PATCH] fix(approve): 修复流程配置节点审批人为空时的异常处理

---
 src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java |   98 +++++++++++++++++++++++++------------------------
 1 files changed, 50 insertions(+), 48 deletions(-)

diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
index fd9df5a..39f7234 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
+++ b/src/main/java/com/ruoyi/project/system/service/impl/SysUserServiceImpl.java
@@ -1,16 +1,6 @@
 package com.ruoyi.project.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.validation.Validator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.constant.UserConstants;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -18,19 +8,21 @@
 import com.ruoyi.common.utils.bean.BeanValidators;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.framework.aspectj.lang.annotation.DataScope;
-import com.ruoyi.project.system.domain.SysPost;
-import com.ruoyi.project.system.domain.SysRole;
-import com.ruoyi.project.system.domain.SysUser;
-import com.ruoyi.project.system.domain.SysUserPost;
-import com.ruoyi.project.system.domain.SysUserRole;
-import com.ruoyi.project.system.mapper.SysPostMapper;
-import com.ruoyi.project.system.mapper.SysRoleMapper;
-import com.ruoyi.project.system.mapper.SysUserMapper;
-import com.ruoyi.project.system.mapper.SysUserPostMapper;
-import com.ruoyi.project.system.mapper.SysUserRoleMapper;
+import com.ruoyi.project.system.domain.*;
+import com.ruoyi.project.system.mapper.*;
 import com.ruoyi.project.system.service.ISysConfigService;
-import com.ruoyi.project.system.service.ISysDeptService;
 import com.ruoyi.project.system.service.ISysUserService;
+import jakarta.validation.Validator;
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鐢ㄦ埛 涓氬姟灞傚鐞�
@@ -38,33 +30,19 @@
  * @author ruoyi
  */
 @Service
+@RequiredArgsConstructor
 public class SysUserServiceImpl implements ISysUserService
 {
     private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
 
-    @Autowired
-    private SysUserMapper userMapper;
-
-    @Autowired
-    private SysRoleMapper roleMapper;
-
-    @Autowired
-    private SysPostMapper postMapper;
-
-    @Autowired
-    private SysUserRoleMapper userRoleMapper;
-
-    @Autowired
-    private SysUserPostMapper userPostMapper;
-
-    @Autowired
-    private ISysConfigService configService;
-
-    @Autowired
-    private ISysDeptService deptService;
-
-    @Autowired
-    protected Validator validator;
+    private final SysUserDeptMapper sysUserDeptMapper;
+    private final SysUserMapper userMapper;
+    private final SysRoleMapper roleMapper;
+    private final SysPostMapper postMapper;
+    private final SysUserRoleMapper userRoleMapper;
+    private final SysUserPostMapper userPostMapper;
+    private final ISysConfigService configService;
+    protected final Validator validator;
 
     /**
      * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ鐢ㄦ埛鍒楄〃
@@ -267,6 +245,8 @@
         insertUserPost(user);
         // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
         insertUserRole(user);
+        // 鏂板閮ㄩ棬鍏宠仈
+        bindUserDept(user);
         return rows;
     }
 
@@ -455,7 +435,7 @@
 
     /**
      * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
-     * 
+     *
      * @param userIds 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
      * @return 缁撴灉
      */
@@ -472,6 +452,9 @@
         userRoleMapper.deleteUserRole(userIds);
         // 鍒犻櫎鐢ㄦ埛涓庡矖浣嶅叧鑱�
         userPostMapper.deleteUserPost(userIds);
+        // 鍒犻櫎鐢ㄦ埛涓庨儴闂ㄦ暟鎹�
+        sysUserDeptMapper.delete(new LambdaQueryWrapper<SysUserDept>()
+                .in(SysUserDept::getUserId, userIds));
         return userMapper.deleteUserByIds(userIds);
     }
 
@@ -503,7 +486,6 @@
                 if (StringUtils.isNull(u))
                 {
                     BeanValidators.validateWithException(validator, user);
-                    deptService.checkDeptDataScope(user.getDeptId());
                     String password = configService.selectConfigByKey("sys.user.initPassword");
                     user.setPassword(SecurityUtils.encryptPassword(password));
                     user.setCreateBy(operName);
@@ -516,7 +498,6 @@
                     BeanValidators.validateWithException(validator, user);
                     checkUserAllowed(u);
                     checkUserDataScope(u.getUserId());
-                    deptService.checkDeptDataScope(user.getDeptId());
                     user.setUserId(u.getUserId());
                     user.setUpdateBy(operName);
                     userMapper.updateUser(user);
@@ -558,4 +539,25 @@
     public List<SysUser> userListNoPage(SysUser user) {
         return userMapper.selectUserList(user);
     }
+
+    /**
+     * 缁戝畾鐢ㄦ埛閮ㄩ棬
+     * @param user
+     * @return
+     */
+    @Override
+    public int bindUserDept(SysUser user) {
+        // 鍒犻櫎鎵�鏈夊叧鑱旂粦瀹�
+        LambdaQueryWrapper<SysUserDept> delWrapper = new LambdaQueryWrapper<>();
+        delWrapper.eq(SysUserDept::getUserId, user.getUserId());
+        sysUserDeptMapper.delete(delWrapper);
+        // 閲嶆柊缁戝畾
+        for (int i = 0; i < user.getDeptIds().length; i++) {
+            SysUserDept sysUserDept = new SysUserDept();
+            sysUserDept.setDeptId(user.getDeptIds()[i]);
+            sysUserDept.setUserId(user.getUserId());
+            sysUserDeptMapper.insert(sysUserDept);
+        }
+        return user.getDeptIds().length;
+    }
 }

--
Gitblit v1.9.3