Procházet zdrojové kódy

新增删除用户限制,存在项目不允许删除

anderx před 2 roky
rodič
revize
12727b4e64

+ 3 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -205,6 +205,9 @@ public class SysUserController extends BaseController
         {
             return error("当前用户不能删除");
         }
+        if (userService.checkProject(userIds)){
+            return error("当前用户存在项目不能删除");
+        }
         return toAjax(userService.deleteUserByIds(userIds));
     }
 

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -140,4 +140,6 @@ public interface SysUserMapper
     SysUser selectByNikeName(@Param("nikeName") String nikeName, @Param("companyId") Long companyId);
 
     void updateDuration(Long aid);
+
+    int selectParticipateProjectSum(Long userId);
 }

+ 2 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@@ -209,4 +209,6 @@ public interface ISysUserService
     String setOpenId(String code);
 
     boolean checkJobNumber(SysUser user);
+
+    boolean checkProject(Long[] userIds);
 }

+ 11 - 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -677,6 +677,17 @@ public class SysUserServiceImpl implements ISysUserService
         return true;
     }
 
+    @Override
+    public boolean checkProject(Long[] userIds) {
+        for (Long userId : userIds) {
+            int i = userMapper.selectParticipateProjectSum(userId);
+            if (i>0){
+                return true;
+            }
+        }
+        return false;
+    }
+
     private Long getCompany(Long deptId) {
         log.debug("depID="+deptId);
         SysDept sysDept = deptService.selectDeptById(deptId);

+ 7 - 1
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -344,9 +344,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			AND (a.dept_id = #{companyId} OR a.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{companyId}, ancestors) ))
 		</if>
 	</select>
+	<select id="selectParticipateProjectSum" parameterType="java.lang.Long" resultType="java.lang.Integer">
+		select count(*)
+		from sys_user a left join project_task b on a.user_id =b.aid
+						left join project_staff c on a.user_id =c.aid
+		where a.user_id = #{userId}
+	</select>
 
 
-    <update id="userAddDuration">
+	<update id="userAddDuration">
 		update sys_user set duration = format(duration+#{duration},2)
 		where user_id = #{userId}
 	</update>