From b4b2b63345961884c8a9dd95ca1f32c0ea1123e5 Mon Sep 17 00:00:00 2001
From: ZQN <364596817@qq.com>
Date: 星期一, 24 六月 2024 20:31:27 +0800
Subject: [PATCH] 多机构

---
 project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java |  226 ++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 202 insertions(+), 24 deletions(-)

diff --git a/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java b/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
index b34dac0..e928983 100644
--- a/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
+++ b/project-system/src/main/java/com/project/system/service/impl/SysUserServiceImpl.java
@@ -1,11 +1,28 @@
 package com.project.system.service.impl;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-import javax.validation.Validator;
-
+import cn.hutool.core.convert.Convert;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.project.common.annotation.DataScope;
+import com.project.common.constant.UserConstants;
+import com.project.common.core.domain.entity.SysDept;
+import com.project.common.core.domain.entity.SysRole;
+import com.project.common.core.domain.entity.SysUser;
+import com.project.common.core.domain.model.ImportError;
+import com.project.common.exception.ServiceException;
+import com.project.common.exception.base.BaseException;
+import com.project.common.utils.SecurityUtils;
+import com.project.common.utils.StringUtils;
+import com.project.common.utils.bean.BeanValidators;
+import com.project.common.utils.spring.SpringUtils;
+import com.project.system.domain.*;
+import com.project.system.domain.vo.SysUserResultVo;
+import com.project.system.domain.vo.SysUserVo;
+import com.project.system.mapper.*;
+import com.project.system.service.ISysConfigService;
+import com.project.system.service.ISysDeptService;
+import com.project.system.service.ISysUserDeptService;
+import com.project.system.service.ISysUserService;
 import lombok.RequiredArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -13,25 +30,11 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
-import com.project.common.annotation.DataScope;
-import com.project.common.constant.UserConstants;
-import com.project.common.core.domain.entity.SysRole;
-import com.project.common.core.domain.entity.SysUser;
-import com.project.common.exception.ServiceException;
-import com.project.common.utils.SecurityUtils;
-import com.project.common.utils.StringUtils;
-import com.project.common.utils.bean.BeanValidators;
-import com.project.common.utils.spring.SpringUtils;
-import com.project.system.domain.SysPost;
-import com.project.system.domain.SysUserPost;
-import com.project.system.domain.SysUserRole;
-import com.project.system.mapper.SysPostMapper;
-import com.project.system.mapper.SysRoleMapper;
-import com.project.system.mapper.SysUserMapper;
-import com.project.system.mapper.SysUserPostMapper;
-import com.project.system.mapper.SysUserRoleMapper;
-import com.project.system.service.ISysConfigService;
-import com.project.system.service.ISysUserService;
+
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * 鐢ㄦ埛 涓氬姟灞傚鐞�
@@ -50,6 +53,8 @@
     private final SysUserRoleMapper userRoleMapper;
     private final SysUserPostMapper userPostMapper;
     private final ISysConfigService configService;
