11.10 开发

This commit is contained in:
hejinbo
2023-11-10 18:08:30 +08:00
parent 7cfc39190a
commit 4cf4fa6f5c
14 changed files with 311 additions and 48 deletions
@@ -3,6 +3,7 @@ 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;
@@ -20,4 +21,11 @@ public interface IDeptIdentifyService {
AjaxResult sealUpload(DeptIdentify deptIdentify, MultipartFile file);
AjaxResult receiveNotify(String body);
List<SealListVO> getSealList(DeptIdentify deptIdentify);
AjaxResult updateSealLockStatus(DeptIdentify deptIdentify);
}
@@ -106,6 +106,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}$");
@@ -1746,7 +1748,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
@@ -1881,7 +1901,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
request.setTemplateId("1952136");
for (CaseAffiliate caseAffiliate : caseAffiliates) {
request.setPhone(caseAffiliate.getContactTelphone());
request.setTemplateParamSet(new String[]{caseAffiliate.getName(), caseApplicationselect.getCaseNum(), messageVO.getRoomNo()+caseAffiliate.getUserId()});
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 请知晓,如非本人操作,请忽略本短信。
Boolean aBoolean = SmsUtils.sendSms(request);
//保存短信发送记录
@@ -1890,7 +1910,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
smsSendRecord.setCaseNum(caseApplicationselect.getCaseNum());
smsSendRecord.setPhone(request.getPhone());
smsSendRecord.setSendTime(new Date());
String content = "尊敬的" + caseAffiliate.getName() + "用户,您的" + caseApplicationselect.getCaseNum() + "仲裁案件,开庭审理房间号为" + messageVO.getRoomNo()+caseAffiliate.getUserId() + ",请在微信内打开https://miniapp-3gpama6l759911ef-1321289474.tcloudbaseapp.com/jump-mp.html 请知晓,如非本人操作,请忽略本短信。";
String content = "尊敬的" + caseAffiliate.getName() + "用户,您的" + caseApplicationselect.getCaseNum() + "仲裁案件,开庭审理房间号为" + messageVO.getRoomNo() + caseAffiliate.getUserId() + ",请在微信内打开https://miniapp-3gpama6l759911ef-1321289474.tcloudbaseapp.com/jump-mp.html 请知晓,如非本人操作,请忽略本短信。";
smsSendRecord.setSendContent(content);
String userName;
@@ -1909,6 +1929,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
}
return returnResult;
}
@Override
public SealSignRecord selectSignUrl(CaseApplication caseApplication) throws EsignDemoException {
SealSignRecord sealSignRecord = new SealSignRecord();
@@ -2452,10 +2473,11 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
/**
* 获取userSign,默认过期时间10小时
*
* @param userId
* @return
*/
public String generateUserSign(String userId){
public String generateUserSign(String userId) {
TLSSigAPIv2 tlsSigAPIv2 = new TLSSigAPIv2(sdkAppId, secretKey);
return tlsSigAPIv2.genUserSig(userId, 60 * 60 * 10);
}
@@ -2463,6 +2485,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
/**
* 预约会议
*
* @param reservedConferenceVO
* @return
* @throws Exception
@@ -2480,7 +2503,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
Integer scheduleEndTime = reservedConferenceVO.getScheduleEndTime();
Random rand = new Random();
int random = rand.nextInt(214748365);
String url="https://roomkit.trtc.tencent-cloud.com/room_api/v1/roomctl/create?usersig=" + userSign + "&identifier=" + administrator + "&sdkappid=" + sdkAppId + "&random=" +random + "&contenttype=json";
String url = "https://roomkit.trtc.tencent-cloud.com/room_api/v1/roomctl/create?usersig=" + userSign + "&identifier=" + administrator + "&sdkappid=" + sdkAppId + "&random=" + random + "&contenttype=json";
HttpPost post = new HttpPost(url);
String result = "";
//添加参数
@@ -2489,7 +2512,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
bodyParams.put("ownerId", reservedConferenceVO.getOwnerId());
bodyParams.put("roomId", reservedConferenceVO.getRoomId());
bodyParams.put("scheduleStartTime", scheduleStartTime);
bodyParams.put("scheduleEndTime",scheduleEndTime);
bodyParams.put("scheduleEndTime", scheduleEndTime);
roomParams.put("roomType", 1);
bodyParams.put("roomInfo", roomParams);
StringEntity postingString = new StringEntity(bodyParams.toString());
@@ -2536,6 +2559,7 @@ public class CaseApplicationServiceImpl implements ICaseApplicationService {
/**
* 销毁房间回调
*
* @param body
* @param request
*/
@@ -4,6 +4,7 @@ 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;
@@ -11,6 +12,7 @@ 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;
@@ -20,9 +22,13 @@ 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 {
@@ -123,7 +129,7 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
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审批未通过
if (authorizedStatus == 1) {//授权流程状态 0流程过期失效 1已授权 2授权中 3审批未通过
String prefix = "/profile";
int startIndex = fileName.indexOf(prefix);
startIndex += prefix.length();
@@ -138,7 +144,7 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
identify.setIsUse(0); //设置印章使用状态为未启用
//保存到表里
int i = deptIdentifyMapper.updateDeptIdentify(identify);
if (i>0){
if (i > 0) {
return AjaxResult.success("上传成功");
}
}
@@ -151,8 +157,119 @@ public class DeptIdentifyServiceImpl implements IDeptIdentifyService {
} catch (EsignDemoException e) {
e.printStackTrace();
}
return AjaxResult.error();
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();
}
}