k94314517
2025-07-04 50fb58286ed3b718c39a97e0987ee7561a295651
server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -1,5 +1,6 @@
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;
@@ -9,6 +10,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.CompanyJoinMapper;
import com.doumee.dao.business.join.CompanySolutionJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.system.SystemUserMapper;
@@ -25,15 +27,22 @@
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.Indexed;
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.nio.charset.Charset;
import java.util.*;
import java.util.stream.Collectors;
/**
 * 企业信息表Service实现
@@ -43,8 +52,14 @@
@Service
public class CompanyServiceImpl implements CompanyService {
    @Value("${debug_model}")
    private boolean debugModel;
    @Autowired
    private CompanyMapper companyMapper;
    @Autowired
    private CompanyJoinMapper companyJoinMapper;
    @Autowired
    private CompanyDepartmentMapper companyDepartmentMapper;
    @Autowired
    private SystemUserMapper systemUserMapper;
    @Autowired
@@ -61,6 +76,8 @@
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private NoticesMapper noticesMapper;
    @Override
    @Transactional
@@ -69,9 +86,10 @@
        if(companyMapper.selectCount(new QueryWrapper<Company>().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(),"对不起,该企业【名称】【统一信用代码或者【手机号】已存在,请确认后重新提交!");
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该企业【名称】【统一信用代码】【邮箱】或者【手机号】已存在,请确认后重新提交!");
        }
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        company.setCreator(user.getId());
@@ -84,16 +102,71 @@
        companyMapper.insert(company);
        company.setEditDate(company.getCreateDate());
        company.setEditor(user.getId());
        //新建默认组织
        CompanyDepartment department = createDefaultDepart(company);
        //处理登陆账号信息
        dealSystemUserData(company);
        SystemUser sysuser = dealSystemUserData(company,department.getId());
        //处理附件信息
        dealFileData(company);
        //处理关联方案
        dealSolutionsData(company);
        return company;
    }
    private CompanyDepartment createDefaultDepart(Company company) {
        CompanyDepartment depart = new CompanyDepartment();
        depart.setCompanyId(company.getId());
        depart.setCreator(company.getCreator());
        depart.setCreateDate(company.getCreateDate());
        depart.setType(Constants.equalsInteger(company.getType(),Constants.ZERO)?Constants.ONE:Constants.TWO);
        depart.setName(company.getName());
        depart.setIsdeleted(Constants.ZERO);
        depart.setNamePath(company.getName());
        depart.setStatus(Constants.ZERO);
        depart.setRemark("默认根组织");
        companyDepartmentMapper.insert(depart);
        depart.setIdPath(company.getId()+"/");
        companyDepartmentMapper.updateById(depart);//更新路径
        return depart;
    }
    @Override
    @Transactional
    public Company createShop(Company company) {
        isValidCreateParam(company);
        if(companyMapper.selectCount(new QueryWrapper<Company>().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,createDefaultDepart(company).getId());
        //处理附件信息
        dealFileData(company);
        return company;
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void  updateSolutions(Company company) {
        if(company.getId()==null
                ||company.getSolutionList() == null
@@ -104,17 +177,65 @@
        if(model == null  || !Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO) ){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY );
        }
        companySolutionJoinMapper.delete(new UpdateWrapper<CompanySolution>().lambda().eq(CompanySolution::getCompanyId,company.getId()));
        //处理关联方案
        dealSolutionsData(company);
    }
    private void dealSystemUserData(Company 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<File> fileList = new ArrayList<>();
            List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().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() ;
            String encodeFileName =URLEncoder.encode(fileName, Charset.forName("UTF-8").toString())+".zip";
            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 SystemUser dealSystemUserData(Company company, Integer departId) {
        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Boolean.TRUE)
                .eq(SystemUser::getUsername,company.getUsername()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该登录账号已存在,请更新重试~");
        }
        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Boolean.TRUE)
                .eq(SystemUser::getMobile,company.getPhone()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该手机号已存在,请更换重试~");
        }
        SystemUser user = new SystemUser();
        user.setUsername(company.getUsername());
        // 生成密码盐
@@ -122,21 +243,30 @@
        // 生成密码
        user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD).getCode(), salt));
        user.setSalt(salt);
        user.setType(Constants.ONE);
        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.setRealname(company.getLegalName());
        user.setMobile(company.getPhone());
        user.setCreateUser(company.getCreator());
        user.setDepartmentId(departId);
        user.setCreateTime(company.getCreateDate());
        user.setStatus(Constants.ZERO);
        systemUserMapper.insert(user);
        return user;
    }
    private void dealSystemUserDataForUpdate (Company company,String oldUserName) {
        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Boolean.TRUE)
                .eq(SystemUser::getUsername,company.getUsername()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该登录账号已存在,请更新重试~");
        }
        if(systemUserMapper.selectCount(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Boolean.TRUE)
                .ne(SystemUser::getUsername,company.getUsername())
                .eq(SystemUser::getMobile,company.getPhone()))>0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,该手机号已存在,请更新重试~");
        }
        SystemUser model = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted,Boolean.TRUE)
@@ -149,16 +279,18 @@
            // 生成密码
            user.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.DEFAULT_PASSWORD).getCode(), salt));
            user.setSalt(salt);
            user.setType(Constants.ONE);
            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.setRealname(company.getLegalName());
            user.setCreateTime(company.getCreateDate());
            user.setStatus(Constants.ZERO);
            systemUserMapper.insert(user);//插入新的管理员账号
        }else{
            model.setMobile(company.getPhone());
            model.setUsername(company.getUsername());
            model.setCreateUser(company.getCreator());
            model.setCreateTime(company.getCreateDate());
@@ -176,11 +308,174 @@
        List<Integer> sIds = new ArrayList<>();
        List<CompanySolution> list = new ArrayList<>();
        int num =0;
        Date date = new Date();
        List<CompanySolution> addList = new ArrayList<>();
        List<CompanySolution> delList = new ArrayList<>();
        List<CompanySolution> updList = new ArrayList<>();
        List<CompanySolution> companySolutionList = companySolutionJoinMapper.selectList(new QueryWrapper<CompanySolution>().lambda().eq(CompanySolution::getCompanyId,company.getId()));
        for(CompanySolution s :company.getSolutionList()){
            if(s.getSolutionBaseId() == null){
            if(companySolutionList.stream().filter(i->Constants.equalsInteger(i.getSolutionBaseId(),s.getSolution().getBaseId())).collect(Collectors.toList()).size()>Constants.ZERO){
                updList.add(s);
            }else{
                addList.add(s);
            }
        }
        for (CompanySolution s:companySolutionList) {
            if( addList.stream().filter(i->Constants.equalsInteger(i.getSolution().getBaseId(),s.getSolutionBaseId())).collect(Collectors.toList()).size()>Constants.ZERO
            || updList.stream().filter(i->Constants.equalsInteger(i.getSolution().getBaseId(),s.getSolutionBaseId())).collect(Collectors.toList()).size()>Constants.ZERO
            ){
                continue;
            }
            sIds.add(s.getSolutionBaseId());
            delList.add(s);
        }
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(delList)){
            companySolutionJoinMapper.delete(new UpdateWrapper<CompanySolution>().lambda().in(CompanySolution::getId,delList.stream().map(i->i.getId()).collect(Collectors.toList())));
        }
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(addList)){
            for(CompanySolution s :addList){
                if(Objects.isNull(s.getSolution())){
                    continue;
                }
                if(s.getSolution().getBaseId() == null){
                    continue;
                }
                Solutions newVersion = solutionsMapper.selectOne(new QueryWrapper<Solutions>().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(),"请添加有效的保险方案信息!");
                }
                //查询方案的方案确认书
                Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda()
                        .eq(Multifile::getObjType,Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey())
                        .eq(Multifile::getIsdeleted,Constants.ZERO)
                        .eq(Multifile::getObjId,newVersion.getId())
                );
                if(Objects.isNull(multifile) ||  StringUtils.isBlank(multifile.getFileurl())){
                    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);
                s.setFileUrl(multifile.getFileurl());
                s.setSignStatus(Constants.ZERO);
                s.setSolutionName(newVersion.getName());
                list.add(s);
            }
            if(list.size() ==0){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息!");
            }
            List<Solutions> solutionsList = solutionsMapper.selectList(new QueryWrapper<Solutions>().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.insert(list);
            //存储待办信息
            Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SOLUTIONS;
            for (CompanySolution s:list) {
                Solutions newVersion = solutionsMapper.selectById(s.getSolutionId());
                //平台待办
                Notices notices = new Notices(noticeObjectType,
                        Constants.ONE
                        ,s.getId(),
                        newVersion.getName() ,
                        company.getId()
                        ,Constants.NoticeType.ZERO);
                noticesMapper.insert(notices);
            }
        }
    }
    /*private void dealSolutionsData(Company company) {
        List<Integer> sIds = new ArrayList<>();
        List<CompanySolution> 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<Solutions>().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(),"请添加有效的保险方案信息!");
            }
            //查询方案的方案确认书
            Multifile multifile = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda()
                    .eq(Multifile::getObjType,Constants.MultiFile.SOLUTIONS_CONFIRMATION_LATTER.getKey())
                    .eq(Multifile::getIsdeleted,Constants.ZERO)
                    .eq(Multifile::getObjId,newVersion.getId())
            );
            if(Objects.isNull(multifile) ||  StringUtils.isBlank(multifile.getFileurl())){
                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);
            s.setFileUrl(multifile.getFileurl());
            s.setSignStatus(Constants.ZERO);
            list.add(s);
        }
        if(list.size() ==0){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请添加有效的保险方案信息!");
        }
        List<Solutions> solutionsList = solutionsMapper.selectList(new QueryWrapper<Solutions>().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.insert(list);
    }*/
   /* private void dealSolutionsData(Company company) {
        List<Integer> sIds = new ArrayList<>();
        List<CompanySolution> 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()));
@@ -188,6 +483,8 @@
            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);
        }
@@ -205,9 +502,8 @@
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"保险方案【"+s.getName()+"】已被禁用,不能进行该操作");
            }
        }
        companySolutionJoinMapper.insertBatchSomeColumn(list);
    }
        companySolutionJoinMapper.insert(list);
    }*/
    private void isValidCreateParam(Company company) {
        if(StringUtils.isBlank(company.getPhone())
            ||StringUtils.isBlank(company.getName())
@@ -221,8 +517,11 @@
            ||StringUtils.isBlank(company.getEmail())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        //手机验证码校验
        SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche());
        String  phoneAtuh = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.COMPANY_PHONE_AUTH).getCode();
        if(!debugModel && !StringUtils.equals(phoneAtuh,Constants.ONE+"")){
            //手机验证码校验
            SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche());
        }
    }
