jiangping
2024-06-28 92786c58666e6dcb279b29e80fd744067525bc5e
server/service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -177,6 +177,80 @@
        }
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void createCompany(CreateSystemUserDTO systemUser) {
        // 验证用户名
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(!Constants.equalsInteger(loginUserInfo.getType(),Constants.UserType.SYSTEM.getKey())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED);
        }
//        systemUser.setUsername(systemUser.getMobile());
        if(StringUtils.isBlank(systemUser.getMobile()) || StringUtils.isBlank(systemUser.getCaptcha())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if( systemUser.getCompanyId() == null){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String  phoneAtuh = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.COMPANY_PHONE_AUTH).getCode();
        if(!debugModel && !StringUtils.equals(phoneAtuh,Constants.ONE+"")){
            SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,systemUser.getMobile(),systemUser.getCaptcha());
        }
        Company company = companyService.findById(systemUser.getCompanyId());
        if(company == null ||Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,当前企业信息不正确!");
        }
        SystemUser queryUserDto = new SystemUser();
        queryUserDto.setUsername(systemUser.getUsername());
        queryUserDto.setDeleted(Boolean.FALSE);
//        queryUserDto.setType(Constants.ZERO);
        SystemUser user = systemUserService.findOne(queryUserDto);
        if (user != null) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在");
        }
        // 验证手机号
       if (StringUtils.isNotBlank(systemUser.getMobile())) {
            queryUserDto = new SystemUser();
            queryUserDto.setDeleted(Boolean.FALSE);
            queryUserDto.setMobile(systemUser.getMobile());
            user = systemUserService.findOne(queryUserDto);
            if (user != null) {
                throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在");
            }
        }
        // 生成密码盐
        String salt = RandomStringUtils.randomAlphabetic(6);
        // 生成密码
        systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD).getCode(), salt));
        systemUser.setSalt(salt);
        systemUser.setType(Constants.equalsInteger(company.getType(),Constants.ONE)?Constants.UserType.ZHUBO.getKey():Constants.UserType.COMPANY.getKey());
        systemUser.setType(loginUserInfo.getType());
        systemUser.setStatus(Constants.ZERO);
        Integer userId = systemUserService.create(systemUser);
        // 设置部门
        if (systemUser.getDepartmentId() != null) {
            SystemDepartmentUser systemDepartmentUser = new SystemDepartmentUser();
            systemDepartmentUser.setDepartmentId(systemUser.getDepartmentId());
            systemDepartmentUser.setUserId(userId);
            systemDepartmentUser.setOperaUser(systemUser.getCreateUser());
            systemDepartmentUser.setOperaTime(new Date());
            systemDepartmentUserService.create(systemDepartmentUser);
        }else {
            SystemDepartmentUser systemDepartmentUser = new SystemDepartmentUser();
            QueryWrapper<SystemDepartment> wrapper = new QueryWrapper<>();
            wrapper.lambda().isNull(SystemDepartment::getParentId).last("limit 1");
            SystemDepartment systemDepartment = systemDepartmentService.findOne(wrapper);
            systemDepartmentUser.setDepartmentId(systemDepartment.getId());
            systemDepartmentUser.setUserId(userId);
            systemDepartmentUser.setOperaUser(systemUser.getCreateUser());
            systemDepartmentUser.setOperaTime(new Date());
            systemDepartmentUserService.create(systemDepartmentUser);
        }
    }
    @Override
    public void updateById(CreateSystemUserDTO systemUser) {
@@ -248,76 +322,6 @@
            SystemUserRole newUserRole = new SystemUserRole();
            newUserRole.setUserId(dto.getUserId());
            newUserRole.setRoleId(roleId);
            systemUserRoleService.create(newUserRole);
        }
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void companyCreateUser(CreateCompanyUserDTO createCompanyUserDTO) {
        if(Objects.isNull(createCompanyUserDTO)
                ||StringUtils.isBlank(createCompanyUserDTO.getUserName())
                ||StringUtils.isBlank(createCompanyUserDTO.getRealName())
                ||StringUtils.isBlank(createCompanyUserDTO.getPassword()) ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        SystemUser queryUserDto = new SystemUser();
        queryUserDto.setUsername(createCompanyUserDTO.getUserName());
        queryUserDto.setDeleted(Boolean.FALSE);
        SystemUser user = systemUserService.findOne(queryUserDto);
        if (user != null) {
            throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "登录账号已存在");
        }
        if(createCompanyUserDTO.getType().equals(Constants.UserType.ZHUBO.getKey())){
            Company company = companyService.findById(loginUserInfo.getCompanyId());
            SystemUser zbUserNum = new SystemUser();
            zbUserNum.setCompanyId(loginUserInfo.getCompanyId());
            zbUserNum.setDeleted(Boolean.FALSE);
            zbUserNum.setType(Constants.UserType.ZHUBO.getKey());
        }
        SystemUser systemUser  = new SystemUser();
        BeanUtils.copyProperties(createCompanyUserDTO,systemUser);
        systemUser.setCompanyId(loginUserInfo.getCompanyId());
        systemUser.setRealname(createCompanyUserDTO.getRealName());
        systemUser.setUsername(createCompanyUserDTO.getUserName());
        // 生成密码盐
        String salt = RandomStringUtils.randomAlphabetic(6);
        // 生成密码
        systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt));
        systemUser.setSalt(salt);
        Integer userId = systemUserService.create(systemUser);
        if(systemUser.getType().equals(Constants.UserType.COMPANY.getKey())){
            SystemUserRole newUserRole = new SystemUserRole();
            newUserRole.setUserId(userId);
            newUserRole.setRoleId(createCompanyUserDTO.getRoleId());
            systemUserRoleService.create(newUserRole);
        }
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void companyUpdUser(CreateCompanyUserDTO updCreateCompanyUserDTO) {
        if(Objects.isNull(updCreateCompanyUserDTO)
                ||Objects.isNull(updCreateCompanyUserDTO.getId())
                ||StringUtils.isBlank(updCreateCompanyUserDTO.getRealName())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        SystemUser systemUser  = systemUserService.findById(updCreateCompanyUserDTO.getId());
        if(Objects.isNull(systemUser)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        systemUser.setRealname(updCreateCompanyUserDTO.getRealName());
        systemUser.setMobile(updCreateCompanyUserDTO.getMobile());
        systemUserService.updateById(systemUser);
        if(systemUser.getType().equals(Constants.UserType.COMPANY.getKey())){
            // 删除关联角色
            SystemUserRole deleteDto = new SystemUserRole();
            deleteDto.setUserId(systemUser.getId());
            systemUserRoleService.delete(deleteDto);
            SystemUserRole newUserRole = new SystemUserRole();
            newUserRole.setUserId(systemUser.getId());
            newUserRole.setRoleId(updCreateCompanyUserDTO.getRoleId());
            systemUserRoleService.create(newUserRole);
        }
    }