+    private final ISysUserDeptService userDeptService;
+    private final ISysDeptService deptService;
     protected final Validator validator;
 
     /**
@@ -253,6 +258,10 @@
         insertUserPost(user);
         // 鏂板鐢ㄦ埛涓庤鑹茬鐞�
         insertUserRole(user);
+        // 鏂板鐢ㄦ埛涓庨儴闂ㄧ鐞�
+        if (!"02".equals(user.getUserType())){
+            insertUserDept(user);
+        }
         return rows;
     }
 
@@ -287,6 +296,11 @@
         userPostMapper.deleteUserPostByUserId(userId);
         // 鏂板鐢ㄦ埛涓庡矖浣嶇鐞�
         insertUserPost(user);
+
+        // 鏂板鐢ㄦ埛涓庨儴闂ㄧ鐞�
+        if (!"02".equals(user.getUserType())){
+            insertUserDept(user);
+        }
         return userMapper.updateUser(user);
     }
 
@@ -374,6 +388,21 @@
     public void insertUserRole(SysUser user)
     {
         this.insertUserRole(user.getUserId(), user.getRoleIds());
+    }
+
+    /**
+     * 鏂板鐢ㄦ埛閮ㄩ棬
+     *
+     * @param user 鐢ㄦ埛瀵硅薄
+     */
+    public void insertUserDept(SysUser user)
+    {
+       userDeptService.remove(userDeptService.lq()
+                .eq(SysUserDept::getUserId, user.getUserId())
+                .eq(SysUserDept::getDeptId, user.getDeptId())
+        );
+        SysUserDept userDept = new SysUserDept().setUserId(user.getUserId()).setDeptId(user.getDeptId());
+        userDeptService.save(userDept);
     }
 
     /**
@@ -531,4 +560,153 @@
         }
         return successMsg.toString();
     }
+
+
+    /**
+     * 鎵归噺鍒犻櫎鐢ㄦ埛淇℃伅
+     *
+     * @param deptId 闇�瑕佸垹闄ょ殑鐢ㄦ埛ID
+     * @return 缁撴灉
+     */
+    @Override
+    @Transactional
+    public int deleteUserByDeptId(Long deptId)
+    {
+        List<SysUser> sysUsers = userMapper.selectList(new LambdaQueryWrapper<SysUser>().eq(SysUser::getDeptId, deptId));
+        Long[] ids = sysUsers.stream().map(SysUser::getUserId).toArray(Long[]::new);
+        return this.deleteUserByIds(ids);
+    }
+
+    @Override
+    public List<String> getPhonesByRoleKey(String roleKey, Long deptId)
+    {
+        return userMapper.getPhonesByRoleKey(roleKey, deptId);
+    }
+
+    @Override
+    public int resetPhone(Long userId, String phone) {
+        return userMapper.resetPhone(userId, phone);
+    }
+
+    /**
+     * 澶勭悊瀵煎叆鏁版嵁
+     * @param list    鏁版嵁
+     * @param deptId    瀵煎叆閮ㄩ棬id
+     * @return  缁撴灉
+     */
+    @Override
+    public SysUserResultVo doImport(List<SysUserVo> list, Long deptId)
+    {
+        if (list==null || list.size()<1){
+            throw new BaseException("鏈幏鍙栧埌瀵煎叆淇℃伅锛�");
+        }
+
+        SysUserResultVo resultVo = new SysUserResultVo();
+        list.forEach(sysUserVo -> {
+            sysUserVo.setDeptId(deptId);
+        });
+        resultVo.setVoList(list);
+        return this.checkImport(resultVo);
+    }
+
+    /**
+     * 鏍¢獙瀵煎叆鏁版嵁
+     * @param resultVo    鏁版嵁
+     * @return  缁撴灉
+     */
+    @Override
+    public SysUserResultVo checkImport(SysUserResultVo resultVo)
+    {
+        if (resultVo==null || StringUtils.isEmpty(resultVo.getVoList())){
+            throw new BaseException("鏈幏鍙栧埌瀵煎叆淇℃伅锛�");
+        }
+        for (SysUserVo vo : resultVo.getVoList()) {
+            List<ImportError> errors = new ArrayList<>();
+            validEntityBeforeImport(vo, errors);
+            vo.setErrorList(errors);
+        }
+        return  resultVo;
+    }
+
+    /**
+     * 楠岃瘉鍙傛暟
+     * @param entity    鏁版嵁
+     * @param errorList 閿欒鏁版嵁
+     */
+    private void validEntityBeforeImport(SysUserVo entity, List<ImportError> errorList)
+    {
+        if (StringUtils.isEmpty(entity.getNickName())){
+            errorList.add(new ImportError(0, "璇峰~濮撳悕锛�"));
+        }
+        if (StringUtils.isEmpty(entity.getDeptName())){
+            errorList.add(new ImportError(1, "璇峰~鍐欓儴闂ㄤ俊鎭紒"));
+        } else {
+            SysDept sysDept = deptService.selectDeptById(entity.getDeptId());
+            if (sysDept==null || !sysDept.getDeptName().equals(entity.getDeptName())){
+                errorList.add(new ImportError(1, "閮ㄩ棬淇℃伅涓嶅尮閰嶏紒"));
+            }
+        }
+        if (StringUtils.isEmpty(entity.getPhonenumber())){
+            errorList.add(new ImportError(2, "璇峰~鍐欐墜鏈哄彿锛�"));
+        } else {
+            SysUser user = this.selectUserByUserName(entity.getPhonenumber());
+            if (user!=null){
+                entity.setUserId(user.getUserId());
+            } else {
+                SysUser check = new SysUser();
+                check.setPhonenumber(entity.getPhonenumber());
+                String s = checkPhoneUnique(check);
+                if (UserConstants.NOT_UNIQUE.equals(s)) {
+                    errorList.add(new ImportError(2, "鎵嬫満鍙峰凡瀛樺湪锛�"));
+                }
+            }
+        }
+        if (StringUtils.isNotEmpty(entity.getEmail())){
+            SysUser check = new SysUser();
+            check.setPhonenumber(entity.getPhonenumber());
+            String s = checkEmailUnique(check);
+            if (UserConstants.NOT_UNIQUE.equals(s)) {
+                errorList.add(new ImportError(3, "閭宸插瓨鍦紒"));
+            }
+        }
+        if (StringUtils.isNotEmpty(entity.getImportSex())){
+            switch (entity.getImportSex().trim()){
+                case "鐢�":
+                    entity.setSex("0");
+                    break;
+                case "濂�":
+                    entity.setSex("1");
+                    break;
+                case "鏈煡":
+                    entity.setSex("2");
+                    break;
+            }
+        } else {
+            entity.setSex("2");
+        }
+    }
+
+    /**
+     * 淇濆瓨瀵煎叆缁撴灉
+     * @param resultVo    鏁版嵁
+     * @return  缁撴灉
+     */
+    @Override
+    @Transactional
+    public Boolean saveImport(SysUserResultVo resultVo)
+    {
+        if (resultVo==null || StringUtils.isEmpty(resultVo.getVoList())){
+            throw new BaseException("鏈幏鍙栧埌瀵煎叆淇℃伅锛�");
+        }
+        resultVo.getVoList().forEach(e-> {
+            if (StringUtils.isNotEmpty(e.getErrorList())) {
+                throw new BaseException("杩樻湁鏈鐞嗛敊璇俊鎭紒");
+            }
+        });
+        List<SysUser> users = Convert.toList(SysUser.class, resultVo.getVoList());
+        for (SysUser user : users) {
+            this.insertUser(user);
+        }
+        return true;
+    }
 }

--
Gitblit v1.9.1