@@ -234,40 +533,49 @@
        }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.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()));
                    multifileList.add(initMultiFileByCompay(company,f,Constants.MultiFile.COM_IDCARD_IMG.getKey()));
            }
        }else {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传身份证扫描件!");
        }
        multifileMapper.insertBatchSomeColumn(multifileList);
        multifileMapper.insert(multifileList);
    }
    private void dealFileDataForUpdate(Company company ) {
        List<Multifile> multifileList = new ArrayList<>();
        List<Integer> objList = new ArrayList<>();
        if(company.getBusinessImg()!=null && StringUtils.isNotBlank(company.getBusinessImg().getFileurl())){
        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());
        }else  {
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"请上传营业执照!");
        }
        if(company.getSignImg()!=null && StringUtils.isNotBlank(company.getSignImg().getFileurl())){
        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()));
            }
            objList.add(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<Multifile>().lambda()
@@ -278,7 +586,7 @@
                    .eq(Multifile::getIsdeleted,Constants.ZERO)
                    .in(Multifile::getObjType,objList)
            );
            multifileMapper.insertBatchSomeColumn(multifileList);
            multifileMapper.insert(multifileList);
        }
    }
@@ -329,7 +637,10 @@
                || StringUtils.isBlank(company.getCaptche())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST );
        }
        SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche());
        String  phoneAtuh = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.COMPANY_PHONE_AUTH).getCode();
        if(!debugModel && !StringUtils.equals(phoneAtuh,Constants.ONE+"")){
            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(),"手机号未发生改变~" );
