|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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) { | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 验证工号 | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | // 设置部门 | 
|---|
|  |  |  | 
|---|
|  |  |  | 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 | 
|---|