jiangping
2024-01-18 3414e42ae766b0457a03fb97995abf07e2d074c2
调整
已添加1个文件
已修改13个文件
804 ■■■■■ 文件已修改
server/company/src/main/java/com/doumee/api/business/CompanyController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/task/ScheduleTool.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/MultifileMapper.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/join/CompanySolutionJoinMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Company.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/CompanySolution.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Multifile.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/CompanyService.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/SmsEmailService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java 507 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/third/SignService.java 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/company/src/main/java/com/doumee/api/business/CompanyController.java
@@ -36,7 +36,9 @@
    @PostMapping("/create")
    @RequiresPermissions("business:company:create")
    public ApiResponse create(@RequestBody Company company) {
        return ApiResponse.success(companyService.create(company));
        companyService.create(company);
        companyService.startSignAuth(company.getId());
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID删除")
@@ -65,6 +67,29 @@
    @RequiresPermissions("business:company:update")
    public ApiResponse updateById(@RequestBody Company company) {
        companyService.updateById(company);
        companyService.startSignAuth(company.getId());
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID禁用启用")
    @PostMapping("/updateStatus")
    @RequiresPermissions("business:company:update")
    public ApiResponse updateStatus(@RequestBody Company company) {
        companyService.updateStatus(company);
        return ApiResponse.success(null);
    }
    @ApiOperation("企业更换手机号")
    @PostMapping("/updatePhone")
    @RequiresPermissions("business:company:update")
    public ApiResponse updatePhone(@RequestBody Company company) {
        companyService.updatePhone(company);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID电子签认证企业信息")
    @PostMapping("/startSignAuth/{id}")
    @RequiresPermissions("business:company:update")
    public ApiResponse startSignAuth(@PathVariable Integer id) {
        companyService.startSignAuth(id);
        return ApiResponse.success(null);
    }
@@ -93,7 +118,8 @@
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:company:query")
    public ApiResponse findById(@PathVariable Integer id) {
    public ApiResponse<Company> findById(@PathVariable Integer id) {
        return ApiResponse.success(companyService.findById(id));
    }
}
server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -1,6 +1,8 @@
package com.doumee.task;
import com.doumee.service.business.CompanyService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@@ -14,16 +16,27 @@
 */
@Component
@EnableScheduling
@Slf4j
public class ScheduleTool {
    @Autowired
    private CompanyService companyService;
    /**
     * å®šæ—¶å¤„理爬虫源数据,生成素材库数据
     * @throws Exception
     */
    @Scheduled(fixedDelay=30*60*1000,initialDelay = 30000)
    public void dealOploadEvent() throws Exception {
    @Scheduled(fixedDelay= 60*1000,initialDelay = 30000)
    public void dealComSignAuthStatus() throws Exception {
        log.info("==============定时查询企业电子签认证状态=======start======");
        companyService.dealSignAuthStatus();
        log.info("==============定时查询企业电子签认证状态======end=======");
    }
    /**
     * @throws Exception
     */
    @Scheduled(fixedDelay= 60*1000,initialDelay = 30000)
    public void dealComSigIdStatus() throws Exception {
        log.info("==============定时上传待上传的企业电子印章数据=======start======");
        companyService.dealSignIdStatus();
        log.info("==============定时上传待上传的企业电子印章数据======end=======");
    }
}
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -63,6 +63,8 @@
    public static final String SIGN_URL = "SIGN_URL";
    public static final String SIGN_APPKEY = "SIGN_APPKEY";
    public static final String SIGN_APPSECRET = "SIGN_APPSECRET";
    public static final String COMPANY_FILE ="COMPANY_FILE" ;
    public static final String SMS_COMNAME = "SMS_COMNAME";
    /**
     * ä¼ä¸šæ•°æ®æ¥æº 0平台注册 1后台导入
@@ -71,7 +73,17 @@
        public static final  int platformRegister  = 0;
        public static final  int backstageImport  = 1;
    }
    public static String getRandom6Num( ) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            int digit = random.nextInt(10);
            sb.append(digit);
        }
        return sb.toString();
    }
    public static BigDecimal formatBigdecimal(BigDecimal d) {
        if (d == null) {
            d = new BigDecimal(0.0);
@@ -324,27 +336,22 @@
         int basedata = 2;
    }
    /**
     * å…³è”对象类型 0企业营业执照 1工商变更登记  2项目申报企业资料 3企业评分表 4诊断报告 5诊断服务资料 6专家评分报告 7服务机构上传服务资料 8企业资质 9企业中标通知书 10项目图片
     * å…³è”对象类型
     å…³è”对象类型 0企业营业执照 1理赔报案事故视频或图片 2理赔员工关系证明材料 3理赔门诊资料 4理赔住院资料 5理赔伤残资料 6理赔赔付结案材料 7企业身份证号 8保单申请表PDF 9签署后保单申请表PDF 10企业签章 11最终报单
     */
    public  enum MultiFile{
        BUSINESS_LICENSE(0, "企业营业执照", "企业营业执照"),
        BUSINESS_CHANGE(1, "工商变更登记", "工商变更登记"),
        BUSINESS_DECLARE(2, "项目申报企业资料", "项目申报企业资料"),
        BUSINESS_SCORE(3, "企业评分表", "企业评分表"),
        BUSINESS_DIAGNOSIS(4, "诊断报告", "诊断报告"),
        BUSINESS_DIA_SERVICE(5, "诊断服务资料", "诊断服务资料"),
        BUSINESS_EXPERT(6, "专家评分报告", "专家评分报告"),
        BUSINESS_UP_SERVICE(7, "服务机构上传服务资料", "服务机构上传服务资料"),
        BUSINESS_ZZ(8, "企业资质", "企业资质"),
        BUSINESS_NOTICE(9, "企业中标通知书", "企业中标通知书"),
        BUSINESS_PROURL(10, "项目图片", "项目图片"),
        COMPANY_CHANGE_LICENSE(11,"变更企业营业执照","变更企业营业执照"),
        COMPANY_CHANGE_CHANGE(12,"变更工商变更登记","变更工商变更登记"),
        BUSINESS_HC(13, "综合服务单位核查资料", "综合服务单位核查资料"),
        BUSINESS_UP_EXTRA(14, "服务机构上传服务补充资料", "服务机构上传服务补充资料"),
        COM_BUSINESS_LICENSE(0, "企业营业执照", "企业营业执照"),
        LP_SGXC_FILE(1, "理赔报案事故视频或图片", "理赔报案事故视频或图片"),
        LP_YGGX_FILE(2, "理赔员工关系证明材料 ", "理赔员工关系证明材料 "),
        LP_MZCL_FILE(3, "理赔门诊资料 ", "理赔门诊资料"),
        LP_ZYCL_FILE(4, "理赔住院资料", "理赔住院资料"),
        LP_SCZL_FILE(5, "理赔伤残资料", "理赔伤残资料"),
        LP_JACL_FILE(6, "理赔赔付结案材料", "理赔赔付结案材料"),
        COM_IDCARD_IMG(7, "企业身份证号", "企业身份证号"),
        BD_APPLY_PDF(8, "保单申请表PDF ", "保单申请表PDF "),
        BD_SIGNED_PDF(9, "签署后保单申请表PDF", "签署后保单申请表PDF"),
        COM_SING_IMG(10, "企业印章", "企业印章"),
        BD_DONE_PDF(10, "最终报单", "最终报单"),
        ;
server/service/src/main/java/com/doumee/dao/business/MultifileMapper.java
@@ -1,12 +1,15 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.CompanyPermission;
import com.doumee.dao.business.model.Multifile;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/01/16 10:03
 */
public interface MultifileMapper extends BaseMapper<Multifile> {
    void insertBatchSomeColumn(List<Multifile> list);
}
server/service/src/main/java/com/doumee/dao/business/join/CompanySolutionJoinMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.doumee.dao.business.join;
import com.doumee.dao.business.model.CompanySolution;
import com.github.yulichang.base.mapper.MPJJoinMapper;
import java.util.List;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2024/01/16 10:03
 */
public interface CompanySolutionJoinMapper extends MPJJoinMapper<CompanySolution> {
    void insertBatchSomeColumn(List<CompanySolution> solutionList);
}
server/service/src/main/java/com/doumee/dao/business/model/Company.java
@@ -10,6 +10,7 @@
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
/**
 * ä¼ä¸šä¿¡æ¯è¡¨
@@ -51,6 +52,9 @@
    @ApiModelProperty(value = "名称")
    @ExcelColumn(name="名称")
    private String name;
    @ApiModelProperty(value = "法人姓名")
    @ExcelColumn(name="法人姓名")
    private String legalName;
    @ApiModelProperty(value = "备注")
    @ExcelColumn(name="备注")
@@ -107,9 +111,15 @@
    @ApiModelProperty(value = "企业邮箱")
    @ExcelColumn(name="企业邮箱")
    private String email;
    @ApiModelProperty(value = "企业电子章编码")
    @ExcelColumn(name="企业电子章编码")
    private String signId;
    @ApiModelProperty(value = "企业电子章状态 0未上传 1已上传 2上传失败")
    @ExcelColumn(name="企业电子章状态")
    private Integer signIdStatus;
    @ApiModelProperty(value = "企业电子签认证状态 0待认证 1已认证 2认证失败", example = "1")
    @ExcelColumn(name="企业电子签认证状态 0待认证 1已认证 2认证失败")
    @ApiModelProperty(value = "企业电子签认证状态 0待认证 1认证中 2认证失败 3认证通过", example = "1")
    @ExcelColumn(name="企业电子签认证状态 0待认证 1认证中 2认证失败 3认证通过")
    private Integer signStatus;
    @ApiModelProperty(value = "电子签认证时间")
@@ -123,4 +133,23 @@
    @TableField(exist = false)
    private int hasPerimission ;
    @ApiModelProperty(value = "方案集合" )
    @TableField(exist = false)
    private List<CompanySolution> solutionList;
    @ApiModelProperty(value = "营业执照" )
    @TableField(exist = false)
    private  Multifile  businessImg;
    @ApiModelProperty(value = "法人身份证照片" )
    @TableField(exist = false)
    private List<Multifile> idcardImgList;
    @ApiModelProperty(value = "企业签章图片" )
    @TableField(exist = false)
    private  Multifile  signImg;
    @ApiModelProperty(value = "验证码")
    @TableField(exist = false)
    private String captche;
}
server/service/src/main/java/com/doumee/dao/business/model/CompanySolution.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -9,6 +10,7 @@
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.List;
/**
 * ä¼ä¸šå¯ç”¨ä¿é™©æ–¹æ¡ˆå…³è”表
@@ -74,5 +76,8 @@
    @ApiModelProperty(value = "是否可减保 0否 1是", example = "1")
    @ExcelColumn(name="是否可减保 0否 1是")
    private Integer canReduce;
    @ApiModelProperty(value = "方案名称" )
    @TableField(exist = false)
    private String solutionName  ;
}
server/service/src/main/java/com/doumee/dao/business/model/Multifile.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -69,6 +70,9 @@
    @ApiModelProperty(value = "文件地址")
    @ExcelColumn(name="文件地址")
    private String fileurl;
    @ApiModelProperty(value = "文件完整访问地址")
    @TableField(exist = false)
    private String fileurlFull;
    @ApiModelProperty(value = "排序码", example = "1")
    @ExcelColumn(name="排序码")
server/service/src/main/java/com/doumee/dao/business/model/SmsEmail.java
@@ -65,7 +65,7 @@
    @ApiModelProperty(value = "手机号", example = "1")
    @ExcelColumn(name="手机号")
    private Integer phone;
    private String phone;
    @ApiModelProperty(value = "邮箱")
    @ExcelColumn(name="邮箱")
@@ -73,11 +73,11 @@
    @ApiModelProperty(value = "状态 0未使用 1已使用")
    @ExcelColumn(name="状态 0未使用 1已使用")
    private String status;
    private Integer status;
    @ApiModelProperty(value = "类型 0短信 1邮件")
    @ExcelColumn(name="类型 0短信 1邮件")
    private String type;
    private Integer type;
    @ApiModelProperty(value = "关联对象编码", example = "1")
    @ExcelColumn(name="关联对象编码")
server/service/src/main/java/com/doumee/service/business/CompanyService.java
@@ -18,8 +18,9 @@
     * @param company å®žä½“对象
     * @return Integer
     */
    Integer create(Company company);
    Company create(Company company);
    void updateStatus(Company company);
    void updatePhone(Company company);
    /**
     * ä¸»é”®åˆ é™¤
     *
@@ -46,7 +47,7 @@
     *
     * @param company å®žä½“对象
     */
    void updateById(Company company);
    Company updateById(Company company);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
@@ -94,4 +95,8 @@
     * @return long
     */
    long count(Company company);
    void startSignAuth(Integer id);
    void dealSignAuthStatus();
    void   dealSignIdStatus();
}
server/service/src/main/java/com/doumee/service/business/SmsEmailService.java
@@ -19,7 +19,7 @@
     * @return Integer
     */
    Integer create(SmsEmail smsEmail);
    Integer sendSms(SmsEmail smsEmail);
    /**
     * ä¸»é”®åˆ é™¤
     *
server/service/src/main/java/com/doumee/service/business/impl/CompanyServiceImpl.java
@@ -1,5 +1,6 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
@@ -7,22 +8,32 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CompanyMapper;
import com.doumee.dao.business.CompanyPermissionMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.business.model.CompanyPermission;
import com.doumee.dao.business.model.Insurance;
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.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.io.File;
import java.lang.reflect.Array;
import java.net.URI;
import java.util.*;
/**
 * ä¼ä¸šä¿¡æ¯è¡¨Service实现
@@ -35,18 +46,294 @@
    @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
    public Integer create(Company company) {
    @Transactional
    public Company create(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::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);
        return company.getId();
        company.setEditDate(company.getCreateDate());
        company.setEditor(user.getId());
        //处理登陆账号信息
        dealSystemUserData(company);
        //处理附件信息
        dealFileData(company);
        //处理关联方案
        dealSolutionsData(company);
        return company;
    }
    private void dealSystemUserData(Company company) {
        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(),"对不起,该登录账号已存在,请更新重试~");
        }
        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.ONE);
        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<SystemUser>().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<SystemUser>().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.ONE);
            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<Integer> sIds = new ArrayList<>();
        List<CompanySolution> list = new ArrayList<>();
        int num =0;
        for(CompanySolution s :company.getSolutionList()){
            if(s.getSolutionBaseId() == null){
                continue;
            }
            sIds.add(s.getSolutionBaseId());
            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.setStatus(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.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);
        }
        //手机验证码校验
        SmsEmailServiceImpl.isCaptcheValide(smsEmailMapper,company.getPhone(),company.getCaptche());
    }
    private void dealFileData(Company company ) {
        List<Multifile> 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<Multifile> multifileList = new ArrayList<>();
        List<Integer> objList = new ArrayList<>();
        if(company.getBusinessImg()!=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())){
            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(company.getIdcardImgList()!=null && company.getIdcardImgList()!=null){
            for(Multifile f : company.getIdcardImgList()){
                multifileList.add(initMultiFileByCompay(company,f,Constants.MultiFile.COM_IDCARD_IMG.getKey()));
            }
            objList.add(Constants.MultiFile.COM_IDCARD_IMG.getKey());
        }
        if(objList.size()>0){
            multifileMapper.update(null,new UpdateWrapper<Multifile>().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<Company>()
                .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 );
        }
        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<Company>().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<Company>()
                .lambda()
                .eq(Company::getId,model.getId())
                .set(Company::getEditDate,new Date())
                .set(Company::getEditor,user.getId())
                .set(Company::getPhone,company.getPhone())
        );
    }
    @Override
@@ -62,14 +349,71 @@
        }
        companyMapper.deleteBatchIds(ids);
    }
    private void isValidUpdateParam(Company company) {
        if( StringUtils.isBlank(company.getName())
                ||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);
        }
    }
    @Override
    public void updateById(Company company) {
    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<Company>().lambda()
                .ne(Company::getId,company.getId())
                .and(w->w.eq(Company::getCode,company.getCode())
                    .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();
        dealFileDataForUpdate(company);
        Company update = new Company();
        update.setIsdeleted(company.getId());
        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.setInvoiceAddr(company.getInvoiceAddr());
        update.setSignIdStatus(company.getSignIdStatus());
        update.setInvoiceEmail(company.getInvoiceEmail());
        if(StringUtils.isNotBlank(company.getEmail())){
            //如果邮箱发生改变
            update.setSignStatus(Constants.ZERO);
        }
        companyMapper.updateById(company);
        company.setCreator(update.getEditor());
        company.setCreateDate(update.getEditDate());
        if(StringUtils.isNotBlank(company.getUsername())){
            //处理登陆账号信息
            dealSystemUserDataForUpdate(company,model.getUsername());
        }
        return  company;
    }
    @Override
@@ -84,7 +428,49 @@
    @Override
    public Company findById(Integer id) {
        return companyMapper.selectById(id);
        Company model = findById(id);
        if(model == null ||Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        MPJLambdaWrapper<CompanySolution> 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<Multifile> multifiles = multifileMapper.selectList(new QueryWrapper<Multifile>().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
@@ -92,6 +478,105 @@
        QueryWrapper<Company> wrapper = new QueryWrapper<>(company);
        return companyMapper.selectOne(wrapper);
    }
    /**
     * ç”µå­ç­¾è®¤è¯
     *   public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,File  businessimg,String notifyUrl){
     */
    @Override
    public   void startSignAuth(Integer id){
        Company company = companyMapper.selectById(id);
        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){
     */
    @Override
    @Synchronized//单例执行
    public void dealSignAuthStatus(){
        List<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().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 == 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<Company> companyList = companyMapper.selectList(new QueryWrapper<Company>().lambda()
                .eq(Company::getIsdeleted,Constants.ZERO)
                .eq(Company::getSignStatus,Constants.ONE)
                .eq(Company::getSignIdStatus,Constants.ZERO));
        if(companyList!=null && companyList.size()>0){
            for(Company company :companyList){
                //查询企业签约状态 å®¡æ‰¹çŠ¶æ€,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())
                        .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<Company> findList(Company company) {
server/service/src/main/java/com/doumee/service/business/impl/SmsEmailServiceImpl.java
@@ -1,7 +1,11 @@
package com.doumee.service.business.impl;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
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.SmsEmailMapper;
import com.doumee.dao.business.model.SmsEmail;
@@ -10,10 +14,13 @@
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.EmayService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
/**
@@ -26,12 +33,56 @@
    @Autowired
    private SmsEmailMapper smsEmailMapper;
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private EmayService emayService;
    public static void isCaptcheValide(SmsEmailMapper smsEmailMapper, String phone, String captche) {
        SmsEmail model = smsEmailMapper.selectOne(new QueryWrapper<SmsEmail>().lambda()
                .eq(SmsEmail::getType, Constants.ZERO)
                .eq(SmsEmail::getPhone, phone)
                .eq(SmsEmail::getRemark, captche)
                .eq(SmsEmail::getIsdeleted, Constants.ZERO)
        );
        if(model == null){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码不正确,请重新发送再试!");
        }
        if(!Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试!");
        }
        if(model.getCreateDate() !=null && System.currentTimeMillis() - model.getCreateDate().getTime() > 3*60*100){
            model.setStatus(Constants.ONE);
            model.setEditDate(new Date());
            smsEmailMapper.updateById(model);
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,验证码已失效,请重新发送再试~");
        }
        model.setStatus(Constants.ONE);
        model.setEditDate(new Date());
        smsEmailMapper.updateById(model);
    }
    @Override
    public Integer create(SmsEmail smsEmail) {
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
    }
    @Override
    public Integer sendSms(SmsEmail smsEmail) {
        if(StringUtils.isBlank(smsEmail.getPhone())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String code = Constants.getRandom6Num();
        smsEmail.setRemark(code);
        smsEmail.setIsdeleted(Constants.ZERO);
        smsEmail.setCreateDate(new Date());
        smsEmail.setStatus(Constants.ZERO);
        smsEmail.setType(Constants.ZERO);
        smsEmail.setTitle("短信验证码");
        smsEmail.setContent(systemDictDataBiz.queryByCode(Constants.SMS,Constants.SMS_COMNAME).getCode()+"验证码为:"+code+",此验证码有效为3分钟。请勿泄露");
        smsEmailMapper.insert(smsEmail);
        return smsEmail.getId();
    }
    @Override
    public void deleteById(Integer id) {
server/service/src/main/java/com/doumee/service/business/third/SignService.java
@@ -19,9 +19,15 @@
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URL;
import java.util.Date;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.UUID;
/**
 * <ul>
@@ -113,12 +119,16 @@
     * @param creditCode
     * @param legalName
     * @param email
     * @param businessimg
     * @param businessimgPath
     * @param notifyUrl
     * @return
     */
    public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,File  businessimg,String notifyUrl){
    public boolean organizationCreate (String fullname,String creditCode,String legalName,String email,String businessimgPath, String notifyUrl){
        try {
            File  businessimg =netFileToLoclFile(businessimgPath);
            if(businessimg == null || !businessimg.isFile() || !businessimg.exists()){
                return false;
            }
            Map<String, Object>  params=bodyParams;
            String url=SERVICE_URL+"/v2/user/organizationCreate";
            params.put("name",fullname);
@@ -131,6 +141,7 @@
            params.put("legalName",legalName);
            params.put("emailOrMobile",email);
            String str= HttpClientUtils.init().getPost(url,null,params,true);
            businessimg.delete();
            saveInterfaceLog(url,"【电子签】发起企业认证申请",JSONObject.toJSONString(params),str);
            JSONObject json = JSONObject.parseObject(str);
            if(json!=null && json.getBoolean("success")){
@@ -149,12 +160,16 @@
     * @param creditCode
     * @param legalName
     * @param email
     * @param businessimg
     * @param businessimgPath
     * @param notifyUrl
     * @return
     */
    public boolean organizationReApply(String fullname,String creditCode,String legalName,String email,File  businessimg,String notifyUrl){
    public boolean organizationReApply(String fullname,String creditCode,String legalName,String email,String businessimgPath,String notifyUrl){
        try {
            File  businessimg = new File(new URI(businessimgPath));
            if(businessimg == null|| !businessimg.isFile() || !businessimg.exists()){
                return false ;
            }
            Map<String, Object>  params=bodyParams;
            String url=SERVICE_URL+"/v2/user/organizationReapply";
            params.put("name",fullname);
@@ -167,6 +182,7 @@
            params.put("legalName",legalName);
            params.put("emailOrMobile",email);
            String str= HttpClientUtils.init().getPost(url,null,params,true);
            businessimg.delete();
            saveInterfaceLog(url,"【电子签】重新发起企业认证申请",JSONObject.toJSONString(params),str);
            JSONObject json = JSONObject.parseObject(str);
            if(json!=null && json.getBoolean("success")){
@@ -180,6 +196,33 @@
    }
    /**
     * ç½‘络文件转本地临时文件
     * @param fileUrl
     * @return
     */
    public static File netFileToLoclFile(String fileUrl)  {
        try {
            URL url = new URL(fileUrl);
            InputStream inputStream = url.openConnection().getInputStream();
            File file = File.createTempFile( "temp",""+UUID.randomUUID().toString()+fileUrl.substring(fileUrl.lastIndexOf("."))); // æŒ‡å®šä¿å­˜åˆ°æœ¬åœ°çš„æ–‡ä»¶ååŠè·¯å¾„
            OutputStream outputStream = new FileOutputStream(file);
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, bytesRead);
            }
            outputStream.close();
            inputStream.close();
            return file;
        }catch (Exception e){
        }
        return null;
    }
    /**
     * æŸ¥è¯¢ä¼ä¸šç­¾çº¦çŠ¶æ€ å®¡æ‰¹çŠ¶æ€,0正在申请1通过2驳回
     * @param email
@@ -206,22 +249,23 @@
    /**
     * å‘起签约
     * @param name
     * @param file
     * @param fileUrl
     * @param fullname
     * @param creditCoe
     * @param email
     * @param postionJson
     */
    public String applySign(String name,File file,String fullname,String creditCoe,String email,String postionJson,String singId){
    public String applySign(String name,String fileUrl,String fullname,String creditCoe,String email,String postionJson,String singId){
      try {
          String url=SERVICE_URL+"/v2/sign/applySign";
          Map<String, Object>  params=bodyParams;
          params.put("contractName",name); //合同名称
          params.put("serverCa",1); //使用云证书
          params.put("file",file);
//          params.put("file",file);
          params.put("url",fileUrl);
          params.put("dealType",5); //指定合同文件签署方式 5 ä¸ºéƒ¨åˆ†è‡ªåŠ¨ç­¾
          params.put("positionType",1); //指定通过表单域方式设置签字位置
          params.put("fileType",0);
          params.put("fileType",1);
          params.put("needQifengSign",1);
          JSONArray signatories=new JSONArray();
          SignatoryReq sReq=new SignatoryReq();
@@ -304,11 +348,12 @@
    /**
     * ä¸Šä¼ ä¼ä¸šè‡ªå®šä¹‰å°ç« (返回印章ID)
     * @param signName
     * @param signImgFile
     * @param path
     */
    public String  uploadEntSign(String signName,File signImgFile,String email ) {
    public String  uploadEntSign(String signName,String path,String email ) {
        try {
            File signImgFile = new File(new URI(path));
            Map<String, Object> params = bodyParams;
            String url = SERVICE_URL + "/v2/user/uploadEntSign";
            //构建请求参数