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); 
 | 
            if (StringUtils.isNotBlank(p.getNo())){ 
 | 
                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.setIsMaster(com.getIsNew());//是否主账号 
 | 
        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.setOrigin(userParam.getOrigin()); 
 | 
        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()); 
 | 
            //限制人数 
 | 
            int limitUserNum = Constants.formatIntegerNum(loginUser.getCompany().getOpenUserNum()); 
 | 
            if(limitUserNum > 0){ 
 | 
                //人数限制输入0,表示不限制人数 
 | 
                if(companyUserExtMapper.selectCount(new QueryWrapper<>(cu)) +1 > limitUserNum ){ 
 | 
                    throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户数量超过购买数量,请联系业务经理续购!"); 
 | 
                } 
 | 
            } 
 | 
            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(), "手机号已存在!"); 
 | 
                } 
 | 
            } 
 | 
            //存在工号需要唯一判断 
 | 
            if (StringUtils.isNotBlank(systemUser.getEmpNo())){ 
 | 
                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(), "工号已存在"); 
 | 
                } 
 | 
            }else if (StringUtils.isBlank(systemUser.getEmpNo())) { 
 | 
                u.setCode(systemUser.getEmpNo()); 
 | 
            } 
 | 
            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); 
 | 
        } 
 | 
    } 
 | 
} 
 |