package com.doumee.service.system.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.annotation.excel.ExcelImporter; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Constants.UserType; import com.doumee.core.utils.Utils; import com.doumee.dao.business.AreasMapper; import com.doumee.dao.business.CompanyMapper; import com.doumee.dao.business.model.Areas; import com.doumee.dao.business.model.Company; import com.doumee.dao.business.model.Multifile; import com.doumee.dao.business.model.QuestionnaireProblem; import com.doumee.dao.system.dto.CompanyUserDTO; import com.doumee.dao.system.dto.CreateExportSystemUserDTO; import com.doumee.dao.system.dto.CreateSystemUserDTO; import com.doumee.dao.system.model.SystemDictData; import com.doumee.dao.system.model.SystemUserRole; import com.doumee.dao.system.vo.SystemUserDetailVO; import com.doumee.service.business.AreasService; import com.doumee.service.business.CompanyService; import com.doumee.service.business.MultifileService; import com.doumee.service.system.*; import com.github.pagehelper.IPage; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.dao.system.SystemUserMapper; import com.doumee.dao.system.dto.QuerySystemUserDTO; import com.doumee.dao.system.model.SystemUser; import com.doumee.dao.system.vo.SystemUserListVO; import com.doumee.dao.system.vo.SystemDepartmentListVO; import com.doumee.service.aware.DepartmentDataPermissionAware; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.catalina.User; import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.multipart.MultipartFile; import javax.validation.Valid; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors; /** * 系统用户Service实现 * @author Eva.Caesar Liu * @date 2023/02/14 11:14 */ @Service @Slf4j public class SystemUserServiceImpl implements SystemUserService { @Autowired private SystemUserMapper systemUserMapper; @Autowired private SystemRoleService systemRoleService; @Autowired private SystemUserRoleService systemUserRoleService; @Autowired private SystemDepartmentService systemDepartmentService; @Autowired private SystemPositionService systemPositionService; @Autowired private DepartmentDataPermissionAware departmentDataPermissionAware; @Autowired private AreasMapper areasMapper; @Autowired private CompanyMapper companyMapper; @Autowired private AreasService areasService; @Lazy @Autowired CompanyService companyService; @Lazy @Autowired SystemDictDataBiz systemDictDataBiz; @Autowired private MultifileService multifileService; @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public Integer create(SystemUser systemUser) { SystemUser user = new SystemUser(); user.setUsername(systemUser.getUsername()); SystemUser exists = systemUserMapper.selectOne(new QueryWrapper<>(user).last("limit 1")); if (Objects.nonNull(exists)){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"登录账号已存在"); } systemUserMapper.insert(systemUser); return systemUser.getId(); } @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @Override public void createSystemUSer(SystemUser systemUser) { LoginUserInfo principals = (LoginUserInfo) SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal(); SystemUser query = new SystemUser(); query.setUsername(systemUser.getUsername()); SystemUser one1 = findOne(query); if (Objects.nonNull(one1)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"登录账号已存在"); } if ((StringUtils.isBlank(systemUser.getUsername()))){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } // 市局校验 if ((Constants.equalsInteger(UserType.SJ.getKey(),systemUser.getType()) || (Constants.equalsInteger(UserType.EXPERT.getKey(),systemUser.getType()))) && Objects.isNull(systemUser.getCityId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //区县校验 if ((Constants.equalsInteger(UserType.AREA.getKey(),systemUser.getType())) && (Objects.isNull(systemUser.getAreaId()))){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //父级账号 if(Objects.nonNull(systemUser.getParentId())){ SystemUser user = systemUserMapper.selectById(systemUser.getParentId()); systemUser.setCityId(Optional.ofNullable(user).map(s->s.getCityId()).orElse(null)); } // SystemDictData systemDictData = new SystemDictData(); // systemDictData.setLabel("DEFAULT_PASSWORD"); SystemDictData one = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD); LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); Date now = new Date(); SystemUser insertUser = new SystemUser(); insertUser.setUsername(systemUser.getUsername()); insertUser.setRealname(StringUtils.isNotEmpty(systemUser.getRealname()) ? systemUser.getRealname() : systemUser.getUsername()); insertUser.setMobile(systemUser.getMobile()); insertUser.setCreateTime(now); insertUser.setUpdateTime(now); insertUser.setCreateUser(principal.getId()); insertUser.setUpdateUser(principal.getId()); insertUser.setDeleted(Boolean.FALSE); insertUser.setAreaId(systemUser.getAreaId()); insertUser.setCityId(systemUser.getCityId()); insertUser.setType(systemUser.getType()); insertUser.setStatus(Constants.ZERO); Integer companyId = null; if (Constants.UserType.getHasCompanyType().contains(systemUser.getType())){ Company insertCompany = new Company(); insertCompany.setOrigin(Constants.ONE); insertCompany.setName(systemUser.getCompanyName()); insertCompany.setCreditCode(systemUser.getCreditCode()); insertCompany.setLegalPerson(systemUser.getLegalPerson()); insertCompany.setLinkName(systemUser.getLinkName()); insertCompany.setLinkPhone(systemUser.getLinkPhone()); insertCompany.setCityId(systemUser.getCityId()); insertCompany.setAreaId(systemUser.getAreaId()); insertCompany.setCreator(principal.getId()); insertCompany.setCreateDate(now); insertCompany.setEditor(principal.getId()); insertCompany.setEditDate(now); insertCompany.setLinkPhone(insertUser.getMobile()); insertCompany.setIsdeleted(Constants.ZERO); systemUser.convertCompanyType(); insertCompany.setType(systemUser.getCompanyType()); insertUser.setCompanyType(systemUser.getCompanyType()); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda() .eq(Company::getType,insertCompany.getType()) .and(s->{s.eq(Company::getCreditCode,insertCompany.getCreditCode()) .or() .eq(Company::getName,insertCompany.getName());}); Integer count = companyMapper.selectCount(wrapper); if (count > Constants.ZERO){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业名称或社会信用代码有重复"); } companyId = companyService.create(insertCompany); } if ((Constants.equalsInteger(UserType.SJ.getKey(),principals.getType()) || Constants.equalsInteger(UserType.SYSTEM.getKey(),principals.getType()) ) || Constants.equalsInteger(UserType.AREA.getKey(),systemUser.getType())){ insertUser.setParentId(systemUser.getParentId()); } // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 insertUser.setPassword(Utils.Secure.encryptPassword(one.getCode(), salt)); insertUser.setSalt(salt); insertUser.setCompanyId(companyId); create(insertUser); //内置不同的角色 dealSystemRoleRel(insertUser); } private void dealSystemRoleRel(SystemUser insertUser) { Integer roleId = null; try { if(Constants.equalsInteger(insertUser.getType(), UserType.COMPANY.getKey())){ //企业 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.COMPANY_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.SO_ADMIN.getKey())){ //服务结构管理员 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SO_ADMIN_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.SO_CHILD.getKey())){ //服务结构子账号 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SO_CHILD_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.SD_ADMIN.getKey())){ //综合服务单位管理员 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SD_ADMIN_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.SD_CHILD.getKey())){ //综合服务单位子账号 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SD_CHILD_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.EXPERT.getKey())){ //专家 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.EXPERT_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.SJ.getKey())){ //市局 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CITY_ROLE).getCode()); }else if(Constants.equalsInteger(insertUser.getType(), UserType.SJ_CHILD.getKey())){ //市局子账号 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CITY_CHILD_ROLE).getCode()); } else if(Constants.equalsInteger(insertUser.getType(), UserType.AREA.getKey())){ //县区 roleId = Integer.parseInt(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.AREA_ROLE).getCode()); } }catch (Exception e){ } if(roleId!=null){ SystemUserRole ur = new SystemUserRole(); ur.setCreateUser(insertUser.getCreateUser()); ur.setCreateTime(insertUser.getCreateTime()); ur.setDeleted(false); ur.setRoleId(roleId); ur.setUserId(insertUser.getId()); systemUserRoleService.create(ur); } } @Override public void deleteById(Integer id) { SystemUser systemUser = new SystemUser(); systemUser.setId(id); systemUser.setDeleted(Boolean.TRUE); this.updateById(systemUser); } @Override public void changeStatusById(Integer id, Integer value) { if (!Constants.Status.getValues().contains(value) || Objects.isNull(id)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "修改状态参数错误"); } SystemUser systemUser = new SystemUser(); systemUser.setId(id); systemUser.setStatus(value); systemUserMapper.updateById(systemUser); } @Override @Transactional public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) return; for (Integer id : ids) { this.deleteById(id); } } @Override public void updateById(SystemUser systemUser) { systemUserMapper.updateById(systemUser); } @Override public void updateSystemUser(SystemUser systemUser) { // 企业已拦截抛出异常 SystemUser user = findById(systemUser.getId()); if(user == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } // checkSystemUser(systemUser); if (Constants.UserType.getHasCompanyType().contains(systemUser.getType())){ systemUser.convertCompanyType(); Integer companyType = systemUser.getCompanyType(); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.lambda().eq(Company::getType,companyType) .eq(Company::getName,systemUser.getCompanyName()); Company exit = companyMapper.selectOne(wrapper); if (Objects.nonNull(exit) && !Constants.equalsInteger(exit.getId(),user.getCompanyId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业名称重复"); } wrapper.clear(); wrapper.lambda().eq(Company::getType,companyType) .eq(Company::getCreditCode,systemUser.getCreditCode()); exit = companyMapper.selectOne(wrapper); if (Objects.nonNull(exit) && !Constants.equalsInteger(exit.getId(),user.getCompanyId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"统一社会信用代码重复"); } Integer companyId = user.getCompanyId(); Company company = new Company(); company.setId(companyId); company.setCityId(systemUser.getCityId()); company.setAreaId(systemUser.getAreaId()); company.setLegalPerson(systemUser.getLegalPerson()); company.setLinkPhone(systemUser.getMobile()); company.setLinkName(systemUser.getLinkName()); company.setName(systemUser.getCompanyName()); company.setCreditCode(systemUser.getCreditCode()); companyMapper.updateById(company); } SystemUser user1 = new SystemUser(); user1.setUsername(systemUser.getUsername()); SystemUser one = findOne(user1); if ( Objects.nonNull(one) && !one.getId().equals(systemUser.getId())){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"登录账号已存在"); } SystemUser updateUser = new SystemUser(); updateUser.setId(systemUser.getId()); updateUser.setUsername(systemUser.getUsername()); updateUser.setRealname(systemUser.getRealname()); updateUser.setMobile(systemUser.getMobile()); updateUser.setCityId(systemUser.getCityId()); updateUser.setAreaId(systemUser.getAreaId()); updateUser.setStatus(systemUser.getStatus()); updateUser.setParentId(systemUser.getParentId()); updateById(updateUser); } @Override @Transactional public void updateByIdInBatch(List systemUsers) { if (CollectionUtils.isEmpty(systemUsers)) return; for (SystemUser systemUser: systemUsers) { this.updateById(systemUser); } } @Override public SystemUser findById(Integer id) { return systemUserMapper.selectById(id); } @Override public SystemUser findOne(SystemUser systemUser) { Wrapper wrapper = new QueryWrapper<>(systemUser); return systemUserMapper.selectOne(wrapper); } @Override public List findList(SystemUser systemUser) { Wrapper wrapper = new QueryWrapper<>(systemUser); return systemUserMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { // 根部门条件处理(需查询根部门下所有部门的用户) /* if (pageWrap.getModel().getRootDeptId() != null) { pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(pageWrap.getModel().getRootDeptId())); } else { pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(null)); }*/ // 执行查询 pageWrap.getModel().setTypeList(new ArrayList<>()); pageWrap.getModel().getTypeList().add(UserType.SYSTEM.getKey()); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); // initUserRole(user,pageWrap); PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); List userList = systemUserMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause()); for (SystemUserListVO u : userList) { // 查询用户角色列表 u.setRoles(systemRoleService.findByUserId(u.getId())); // 查询用户岗位列表 u.setPositions(systemPositionService.findByUserId(u.getId())); } return PageData.from(new PageInfo<>(userList)); } @Override public PageData findAllPage(PageWrap pageWrap) { // 根部门条件处理(需查询根部门下所有部门的用户) if (pageWrap.getModel().getRootDeptId() != null) { pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(pageWrap.getModel().getRootDeptId())); } else { pageWrap.getModel().setDepartmentIds(getAllowedDeptIds(null)); } // 执行查询 PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal(); initUserRole(user,pageWrap); List userList = systemUserMapper.selectAllManagerList(pageWrap.getModel(), pageWrap.getOrderByClause()); userList.stream().forEach(s-> { String belongAddress =""; if(s.getAreaId() !=null && s.getAreaId().intValue()!=0){ Areas area = areasService.findById(s.getAreaId(), Constants.TWO); if(area != null){ belongAddress = Optional.ofNullable(area) .map(item -> item.getProvinceName() + item.getCityName() + item.getName()) .orElse(""); s.setCityId(area.getCityId()); s.setProvinceId(area.getProvinceId()); } }else if(s.getCityId() !=null){ Areas area = areasService.findById(s.getCityId(), Constants.ONE); if(area!=null){ belongAddress = Optional.ofNullable(area) .map(item -> item.getProvinceName() + item.getName()) .orElse(""); s.setProvinceId(area.getProvinceId()); } } s.setAddress(belongAddress); }); return PageData.from(new PageInfo<>(userList)); } @Override public PageData findSystemUserSon(PageWrap user) { LoginUserInfo principals = (LoginUserInfo)SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); if (Constants.equalsInteger(principals.getType(),UserType.SYSTEM.getKey())){ wrapper.lambda() .eq(SystemUser::getCompanyId,user.getModel().getCompanyId()); }else { wrapper.lambda() .eq(SystemUser::getCompanyId,principals.getCompanyId()); } wrapper.lambda().like(StringUtils.isNotBlank(user.getModel().getUsername()) ,SystemUser::getUsername,user.getModel().getUsername()) .in(SystemUser::getType,Constants.UserType.getSonUserType()) .eq(SystemUser::getDeleted,Boolean.FALSE); PageHelper.startPage(user.getPage(), user.getCapacity()); List systemUsers = systemUserMapper.selectList(wrapper); List collect = systemUsers.stream() .map(s -> { SystemUserDetailVO vo = new SystemUserDetailVO(); vo.setId(s.getId()); vo.setUsername(s.getUsername()); vo.setRealname(s.getRealname()); vo.setMobile(s.getMobile()); vo.setType(s.getType()); vo.setCreateTime(s.getCreateTime()); vo.setStatus(s.getStatus()); return vo; }).collect(Collectors.toList()); return PageData.from(new PageInfo<>(collect)); } @Override public PageData findSystemSjSon(PageWrap user) { LoginUserInfo principals = (LoginUserInfo)SecurityUtils.getSubject().getPrincipals().getPrimaryPrincipal(); QueryWrapper wrapper = new QueryWrapper<>(); if (Constants.equalsInteger(principals.getType(),UserType.SYSTEM.getKey())){ wrapper.lambda() .eq(SystemUser::getParentId,user.getModel().getParentId()); }else { wrapper.lambda() .eq(SystemUser::getParentId,principals.getId()); } wrapper.lambda().like(StringUtils.isNotBlank(user.getModel().getUsername()) ,SystemUser::getUsername,user.getModel().getUsername()) .eq(SystemUser::getType,Constants.UserType.SJ_CHILD.getKey()) .eq(SystemUser::getDeleted,Boolean.FALSE); PageHelper.startPage(user.getPage(), user.getCapacity()); List systemUsers = systemUserMapper.selectList(wrapper); List collect = systemUsers.stream() .map(s -> { SystemUserDetailVO vo = new SystemUserDetailVO(); vo.setId(s.getId()); vo.setUsername(s.getUsername()); vo.setRealname(s.getRealname()); vo.setMobile(s.getMobile()); vo.setType(s.getType()); vo.setCreateTime(s.getCreateTime()); vo.setStatus(s.getStatus()); return vo; }).collect(Collectors.toList()); return PageData.from(new PageInfo<>(collect)); } @Transactional(rollbackFor = {Exception.class,BusinessException.class}) @Override public Integer importCompanyBatch(MultipartFile file) { try { ExcelImporter ie = new ExcelImporter(file,0,0); List dataList = ie.getDataList(CompanyUserDTO.class,null); if(dataList == null || dataList.size() ==0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!"); } List comNameList = dataList.stream().map(s -> s.getCompanyName().trim()).distinct().collect(Collectors.toList()); long creditCodeCount = dataList.stream().map(s -> s.getCreditCode().trim()).distinct().count(); List userNameList = dataList.stream().map(s -> s.getUserName().trim()).distinct().collect(Collectors.toList()); if (!(dataList.size() == comNameList.size())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业名称有已存在"); } if (!(dataList.size() == creditCodeCount)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"统一社会信用代码已存在"); } if ( !(creditCodeCount == userNameList.size())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"登录账号已存在"); } insertCompanyUser(dataList); }catch (Exception e) { log.error(String.format("批量插入异常%s ",e.getMessage())); throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),e.getMessage()); }finally { } return null; } /** * 保存企业用户 * @param dataList */ private void insertCompanyUser(@Validated List dataList){ LoginUserInfo principals = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); SystemDictData one = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD); for (CompanyUserDTO companyUserDTO : dataList) { Areas area = areasService.findByCityAndArea(companyUserDTO.getCityName(),companyUserDTO.getAreasName()); if (area == null){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"地区名称有误"); } QueryWrapper wrapper = new QueryWrapper<>(); if(StringUtils.isNotBlank(companyUserDTO.getCreditCode())){ Pattern creditCodeRegex = Pattern.compile(Constants.CREDIT_CODE_REGEX); if (!creditCodeRegex.matcher(companyUserDTO.getCreditCode()).matches()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"信用代码格式不正确"); } wrapper.lambda().eq(Company::getName,companyUserDTO.getCompanyName()) .and (s->{s.eq(Company::getCreditCode,companyUserDTO.getCreditCode()) .or() .eq(Company::getName,companyUserDTO.getCompanyName());}); } Integer integer = companyMapper.selectCount(wrapper); if (integer > Constants.ZERO){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业名称或信用代码存在重复"); } Company company = new Company(); company.setOrigin(Constants.ONE); company.setName(companyUserDTO.getCompanyName()); company.setUserName(companyUserDTO.getUserName()); company.setCreditCode(companyUserDTO.getCreditCode()); company.setPassword(StringUtils.isNotBlank(companyUserDTO.getPassword()) ? companyUserDTO.getPassword() : one.getCode()); company.setCityId(area.getCityId()); company.setAreaId(area.getId()); company.setAddress(area.getProvinceName()+area.getCityName()+area.getName()); company.setCreator(principals.getId()); company.setCreateDate(new Date()); company.setEditor(principals.getId()); company.setEditDate(new Date()); company.setType(Constants.ZERO); companyService.createSystemUser(company); } } private void initUserRole(LoginUserInfo user, PageWrap pageWrap) { // if (Constants.formatIntegerNum(user.getType()) ==UserType.COMPANY.getKey()){ // pageWrap.getModel().setCompanyId(user.getCompanyId()); // // }else if(Constants.formatIntegerNum(user.getType()) == UserType.SD_ADMIN.getKey() // ||Constants.formatIntegerNum(user.getType()) == UserType.SD_CHILD.getKey() ){ // //如果是综合服务单位, 只能看到user同company_id下的账号 // pageWrap.getModel().setCompanyId(user.getCompanyId()); // }else if(Constants.formatIntegerNum(user.getType()) == UserType.SO_ADMIN.getKey() // ||Constants.formatIntegerNum(user.getType()) == UserType.SO_CHILD.getKey() ){ // //如果是服务机构, 只能看到user同company_id下的账号 // pageWrap.getModel().setCompanyId(user.getCompanyId()); // }else if(Constants.formatIntegerNum(user.getType()) == UserType.SYSTEM.getKey() ){ //如果是系统管理员 QuerySystemUserDTO model = pageWrap.getModel(); if (Constants.formatIntegerNum(model.getType()) ==UserType.COMPANY.getKey()){ model.setTypeList(new ArrayList<>()); model.getTypeList().add(UserType.COMPANY.getKey()); }else if (Constants.formatIntegerNum(model.getType()) == UserType.SD_ADMIN.getKey()){ model.setTypeList(new ArrayList<>()); model.getTypeList().add(UserType.SD_ADMIN.getKey()); // model.getTypeList().add(UserType.SD_CHILD.getKey()); } else if (Constants.formatIntegerNum(model.getType()) == UserType.SO_ADMIN.getKey()){ model.setTypeList(new ArrayList<>()); model.getTypeList().add(UserType.SO_ADMIN.getKey()); // model.getTypeList().add(UserType.SD_CHILD.getKey()); }else if (Constants.formatIntegerNum(model.getType()) == UserType.AREA.getKey()){ model.setTypeList(new ArrayList<>()); model.getTypeList().add(UserType.AREA.getKey()); }else if (Constants.formatIntegerNum(model.getType()) == UserType.SJ.getKey()){ model.setTypeList(new ArrayList<>()); model.getTypeList().add(UserType.SJ.getKey()); }else if (Constants.formatIntegerNum(model.getType()) == UserType.EXPERT.getKey()){ model.setTypeList(new ArrayList<>()); model.getTypeList().add(UserType.EXPERT.getKey()); }else{ log.info("pageWrap : ", JSON.toJSONString(pageWrap)); //其他类型查询全部企业报名数量 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,参数不正确"); } // }else if(Constants.formatIntegerNum(user.getType()) == UserType.AREA.getKey()){ // //如果是县区账号,只能看到user同area_id下的账号 // pageWrap.getModel().setAreaId(user.getAreaId()); // pageWrap.getModel().setType(user.getType()); // }else if(Constants.formatIntegerNum(user.getType()) == UserType.SJ.getKey()){ // //如果是市局账号,只能看到user同city_id下的账号 // pageWrap.getModel().setType(user.getType()); // pageWrap.getModel().setCityIds(Arrays.asList(user.getCityId())); // }else{ // //其他类型查询全部企业报名数量 // throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "对不起,不允许查询该数据!"); // } } @Override public long count(SystemUser systemUser) { Wrapper wrapper = new QueryWrapper<>(systemUser); return systemUserMapper.selectCount(wrapper); } /** * 获取用户权限内允许查询的部门ID */ private List getAllowedDeptIds(Integer rootDeptId) { List allowedDepartments = departmentDataPermissionAware.execute(); List allowedDeptIds = new ArrayList<>(); for (SystemDepartmentListVO listVO : allowedDepartments) { injectIds(allowedDeptIds, listVO); } // 没有允许的部门 if (allowedDeptIds.size() == 0) { allowedDeptIds.add(-1); return allowedDeptIds; } if (rootDeptId == null) { return allowedDeptIds; } List departmentIds = systemDepartmentService.findChildren(rootDeptId); departmentIds.add(rootDeptId); departmentIds.removeIf(deptId -> !allowedDeptIds.contains(deptId)); return departmentIds; } /** * 递归注入用户权限内的部门ID */ private void injectIds (List pool, SystemDepartmentListVO listVO) { pool.add(listVO.getId()); if (CollectionUtils.isEmpty(listVO.getChildren())) { return; } for (SystemDepartmentListVO child : listVO.getChildren()) { injectIds(pool, child); } } @Override public void updateZFServiceById(CreateSystemUserDTO systemUser) { SystemUser user = systemUserMapper.selectById(systemUser.getId()); Integer type = user.getType(); List noCheckUserChange = Constants.UserType.getNoCheckUserChange(); if (noCheckUserChange.contains(type)){ CreateSystemUserDTO dto = new CreateSystemUserDTO(); dto.setId(systemUser.getId()); dto.setRealname(systemUser.getRealname()); dto.setMobile(systemUser.getMobile()); dto.setUpdateTime(new Date()); dto.setUpdateUser(systemUser.getUpdateUser()); systemUserMapper.updateById(dto); }else { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"暂无权限"); } } @Override public void updateZFServiceSonById(CreateSystemUserDTO systemUser) { // SystemUser user = systemUserMapper.selectById(systemUser.getId()); Integer type = systemUser.getType(); //修改子账号 if ((Constants.UserType.SD_ADMIN.getKey() == type || Constants.UserType.SO_ADMIN.getKey() == type) && (StringUtils.isNoneEmpty(systemUser.getSonUserId()))){ UpdateWrapper wrapper = new UpdateWrapper<>(); wrapper.lambda() .eq(SystemUser::getId,systemUser.getSonUserId()) .eq(SystemUser::getCompanyId,systemUser.getCompanyId()); SystemUser updateUser = new SystemUser(); updateUser.setUsername(systemUser.getUsername()); updateUser.setRealname(systemUser.getRealname()); updateUser.setMobile(systemUser.getMobile()); updateUser.setUpdateUser(systemUser.getUpdateUser()); updateUser.setUpdateTime(new Date()); systemUserMapper.update(updateUser,wrapper); } } @Override public void createOrUpdateZFServiceSonById(CreateSystemUserDTO systemUser) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if ( Constants.UserType.SO_ADMIN.getKey() != Constants.formatIntegerNum(principal.getType()) && Constants.UserType.SD_ADMIN.getKey() != Constants.formatIntegerNum(principal.getType()) && UserType.SYSTEM.getKey() != Constants.formatIntegerNum(principal.getType())){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"无权限操作"); } //校验 用户名称是否存在 checkSystemUser(systemUser); if (Objects.isNull(systemUser.getId())){ Integer type = systemUser.getType(); Integer companyId = Objects.nonNull(systemUser.getCompanyId()) ? systemUser.getCompanyId() : principal.getCompanyId(); if (Objects.isNull(companyId)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"企业id为空请传递正确参数"); } if (Constants.equalsInteger(principal.getType(),UserType.SO_ADMIN.getKey())){ type = UserType.SO_CHILD.getKey(); }else if (Constants.equalsInteger(principal.getType(),UserType.SD_ADMIN.getKey())){ type = UserType.SD_CHILD.getKey(); } SystemDictData one = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD); SystemUser insertUser = new SystemUser(); // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 insertUser.setPassword(Utils.Secure.encryptPassword(one.getCode(), salt)); insertUser.setSalt(salt); insertUser.setCreateTime(new Date()); insertUser.setUpdateTime(new Date()); insertUser.setCreateUser(principal.getId()); insertUser.setUpdateUser(principal.getId()); insertUser.setCompanyId(companyId); insertUser.setAreaId(principal.getAreaId()); insertUser.setCityId(principal.getCityId()); insertUser.setType(type); insertUser.setStatus(Constants.Status.ENABLE.getValue()); insertUser.setUsername(systemUser.getUsername()); insertUser.setRealname(StringUtils.isNotEmpty(systemUser.getRealname()) ? systemUser.getRealname() : systemUser.getUsername()); insertUser.setMobile(systemUser.getMobile()); systemUserMapper.insert(insertUser); dealSystemRoleRel(insertUser); } else { SystemUser existUser = findById(systemUser.getId()); if (Objects.isNull(existUser)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"用户不存在"); } SystemUser updateUser = new SystemUser(); updateUser.setId(systemUser.getId()); updateUser.setUpdateTime(new Date()); updateUser.setUpdateUser(principal.getId()); updateUser.setUsername(systemUser.getUsername()); updateUser.setRealname(systemUser.getRealname()); updateUser.setMobile(systemUser.getMobile()); systemUserMapper.updateById(updateUser); } } @Override public void createOrUpdateSJSonById(CreateSystemUserDTO systemUser) { LoginUserInfo principal = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if ( Constants.UserType.SJ.getKey() != Constants.formatIntegerNum(principal.getType()) && UserType.SYSTEM.getKey() != Constants.formatIntegerNum(principal.getType())){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"无权限操作"); } //校验 用户名称是否存在 checkSystemUser(systemUser); if (Objects.isNull(systemUser.getId())){ SystemDictData one = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD); SystemUser insertUser = new SystemUser(); // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 insertUser.setPassword(Utils.Secure.encryptPassword(one.getCode(), salt)); insertUser.setSalt(salt); insertUser.setCreateTime(new Date()); insertUser.setUpdateTime(new Date()); insertUser.setCreateUser(principal.getId()); insertUser.setUpdateUser(principal.getId()); insertUser.setAreaId(principal.getAreaId()); insertUser.setCityId(principal.getCityId()); insertUser.setType(UserType.SJ_CHILD.getKey()); insertUser.setStatus(Constants.Status.ENABLE.getValue()); insertUser.setUsername(systemUser.getUsername()); insertUser.setRealname(StringUtils.isNotEmpty(systemUser.getRealname()) ? systemUser.getRealname() : systemUser.getUsername()); insertUser.setMobile(systemUser.getMobile()); insertUser.setParentId(systemUser.getParentId()); systemUserMapper.insert(insertUser); dealSystemRoleRel(insertUser); } else { SystemUser existUser = findById(systemUser.getId()); if (Objects.isNull(existUser)){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"用户不存在"); } SystemUser updateUser = new SystemUser(); updateUser.setId(systemUser.getId()); updateUser.setUpdateTime(new Date()); updateUser.setUpdateUser(principal.getId()); updateUser.setUsername(systemUser.getUsername()); updateUser.setRealname(systemUser.getRealname()); updateUser.setMobile(systemUser.getMobile()); systemUserMapper.updateById(updateUser); } } @Transactional(rollbackFor = {Exception.class,BusinessException.class}) @Override public Integer registerExportUser(CreateExportSystemUserDTO createExportSystemUserDTO) { SystemUser user = new SystemUser(); user.setUsername(createExportSystemUserDTO.getUserName()); SystemUser exists = systemUserMapper.selectOne(new QueryWrapper<>(user).last("limit 1")); if (Objects.nonNull(exists)){ throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(),"登录账号已存在"); } SystemUser insertUser = new SystemUser(); insertUser.setUsername(createExportSystemUserDTO.getUserName()); insertUser.setRealname(createExportSystemUserDTO.getRealname()); insertUser.setEmpNo(createExportSystemUserDTO.getEmpNo()); insertUser.setMobile(createExportSystemUserDTO.getMobile()); // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 insertUser.setPassword(Utils.Secure.encryptPassword(createExportSystemUserDTO.getPassword(), salt)); insertUser.setSalt(salt); insertUser.setCreateTime(new Date()); insertUser.setUpdateTime(new Date()); insertUser.setAreaId(createExportSystemUserDTO.getAreaId()); insertUser.setCityId(createExportSystemUserDTO.getCityId()); insertUser.setType(UserType.EXPERT.getKey()); insertUser.setStatus(Constants.ZERO); insertUser.setIdCard(createExportSystemUserDTO.getIdCard()); insertUser.setProfession(createExportSystemUserDTO.getProfession()); systemUserMapper.insert(insertUser); insertUser.setCreateUser(insertUser.getId()); dealSystemRoleRel(insertUser); if (Objects.isNull(createExportSystemUserDTO.getIdCardFrontFile()) ||Objects.isNull(createExportSystemUserDTO.getIdCardReverseFile()) || CollectionUtils.isEmpty(createExportSystemUserDTO.getProfessionFileList())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证照片,职称照片 参数缺失"); } Multifile idCardFrontFile = createExportSystemUserDTO.getIdCardFrontFile(); idCardFrontFile.setObjType(Constants.MultiFile.IDCARD_FRONT_USER.getKey()); idCardFrontFile.setObjId(insertUser.getId()); multifileService.create(idCardFrontFile); Multifile idCardReverseFile = createExportSystemUserDTO.getIdCardReverseFile(); idCardReverseFile.setObjType(Constants.MultiFile.IDCARD_REVERSE_USER.getKey()); idCardFrontFile.setObjId(insertUser.getId()); multifileService.create(idCardReverseFile); createExportSystemUserDTO.getProfessionFileList().forEach(s->{ s.setObjId(insertUser.getId()); s.setObjType(Constants.MultiFile.PROFESSION_USER.getKey()); multifileService.create(s); }); return null; } private void checkSystemUser(SystemUser systemUser){ if (StringUtils.isBlank(systemUser.getUsername())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"用户名不允许为空"); } SystemUser user = new SystemUser(); user.setUsername(systemUser.getUsername()); SystemUser existUser = findOne(user); if (Objects.nonNull(existUser) && !existUser.getId().equals(systemUser.getId())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"用户名登录名存在重复"); } } }