package com.doumee.service.business.impl; import com.alibaba.fastjson.JSONObject; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.*; import com.doumee.dao.business.join.CompanySolutionJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.system.SystemUserMapper; import com.doumee.dao.system.model.SystemUser; import com.doumee.service.business.CompanyService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.service.business.third.SignService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import lombok.Synchronized; 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.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.lang.reflect.Array; import java.net.URI; import java.net.URLEncoder; import java.util.*; /** * 企业信息表Service实现 * @author 江蹄蹄 * @date 2024/01/16 10:03 */ @Service public class CompanyServiceImpl implements CompanyService { @Value("${debug_model}") private boolean debugModel; @Autowired private CompanyMapper companyMapper; @Autowired private SystemUserMapper systemUserMapper; @Autowired private SignService signService; @Autowired private SolutionsMapper solutionsMapper; @Autowired private CompanySolutionJoinMapper companySolutionJoinMapper; @Autowired private CompanyPermissionMapper companyPermissionMapper; @Autowired private MultifileMapper multifileMapper; @Autowired private SmsEmailMapper smsEmailMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override @Transactional public Company create(Company company) { isValidCreateParam(company); if(companyMapper.selectCount(new QueryWrapper().lambda() .eq(Company::getCode,company.getCode()) .or().eq(Company::getPhone,company.getPhone()) .or().eq(Company::getEmail,company.getEmail()) .or().eq(Company::getUsername,company.getUsername()) .or().eq(Company::getName,company.getName()))>0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该企业【名称】【统一信用代码】【邮箱】或者【手机号】已存在,请确认后重新提交!"); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); company.setCreator(user.getId()); company.setCreateDate(new Date()); company.setIsdeleted(Constants.ZERO); company.setStatus(Constants.ZERO); company.setType(Constants.ZERO); company.setSignStatus(Constants.ZERO); company.setSignIdStatus(Constants.ZERO); companyMapper.insert(company); company.setEditDate(company.getCreateDate()); company.setEditor(user.getId()); //处理登陆账号信息 dealSystemUserData(company); //处理附件信息 dealFileData(company); //处理关联方案 dealSolutionsData(company); return company; } @Override @Transactional public Company createShop(Company company) { isValidCreateParam(company); if(companyMapper.selectCount(new QueryWrapper().lambda() .eq(Company::getCode,company.getCode()) .or().eq(Company::getPhone,company.getPhone()) .or().eq(Company::getEmail,company.getEmail()) .or().eq(Company::getUsername,company.getUsername()) .or().eq(Company::getName,company.getName()))>0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该商户【名称】【统一信用代码】【邮箱】或者【手机号】已存在,请确认后重新提交!"); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); company.setCreator(user.getId()); company.setCreateDate(new Date()); company.setType(Constants.ONE); company.setIsdeleted(Constants.ZERO); company.setStatus(Constants.ZERO); company.setSignStatus(Constants.ZERO); company.setSignIdStatus(Constants.ZERO); companyMapper.insert(company); company.setEditDate(company.getCreateDate()); company.setEditor(user.getId()); //处理登陆账号信息 dealSystemUserData(company); //处理附件信息 dealFileData(company); return company; } @Override @Transactional public void updateSolutions(Company company) { if(company.getId()==null ||company.getSolutionList() == null ||company.getSolutionList().size() == 0 ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } Company model = findById(company.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } companySolutionJoinMapper.delete(new UpdateWrapper().lambda().eq(CompanySolution::getCompanyId,company.getId())); //处理关联方案 dealSolutionsData(company); } @Override @Transactional public void exportFiles(Integer id, HttpServletResponse response){ try { Company model = companyMapper.selectById(id); if(model == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } List fileList = new ArrayList<>(); List multifileList = multifileMapper.selectList(new QueryWrapper().lambda() .eq(Multifile::getObjId,id) .isNotNull(Multifile::getFileurl) .in(Multifile::getObjType, Arrays.asList(new Integer[]{ Constants.MultiFile.COM_BUSINESS_LICENSE.getKey(), Constants.MultiFile.COM_IDCARD_IMG.getKey(), })) ); if(multifileList== null || multifileList.size() == 0){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); for(Multifile l : multifileList){ File f = Constants.getFileByNetFile(path + l.getFileurl(),StringUtils.defaultString(l.getName(),"未命名")); if(f !=null && f.isFile()){ fileList.add(f); } } if(fileList == null || fileList.size() == 0){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } String fileName = model.getName() +"_企业证件_"+System.currentTimeMillis()+".zip" ; String encodeFileName = URLEncoder.encode(fileName); response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName); response.setContentType("application/octet-stream"); response.setHeader("eva-opera-type", "download"); response.setHeader("eva-download-filename", encodeFileName); Constants.packFilesToZip(fileList,response.getOutputStream()); } catch (IOException e) { throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e); } } private void dealSystemUserData(Company company) { if(systemUserMapper.selectCount(new QueryWrapper().lambda() .eq(SystemUser::getDeleted,Boolean.TRUE) .eq(SystemUser::getUsername,company.getUsername()))>0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该登录账号已存在,请更新重试~"); } SystemUser user = new SystemUser(); user.setUsername(company.getUsername()); // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD).getCode(), salt)); user.setSalt(salt); user.setType(Constants.equalsInteger(company.getType(),Constants.ZERO)?Constants.ONE:Constants.TWO); user.setFixed(Boolean.TRUE); user.setDeleted(Boolean.FALSE); user.setCompanyId(company.getId()); user.setMobile(company.getPhone()); user.setCreateUser(company.getCreator()); user.setCreateTime(company.getCreateDate()); user.setStatus(Constants.ZERO); systemUserMapper.insert(user); } private void dealSystemUserDataForUpdate (Company company,String oldUserName) { if(systemUserMapper.selectCount(new QueryWrapper().lambda() .eq(SystemUser::getDeleted,Boolean.TRUE) .eq(SystemUser::getUsername,company.getUsername()))>0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该登录账号已存在,请更新重试~"); } SystemUser model = systemUserMapper.selectOne(new QueryWrapper().lambda() .eq(SystemUser::getDeleted,Boolean.TRUE) .eq(SystemUser::getUsername,oldUserName).last("limit 1")); if(model ==null){ SystemUser user = new SystemUser(); user.setUsername(company.getUsername()); // 生成密码盐 String salt = RandomStringUtils.randomAlphabetic(6); // 生成密码 user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD).getCode(), salt)); user.setSalt(salt); user.setType(Constants.equalsInteger(company.getType(),Constants.ZERO)?Constants.ONE:Constants.TWO); user.setFixed(Boolean.TRUE); user.setDeleted(Boolean.FALSE); user.setCompanyId(company.getId()); user.setMobile(company.getPhone()); user.setCreateUser(company.getCreator()); user.setCreateTime(company.getCreateDate()); user.setStatus(Constants.ZERO); systemUserMapper.insert(user);//插入新的管理员账号 }else{ model.setUsername(company.getUsername()); model.setCreateUser(company.getCreator()); model.setCreateTime(company.getCreateDate()); systemUserMapper.updateById(model);//修改原来的超级管理员账号 } } /** * 新增关联方案 * @param company */ private void dealSolutionsData(Company company) { List sIds = new ArrayList<>(); List list = new ArrayList<>(); int num =0; Date date = new Date(); for(CompanySolution s :company.getSolutionList()){ if(Objects.isNull(s.getSolution())){ continue; } if(s.getSolution().getBaseId() == null){ continue; } Solutions newVersion = solutionsMapper.selectOne(new QueryWrapper().lambda().eq(Solutions::getBaseId,s.getSolution().getBaseId()) .eq(Solutions::getDataType,Constants.TWO).last("limit 1")); if(Objects.isNull(newVersion)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息!"); } sIds.add(s.getSolution().getBaseId()); s.setCompanyId(company.getId()); s.setIsdeleted(Constants.ZERO); s.setCanAdd(Constants.formatIntegerNum(s.getCanAdd())); s.setCanReduce(Constants.formatIntegerNum(s.getCanReduce())); s.setCreateDate(date); s.setCreator(company.getCreator()); s.setSortnum(num++); s.setSolutionBaseId( s.getSolution().getBaseId() ); s.setSolutionId( newVersion.getId() ); s.setStatus(Constants.ZERO); list.add(s); } if(list.size() ==0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息!"); } List solutionsList = solutionsMapper.selectList(new QueryWrapper().lambda() .in(Solutions::getId,sIds) .eq(Solutions::getIsdeleted,Constants.ZERO)); if(solutionsList.size()!= list.size()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息哦"); } for(Solutions s:solutionsList){ if(Constants.equalsInteger(s.getStatus(),Constants.ONE)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"保险方案【"+s.getName()+"】已被禁用,不能进行该操作"); } } companySolutionJoinMapper.insertBatchSomeColumn(list); } /* private void dealSolutionsData(Company company) { List sIds = new ArrayList<>(); List list = new ArrayList<>(); int num =0; for(CompanySolution s :company.getSolutionList()){ if(s.getSolution() == null || s.getSolution().getBaseId() == null ||s.getSolution().getId()==null){ continue; } sIds.add(s.getSolution().getId() ); s.setCompanyId(company.getId()); s.setIsdeleted(Constants.ZERO); s.setCanAdd(Constants.formatIntegerNum(s.getCanAdd())); s.setCanReduce(Constants.formatIntegerNum(s.getCanReduce())); s.setCreateDate(company.getCreateDate()); s.setCreator(company.getCreator()); s.setSortnum(num++); s.setSolutionBaseId( s.getSolution().getId() ); s.setSolutionId( s.getSolution().getBaseId() ); s.setStatus(Constants.ZERO); list.add(s); } if(list.size() ==0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息!"); } List solutionsList = solutionsMapper.selectList(new QueryWrapper().lambda() .in(Solutions::getId,sIds) .eq(Solutions::getIsdeleted,Constants.ZERO)); if(solutionsList.size()!= list.size()){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息哦"); } for(Solutions s:solutionsList){ if(Constants.equalsInteger(s.getStatus(),Constants.ONE)){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"保险方案【"+s.getName()+"】已被禁用,不能进行该操作"); } } companySolutionJoinMapper.insertBatchSomeColumn(list); }*/ private void isValidCreateParam(Company company) { if(StringUtils.isBlank(company.getPhone()) ||StringUtils.isBlank(company.getName()) ||StringUtils.isBlank(company.getUsername()) ||StringUtils.isBlank(company.getCode()) ||StringUtils.isBlank(company.getCaptche()) ||StringUtils.isBlank(company.getLegalName()) ||StringUtils.isBlank(company.getEmail()) ||company.getSolutionList() == null ||company.getSolutionList().size() == 0 ||StringUtils.isBlank(company.getEmail())){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } if(!debugModel){ //手机验证码校验 SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche()); } } private void dealFileData(Company company ) { List multifileList = new ArrayList<>(); if(company.getBusinessImg()!=null && StringUtils.isNotBlank(company.getBusinessImg().getFileurl())){ multifileList.add(initMultiFileByCompay(company,company.getBusinessImg(),Constants.MultiFile.COM_BUSINESS_LICENSE.getKey())); }else { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传营业执照!"); } if(company.getSignImg()!=null && StringUtils.isNotBlank(company.getSignImg().getFileurl())){ multifileList.add(initMultiFileByCompay(company,company.getSignImg(),Constants.MultiFile.COM_SING_IMG.getKey())); }else { // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传电子签章!"); } if(company.getIdcardImgList()!=null && company.getIdcardImgList()!=null&& company.getIdcardImgList().size()>0){ for(Multifile f : company.getIdcardImgList()){ multifileList.add(initMultiFileByCompay(company,f,Constants.MultiFile.COM_IDCARD_IMG.getKey())); } }else { throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传身份证扫描件!"); } multifileMapper.insertBatchSomeColumn(multifileList); } private void dealFileDataForUpdate(Company company ) { List multifileList = new ArrayList<>(); List objList = new ArrayList<>(); if(company.getBusinessImg()!=null && company.getBusinessImg().getId() ==null && StringUtils.isNotBlank(company.getBusinessImg().getFileurl())){ multifileList.add(initMultiFileByCompay(company,company.getBusinessImg(),Constants.MultiFile.COM_BUSINESS_LICENSE.getKey())); objList.add(Constants.MultiFile.COM_BUSINESS_LICENSE.getKey()); } if(company.getSignImg()!=null&& company.getSignImg().getId() ==null && StringUtils.isNotBlank(company.getSignImg().getFileurl())){ multifileList.add(initMultiFileByCompay(company,company.getSignImg(),Constants.MultiFile.COM_SING_IMG.getKey())); objList.add(Constants.MultiFile.COM_SING_IMG.getKey()); company.setSignIdStatus(Constants.ZERO);//标记电子签章未上传 if(StringUtils.isNotBlank(company.getSignId())){ //删除现有的签章 signService.deleteEntSign(company.getSignId()); } company.setSignId(""); } if(company.getIdcardImgList()!=null && company.getIdcardImgList()!=null){ boolean isNew = false; for(Multifile f : company.getIdcardImgList()){ if(f.getId() !=null){ continue; } isNew = true; multifileList.add(initMultiFileByCompay(company,f,Constants.MultiFile.COM_IDCARD_IMG.getKey())); } if(isNew) objList.add(Constants.MultiFile.COM_IDCARD_IMG.getKey()); } if(objList.size()>0){ multifileMapper.update(null,new UpdateWrapper().lambda() .set(Multifile::getIsdeleted,Constants.ONE) .set(Multifile::getEditDate,company.getEditDate()) .set(Multifile::getEditor,company.getEditor()) .eq(Multifile::getObjId,company.getId()) .eq(Multifile::getIsdeleted,Constants.ZERO) .in(Multifile::getObjType,objList) ); multifileMapper.insertBatchSomeColumn(multifileList); } } private Multifile initMultiFileByCompay(Company company, Multifile file, int key) { file.setCompanyId(company.getId()); file.setIsdeleted(Constants.ZERO); file.setCreateDate(company.getEditDate()); file.setCreator(company.getEditor()); file.setObjId(company.getId()); file.setObjType(key); file.setType(Constants.formatIntegerNum(file.getType())); if(file.getFileurl().endsWith(".mp4")){ file.setType(Constants.TWO); } return file; } @Override public void deleteById(Integer id) { companyMapper.deleteById(id); } @Override public void updateStatus(Company company){ if(company.getId() == null || company.getStatus()==null || company.getStatus()<0||company.getStatus()>1){ throw new BusinessException(ResponseStatus.BAD_REQUEST ); } Company model = companyMapper.selectById(company.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } if(Constants.equalsInteger(model.getStatus(),company.getStatus())){ //如果状态不发生改变,直接返回 return; } LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); //更新数据状态 companyMapper.update(null,new UpdateWrapper() .lambda() .eq(Company::getId,model.getId()) .set(Company::getEditDate,new Date()) .set(Company::getEditor,user.getId()) .set(Company::getStatus,company.getStatus()) ); } @Override public void updatePhone(Company company){ if(company.getId() == null ||StringUtils.isBlank(company.getPhone()) || StringUtils.isBlank(company.getCaptche())){ throw new BusinessException(ResponseStatus.BAD_REQUEST ); } if(!debugModel){ SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche()); } Company model = companyMapper.selectById(company.getId()); if(model == null || StringUtils.equals(model.getPhone(),company.getPhone()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"手机号未发生改变~" ); } if(companyMapper.selectCount(new QueryWrapper().lambda() .eq(Company::getPhone,company.getPhone()) .eq(Company::getIsdeleted,Constants.ZERO))>0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该企业【手机号】已存在,请确认后重新提交!"); } LoginUserInfo user= (LoginUserInfo)SecurityUtils.getSubject().getPrincipal(); //更换手机号 companyMapper.update(null,new UpdateWrapper() .lambda() .eq(Company::getId,model.getId()) .set(Company::getEditDate,new Date()) .set(Company::getEditor,user.getId()) .set(Company::getPhone,company.getPhone()) ); } @Override public void delete(Company company) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(company); companyMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } companyMapper.deleteBatchIds(ids); } private void isValidUpdateParam(Company company) { if( StringUtils.isBlank(company.getName()) // ||StringUtils.isBlank(company.getUsername()) ||StringUtils.isBlank(company.getCode()) ||StringUtils.isBlank(company.getLegalName()) ||StringUtils.isBlank(company.getEmail()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } } @Override public Company updateById(Company company) { isValidUpdateParam(company); Company model = findById(company.getId()); if(model == null || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ){ throw new BusinessException(ResponseStatus.DATA_EMPTY ); } if(StringUtils.equals(company.getEmail(),model.getEmail())){ company.setEmail(null); } if(StringUtils.equals(company.getUsername(),model.getUsername())){ company.setUsername(null); } if(companyMapper.selectCount(new QueryWrapper().lambda() .ne(Company::getId,company.getId()) .and(w->w.eq(Company::getCode,company.getCode()) .or().eq(Company::getEmail,company.getEmail()) .or().eq(Company::getUsername,company.getUsername()) .or().eq(Company::getName,company.getName())) )>0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该企业【名称】【统一信用代码】【邮箱】或者【企业账号】已存在,请确认后重新提交!"); } LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.equalsInteger(model.getSignIdStatus(),Constants.ONE)){ company.setSignId(model.getSignId()); } dealFileDataForUpdate(company); Company update = new Company(); update.setName(company.getName()); update.setCode(company.getCode()); update.setEditDate(new Date()); update.setEditor(user.getId()); update.setUsername(company.getUsername()); update.setTaxAccount(company.getTaxAccount()); update.setTaxAddr(company.getTaxAddr()); update.setTaxCode(company.getTaxCode()); update.setTaxBank(company.getTaxBank()); update.setEmail(company.getEmail()); update.setId(model.getId()); update.setLegalName(company.getLegalName()); update.setInvoiceAddr(company.getInvoiceAddr()); update.setSignIdStatus(company.getSignIdStatus()); update.setInvoiceEmail(company.getInvoiceEmail()); if(StringUtils.isNotBlank(company.getEmail()) ||!StringUtils.equals(company.getName(),model.getName()) ||!StringUtils.equals(company.getLegalName(),model.getLegalName()) ||!StringUtils.equals(company.getCode(),model.getCode()) ){ //如果邮箱发生改变 update.setSignStatus(Constants.ZERO); } companyMapper.updateById(update); company.setCreator(update.getEditor()); company.setCreateDate(update.getEditDate()); if(StringUtils.isNotBlank(company.getUsername())){ //处理登陆账号信息 company.setType(model.getType()); dealSystemUserDataForUpdate(company,model.getUsername()); } return company; } @Override public void updateByIdInBatch(List companys) { if (CollectionUtils.isEmpty(companys)) { return; } for (Company company: companys) { this.updateById(company); } } @Override public Company findById(Integer id) { Company model = companyMapper.selectById(id); if(model == null ||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } /*MPJLambdaWrapper csWrapper = new MPJLambdaWrapper<>(); csWrapper.selectAll(CompanySolution.class); csWrapper.selectAs(Solutions::getName,CompanySolution::getSolutionName); csWrapper.leftJoin(Solutions.class,Solutions::getId,CompanySolution::getSolutionBaseId); csWrapper.eq(CompanySolution::getCompanyId,id); csWrapper.eq(CompanySolution::getIsdeleted,Constants.ZERO); csWrapper.orderByAsc(CompanySolution::getSortnum); model.setSolutionList(companySolutionJoinMapper.selectJoinList(CompanySolution.class,csWrapper)); */ initImgData(model); return model; } private void initImgData(Company model) { List multifiles = multifileMapper.selectList(new QueryWrapper().lambda() .eq(Multifile::getCompanyId,model.getId()) .eq(Multifile::getIsdeleted,Constants.ZERO)); if(multifiles!=null){ String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); for(Multifile f : multifiles){ if(StringUtils.isBlank(f.getFileurl())){ continue; } f.setFileurlFull(path+f.getFileurl()); if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.COM_BUSINESS_LICENSE.getKey())){ //营业执照 model.setBusinessImg(f); }else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.COM_SING_IMG.getKey())){ //企业电子章 model.setSignImg(f); }else if(Constants.equalsInteger(f.getObjType(),Constants.MultiFile.COM_IDCARD_IMG.getKey())){ //法人身份证 if(model.getIdcardImgList()==null){ model.setIdcardImgList(new ArrayList<>()); } model.getIdcardImgList().add(f); } } } } @Override public Company findOne(Company company) { QueryWrapper wrapper = new QueryWrapper<>(company); return companyMapper.selectOne(wrapper); } /** * 电子签认证 * public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,File businessimg,String notifyUrl){ */ @Override @Async public void startSignAuth(Integer id){ Company company = companyMapper.selectById(id); Multifile f = multifileMapper.selectOne(new QueryWrapper().lambda() .eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjType,Constants.MultiFile.COM_BUSINESS_LICENSE.getKey()) .eq(Multifile::getObjId,company.getId()) .last("limit 1")); if(f == null){ return; } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); boolean status = signService.organizationCreate(company.getName(),company.getCode(),company.getLegalName(),company.getEmail(), path + f.getFileurl(),null); Company update = new Company(); update.setId(company.getId()); update.setSignStatus(status?Constants.ONE:Constants.TWO); update.setSignDate(new Date()); //更新认证状态 companyMapper.updateById(update); } @Override public void startSignAuthAuto( ){ List companyList = companyMapper.selectList(new QueryWrapper().lambda() .eq(Company::getIsdeleted,Constants.ZERO) .eq(Company::getSignStatus,Constants.ZERO)); if(companyList!=null && companyList.size()>0) { for (Company company : companyList) { Multifile f = multifileMapper.selectOne(new QueryWrapper().lambda() .eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjType,Constants.MultiFile.COM_BUSINESS_LICENSE.getKey()) .eq(Multifile::getObjId,company.getId()) .last("limit 1")); if(f == null){ return; } String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); boolean status = signService.organizationCreate(company.getName(),company.getCode(),company.getLegalName(),company.getEmail(), path + f.getFileurl(),null); Company update = new Company(); update.setId(company.getId()); update.setSignStatus(status?Constants.ONE:Constants.TWO); update.setSignDate(new Date()); //更新认证状态 companyMapper.updateById(update); } } } /** * 电子签认证 * public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,File businessimg,String notifyUrl){ */ @Override @Synchronized//单例执行 public void dealSignAuthStatus(){ List companyList = companyMapper.selectList(new QueryWrapper().lambda() .eq(Company::getIsdeleted,Constants.ZERO) .eq(Company::getSignStatus,Constants.ONE)); if(companyList!=null && companyList.size()>0){ for(Company company :companyList){ //查询企业签约状态 审核状态,0正在申请1通过2驳回 int status = signService.organizationAuditStatus(company.getEmail()); if(status == 0){ continue; } if(status == 1){ Company update = new Company(); update.setId(company.getId()); update.setSignStatus( Constants.THREE); update.setSignDate(new Date()); //更新认证状态 companyMapper.updateById(update); }else{ Company update = new Company(); update.setId(company.getId()); update.setSignStatus(Constants.TWO); update.setSignDate(new Date()); //更新认证状态 companyMapper.updateById(update); } } } } /** * 电子印章自动上传 * public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,File businessimg,String notifyUrl){ */ @Override @Synchronized//单例执行 public void dealSignIdStatus(){ List companyList = companyMapper.selectList(new QueryWrapper().lambda() .eq(Company::getIsdeleted,Constants.ZERO) .eq(Company::getSignStatus,Constants.THREE) .eq(Company::getSignIdStatus,Constants.ZERO)); if(companyList!=null && companyList.size()>0){ for(Company company :companyList){ //查询企业签约状态 审核状态,0正在申请1通过2驳回 Multifile f = multifileMapper.selectOne(new QueryWrapper().lambda() .eq(Multifile::getIsdeleted,Constants.ZERO) .eq(Multifile::getObjType,Constants.MultiFile.COM_SING_IMG.getKey()) .eq(Multifile::getObjId,company.getId()) .last("limit 1")); if(f !=null &&StringUtils.isNotBlank(f.getFileurl())){ String path = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+systemDictDataBiz.queryByCode(Constants.OSS,Constants.COMPANY_FILE).getCode(); String signId = signService.uploadEntSign(company.getName(),path+f.getFileurl(),company.getEmail()); Company update = new Company(); update.setId(company.getId()); if(StringUtils.isNotBlank(signId)){ update.setSignIdStatus( Constants.ONE); update.setSignId(signId); //更新认证状态 companyMapper.updateById(update); }else{ update.setSignIdStatus(Constants.TWO); //更新认证状态 companyMapper.updateById(update); } } } } } // @Override // public List findList(Company company) { // QueryWrapper wrapper = new QueryWrapper<>(company); // return companyMapper.selectList(wrapper); // } // @Override public List findList(Company company) { QueryWrapper wrapper = new QueryWrapper<>(company); company.setIsdeleted(Constants.ZERO); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.equalsInteger(company.getType(),Constants.ONE)){ }else { //如果查询企业数据 if(company.getQueryFlag() == 0){ //只能看权限范围内 if(user.getCompanyIdList() == null || user.getCompanyIdList().size() == 0){ wrapper.lambda().eq(Company::getId,-1);//设置无效访问 }else { wrapper.lambda().in(Company::getId, user.getCompanyIdList()); } } else if (company.getQueryFlag() == 1 && company.getUserId()!=null) { //查詢是否有查看權限 wrapper.select("*,(select count(1) from company_permission b where b.user_id="+company.getUserId()+" and b.isdeleted=0 and b.company_id=company.id) as hasPerimission"); } } return companyMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper queryWrapper = new QueryWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); pageWrap.getModel().setIsdeleted(Constants.ZERO); LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(Constants.formatIntegerNum(pageWrap.getModel().getType()) == Constants.ONE) { }else{ //如果查询企业数据,只能看权限范围内 if(pageWrap.getModel().getQueryFlag() == 0){ //只能看权限范围内 if(user.getCompanyIdList() == null || user.getCompanyIdList().size() == 0){ queryWrapper.lambda().eq(Company::getId,-1);//设置无效访问 }else { queryWrapper.lambda().in(Company::getId, user.getCompanyIdList()); } // queryWrapper.exists("select b.id from company_permission b where b.user_id="+user.getId()+" and b.isdeleted=0 and b.company_id=company.id"); } else if (pageWrap.getModel().getQueryFlag() == 1) { //查詢是否有查看權限 queryWrapper.select("*,(select count(1) from company_permission b where b.user_id="+user.getId()+" and b.isdeleted=0 and b.company_id=company.id) as hasPerimission"); } } if (pageWrap.getModel().getId() != null) { queryWrapper.lambda().eq(Company::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { queryWrapper.lambda().eq(Company::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { queryWrapper.lambda().ge(Company::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); queryWrapper.lambda().le(Company::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { queryWrapper.lambda().eq(Company::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { queryWrapper.lambda().ge(Company::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); queryWrapper.lambda().le(Company::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { queryWrapper.lambda().eq(Company::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getName() != null) { queryWrapper.lambda().like(Company::getName, pageWrap.getModel().getName()); } if (pageWrap.getModel().getRemark() != null) { queryWrapper.lambda().eq(Company::getRemark, pageWrap.getModel().getRemark()); } if (pageWrap.getModel().getStatus() != null) { queryWrapper.lambda().eq(Company::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getSortnum() != null) { queryWrapper.lambda().eq(Company::getSortnum, pageWrap.getModel().getSortnum()); } if (pageWrap.getModel().getType() != null) { queryWrapper.lambda().eq(Company::getType, pageWrap.getModel().getType()); } if (pageWrap.getModel().getCode() != null) { queryWrapper.lambda().eq(Company::getCode, pageWrap.getModel().getCode()); } if (pageWrap.getModel().getUsername() != null) { queryWrapper.lambda().eq(Company::getUsername, pageWrap.getModel().getUsername()); } if (pageWrap.getModel().getTaxCode() != null) { queryWrapper.lambda().eq(Company::getTaxCode, pageWrap.getModel().getTaxCode()); } if (pageWrap.getModel().getTaxAccount() != null) { queryWrapper.lambda().eq(Company::getTaxAccount, pageWrap.getModel().getTaxAccount()); } if (pageWrap.getModel().getTaxBank() != null) { queryWrapper.lambda().eq(Company::getTaxBank, pageWrap.getModel().getTaxBank()); } if (pageWrap.getModel().getTaxAddr() != null) { queryWrapper.lambda().eq(Company::getTaxAddr, pageWrap.getModel().getTaxAddr()); } if (pageWrap.getModel().getInvoiceEmail() != null) { queryWrapper.lambda().eq(Company::getInvoiceEmail, pageWrap.getModel().getInvoiceEmail()); } if (pageWrap.getModel().getInvoiceAddr() != null) { queryWrapper.lambda().eq(Company::getInvoiceAddr, pageWrap.getModel().getInvoiceAddr()); } if (pageWrap.getModel().getPhone() != null) { queryWrapper.lambda().eq(Company::getPhone, pageWrap.getModel().getPhone()); } if (pageWrap.getModel().getEmail() != null) { queryWrapper.lambda().eq(Company::getEmail, pageWrap.getModel().getEmail()); } if (pageWrap.getModel().getSignStatus() != null) { queryWrapper.lambda().eq(Company::getSignStatus, pageWrap.getModel().getSignStatus()); } if (pageWrap.getModel().getSignDate() != null) { queryWrapper.lambda().ge(Company::getSignDate, Utils.Date.getStart(pageWrap.getModel().getSignDate())); queryWrapper.lambda().le(Company::getSignDate, Utils.Date.getEnd(pageWrap.getModel().getSignDate())); } for(PageWrap.SortData sortData: pageWrap.getSorts()) { if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { queryWrapper.orderByDesc(sortData.getProperty()); } else { queryWrapper.orderByAsc(sortData.getProperty()); } } return PageData.from(companyMapper.selectPage(page, queryWrapper)); } @Override public long count(Company company) { QueryWrapper wrapper = new QueryWrapper<>(company); return companyMapper.selectCount(wrapper); } }