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<Integer> 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<ImportUserDTO> 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<CompanyPosition> cpList = companyPositionMapper.selectList(new QueryWrapper<>(cp));
|
|
SystemRole sr = new SystemRole();
|
sr.setDeleted(false);
|
sr.setCompanyId(user.getCompany().getId());
|
//查询全部角色数据
|
List<SystemRole> srList = systemRoleMapper.selectList(new QueryWrapper<>(sr));
|
|
int index = 3;
|
List<ImportUserDTO> 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<SystemRole> srList = systemRoleMapper.selectList(new QueryWrapper<>(sr));
|
if(srList!=null && srList.size()>0){
|
List<SystemUserRole> 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<SystemRole> srList = systemRoleMapper.selectList(new QueryWrapper<>(sr));
|
if(srList!=null && srList.size()>0){
|
List<SystemUserRole> 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<ImportUserDTO> 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<CompanyPosition> cpList) {
|
if(cpList!=null){
|
for(CompanyPosition cp : cpList){
|
if(StringUtils.equals(cp.getName(),position)){
|
return cp;
|
}
|
}
|
}
|
return null;
|
}
|
|
private SystemRole getRoleByName(String position, List<SystemRole> 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<ProceduresExtListVO> 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<ProceduresExtListVO> 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);
|
}
|
}
|
}
|