@@ -367,9 +678,8 @@
    }
    private void isValidUpdateParam(Company company) {
        if( StringUtils.isBlank(company.getName())
                ||StringUtils.isBlank(company.getUsername())
//                ||StringUtils.isBlank(company.getUsername())
                ||StringUtils.isBlank(company.getCode())
                ||StringUtils.isBlank(company.getCaptche())
                ||StringUtils.isBlank(company.getLegalName())
                ||StringUtils.isBlank(company.getEmail()) ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -392,18 +702,21 @@
        if(companyMapper.selectCount(new QueryWrapper<Company>().lambda()
                .ne(Company::getId,company.getId())
                .eq(Company::getIsdeleted,Constants.ZERO)
                .and(w->w.eq(Company::getCode,company.getCode())
                    .or().eq(Company::getUsername,company.getUsername())
                    .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(),"对不起,该企业【名称】【统一信用代码或者【企业账号】已存在,请确认后重新提交!");
            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.setIsdeleted(company.getId());
        update.setName(company.getName());
        update.setCode(company.getCode());
        update.setEditDate(new Date());
@@ -414,18 +727,24 @@
        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())){
        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(company);
        companyMapper.updateById(update);
        company.setCreator(update.getEditor());
        company.setCreateDate(update.getEditDate());
        if(StringUtils.isNotBlank(company.getUsername())){
            //处理登陆账号信息
            company.setType(model.getType());
            dealSystemUserDataForUpdate(company,model.getUsername());
        }
@@ -444,7 +763,7 @@
    @Override
    public Company findById(Integer id) {
        Company model = findById(id);
        Company model = companyMapper.selectById(id);
        if(model == null ||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
        }
@@ -499,6 +818,7 @@
     *   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<Multifile>().lambda()
@@ -518,6 +838,33 @@
        //更新认证状态
        companyMapper.updateById(update);
    }
    @Override
    public   void startSignAuthAuto( ){
        List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().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<Multifile>().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){
@@ -530,8 +877,11 @@
                .eq(Company::getSignStatus,Constants.ONE));
        if(companyList!=null && companyList.size()>0){
            for(Company company :companyList){
                //查询企业签约状态 审批状态,0正在申请1通过2驳回
                //查询企业签约状态 审核状态,0正在申请1通过2驳回
                int status = signService.organizationAuditStatus(company.getEmail());
                if(status == 0){
                    continue;
                }
                if(status == 1){
                    Company update = new Company();
                    update.setId(company.getId());
@@ -547,7 +897,6 @@
                    //更新认证状态
                    companyMapper.updateById(update);
                }
            }
        }
@@ -561,11 +910,11 @@
    public void dealSignIdStatus(){
        List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda()
                .eq(Company::getIsdeleted,Constants.ZERO)
                .eq(Company::getSignStatus,Constants.ONE)
                .eq(Company::getSignStatus,Constants.THREE)
                .eq(Company::getSignIdStatus,Constants.ZERO));
        if(companyList!=null && companyList.size()>0){
            for(Company company :companyList){
                //查询企业签约状态 审批状态,0正在申请1通过2驳回
                //查询企业签约状态 审核状态,0正在申请1通过2驳回
                Multifile f = multifileMapper.selectOne(new QueryWrapper<Multifile>().lambda()
                        .eq(Multifile::getIsdeleted,Constants.ZERO)
                        .eq(Multifile::getObjType,Constants.MultiFile.COM_SING_IMG.getKey())
@@ -586,20 +935,60 @@
                        //更新认证状态
                        companyMapper.updateById(update);
                    }
                }
            }
        }
    }
//    @Override
//    public List<Company> findList(Company company) {
//        QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
//        return companyMapper.selectList(wrapper);
//    }
//
    @Override
    public List<Company> findList(Company company) {
        QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
        company.setIsdeleted(Constants.ZERO);
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        if(Constants.equalsInteger(company.getType(),Constants.ONE)){
        }else  {
            company.setType(Constants.ZERO);
            if(Constants.equalsInteger(user.getType(),Constants.TWO)){
                //如果是商户
                wrapper.lambda().exists("select c.id from company_solution c where c.isdeleted=0 and c.company_id=company.id and  c.shop_id="+user.getCompanyId());//设置无效访问
            }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 List<Company> findAllCompanyList() {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        List<Company> companyList = companyMapper.selectList(
               new QueryWrapper<Company>().lambda()
                       .eq(Company::getIsdeleted,Constants.ZERO)
                       .eq(Company::getType,Constants.ZERO)
                       .ne(Constants.equalsInteger(user.getType(),Constants.ONE),Company::getId,user.getCompanyId())
        );
        return companyList;
    }
    @Override
    public PageData<Company> findPage(PageWrap<Company> pageWrap) {
        IPage<Company> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -607,18 +996,29 @@
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        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());
            }
        if(Constants.formatIntegerNum(pageWrap.getModel().getType()) == Constants.ONE||Constants.formatIntegerNum(pageWrap.getModel().getType()) == Constants.ZERO) {
        }else{
            if(Constants.equalsInteger(user.getType(),Constants.TWO)){
                //如果是商户
                queryWrapper.lambda().exists("select c.id from company_solution c where c.isdeleted=0 and c.shop_id=company.id");//设置无效访问
            }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");
                } 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());
        }
@@ -658,7 +1058,7 @@
            queryWrapper.lambda().eq(Company::getCode, pageWrap.getModel().getCode());
        }
        if (pageWrap.getModel().getUsername() != null) {
            queryWrapper.lambda().eq(Company::getUsername, pageWrap.getModel().getUsername());
            queryWrapper.lambda().like(Company::getUsername, pageWrap.getModel().getUsername());
        }
        if (pageWrap.getModel().getTaxCode() != null) {
            queryWrapper.lambda().eq(Company::getTaxCode, pageWrap.getModel().getTaxCode());
@@ -679,7 +1079,7 @@
            queryWrapper.lambda().eq(Company::getInvoiceAddr, pageWrap.getModel().getInvoiceAddr());
        }
        if (pageWrap.getModel().getPhone() != null) {
            queryWrapper.lambda().eq(Company::getPhone, pageWrap.getModel().getPhone());
            queryWrapper.lambda().like(Company::getPhone, pageWrap.getModel().getPhone());
        }
        if (pageWrap.getModel().getEmail() != null) {
            queryWrapper.lambda().eq(Company::getEmail, pageWrap.getModel().getEmail());