Merge branch 'hjb' of SH-Arbitrate/Arbitrate-Backend into dev

This commit was merged in pull request #202.
This commit is contained in:
2023-11-10 18:21:41 +08:00
committed by Gitea
17 changed files with 859 additions and 147 deletions
@@ -1,5 +1,6 @@
package com.ruoyi.web.controller.wisdomarbitrate;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
@@ -9,10 +10,13 @@ import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.DeptIdentify;
import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
import com.ruoyi.wisdomarbitrate.domain.SmsSendRecord;
import com.ruoyi.wisdomarbitrate.domain.vo.SealListVO;
import com.ruoyi.wisdomarbitrate.service.IDeptIdentifyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -49,8 +53,51 @@ public class DeptIdentifyController extends BaseController {
return deptIdentifyService.enableDept(deptIdentify);
}
/**
* 上传自定义公章
*
* @param deptIdentify
* @param file
* @return
*/
@PostMapping("/sealUpload")
public AjaxResult sealUpload(@Validated @RequestBody DeptIdentify deptIdentify
, @RequestParam("file") MultipartFile file) {
return deptIdentifyService.sealUpload(deptIdentify, file);
}
/**
* 接收E签宝回调通知
* @param body
* @return
*/
@GetMapping("/notify")
public AjaxResult receiveNotify(String body) {
return deptIdentifyService.receiveNotify(body);
}
/**
* 签章图片列表查询
* @param deptIdentify
* @return
*/
@GetMapping("/sealList")
public TableDataInfo getSealList(DeptIdentify deptIdentify){
startPage();
List<SealListVO> list = deptIdentifyService.getSealList(deptIdentify);
return getDataTable(list);
}
/**
* 印章启用或者禁用
* @param deptIdentify
* @return
*/
@PostMapping("/updateSealLockStatus")
public AjaxResult updateSealLockStatus(@Validated @RequestBody DeptIdentify deptIdentify){
if(deptIdentify.getSealId()==null ||deptIdentify.getSealStatus()==null){
return error("参数校验失败");
}
return deptIdentifyService.updateSealLockStatus(deptIdentify);
}
}
@@ -0,0 +1,124 @@
package com.ruoyi.common.utils;
import com.ruoyi.common.config.EsignDemoConfig;
import com.ruoyi.common.constant.EsignHeaderConstant;
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
import com.ruoyi.common.enums.EsignRequestType;
import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.utils.bean.EsignFileBean;
import java.util.Map;
public class SealUtil {
private static String eSignHost = EsignDemoConfig.EsignHost;
private static String eSignAppId = EsignDemoConfig.EsignAppId;
private static String eSignAppSecret = EsignDemoConfig.EsignAppSecret;
/**
* 获取机构认证&授权页面链接
*
* @return
*/
public static EsignHttpResponse getOrgEmpower() throws EsignDemoException {
String apiaddr = "/v3/org-auth-url";
String nickName = "何进波";
String phonenumber = "15191509780";
String deptName = "西安云美公司";
String jsonParm = "{\n" +
" \"orgAuthConfig\": {\n" +
" \"orgName\": \"" + deptName + " \",\n" +
" \"transactorInfo\": {\n" +
" \"psnAccount\": \"" + phonenumber + "\",\n" +
" \"psnInfo\": {\n" +
" \"psnName\": \"" + nickName + "\",\n" +
" \"psnMobile\": \"" + phonenumber + "\"\n" +
" }\n" +
" }\n" +
" },\n" +
" \"authorizeConfig\": {\n" +
" \"authorizedScopes\": [\n" +
" \"get_org_identity_info\",\n" +
" \"get_psn_identity_info\",\n" +
" \"org_initiate_sign\",\n" +
" \"psn_initiate_sign\",\n" +
" \"manage_org_resource\",\n" +
" \"manage_psn_resource\",\n" +
" \"use_org_order\"\n" +
" ]\n" +
" }\n" +
"}";
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成请求签名鉴权方式的Header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
}
/**
* 查询认证授权流程详情
*
* @return
*/
public static EsignHttpResponse queryAuthProcess(String authFlowId ) throws EsignDemoException {
String apiaddr = "/v3/auth-flow/" + authFlowId;
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
String jsonParm=null;
//请求方法
EsignRequestType requestType= EsignRequestType.GET;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
}
/**
* 步骤一:获取印章图片上传地址fileUploadUrl
*
* @return
*/
public static EsignHttpResponse getFileUploadUrl(String filePath) throws EsignDemoException {
//自定义的文件封装类,传入文件地址可以获取文件的名称大小,文件流等数据
EsignFileBean esignFileBean = new EsignFileBean(filePath);
String apiaddr="/v3/files/file-key";
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
String jsonParm="{\n" +
" \"contentMd5\": \""+esignFileBean.getFileContentMD5()+"\",\n" +
" \"fileName\":\""+esignFileBean.getFileName()+"\"," +
" \"fileSize\": "+esignFileBean.getFileSize()+",\n" +
" \"contentType\": \""+ EsignHeaderConstant.CONTENTTYPE_STREAM.VALUE()+"\"\n" +
"}";
//请求方法
EsignRequestType requestType= EsignRequestType.POST;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
//发起接口请求
EsignHttpResponse response = EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
System.out.println(response);
return response;
}
/**
* 步骤二:将印章图片文件流上传到fileUploadUrl
*
* @return
*/
public static EsignHttpResponse fileStreamUpload(String uploadUrl,String filePath) throws EsignDemoException {
//根据文件地址获取文件contentMd5
EsignFileBean esignFileBean = new EsignFileBean(filePath);
//请求方法
EsignRequestType requestType= EsignRequestType.PUT;
return EsignHttpHelper.doUploadHttp(uploadUrl,requestType,esignFileBean.getFileBytes(),esignFileBean.getFileContentMD5(), EsignHeaderConstant.CONTENTTYPE_STREAM.VALUE(),true);
}
public static void main(String[] args) throws Exception {
// createOrgByImage();
// getOrgEmpower();
// queryAuthProcess("OF-2b00885895080028");
// getFileUploadUrl();
// String uplodUrl = "https://esignoss.esign.cn/7438987614/8e278262-5960-4004-bff3-297c11e2652e/Snipaste_2023-10-27_09-59-23.jpg?Expires=1699439095&OSSAccessKeyId=STS.NTZ8NBHcTVQXgsxVRH4iyC5AY&Signature=3yu3ZQifphZsnOgN0CI0SJdqFhY%3D&callback-var=eyJ4OmZpbGVfa2V5IjoiJDliM2Y3ZjkyLTdkOWUtNGZkZi04NWU4LWE4ZDU4MzEwZjIzOCQ0MTQwNTE2ODk5In0%3D%0A&callback=eyJjYWxsYmFja1VybCI6Imh0dHA6Ly9zbWx0YXBpLnRzaWduLmNuL2FueWRvb3IvZmlsZS1zeXN0ZW0vY2FsbGJhY2svYWxpb3NzIiwiY2FsbGJhY2tCb2R5IjogIntcIm1pbWVUeXBlXCI6JHttaW1lVHlwZX0sXCJzaXplXCI6ICR7c2l6ZX0sXCJidWNrZXRcIjogJHtidWNrZXR9LFwib2JqZWN0XCI6ICR7b2JqZWN0fSxcImV0YWdcIjogJHtldGFnfSxcImZpbGVfa2V5XCI6JHt4OmZpbGVfa2V5fX0iLCJjYWxsYmFja0JvZHlUeXBlIjogImFwcGxpY2F0aW9uL2pzb24ifQ%3D%3D%0A&security-token=CAIS%2BAF1q6Ft5B2yfSjIr5fvc%2FT2pbx14ZOzZVXJslIdOOZVrPDquzz2IHtKdXRvBu8Xs%2F4wnmxX7f4YlqB6T55OSAmcNZEoWWWTbdH4MeT7oMWQweEurv%2FMQBqyaXPS2MvVfJ%2BOLrf0ceusbFbpjzJ6xaCAGxypQ12iN%2B%2Fm6%2FNgdc9FHHPPD1x8CcxROxFppeIDKHLVLozNCBPxhXfKB0ca0WgVy0EHsPnvm5DNs0uH1AKjkbRM9r6ceMb0M5NeW75kSMqw0eBMca7M7TVd8RAi9t0t1%2FIVpGiY4YDAWQYLv0rda7DOltFiMkpla7MmXqlft%2BhzcgeQY0pc%2FRqAAXGx8FDtPQxW3RSasFgOFBJaxbYjH3WFFrbV25v8a%2BS9OWPAYqOCvmkxbM7N4hOge2iaBAG4SRLMb6ypPJ15YEpoZI8KkdeDvQJryZEWchmc0Lhz0yDRqrN%2BzYhgu4VpBJu1WJg%2FyXrvAZ0gWhBN%2BILrblSR9QHVWVVYZTAKN4ejIAA%3D";
// fileStreamUpload(uplodUrl,"D:\\develop\\Snipaste_2023-10-27_09-59-23.jpg");
}
}
@@ -82,7 +82,7 @@ public class SaaSAPIFileUtils {
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,false);
}
@@ -43,4 +43,5 @@ public class CaseAttach {
*/
private String userName;
}
@@ -2,7 +2,6 @@ package com.ruoyi.wisdomarbitrate.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Date;
public class DeptIdentify extends BaseEntity {
@@ -33,6 +32,56 @@ public class DeptIdentify extends BaseEntity {
/** 印章名称 */
private String sealName;
/** 机构账号ID */
private String orgId;
/** 认证授权流程ID */
private String authFlowId;
public String getSealId() {
return sealId;
}
public void setSealId(String sealId) {
this.sealId = sealId;
}
/** 印章id */
private String sealId;
/**
* 附件id
*/
private Integer annexId;
/**
* 印章状态 0禁用,1启用
*/
private Integer sealStatus;
public Integer getAnnexId() {
return annexId;
}
public void setAnnexId(Integer annexId) {
this.annexId = annexId;
}
public String getAuthFlowId() {
return authFlowId;
}
public void setAuthFlowId(String authFlowId) {
this.authFlowId = authFlowId;
}
public String getOrgId() {
return orgId;
}
public void setOrgId(String orgId) {
this.orgId = orgId;
}
public String getSealName() {
return sealName;
}
@@ -123,4 +172,12 @@ public class DeptIdentify extends BaseEntity {
public void setIsUse(Integer isUse) {
this.isUse = isUse;
}
public Integer getSealStatus() {
return sealStatus;
}
public void setSealStatus(Integer sealStatus) {
this.sealStatus = sealStatus;
}
}
@@ -0,0 +1,27 @@
package com.ruoyi.wisdomarbitrate.domain.vo;
import lombok.Data;
@Data
public class SealListVO {
/** 印章id */
private String sealId;
/** 印章名称 */
private String sealName;
/**
* 印章状态 0禁用,1启用
*/
private Integer sealStatus;
/**
* 附件id
*/
private Integer annexId;
/**
* 附件路径
*/
private String annexPath;
/**
* 附件类型,立案申请书(1)、申请人证据材料(2)、仲裁文书(3)、案件视频(4)、身份证件(5)、被申请人证据材料 (6)、庭审笔录(7)、缴费凭证(8)'
*/
private Integer annexType;
}
@@ -23,4 +23,6 @@ public interface CaseAttachMapper {
int deleteByFileIds(@Param("ids") List<Integer> fileIds);
List<CaseAttach> getCaseAttachByCaseIdAndType(CaseAttach caseAttach);
CaseAttach queryAnnexById(Integer annexId);
}
@@ -19,4 +19,5 @@ public interface DeptIdentifyMapper {
int updateDeptIdentify(DeptIdentify deptIdentify);
List<DeptIdentify> selectDeptIdentifylistother(DeptIdentify deptIdentify);
}
@@ -3,6 +3,8 @@ package com.ruoyi.wisdomarbitrate.service;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.wisdomarbitrate.domain.DeptIdentify;
import com.ruoyi.wisdomarbitrate.domain.vo.SealListVO;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -15,4 +17,15 @@ public interface IDeptIdentifyService {
DeptIdentify selectDeptIndefiUrl(DeptIdentify deptIdentify) throws EsignDemoException;
AjaxResult enableDept(DeptIdentify deptIdentify);
AjaxResult sealUpload(DeptIdentify deptIdentify, MultipartFile file);
AjaxResult receiveNotify(String body);
List<SealListVO> getSealList(DeptIdentify deptIdentify);
AjaxResult updateSealLockStatus(DeptIdentify deptIdentify);
}
@@ -729,7 +729,7 @@ public class AdjudicationServiceImpl implements IAdjudicationService {
//财产保全
Integer properPreser = caseApplication1.getProperPreser();
String preservation = "本案受理后,申请人向仲裁委提交了财产保全申请,仲裁委根据《中华人民共和国仲裁法》" +
"第二十八条之规定,将该申请提交至XXX市XXX区法院。";
"第二十八条之规定,将该申请提交至法院。";
if (properPreser == null) {
datas.put("preservation", null);
} else if (properPreser == 1) {
@@ -113,6 +113,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
private DeptIdentifyMapper deptIdentifyMapper;
@Autowired
private ReservedConferenceMapper reservedConferenceMapper;
@Autowired
private SysDeptMapper deptMapper;
// 手机号正则
private static final Pattern TELEPHONE_REGX = Pattern.compile("^1(3\\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\\d|9[0-35-9])\\d{8}$");
@@ -1753,7 +1755,25 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
}
}
}
EsignHttpResponse response3 = SignAward.createByFile(sealSignRecord);
DeptIdentify deptIdentify1 = new DeptIdentify();
deptIdentify1.setSealStatus(1); // 印章状态为启用
//根据机构名称查询部门id
SysDept sysDept = new SysDept();
sysDept.setDeptName(sealSignRecord.getOrgnizeName());
List<SysDept> sysDepts = deptMapper.selectDeptList(sysDept);
if (sysDepts != null && sysDepts.size() > 0) {
Long deptId = sysDepts.get(0).getDeptId();
deptIdentify1.setDeptId(deptId);
}
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentifylistother(deptIdentify1);
List<String> sealIds = new ArrayList<>();
if (deptIdentifies != null && deptIdentifies.size() > 0) {
for (DeptIdentify identify : deptIdentifies) {
String sealId = identify.getSealId();
sealIds.add(sealId);
}
}
EsignHttpResponse response3 = SignAward.createByFile(sealSignRecord,sealIds);
JSONObject jsonObject3 = JSONObject.parseObject(response3.getBody());
if (jsonObject3.getIntValue("code") == 0) {
//获取签署流程ID
@@ -1903,6 +1923,8 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
for (CaseAffiliate caseAffiliate : caseAffiliates) {
request.setPhone(caseAffiliate.getContactTelphone());
request.setTemplateParamSet(new String[]{caseAffiliate.getName(), caseApplicationselect.getCaseNum(), messageVO.getRoomNo() + caseAffiliate.getUserId()});
// 1952136 普通短信 尊敬的{1}用户,您的{2}仲裁案件,开庭审理房间号为{3},请在浏览器打开https://miniapp-3gpama6l759911ef-1321289474.tcloudbaseapp.com/jump-mp.html 请知晓,如非本人操作,请忽略本短信。
String userId = (null==caseAffiliate.getUserId()?"" : caseAffiliate.getUserId());
if(messageVO.getScheduleStartTime()==null) {
// 1983692 开庭审理创建会议通知 尊敬的{1}用户,您的{2}仲裁案件,开庭审理房间号为{3},请点击https://txroom.xayunmei.com/#/home, 请知晓,如非本人操作,请忽略本短信。
@@ -1943,6 +1965,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
}
return returnResult;
}
@Override
public SealSignRecord selectSignUrl(CaseApplication caseApplication) throws EsignDemoException {
SealSignRecord sealSignRecord = new SealSignRecord();
@@ -2486,6 +2509,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
/**
* 获取userSign,默认过期时间10小时
*
* @param userId
* @return
*/
@@ -2497,6 +2521,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
/**
* 预约会议
*
* @param reservedConferenceVO
* @return
* @throws Exception
@@ -2522,6 +2547,9 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
JSONObject roomParams = new JSONObject();
bodyParams.put("ownerId", reservedConferenceVO.getOwnerId());
bodyParams.put("roomId", reservedConferenceVO.getRoomId());
bodyParams.put("scheduleStartTime", startTime);
bodyParams.put("scheduleEndTime", endTime);
bodyParams.put("scheduleStartTime",startTime.getTime()/1000 );
bodyParams.put("scheduleEndTime",endTime.getTime()/1000);
roomParams.put("roomType", 1);
@@ -2565,6 +2593,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
/**
* 销毁房间回调
*
* @param body
* @param request
*/
@@ -1,6 +1,7 @@
package com.ruoyi.wisdomarbitrate.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.deepoove.poi.data.PictureRenderData;
import com.ruoyi.common.constant.CaseApplicationConstants;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.redis.RedisCache;
@@ -8,6 +9,7 @@ import com.ruoyi.common.utils.WordUtil;
import com.ruoyi.wisdomarbitrate.domain.*;
import com.ruoyi.wisdomarbitrate.mapper.*;
import com.ruoyi.wisdomarbitrate.service.IAdjudicationService;
import com.ruoyi.wisdomarbitrate.service.ICaseApplicationService;
import com.ruoyi.wisdomarbitrate.utils.CaseLogUtils;
import com.ruoyi.common.utils.SmsUtils;
import com.ruoyi.wisdomarbitrate.service.ICaseArbitrateService;
@@ -28,6 +30,7 @@ import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import java.util.function.Function;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.ruoyi.common.utils.SecurityUtils.getUsername;
@@ -50,6 +53,8 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
private IAdjudicationService adjudicationService;
@Autowired
private RedisCache redisCache;
@Autowired
private ICaseApplicationService caseApplicationService;
@Override
@Transactional
@@ -346,7 +351,12 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
} else if (identityType == 2) { //被申请人
datas.put("resName", affiliate.getName());
datas.put("resAddress", affiliate.getResidenAffili());
datas.put("resSex", affiliate.getResponSex());
String responSex = affiliate.getResponSex();
if (responSex.equals("0")) {
datas.put("resSex", "男");
} else {
datas.put("resSex", "女");
}
Date responBirth = affiliate.getResponBirth();
if (responBirth != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
@@ -495,10 +505,34 @@ public class CaseArbitrateServiceImpl implements ICaseArbitrateService {
}
datas.put("claims", caseApplication1.getArbitratClaims());
datas.put("request", caseApplication1.getRequestRule());
CaseApplication caseApplication2 = caseApplicationService.selectCaseApplication(caseApplication);
List<CaseAttach> caseAttachList1 = caseApplication2.getCaseAttachList();
if (caseAttachList1 != null && caseAttachList1.size() > 0) {
for (CaseAttach caseAttach : caseAttachList1) {
if (caseAttach.getAnnexType() == 6) { //被申请人证据材料
String annexName = caseAttach.getAnnexName();
boolean isImageFile = Pattern.matches(".*\\.(jpg|png|gif|bmp)$", annexName);
if (isImageFile) {
String annexPath = "/home/ruoyi" + caseAttach.getAnnexPath();
System.out.println("路径是===========" + annexPath);
PictureRenderData pictureRenderData = WordUtil
.rebuildImageContent(100, 100, null, annexPath);
datas.put("resEvidenceMaterial", pictureRenderData);
}
} else if (caseAttach.getAnnexType() == 2) { //申请人证据材料
String annexName = caseAttach.getAnnexName();
boolean isImageFile = Pattern.matches(".*\\.(jpg|png|gif|bmp)$", annexName);
if (isImageFile) {
String annexPath = "/home/ruoyi" + caseAttach.getAnnexPath();
System.out.println("路径是===========" + annexPath);
PictureRenderData pictureRenderData = WordUtil
.rebuildImageContent(100, 100, null, annexPath);
//申请人证据材料
datas.put("appEvidenceMaterial", null);
//被申请人证据材料
datas.put("resEvidenceMaterial", null);
datas.put("appEvidenceMaterial", pictureRenderData);
}
}
}
}
datas.put("applicaCrossOpin", caseApplication1.getApplicaCrossOpin());
if (arbitrateRecord1 != null) {
datas.put("factDetermi", arbitrateRecord1.getFactDetermi());
@@ -1,26 +1,42 @@
package com.ruoyi.wisdomarbitrate.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.ruoyi.common.config.RuoYiConfig;
import com.ruoyi.common.constant.FileTransformation;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.utils.SealUtil;
import com.ruoyi.common.utils.file.FileUploadUtils;
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
import com.ruoyi.wisdomarbitrate.domain.DeptIdentify;
import com.ruoyi.wisdomarbitrate.domain.vo.SealListVO;
import com.ruoyi.wisdomarbitrate.mapper.CaseAttachMapper;
import com.ruoyi.wisdomarbitrate.mapper.DeptIdentifyMapper;
import com.ruoyi.wisdomarbitrate.service.IDeptIdentifyService;
import com.ruoyi.wisdomarbitrate.utils.SignAward;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@Service
public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
@Autowired
private DeptIdentifyMapper deptIdentifyMapper;
@Autowired
private CaseAttachMapper caseAttachMapper;
@Override
@@ -54,13 +70,16 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
DeptIdentify deptIdentifyselect = deptIdentifysnew.get(0);
EsignHttpResponse identifyUrl = SignAward.deptIdentifyUrl(deptIdentifyselect);
JsonObject signUrlJsonObject = gson.fromJson(identifyUrl.getBody(), JsonObject.class);
int code = signUrlJsonObject.get("code").getAsInt();
JsonObject signUrlData = signUrlJsonObject.getAsJsonObject("data");
String url = signUrlData.get("authUrl").getAsString();
//获取本次认证授权流程ID
String authFlowId = signUrlData.get("authFlowId").getAsString();
deptIdentify.setAuthFlowId(authFlowId);
deptIdentifynew.setIdentifyUrl(url);
}
deptIdentify.setIdentifyDate(new Date());
int row = deptIdentifyMapper.updateDeptIdentify(deptIdentify);
}
return deptIdentifynew;
}
@@ -93,5 +112,164 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
}
@Override
public AjaxResult sealUpload(DeptIdentify deptIdentify, MultipartFile file) {
try {
if (file.isEmpty()) {
return AjaxResult.error("请选择要上传的文件");
}
String filePath = RuoYiConfig.getUploadPath();
// 上传
String fileName = FileUploadUtils.upload(filePath, file);
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentifyBydeptid(deptIdentify);
if (deptIdentifies != null && deptIdentifies.size() > 0) {
for (DeptIdentify identify : deptIdentifies) {
//先判断企业用户是否授予资源管理权限
String authFlowId = identify.getAuthFlowId();
EsignHttpResponse response1 = SealUtil.queryAuthProcess(authFlowId);
JSONObject jsonObject1 = JSONObject.parseObject(response1.getBody());
int authorizedStatus = jsonObject1.getJSONObject("data").getIntValue("authorizedStatus");
if (authorizedStatus == 1) {//授权流程状态 0流程过期失效 1已授权 2授权中 3审批未通过
String prefix = "/profile";
int startIndex = fileName.indexOf(prefix);
startIndex += prefix.length();
String annexPath = "/uploadPath" + fileName.substring(startIndex);
//创建机构图片印章
EsignHttpResponse response = SignAward.createOrgByImage(identify, annexPath);
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
int code = jsonObject.getIntValue("code");
if (code == 0) { //业务码,0表示成功,非0表示异常。
String sealId = jsonObject.getJSONObject("data").getString("sealId");
identify.setSealId(sealId);
identify.setIsUse(0); //设置印章使用状态为未启用
//保存到表里
int i = deptIdentifyMapper.updateDeptIdentify(identify);
if (i > 0) {
return AjaxResult.success("上传成功");
}
}
}
return AjaxResult.error("企业用户未授予资源管理权限");
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (EsignDemoException e) {
e.printStackTrace();
}
return AjaxResult.error();
}
@Override
public AjaxResult receiveNotify(String body) {
/* 请求Body数据格式如下:
{
"action":"SEAL_AUDIT",
"auditStatus":1,
"psnId":"c7e00294**41e7",
"rejectReason":"",
"sealBizType":"COMMON",
"sealId":"af80ba0f-xx-xx-xx-a2da292d7f7f",
"sealName":"赵四的图片印章",
"statusDescription":"通过"
}*/
//解析body数据
try {
JSONObject jsonObject = JSONObject.parseObject(body);
String action = jsonObject.getString("action");
if (action.equals("SEAL_AUDIT")) { //SEAL_AUDIT表示图片印章审核结果通知
String auditStatus = jsonObject.getString("auditStatus");
if (auditStatus.equals("1")) { //图片印章审核结果 1通过 ,0驳回
//审核通过,拿到印章id和机构账号ID
String orgId = jsonObject.getString("orgId");
String sealId = jsonObject.getString("sealId");
//查询指定印章详情(机构)
EsignHttpResponse response = SignAward.getOrgSeal(orgId, sealId);
JSONObject jsonObject1 = JSONObject.parseObject(response.getBody());
if (jsonObject1.getIntValue("code") == 0) { //业务码,0表示成功,非0表示异常。
int sealStatus = jsonObject1.getJSONObject("data").getIntValue("sealStatus");
if (sealStatus == 1) { //印章状态 1已启用,2待审核,3审核不通过,4 挂起
String sealImageDownloadUrl = jsonObject1.getString("sealImageDownloadUrl");
LocalDate now = LocalDate.now();
String year = Integer.toString(now.getYear());
String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth());
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf";
String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
String savePath = "/home/ruoyi/uploadPath/upload/";
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
String resultFilePath = saveFolderPath + "/" + fileName;
File resultFilePathFile = new File(resultFilePath);
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
boolean downLoadFile = FileTransformation.downLoadFileByUrl(sealImageDownloadUrl, resultFilePath);
if (downLoadFile) {
CaseAttach caseAttach = new CaseAttach();
caseAttach.setAnnexType(10); //10代表印章图片
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
int i1 = caseAttachMapper.save(caseAttach);
if (i1 > 0) {
//将附件id保存到公章管理表里
Integer annexId1 = caseAttach.getAnnexId();
DeptIdentify identify = new DeptIdentify();
identify.setSealId(sealId);
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentify(identify);
if (deptIdentifies != null && deptIdentifies.size() > 0) {
DeptIdentify identify1 = deptIdentifies.get(0);
identify1.setAnnexId(annexId1);
identify1.setSealStatus(1); //启用
deptIdentifyMapper.updateDeptIdentify(identify1);
}
}
}
}
}
}
}
} catch (EsignDemoException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return new AjaxResult(200, "success");
}
@Override
public List<SealListVO> getSealList(DeptIdentify deptIdentify) {
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentifylistother(deptIdentify);
List<SealListVO> sealListVOS = new ArrayList<>();
if (deptIdentifies != null && deptIdentifies.size() > 0) {
for (DeptIdentify identify : deptIdentifies) {
SealListVO sealListVO = new SealListVO();
sealListVO.setSealId(identify.getSealId());
sealListVO.setSealName(identify.getSealName());
sealListVO.setSealStatus(identify.getSealStatus());
Integer annexId = identify.getAnnexId();
//根据附件id查询路径
CaseAttach caseAttach = caseAttachMapper.queryAnnexById(annexId);
String annexName = caseAttach.getAnnexName();
String prefix = "/profile";
int startIndex = annexName.indexOf(prefix);
startIndex += prefix.length();
String annexPath = "/uploadPath" + annexName.substring(startIndex);
sealListVO.setAnnexPath(annexPath);
sealListVO.setAnnexType(caseAttach.getAnnexType());
sealListVOS.add(sealListVO);
}
}
return sealListVOS;
}
@Override
public AjaxResult updateSealLockStatus(DeptIdentify deptIdentify) {
deptIdentifyMapper.updateDeptIdentify(deptIdentify);
return AjaxResult.success();
}
}
@@ -1,5 +1,7 @@
package com.ruoyi.wisdomarbitrate.utils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -7,6 +9,7 @@ import com.ruoyi.common.constant.CaseApplicationConstants;
import com.ruoyi.common.constant.FileTransformation;
import com.ruoyi.common.core.domain.entity.EsignHttpResponse;
import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.utils.SealUtil;
import com.ruoyi.common.utils.file.SaaSAPIFileUtils;
import com.ruoyi.wisdomarbitrate.domain.CaseApplication;
import com.ruoyi.wisdomarbitrate.domain.CaseAttach;
@@ -168,7 +171,6 @@ public class FixSelectFlowDetailUtils {
}
@Scheduled(cron = "0/30 * * * * ?")
@Transactional
public void fixExecuteSelectDeptIndentifyUtils() throws EsignDemoException {
@@ -182,9 +184,12 @@ public class FixSelectFlowDetailUtils {
JsonObject identifyInfoJsonObject = gson.fromJson(identifyInfo.getBody(), JsonObject.class);
JsonObject identifyInfoData = identifyInfoJsonObject.getAsJsonObject("data");
int realnameStatus = identifyInfoData.get("realnameStatus").getAsInt();
String orgId = identifyInfoData.get("orgId").getAsString();
if (realnameStatus == 1) {
String orgId = identifyInfoData.get("orgId").getAsString();
EsignHttpResponse identifyInfo1 = SignAward.deptIdentifySealList(orgId);
//将orgId保存到数据库里
DeptIdentify deptIdentifynew = deptIdentifysnew.get(i);
deptIdentifynew.setOrgId(orgId);
JsonObject identifyInfoJsonObject1 = gson.fromJson(identifyInfo1.getBody(), JsonObject.class);
JsonObject identifyInfoData1 = identifyInfoJsonObject1.getAsJsonObject("data");
JsonArray sealArray = identifyInfoData1.get("seals").getAsJsonArray();
@@ -198,16 +203,85 @@ public class FixSelectFlowDetailUtils {
}
}
String sealName = sealNames.substring(0, sealNames.length() - 1);
DeptIdentify deptIdentifynew = deptIdentifysnew.get(i);
deptIdentifynew.setIdentifyStatus(1);
deptIdentifynew.setSealName(sealName);
int row = deptIdentifyMapper.updateDeptIdentify(deptIdentifynew);
}
}
}
}
/**
* 定时查询企业内部印章审核状态
*
* @throws EsignDemoException
*/
// @Scheduled(cron = "0/30 * * * * ?")
@Transactional
public void searchForInstitutionalSeal() {
try {
DeptIdentify deptIdentify = new DeptIdentify();
deptIdentify.setIsUse(0);
List<DeptIdentify> deptIdentifies = deptIdentifyMapper.selectDeptIdentifylist(deptIdentify);
if (deptIdentifies != null && deptIdentifies.size() > 0) {
for (DeptIdentify identify : deptIdentifies) {
//查询企业内部印章
Integer annexId = identify.getAnnexId();
if (annexId == null){
//说明之前没有下载过
EsignHttpResponse response = SignAward.orgOwnSealList(identify);
JSONObject jsonObject = JSONObject.parseObject(response.getBody());
JSONObject data = jsonObject.getJSONObject("data");
JSONArray seals = data.getJSONArray("seals");
for (int i = 0; i < seals.size(); i++){
JSONObject seal = seals.getJSONObject(i);
int statusDescription = seal.getIntValue("statusDescription");
if (statusDescription==1){//印章状态 1已启用,2待审核,3审核不通过,4 挂起
//已启用证明审核通过,下载到数据库
String sealImageDownloadUrl = seal.getString("sealImageDownloadUrl");
LocalDate now = LocalDate.now();
String year = Integer.toString(now.getYear());
String month = String.format("%02d", now.getMonthValue());
String day = String.format("%02d", now.getDayOfMonth());
String saveFolderPath = "/home/ruoyi/uploadPath/upload/" + year + "/" + month + "/" + day;
String fileName = UUID.randomUUID().toString().replace("-", "") + ".pdf";
String saveName = "/profile/upload/" + year + "/" + month + "/" + day + "/" + fileName;
String savePath = "/home/ruoyi/uploadPath/upload/";
// 创建日期目录
File saveFolder = new File(saveFolderPath);
if (!saveFolder.exists()) {
saveFolder.mkdirs();
}
String resultFilePath = saveFolderPath + "/" + fileName;
File resultFilePathFile = new File(resultFilePath);
if (!resultFilePathFile.exists()) {
resultFilePathFile.createNewFile();
}
boolean downLoadFile = FileTransformation.downLoadFileByUrl(sealImageDownloadUrl, resultFilePath);
if (downLoadFile) {
CaseAttach caseAttach = new CaseAttach();
caseAttach.setAnnexType(10); //10代表印章图片
caseAttach.setAnnexPath(savePath);
caseAttach.setAnnexName(saveName);
int i1 = caseAttachMapper.save(caseAttach);
if (i1>0){
//将附件id保存到公章管理表里
Integer annexId1 = caseAttach.getAnnexId();
identify.setAnnexId(annexId1);
deptIdentifyMapper.updateDeptIdentify(identify);
}
}
}
}
}
}
}
} catch (EsignDemoException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
@@ -1,5 +1,6 @@
package com.ruoyi.wisdomarbitrate.utils;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@@ -9,11 +10,13 @@ import com.ruoyi.common.exception.EsignDemoException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.EsignApplicaConfig;
import com.ruoyi.common.utils.EsignHttpHelper;
import com.ruoyi.common.utils.SealUtil;
import com.ruoyi.wisdomarbitrate.domain.DeptIdentify;
import com.ruoyi.wisdomarbitrate.domain.SealSignRecord;
import java.io.File;
import java.util.Date;
import java.util.List;
import java.util.Map;
public class SignAward {
@@ -23,7 +26,6 @@ public class SignAward {
private static String eSignAppSecret = EsignApplicaConfig.EsignAppSecret;
public static void main(String[] args) throws EsignDemoException {
Gson gson = new Gson();
@@ -89,8 +91,6 @@ public class SignAward {
// System.out.println("机构印章名称:" +sealNames.substring(0,sealNames.length()-1));
//查询签署流程详情
// EsignHttpResponse signFlowDetail = signFlowDetail(sealSignRecord);
// JsonObject signFlowDetailJsonObject = gson.fromJson(signFlowDetail.getBody(),JsonObject.class);
@@ -120,14 +120,12 @@ public class SignAward {
// System.out.println(signFlowDetailJsonObject);
}
/**
* 查询签署流程详情
*
* @return
*/
public static EsignHttpResponse signFlowDetail(SealSignRecord sealSignRecord) throws EsignDemoException {
@@ -137,18 +135,19 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.GET;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 发起签署
*
* @return
* @throws EsignDemoException
*/
public static EsignHttpResponse createByFile(SealSignRecord sealSignRecord) throws EsignDemoException {
public static EsignHttpResponse createByFile(SealSignRecord sealSignRecord, List<String> sealIds) throws EsignDemoException {
String apiaddr = "/v3/sign-flow/create-by-file";
String fileId = sealSignRecord.getFileid();
@@ -169,7 +168,6 @@ public class SignAward {
double positionXorg = sealSignRecord.getPositionXorg();
double positionYorg = sealSignRecord.getPositionYorg();
String availableSealId = "209af82b-5f87-4e0a-b0d8-cc4923b6e652";
String jsonParm = "{\n" +
" \"docs\": [\n" +
@@ -247,7 +245,7 @@ public class SignAward {
" \"freeMode\": false,\n" +
" \"availableSealIds\": [\n" +
" \"" + availableSealId + "\"\n" +
" \"" + sealIds + "\"\n" +
" ],\n" +
@@ -270,13 +268,14 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成请求签名鉴权方式的Header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 获取合同文件签名链接
*
* @return
* @throws EsignDemoException
*/
@@ -297,13 +296,14 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成请求签名鉴权方式的Header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 获取合同文件用印链接
*
* @return
* @throws EsignDemoException
*/
@@ -327,15 +327,15 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成请求签名鉴权方式的Header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 获取机构认证链接
* 获取机构认证&授权页面链接
*
* @return
* @throws EsignDemoException
*/
public static EsignHttpResponse deptIdentifyUrl(DeptIdentify deptIdentify) throws EsignDemoException {
String apiaddr = "/v3/org-auth-url";
@@ -351,16 +351,26 @@ public class SignAward {
" \"psnName\": \"" + nickName + "\",\n" +
" \"psnMobile\": \"" + phonenumber + "\"\n" +
" }\n" +
" }\n" +
" },\n" +
" \"authorizeConfig\": {\n" +
" \"authorizedScopes\": [\n" +
" \"get_org_identity_info\",\n" +
" \"get_psn_identity_info\",\n" +
" \"org_initiate_sign\",\n" +
" \"psn_initiate_sign\",\n" +
" \"manage_org_resource\",\n" +
" \"manage_psn_resource\",\n" +
" \"use_org_order\"\n" +
" ]\n" +
" }\n" +
"}";
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成请求签名鉴权方式的Header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
@@ -373,10 +383,11 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.GET;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 查询企业认证印章信息
*/
@@ -388,15 +399,15 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.GET;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 获取文件签名印章位置
*
* @return
* @throws EsignDemoException
*/
@@ -412,12 +423,96 @@ public class SignAward {
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成请求签名鉴权方式的Header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, true);
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, true);
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
/**
* 创建机构图片印章
*
* @return
*/
public static EsignHttpResponse createOrgByImage(DeptIdentify deptIdentify, String filePath) throws EsignDemoException {
//获取认证授权流程ID
String authFlowId = deptIdentify.getAuthFlowId();
//查询认证授权流程详情
EsignHttpResponse response = SealUtil.queryAuthProcess(authFlowId);
String body = response.getBody();
if (body != null) {
JSONObject jsonObject = JSONObject.parseObject(body);
//查询授权流程状态
int authorizedStatus = jsonObject.getJSONObject("data").getIntValue("authorizedStatus");
if (authorizedStatus == 1) {//0 -流程过期失效 1 - 已授权 2 - 授权中 3 - 审批未通过
String apiaddr = "/v3/seals/org-seals/create-by-image";
String orgId = deptIdentify.getOrgId();
//上传印章图片
//步骤一:获取印章图片上传地址fileUploadUrl
EsignHttpResponse response1 = SealUtil.getFileUploadUrl(filePath);
JSONObject jsonObject1 = JSONObject.parseObject(response1.getBody());
String fileUploadUrl = jsonObject1.getJSONObject("data").getString("fileUploadUrl");
//步骤二:将印章图片文件流上传到fileUploadUrl
EsignHttpResponse response2 = SealUtil.fileStreamUpload(fileUploadUrl, filePath);
JSONObject jsonObject2 = JSONObject.parseObject(response2.getBody());
int errCode = jsonObject2.getIntValue("errCode");
if (errCode == 0){ //业务码,0表示成功,非0表示异常。
//获取步骤一里面的fileKey
String sealImageFileKey = jsonObject1.getJSONObject("data").getString("fileKey");
String sealName = deptIdentify.getSealName();
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
String jsonParm = "{\n" +
" \"orgId\": \"" + orgId + "\",\n" +
" \"sealImageFileKey\": \"" + sealImageFileKey + "\",\n" +
" \"sealName\": \" " + sealName + " \",\n" +
" \"sealWidth\": 50,\n" +
" \"sealHeight\": 50,\n" +
"}";
//请求方法
EsignRequestType requestType = EsignRequestType.POST;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId, eSignAppSecret, jsonParm, requestType.name(), apiaddr, false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr, requestType, jsonParm, header, false);
}
}
}
return null;
}
/**
* 查询企业内部印章
*/
public static EsignHttpResponse orgOwnSealList(DeptIdentify deptIdentify) throws EsignDemoException {
String orgId=deptIdentify.getOrgId();
int pageNum=1;
int pageSize=20;
String apiaddr="/v3/seals/org-own-seal-list?orgId="+orgId+"&pageNum="+pageNum+"&pageSize="+pageSize;
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
String jsonParm=null;
//请求方法
EsignRequestType requestType= EsignRequestType.GET;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,false);
}
/**
* 查询指定印章详情(机构)
*/
public static EsignHttpResponse getOrgSeal(String orgId,String sealId) throws EsignDemoException {
String apiaddr="/v3/seals/org-seal-info?orgId="+orgId+"&sealId="+sealId;
//请求参数body体,json格式。get或者delete请求时jsonString传空json:"{}"或者null
String jsonParm=null;
//请求方法
EsignRequestType requestType= EsignRequestType.GET;
//生成签名鉴权方式的的header
Map<String, String> header = EsignHttpHelper.signAndBuildSignAndJsonHeader(eSignAppId,eSignAppSecret,jsonParm,requestType.name(),apiaddr,false);
//发起接口请求
return EsignHttpHelper.doCommHttp(eSignHost, apiaddr,requestType , jsonParm, header,false);
}
}
@@ -12,10 +12,11 @@
<result property="note" column="note" />
<result property="userId" column="use_id" />
<result property="userName" column="use_account" />
<result property="sealStatus" column="seal_status" />
</resultMap>
<insert id="save" useGeneratedKeys="true" keyProperty="annexId">
INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account)
VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{userId},#{userName})
INSERT INTO case_attach (case_appli_id, annex_name, annex_path , annex_type,note,use_id,use_account,seal_status)
VALUES (#{caseAppliId}, #{annexName}, #{annexPath},#{annexType},#{note},#{userId},#{userName},#{sealStatus})
</insert>
<delete id="deleteByFileIds">
delete from case_attach
@@ -62,6 +63,15 @@
</if>
</where>
</select>
<select id="queryAnnexById" resultType="com.ruoyi.wisdomarbitrate.domain.CaseAttach">
select annex_id,annex_name,annex_path,annex_type,note,use_id,use_account
from case_attach
<where>
<if test="annexId != null ">
AND annex_id = #{annexId}
</if>
</where>
</select>
<update id="updateCaseAttach" parameterType="CaseAttach">
update case_attach
@@ -14,6 +14,10 @@
<result property="phonenumber" column="phonenumber" />
<result property="deptName" column="dept_name" />
<result property="sealName" column="seal_name" />
<result property="orgId" column="org_id" />
<result property="authFlowId" column="auth_flow_id" />
<result property="sealId" column="seal_id" />
<result property="sealStatus" column="seal_status" />
</resultMap>
@@ -28,7 +32,7 @@
</select>
<select id="selectDeptIdentifyBydeptid" parameterType="DeptIdentify" resultMap="DeptIdentifyResult">
SELECT d.id ,d.dept_id ,d.user_id
SELECT d.id ,d.dept_id ,d.user_id ,d.org_id ,d.auth_flow_id
from dept_identify d
<where>
<if test="deptId != null">
@@ -53,8 +57,8 @@
</insert>
<select id="selectDeptIdentifylist" parameterType="DeptIdentify" resultMap="DeptIdentifyResult">
SELECT d.id ,d.dept_id ,d.user_id, d.identify_status ,d.identify_date ,d.is_use , d.seal_name, sd.dept_name ,
u.nick_name ,u.phonenumber
SELECT d.id ,d.dept_id ,d.user_id, d.identify_status ,d.identify_date ,d.is_use , d.seal_name,
d.org_id , d.seal_id ,sd.dept_name , u.nick_name ,u.phonenumber
from dept_identify d left join sys_dept sd on d.dept_id = sd.dept_id
left join sys_user u on u.user_id = d.user_id
<where>
@@ -71,18 +75,25 @@
</select>
<select id="selectDeptIdentifylistother" parameterType="DeptIdentify" resultMap="DeptIdentifyResult">
SELECT d.id ,d.dept_id ,d.user_id,d.identify_status ,d.is_use
SELECT d.id ,d.dept_id ,d.user_id,d.identify_status ,d.is_use ,d.sealName ,d.sealId ,d.annexId
from dept_identify d
<where>
<if test="identifyStatus != null">
AND d.identify_status = #{identifyStatus}
</if>
<if test="id != null">
AND d.id != #{id}
AND d.id = #{id}
</if>
<if test="sealStatus != null">
AND d.seal_status = #{sealStatus}
</if>
<if test="deptId != null">
AND d.dept_id = #{deptId}
</if>
</where>
</select>
<update id="updateDeptIdentify" parameterType="DeptIdentify">
update dept_identify
<set>
@@ -90,8 +101,17 @@
<if test="isUse != null">is_use = #{isUse},</if>
<if test="identifyStatus != null ">identify_status = #{identifyStatus},</if>
<if test="sealName != null and sealName != ''">seal_name = #{sealName},</if>
<if test="sealId != null and sealId != ''">seal_id = #{sealId},</if>
<if test="sealStatus != null ">seal_status = #{sealStatus},</if>
</set>
where id = #{id}
<where>
<if test="id != null">
AND d.id = #{id}
</if>
<if test="sealId != null">
AND seal_id = #{sealId}
</if>
</where>
</update>