MrShi
2024-04-02 22271e641e4505ba906c3770905b7e84e3ad8d85
server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -1,12 +1,15 @@
package com.doumee.biz.system.impl;
import cn.emay.sdk.core.dto.sms.response.SmsResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.biz.system.SystemUserBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.SmsEmailMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.system.dto.*;
import com.doumee.dao.system.model.SystemDepartment;
@@ -14,12 +17,14 @@
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.system.model.SystemUserRole;
import com.doumee.service.business.CompanyService;
import com.doumee.service.business.impl.SmsEmailServiceImpl;
import com.doumee.service.system.*;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -34,9 +39,15 @@
    @Autowired
    private SystemUserService systemUserService;
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private CompanyService companyService;
    @Value("${debug_model}")
    private boolean debugModel;
    @Autowired
    private SystemUserRoleService systemUserRoleService;
@@ -109,29 +120,40 @@
    public void create(CreateSystemUserDTO systemUser) {
        // 验证用户名
//        systemUser.setUsername(systemUser.getMobile());
        if(StringUtils.isBlank(systemUser.getMobile()) || StringUtils.isBlank(systemUser.getCaptcha())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(!debugModel){
            SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,systemUser.getMobile(),systemUser.getCaptcha());
        }
        SystemUser queryUserDto = new SystemUser();
        queryUserDto.setUsername(systemUser.getUsername());
        queryUserDto.setDeleted(Boolean.FALSE);
        queryUserDto.setType(Constants.ZERO);
//        queryUserDto.setType(Constants.ZERO);
        SystemUser user = systemUserService.findOne(queryUserDto);
        if (user != null) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在");
        }
        // 验证工号
       if (StringUtils.isNotBlank(systemUser.getEmpNo())) {
        // 验证手机号
       if (StringUtils.isNotBlank(systemUser.getMobile())) {
            queryUserDto = new SystemUser();
            queryUserDto.setDeleted(Boolean.FALSE);
            queryUserDto.setEmpNo(systemUser.getEmpNo());
            queryUserDto.setMobile(systemUser.getMobile());
            user = systemUserService.findOne(queryUserDto);
            if (user != null) {
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在");
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在");
            }
        }
        // 生成密码盐
        String salt = RandomStringUtils.randomAlphabetic(6);
        // 生成密码
        systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt));
//        systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt));
        systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD).getCode(), salt));
        systemUser.setSalt(salt);
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        systemUser.setType(loginUserInfo.getType());
        systemUser.setStatus(Constants.ZERO);
        systemUser.setCompanyId(loginUserInfo.getCompanyId());
        Integer userId = systemUserService.create(systemUser);
        // 设置部门
        if (systemUser.getDepartmentId() != null) {
@@ -152,17 +174,7 @@
            systemDepartmentUser.setOperaTime(new Date());
            systemDepartmentUserService.create(systemDepartmentUser);
        }
        // 设置岗位
//        if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) {
//            for (Integer positionId : systemUser.getPositionIds()) {
//                SystemPositionUser systemPositionUser = new SystemPositionUser();
//                systemPositionUser.setPositionId(positionId);
//                systemPositionUser.setUserId(userId);
//                systemPositionUser.setOperaUser(systemUser.getCreateUser());
//                systemPositionUser.setOperaTime(new Date());
//                systemPositionUserService.create(systemPositionUser);
//            }
//        }
    }
    @Override
@@ -181,15 +193,30 @@
        }
        // 验证工号
        if (StringUtils.isNotBlank(systemUser.getEmpNo())) {
        if (StringUtils.isNotBlank(systemUser.getMobile())) {
            queryUserDto = new SystemUser();
            queryUserDto.setEmpNo(systemUser.getEmpNo());
            queryUserDto.setEmpNo(systemUser.getMobile());
            queryUserDto.setDeleted(Boolean.FALSE);
            user = systemUserService.findOne(queryUserDto);
            if (user != null && !user.getId().equals(systemUser.getId())) {
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在");
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在");
            }
            user = systemUserService.findById(systemUser.getId());
            if(user == null){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,用户信息不存在!");
            }
            if(!StringUtils.equals(systemUser.getMobile(),user.getMobile())){
                //如果手机号发生变化验证验证码
                if(StringUtils.isBlank(systemUser.getMobile()) || StringUtils.isBlank(systemUser.getCaptcha())){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"短信验证码不能为空!");
                }
                if(!debugModel){
                    SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,systemUser.getMobile(),systemUser.getCaptcha());
                }
            }
        }
        systemUser.setType(null);//不支持修改
        systemUser.setCompanyId(null);//不支持修改
        // 修改用户
        systemUserService.updateById(systemUser);
        // 设置部门
@@ -204,20 +231,7 @@
            systemDepartmentUser.setOperaTime(new Date());
            systemDepartmentUserService.create(systemDepartmentUser);
        }
        // 设置岗位
    /*    SystemPositionUser deletePositionDto = new SystemPositionUser();
        deletePositionDto.setUserId(systemUser.getId());
        systemPositionUserService.delete(deletePositionDto);
        if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) {
            for (Integer positionId : systemUser.getPositionIds()) {
                SystemPositionUser systemPositionUser = new SystemPositionUser();
                systemPositionUser.setPositionId(positionId);
                systemPositionUser.setUserId(systemUser.getId());
                systemPositionUser.setOperaUser(systemUser.getUpdateUser());
                systemPositionUser.setOperaTime(new Date());
                systemPositionUserService.create(systemPositionUser);
            }
        }*/
    }
    @Override