package doumeemes.biz.system.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.iflytek.antelope.other.client.dto.resp.UserDTO; import doumeemes.biz.system.SystemUserBiz; import doumeemes.core.exception.BusinessException; import doumeemes.core.constants.ResponseStatus; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.utils.Constants; import doumeemes.core.utils.DateUtil; import doumeemes.core.utils.Utils; import doumeemes.core.utils.excel.EasyExcelUtil; import doumeemes.dao.business.CompanyPositionMapper; import doumeemes.dao.business.dto.AutoLoginUserDTO; import doumeemes.dao.business.dto.CompanyInitDataDTO; import doumeemes.dao.business.model.*; import doumeemes.dao.ext.CompanyUserExtMapper; import doumeemes.dao.ext.ProceduresExtMapper; import doumeemes.dao.ext.dto.QueryCompanyUserExtDTO; import doumeemes.dao.ext.dto.QueryProceduresExtDTO; import doumeemes.dao.ext.vo.CompanyUserExtListVO; import doumeemes.dao.ext.vo.DepartmentExtListVO; import doumeemes.dao.ext.vo.ProceduresExtListVO; import doumeemes.dao.system.SystemRoleMapper; import doumeemes.dao.system.SystemUserRoleMapper; import doumeemes.dao.system.dto.*; import doumeemes.dao.system.model.*; import doumeemes.service.business.CompanyUserService; import doumeemes.service.ext.BarcodeParamExtService; import doumeemes.service.ext.CompanyPositionExtService; import doumeemes.service.ext.CompanyUserExtService; import doumeemes.service.ext.DepartmentExtService; import doumeemes.service.system.SystemDepartmentUserService; import doumeemes.service.system.SystemPositionUserService; import doumeemes.service.system.SystemUserRoleService; import doumeemes.service.system.SystemUserService; 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.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service public class SystemUserBizImpl implements SystemUserBiz { @Autowired private SystemUserService systemUserService; @Autowired private ProceduresExtMapper proceduresExtMapper; @Autowired private CompanyUserService companyUserService; @Autowired private CompanyPositionMapper companyPositionMapper; @Autowired private SystemRoleMapper systemRoleMapper; @Autowired private SystemUserRoleMapper systemUserRoleMapper; @Autowired private BarcodeParamExtService barcodeParamExtService; @Autowired private SystemUserRoleService systemUserRoleService; @Autowired private SystemDepartmentUserService systemDepartmentUserService; @Autowired private SystemPositionUserService systemPositionUserService; @Autowired private DepartmentExtService departmentExtService; @Autowired private CompanyUserExtMapper companyUserExtMapper; @Override public void deleteById(Integer id) { SystemUser user = systemUserService.findById(id); if (user == null) { return; } LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.equalsInteger(loginUser.getType(),Constants.USERTYPE.COM)){ CompanyUser cu = new CompanyUser(); cu.setUserId(id); cu.setRootDepartId(loginUser.getRootDepartment().getId()); cu.setDeleted(Constants.ZERO); cu = companyUserService.findOne(cu); if(cu== null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,该用户不存在"); } cu.setDeleted(Constants.ONE); cu.setUpdateUser(loginUser.getId()); cu.setUpdateTime(DateUtil.getCurrentDate()); //删除关联关系 companyUserService.updateById(cu); }else { if (user.getFixed()) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "请勿删除" + user.getUsername() + ",因为这是固定用户"); } systemUserService.deleteById(id); } } @Override @Transactional public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } for (Integer id : ids) { this.deleteById(id); } } @Override public void updatePwd(UpdatePwdDto dto) { SystemUser user = systemUserService.findById(dto.getUserId()); if (user.getDeleted()) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "用户不存在或已被删除"); } // 验证原始密码 if (!user.getPassword().equals(Utils.Secure.encryptPassword(dto.getOldPwd(), user.getSalt()))) { throw new BusinessException(ResponseStatus.PWD_INCORRECT.getCode(), "原始密码不正确"); } // 修改密码 SystemUser newUser = new SystemUser(); newUser.setId(dto.getUserId()); newUser.setPassword(Utils.Secure.encryptPassword(dto.getNewPwd(), user.getSalt())); systemUserService.updateById(newUser); } @Override public void resetPwd(ResetSystemUserPwdDTO dto) { // 查询用户 SystemUser systemUser = systemUserService.findById(dto.getId()); if (systemUser == null || systemUser.getDeleted()) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "用户不存在或已被删除"); } // 修改密码 SystemUser updateUserDto = new SystemUser(); updateUserDto.setId(dto.getId()); updateUserDto.setPassword(Utils.Secure.encryptPassword(dto.getPassword(), systemUser.getSalt())); systemUserService.updateById(updateUserDto); } @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void importUsers(MultipartFile file,String pwd) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,您无权限进行该操作!"); } //解析excel List plansList = EasyExcelUtil.importExcel(file, 1, 1, ImportUserDTO.class); if(plansList == null || plansList.size()==0){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "导入数据内容有误!"); } CompanyPosition cp = new CompanyPosition(); cp.setDeleted(Constants.ZERO); cp.setCompanyId(user.getCompany().getId()); //查询全部岗位数据 List cpList = companyPositionMapper.selectList(new QueryWrapper<>(cp)); SystemRole sr = new SystemRole(); sr.setDeleted(false); sr.setCompanyId(user.getCompany().getId()); //查询全部角色数据 List srList = systemRoleMapper.selectList(new QueryWrapper<>(sr)); int index = 3; List list = new ArrayList<>(); for(ImportUserDTO p : plansList){ checkRepeatMobileOrNo(p,list,index); Date date = DateUtil.getCurrentDate(); CompanyUser cu = new CompanyUser(); if(StringUtils.isNotBlank(p.getPosition())){ //如果岗位数据不为空,根据名称查询部门岗位信息 CompanyPosition cpp = getPositionByName(p.getPosition(),cpList); if(cpp== null){ // throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【岗位】不存在,请检查后重试!"); }else{ //岗位数据 cu.setPositionId(cpp.getId()); } } cu.setRootDepartId(user.getRootDepartment().getId()); cu.setPhone(p.getPhone()); cu.setName(p.getName()); cu.setStatus(Constants.ZERO); cu.setDeleted(Constants.ZERO); cu.setCreateUser(user.getId()); cu.setCreateTime(date); cu.setCode(p.getNo()); cu.setPhoneAuthStatus(Constants.ZERO+""); cu.setQrcodeid(barcodeParamExtService.getByType(user.getCompany().getId(),user.getCurComDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); cu.setComDepartId(user.getCurComDepartment().getId()); DepartmentExtListVO depart = departmentExtService.getModelByComDepartAndName(user.getCompany().getId(),user.getCurComDepartment().getId(),p.getDepartment()); if(depart!=null){ cu.setDepartmentId(depart.getId()); } CompanyUser cuu = new CompanyUser(); cuu.setDeleted(Constants.ZERO); cuu.setRootDepartId(user.getRootDepartment().getId()); cuu.setPhone(p.getPhone()); if(companyUserService.findOne(cuu) !=null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,第【"+index+"】行【手机号】员工账号已经存!"); } cuu.setPhone(null); cuu.setCode(p.getNo()); if(companyUserService.findOne(cuu) !=null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,第【"+index+"】行【工号】已经存!"); } SystemUser systemUser = new SystemUser(); systemUser.setUsername(cu.getPhone()); systemUser.setDeleted(Boolean.FALSE); SystemUser su = systemUserService.findOne(systemUser); if(su!=null){ //如果总账号存在了,直接绑定 if(!Constants.equalsInteger(su.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【手机号】非企业用户账号!"); } cu.setUserId(su.getId()); }else{ // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); systemUser.setSalt(salt); systemUser.setType(Constants.USERTYPE.PLAT); systemUser.setEmpNo(cu.getCode()); systemUser.setRealname(p.getName()); systemUser.setDeleted(false); systemUser.setCreateUser(user.getId()); systemUser.setCreateTime(date); systemUser.setMobile(p.getPhone()); systemUser.setType(Constants.USERTYPE.COM); systemUser.setStatus(Constants.ZERO); Integer userId = systemUserService.create(systemUser); cu.setUserId(userId); } if(StringUtils.isNotBlank(p.getRole())){ //如果岗位数据不为空,根据名称查询部门岗位信息 SystemRole srr = getRoleByName(p.getRole(),srList); if(srr== null){ // throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【角色】不存在,请检查后重试!"); }else{ SystemUserRole ur = new SystemUserRole(); ur.setDeleted(false); ur.setCreateUser(user.getId()); ur.setRoleId(srr.getId()); ur.setUserId(cu.getUserId()); ur.setStatus(Constants.ZERO); ur.setInvalidTime(DateUtil.getCurrentDate()); ur.setCreateTime(ur.getInvalidTime()); ur.setRemark("系统导入"); systemUserRoleMapper.insert(ur); } } companyUserService.create(cu); list.add(p); index++; } } @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void importLingYangUser(AutoLoginUserDTO userParam, String pwd, Company com) { //解析excel if(userParam == null ){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "用户参数有误!"); } QueryCompanyUserExtDTO qUser = new QueryCompanyUserExtDTO(); qUser.setDeleted(Constants.ZERO); qUser.setCompanyId(com.getId()); // qUser.setRootDepartId(com.getRootDepartment().getId()); if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.lingyang){ qUser.setLingyangUserid(userParam.getUserId()); }else if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.edgp){ qUser.setEdgpUserId(userParam.getUserId()); } //查询用户数据 CompanyUserExtListVO model = companyUserExtMapper.selectModel(qUser); if(model != null){ //如果没有绑定过 注册管理员账号 com.setUserModel(model); return; } QueryCompanyUserExtDTO cuu = new QueryCompanyUserExtDTO(); cuu.setDeleted(Constants.ZERO); cuu.setRootDepartId(com.getRootDepartment().getId()); cuu.setPhone(userParam.getPhone()); CompanyUserExtListVO phoneUser = companyUserExtMapper.selectModel(cuu); if(phoneUser!=null){ com.setUserModel(phoneUser); CompanyUser cu = new CompanyUser(); cu.setId(phoneUser.getId()); cu.setLingyangUserid(userParam.getUserId()); cu.setUpdateTime(new Date()); //绑定羚羊平台数据 companyUserExtMapper.updateById(cu); return; } //如果用户不存在,新增企业用户 userParam.setName(StringUtils.defaultString(userParam.getName(),userParam.getPhone())); if(StringUtils.isBlank(userParam.getPhone())){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起, 【手机号】不能为空!"); } Date date = DateUtil.getCurrentDate(); CompanyUser cu = new CompanyUser(); cu.setRootDepartId(com.getRootDepartment().getId()); cu.setPhone(userParam.getPhone()); cu.setName(userParam.getName()); cu.setStatus(Constants.ZERO); cu.setDeleted(Constants.ZERO); cu.setCreateTime(date); cu.setCode("NO."+userParam.getPhone()); cu.setPhoneAuthStatus(Constants.ZERO+""); cu.setQrcodeid(barcodeParamExtService.getByType(com.getId(),com.getRootDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); cu.setComDepartId(com.getRootDepartment().getId()); cu.setDepartmentId(com.getRootDepartment().getId()); if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.lingyang){ cu.setLingyangUserid(userParam.getUserId()); }else if(userParam.getOrigin() == Constants.COMPANY_ORIGIN.edgp){ cu.setEdgpUserId(userParam.getUserId()); } SystemUser systemUser = new SystemUser(); systemUser.setUsername(cu.getPhone()); systemUser.setDeleted(Boolean.FALSE); SystemUser su = systemUserService.findOne(systemUser); if(su!=null){ //如果总账号存在了,直接绑定 if(!Constants.equalsInteger(su.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,【手机号】已存在,非企业用户账号!"); } cu.setUserId(su.getId()); }else{ // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); systemUser.setSalt(salt); systemUser.setEmpNo(cu.getCode()); systemUser.setRealname(userParam.getName()); systemUser.setDeleted(false); systemUser.setCreateTime(date); systemUser.setMobile(userParam.getPhone()); systemUser.setType(Constants.USERTYPE.COM); systemUser.setStatus(Constants.ZERO); Integer userId = systemUserService.create(systemUser); cu.setUserId(userId); } companyUserService.create(cu); if(StringUtils.equals(userParam.getManager(),Constants.ONE+"")){ //如果是管理员角色,绑定默认角色 SystemRole sr = new SystemRole(); sr.setDeleted(false); sr.setCompanyId(com.getId()); sr.setType(Constants.ROLETYPE.com); //查询全部角色数据 List srList = systemRoleMapper.selectList(new QueryWrapper<>(sr)); if(srList!=null && srList.size()>0){ List urList = new ArrayList<>(); for(SystemRole tr :srList){ SystemUserRole userRole = new SystemUserRole(); userRole.setUserId(cu.getUserId()); userRole.setDeleted(false); userRole.setRoleId(tr.getId()); userRole.setStatus(Constants.ZERO); userRole.setInvalidTime(DateUtil.getCurrentDate()); userRole.setCreateTime(userRole.getInvalidTime()); userRole.setRemark("羚羊企业生成自动导入"); urList.add(userRole); // systemUserRoleMapper.insert(userRole); } systemRoleMapper.insertRoleUserBatch(urList); } } } @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void importPlat(CompanyInitDataDTO userParam, String pwd, Company com) { //解析excel if(userParam == null ){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "用户参数有误!"); } QueryCompanyUserExtDTO cuu = new QueryCompanyUserExtDTO(); cuu.setDeleted(Constants.ZERO); cuu.setRootDepartId(com.getRootDepartment().getId()); cuu.setPhone(userParam.getPhone()); CompanyUserExtListVO phoneUser = companyUserExtMapper.selectModel(cuu); if(phoneUser!=null){ com.setUserModel(phoneUser); return; } //如果用户不存在,新增企业用户 userParam.setName(StringUtils.defaultString(userParam.getName(),userParam.getPhone())); if(StringUtils.isBlank(userParam.getPhone())){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起, 【手机号】不能为空!"); } Date date = DateUtil.getCurrentDate(); CompanyUser cu = new CompanyUser(); cu.setRootDepartId(com.getRootDepartment().getId()); cu.setPhone(userParam.getPhone()); cu.setName(userParam.getName()); cu.setStatus(Constants.ZERO); cu.setDeleted(Constants.ZERO); cu.setCreateTime(date); cu.setCode("NO."+userParam.getPhone()); cu.setPhoneAuthStatus(Constants.ZERO+""); cu.setQrcodeid(barcodeParamExtService.getByType(com.getId(),com.getRootDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); cu.setComDepartId(com.getRootDepartment().getId()); cu.setDepartmentId(com.getRootDepartment().getId()); //设置为 主账号 cu.setIsMaster(Constants.ONE); SystemUser systemUser = new SystemUser(); systemUser.setUsername(cu.getPhone()); systemUser.setDeleted(Boolean.FALSE); SystemUser su = systemUserService.findOne(systemUser); if(su!=null){ //如果总账号存在了,直接绑定 if(!Constants.equalsInteger(su.getType(),Constants.USERTYPE.COM)){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,【手机号】已存在,非企业用户账号!"); } cu.setUserId(su.getId()); }else{ // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(pwd, salt)); systemUser.setSalt(salt); systemUser.setEmpNo(cu.getCode()); systemUser.setRealname(userParam.getName()); systemUser.setDeleted(false); systemUser.setCreateTime(date); systemUser.setMobile(userParam.getPhone()); systemUser.setType(Constants.USERTYPE.COM); systemUser.setStatus(Constants.ZERO); Integer userId = systemUserService.create(systemUser); cu.setUserId(userId); } companyUserService.create(cu); //如果是管理员角色,绑定默认角色 SystemRole sr = new SystemRole(); sr.setDeleted(false); sr.setCompanyId(com.getId()); sr.setType(Constants.ROLETYPE.com); //查询全部角色数据 List srList = systemRoleMapper.selectList(new QueryWrapper<>(sr)); if(srList!=null && srList.size()>0){ List urList = new ArrayList<>(); for(SystemRole tr :srList){ SystemUserRole userRole = new SystemUserRole(); userRole.setUserId(cu.getUserId()); userRole.setDeleted(false); userRole.setRoleId(tr.getId()); userRole.setStatus(Constants.ZERO); userRole.setInvalidTime(DateUtil.getCurrentDate()); userRole.setCreateTime(userRole.getInvalidTime()); userRole.setRemark("羚羊企业生成自动导入"); urList.add(userRole); // systemUserRoleMapper.insert(userRole); } systemRoleMapper.insertRoleUserBatch(urList); } } private void checkRepeatMobileOrNo(ImportUserDTO p, List list, int index ) { if(StringUtils.isBlank(p.getName())|| StringUtils.isBlank(p.getPhone())){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【姓名】和【手机号】不能为空!"); } if(!p.getPhone().startsWith("1") || p.getPhone().length()!=11){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【手机号】不合法!"); } for(ImportUserDTO t : list){ if(StringUtils.equals(p.getPhone(),t.getPhone())){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【手机号】在表格中重复出现,请检查后重试!"); } if(StringUtils.isNotBlank(p.getNo()) && StringUtils.equals(p.getNo(),t.getNo())){ throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,第【"+index+"】行【工号】在表格中重复出现,请检查后重试!"); } } } private CompanyPosition getPositionByName(String position, List cpList) { if(cpList!=null){ for(CompanyPosition cp : cpList){ if(StringUtils.equals(cp.getName(),position)){ return cp; } } } return null; } private SystemRole getRoleByName(String position, List cpList) { if(cpList!=null){ for(SystemRole cp : cpList){ if(StringUtils.equals(cp.getName(),position)){ return cp; } } } return null; } @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) public void create(CreateSystemUserDTO systemUser) { // 验证用户名 if(StringUtils.isBlank(systemUser.getMobile())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "手机号不能为空!"); } systemUser.setUsername(systemUser.getMobile()); SystemUser queryUserDto = new SystemUser(); queryUserDto.setUsername(systemUser.getUsername()); queryUserDto.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(queryUserDto); Integer userId = null; LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.equalsInteger(loginUser.getType(),Constants.USERTYPE.COM)){ //如果是企业用户 if (systemUser.getDepartmentId() == null && departmentExtService.getModelById(loginUser.getCompany().getId(),systemUser.getDepartmentId()) == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "请选择正确的部门"); } //添加企业员工关联关系 CompanyUser cu = new CompanyUser(); cu.setDeleted(Constants.ZERO); cu.setRootDepartId(loginUser.getRootDepartment().getId()); if(user ==null){ //如果用户账号不存在,新增用户 // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt)); systemUser.setSalt(salt); systemUser.setType(Constants.USERTYPE.COM); // 创建用户记录 userId = systemUserService.create(systemUser); }else{ userId = user.getId(); CompanyUser cuu = new CompanyUser(); cuu.setDeleted(Constants.ZERO); cuu.setRootDepartId(loginUser.getRootDepartment().getId()); cuu.setUserId(userId); if(companyUserService.findOne(cuu) !=null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号已存在!"); } } cu.setCode(systemUser.getEmpNo()); if(companyUserService.findOne(cu) !=null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); } cu.setUserId(userId); cu.setComDepartId(loginUser.getComDepartment().getId()); cu.setCreateUser(loginUser.getId()); cu.setCreateTime(DateUtil.getCurrentDate()); cu.setEmailAuthStatus(Constants.ZERO); cu.setName(systemUser.getRealname()); cu.setPhone(systemUser.getMobile()); cu.setPhoneAuthStatus(Constants.ZERO+""); cu.setDepartmentId(systemUser.getDepartmentId()); cu.setQrcodeid(barcodeParamExtService.getByType(loginUser.getCompany().getId(),loginUser.getCurComDepartment().getId(),Constants.BARCODEPARAM_TYPE.user)+""); if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { cu.setPositionId(systemUser.getPositionIds().get(0)); } if(systemUser.getProcedureIds()!=null && systemUser.getProcedureIds().size()>0){ QueryProceduresExtDTO p = new QueryProceduresExtDTO(); p.setIds(systemUser.getProcedureIds()); p.setRootDepartId(loginUser.getRootDepartment().getId()); p.setDeleted(Constants.ZERO); //查询全部工序 List pList = proceduresExtMapper.selectList(p); if(pList!=null){ String pId = ""; for(ProceduresExtListVO tp : pList){ if(StringUtils.isNotBlank(pId)){ pId+=","; } pId+=tp.getId(); } cu.setProcedureIds(pId); } } companyUserService.create(cu); }else{ //如果是平台用户 if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "用户名已存在"); } // 验证工号 if (StringUtils.isNotBlank(systemUser.getEmpNo())) { queryUserDto = new SystemUser(); queryUserDto.setDeleted(Boolean.FALSE); queryUserDto.setEmpNo(systemUser.getEmpNo()); user = systemUserService.findOne(queryUserDto); if (user != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); } } // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 systemUser.setPassword(Utils.Secure.encryptPassword(systemUser.getPassword(), salt)); systemUser.setSalt(salt); systemUser.setType(Constants.USERTYPE.PLAT); // 创建用户记录 userId = systemUserService.create(systemUser); // 设置岗位 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); } } // 设置部门 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); } } } @Override public void updateById(CreateSystemUserDTO systemUser) { // 验证用户名 /* SystemUser queryUserDto = new SystemUser(); queryUserDto.setUsername(systemUser.getUsername()); queryUserDto.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(queryUserDto); if (user != null && !user.getId().equals(systemUser.getId())) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "用户名已存在"); }*/ systemUser.setUsername(null); LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.equalsInteger(loginUser.getType(),Constants.USERTYPE.COM)){ //如果是企业用户 CompanyUser u = new CompanyUser(); u.setUserId(systemUser.getId()); u.setRootDepartId(loginUser.getRootDepartment().getId()); u.setDeleted(Constants.ZERO); //查询企业用户数据 CompanyUser cu = companyUserService.findOne(u); if(systemUser.getStatus()!=null){ u.setStatus(systemUser.getStatus()); } //不修改状态 systemUser.setStatus(null); if(cu == null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "企业用户信息不存在"); } if(StringUtils.isNotBlank(systemUser.getEmpNo())){ //如果修改工号,坚持是否重复 u.setCode(systemUser.getEmpNo()); CompanyUser codeUser = companyUserService.findOne(u); if (codeUser != null && !codeUser.getId().equals(cu.getId())) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); } } u.setId(cu.getId()); u.setName(systemUser.getRealname()); u.setPhone(systemUser.getUsername()); u.setUpdateTime(DateUtil.getCurrentDate()); u.setUpdateUser(loginUser.getId()); u.setDepartmentId(systemUser.getDepartmentId()); if (systemUser.getPositionIds() != null && systemUser.getPositionIds().size() > 0) { u.setPositionId(systemUser.getPositionIds().get(0)); } if (systemUser.getDepartmentId() != null) { DepartmentExtListVO de = departmentExtService.getModelById(loginUser.getCompany().getId(),systemUser.getDepartmentId()); if(de == null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "请选择正确的部门!"); } Integer cdId = departmentExtService.getComDepartId(de); u.setComDepartId(cdId); } if(systemUser.getProcedureIds()!=null && systemUser.getProcedureIds().size()>0){ QueryProceduresExtDTO p = new QueryProceduresExtDTO(); p.setIds(systemUser.getProcedureIds()); p.setRootDepartId(loginUser.getRootDepartment().getId()); p.setDeleted(Constants.ZERO); //查询全部工序 List pList = proceduresExtMapper.selectList(p); if(pList!=null){ String pId = ""; for(ProceduresExtListVO tp : pList){ if(StringUtils.isNotBlank(pId)){ pId += ","; } pId += tp.getId(); } u.setProcedureIds(pId); } } //更新关联数据 companyUserService.updateById(u); }else{ //如果是平台用户信息 // 验证工号 if (StringUtils.isNotBlank(systemUser.getEmpNo())) { SystemUser queryUserDto = new SystemUser(); queryUserDto.setEmpNo(systemUser.getEmpNo()); queryUserDto.setDeleted(Boolean.FALSE); SystemUser user = systemUserService.findOne(queryUserDto); if (user != null && !user.getId().equals(systemUser.getId())) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "工号已存在"); } } // 设置岗位 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); } } } // 修改用户 systemUserService.updateById(systemUser); // 设置部门 SystemDepartmentUser deleteDepartmentDto = new SystemDepartmentUser(); deleteDepartmentDto.setUserId(systemUser.getId()); systemDepartmentUserService.delete(deleteDepartmentDto); if (systemUser.getDepartmentId() != null) { SystemDepartmentUser systemDepartmentUser = new SystemDepartmentUser(); systemDepartmentUser.setDepartmentId(systemUser.getDepartmentId()); systemDepartmentUser.setUserId(systemUser.getId()); systemDepartmentUser.setOperaUser(systemUser.getUpdateUser()); systemDepartmentUser.setOperaTime(new Date()); systemDepartmentUserService.create(systemDepartmentUser); } } /** * 更换企业用户组织信息 * @param user */ @Override public void updateDepart(UpdateUserDepartDTO user){ LoginUserInfo loginUser = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); CompanyUser cu = new CompanyUser(); cu.setDeleted(Constants.ZERO); cu.setUserId(user.getUserId()); cu.setRootDepartId(loginUser.getRootDepartment().getId()); if(companyUserService.findOne(cu) == null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "员工信息不存在"); } DepartmentExtListVO depart = departmentExtService.getModelById(loginUser.getCompany().getId(),user.getDepartmentId()); if(depart ==null){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "部门信息不存在"); } cu.setDepartmentId(user.getDepartmentId()); cu.setComDepartId(departmentExtService.getComDepartId(depart)); companyUserService.updateById(cu); } @Override @Transactional public void createUserRole(CreateUserRoleDTO dto) { // 删除关联角色 LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); SystemUserRole deleteDto = new SystemUserRole(); deleteDto.setUserId(dto.getUserId()); if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ deleteDto.setCompanyId(user.getCompany().getId()); } systemUserRoleService.delete(deleteDto); // 新增新的角色 for (Integer roleId : dto.getRoleIds()) { SystemUserRole newUserRole = new SystemUserRole(); newUserRole.setUserId(dto.getUserId()); newUserRole.setRoleId(roleId); systemUserRoleService.create(newUserRole); } } }