|
|
@@ -3,6 +3,7 @@ package me.zhengjie.application.admin.service.impl;
|
|
|
import java.io.File;
|
|
|
import java.io.InputStream;
|
|
|
import java.nio.charset.Charset;
|
|
|
+import java.time.LocalDateTime;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
@@ -13,8 +14,10 @@ import org.apache.commons.io.FileUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
+import com.xxl.job.core.context.XxlJobHelper;
|
|
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
|
|
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
@@ -54,7 +57,6 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
AdminOrderService adminOrderService;
|
|
|
@Autowired
|
|
|
CochainService cochainService;
|
|
|
-
|
|
|
@Autowired
|
|
|
OrderFileMapper orderFileMapper;
|
|
|
@Autowired
|
|
|
@@ -64,23 +66,19 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
|
|
|
private static String UPLOAD_FILE_PATH;
|
|
|
|
|
|
- @PostConstruct
|
|
|
+// @PostConstruct
|
|
|
public void init() {
|
|
|
new Thread(new Runnable() {
|
|
|
|
|
|
@Override
|
|
|
public void run() {
|
|
|
try {
|
|
|
- Thread.sleep(1000l);
|
|
|
+ Thread.sleep(2000l);
|
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
- try {
|
|
|
- chainEvidence();
|
|
|
- } catch (Exception e) {
|
|
|
- // TODO Auto-generated catch block
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
+ chainEvidence();
|
|
|
+
|
|
|
}
|
|
|
}).start();
|
|
|
// t.set
|
|
|
@@ -94,97 +92,107 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
UPLOAD_FILE_PATH = downloadPath;
|
|
|
}
|
|
|
|
|
|
- private void chainEvidence() throws Exception {
|
|
|
-
|
|
|
+ public void chainEvidence() {
|
|
|
+ log.info("------jobCochain--beginning--execute-");
|
|
|
QueryWrapper<OrderCochainEntity> qw = new QueryWrapper<>();
|
|
|
- qw = qw.in("status", 0, 2).orderByAsc("create_time").last("limit 1");
|
|
|
-
|
|
|
- OrderCochainEntity cochainEntity = orderCochainService.getOne(qw);
|
|
|
-
|
|
|
- if (cochainEntity == null) {
|
|
|
+ qw = qw.lt("count", 3).in("status", 0, 2).orderByAsc("create_time");
|
|
|
+ List<OrderCochainEntity> cochainEntitys = orderCochainService.list(qw);
|
|
|
+ if (cochainEntitys == null || cochainEntitys.size() == 0) {
|
|
|
log.info("没有上链数据:");
|
|
|
return;
|
|
|
}
|
|
|
- // 业务编码
|
|
|
- String businessNo = cochainEntity.getBusinessNo();
|
|
|
- initCochainPath(businessNo);
|
|
|
- List<File> zipList = new ArrayList<>();
|
|
|
- QueryWrapper<ContractOrderEntity> orderqw = new QueryWrapper<>();
|
|
|
- orderqw.eq("business_no", businessNo);
|
|
|
- ContractOrderEntity contractOrder = contractOrderMapper.selectOne(orderqw);
|
|
|
- // 查询数据
|
|
|
- log.info("【开始】调用上链业务编号:" + businessNo);
|
|
|
- // 查询所有上传的图片
|
|
|
- Map<String, FileInfoEntity> map = adminOrderService.getUploadFile(businessNo);
|
|
|
- // 身份证正面idcard_front_pic
|
|
|
- download(contractOrder.getIdcardFrontPic(), map, "身份证正面", zipList);
|
|
|
- // 身份证反面
|
|
|
- download(contractOrder.getIdcardBackPic(), map, "身份证反面", zipList);
|
|
|
- // 合同contract_attachment
|
|
|
- download(contractOrder.getContractAttachment(), map, "合同", zipList);
|
|
|
- // 抵押物 mortgage_pic
|
|
|
- download(contractOrder.getMortgagePic(), map, "抵押物", zipList);
|
|
|
- // 结婚证
|
|
|
- download(contractOrder.getMarragePic(), map, "结婚证", zipList);
|
|
|
- // 其他上传
|
|
|
- download(contractOrder.getOtherUpload(), map, "其他上传", zipList);
|
|
|
- // 户口本
|
|
|
- download(contractOrder.getHkbPic(), map, "户口本", zipList);
|
|
|
- // 配偶身份证正面照片
|
|
|
- download(contractOrder.getJointIdcardFrontPic(), map, "共同借款身份证正面", zipList);
|
|
|
- // 配偶身份证反面照片
|
|
|
- download(contractOrder.getJointIdcardBackPic(), map, "共同借款身份证反面照片", zipList);
|
|
|
+ for (OrderCochainEntity cochainEntity : cochainEntitys) {
|
|
|
+ // 业务编码
|
|
|
+ String businessNo = cochainEntity.getBusinessNo();
|
|
|
+ initCochainPath(businessNo);
|
|
|
+ List<File> zipList = new ArrayList<>();
|
|
|
+ QueryWrapper<ContractOrderEntity> orderqw = new QueryWrapper<>();
|
|
|
+ orderqw.eq("business_no", businessNo);
|
|
|
+ ContractOrderEntity contractOrder = contractOrderMapper.selectOne(orderqw);
|
|
|
+ if (contractOrder == null) {
|
|
|
+ log.warn("【end】订单查询不到,businessNo:" + businessNo);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 查询数据
|
|
|
+ log.info("【开始】调用上链业务编号:" + businessNo);
|
|
|
+ // 查询所有上传的图片
|
|
|
+ Map<String, FileInfoEntity> map = adminOrderService.getUploadFile(businessNo);
|
|
|
+ OrderCochainEntity chain = new OrderCochainEntity();
|
|
|
+ chain.setBusinessNo(businessNo);
|
|
|
+ try {
|
|
|
+ // 身份证正面idcard_front_pic
|
|
|
+ download(contractOrder.getIdcardFrontPic(), map, "身份证正面", zipList);
|
|
|
+ // 身份证反面
|
|
|
+ download(contractOrder.getIdcardBackPic(), map, "身份证反面", zipList);
|
|
|
+ // 合同contract_attachment
|
|
|
+ download(contractOrder.getContractAttachment(), map, "合同", zipList);
|
|
|
+ // 抵押物 mortgage_pic
|
|
|
+ download(contractOrder.getMortgagePic(), map, "抵押物", zipList);
|
|
|
+ // 结婚证
|
|
|
+ download(contractOrder.getMarragePic(), map, "结婚证", zipList);
|
|
|
+ // 其他上传
|
|
|
+ download(contractOrder.getOtherUpload(), map, "其他上传", zipList);
|
|
|
+ // 户口本
|
|
|
+ download(contractOrder.getHkbPic(), map, "户口本", zipList);
|
|
|
+ // 配偶身份证正面照片
|
|
|
+ download(contractOrder.getJointIdcardFrontPic(), map, "共同借款身份证正面", zipList);
|
|
|
+ // 配偶身份证反面照片
|
|
|
+ download(contractOrder.getJointIdcardBackPic(), map, "共同借款身份证反面照片", zipList);
|
|
|
+ // 带有盖章的pdf
|
|
|
+ QueryWrapper<OrderFileEntity> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("business_no", businessNo);
|
|
|
+ // 这里处理,如果没有盖章的就把签名的pdf上传
|
|
|
+ List<OrderFileEntity> orderFiles = orderFileMapper.selectList(wrapper);
|
|
|
+ for (OrderFileEntity orderFile : orderFiles) {
|
|
|
+ if (StringUtils.isNotBlank(orderFile.getSignedPdfUrl())) {
|
|
|
+ downloadByPath(orderFile.getSignedPdfUrl(), map, orderFile.getFileName(), zipList);
|
|
|
+ } else {
|
|
|
+ downloadByPath(orderFile.getPdfUrl(), map, orderFile.getFileName(), zipList);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 处理视频
|
|
|
+ QueryWrapper<OrderRoomIdEntity> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.eq("business_no", businessNo);
|
|
|
+ queryWrapper.orderByDesc("create_time");
|
|
|
+ List<OrderRoomIdEntity> orderRoomList = orderRoomIdMapper.selectList(queryWrapper);
|
|
|
+ if (orderRoomList != null && orderRoomList.size() > 0) {
|
|
|
+ OrderRoomIdEntity orderRoomId = orderRoomList.get(0);
|
|
|
+ downloadByPath(orderRoomId.getAppVideoUrl(), map, "APP视频", zipList);
|
|
|
+ downloadByPath(orderRoomId.getPcVideoUrl(), map, "PC视频", zipList);
|
|
|
+ }
|
|
|
+ String fileName = businessNo + ".zip";
|
|
|
+ // 对文件进行压缩
|
|
|
+ File targetFile = new File(UPLOAD_FILE_PATH + fileName);
|
|
|
+ ZipUtil.zip(targetFile, Charset.forName("utf-8"), false, ArrayUtil.toArray(zipList, File.class));
|
|
|
+ // 将压缩完成的文件上传到文件服务器
|
|
|
+ String contentType = "application/x-zip-compressed";
|
|
|
+ String uploadPath = businessNo + "/" + fileName;
|
|
|
+ FileUploadUtil.uploadFile(uploadPath, contentType, targetFile);
|
|
|
+ // 调用区块
|
|
|
+ String keyResult = cochainService.getKey(businessNo);
|
|
|
+ JSONObject jsonObj = JSONObject.parseObject(keyResult);
|
|
|
+ if (jsonObj.getIntValue("code") == 0) {
|
|
|
+ JSONObject jsonObject = jsonObj.getJSONObject("data");
|
|
|
+ String key = jsonObject.getString("key");
|
|
|
+ long size = targetFile.length();
|
|
|
+ chain.setZipPath(uploadPath);
|
|
|
+ cochainService.sendRequest(chain, key, String.valueOf(size));
|
|
|
+ // 修改数据库的值
|
|
|
+ orderCochainService.update(chain, OrderCochainEntity::getBusinessNo);
|
|
|
+ }
|
|
|
+ log.info("【结束】调用上链业务编号:" + businessNo);
|
|
|
+ // 删除本地的所有文件
|
|
|
+ FileUtils.forceDelete(targetFile.getParentFile());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("上链数据出现异常:" + e.getMessage());
|
|
|
+ // 修改数据库的值
|
|
|
+ chain.setRemark(e.getMessage());
|
|
|
+ chain.setCount(chain.getCount() + 1);
|
|
|
+ orderCochainService.update(chain, OrderCochainEntity::getBusinessNo);
|
|
|
|
|
|
- // 带有盖章的pdf
|
|
|
- QueryWrapper<OrderFileEntity> wrapper = new QueryWrapper<>();
|
|
|
- wrapper.eq("business_no", businessNo);
|
|
|
- // 这里处理,如果没有盖章的就把签名的pdf上传
|
|
|
- List<OrderFileEntity> orderFiles = orderFileMapper.selectList(wrapper);
|
|
|
- for (OrderFileEntity orderFile : orderFiles) {
|
|
|
- if (StringUtils.isNotBlank(orderFile.getSignedPdfUrl())) {
|
|
|
- downloadByPath(orderFile.getSignedPdfUrl(), map, orderFile.getFileName(), zipList);
|
|
|
- } else {
|
|
|
- downloadByPath(orderFile.getPdfUrl(), map, orderFile.getFileName(), zipList);
|
|
|
}
|
|
|
}
|
|
|
- // 处理视频
|
|
|
- QueryWrapper<OrderRoomIdEntity> queryWrapper = new QueryWrapper<>();
|
|
|
- queryWrapper.eq("business_no", businessNo);
|
|
|
- queryWrapper.orderByDesc("create_time");
|
|
|
- List<OrderRoomIdEntity> orderRoomList = orderRoomIdMapper.selectList(queryWrapper);
|
|
|
- if (orderRoomList != null && orderRoomList.size() > 0) {
|
|
|
- OrderRoomIdEntity orderRoomId = orderRoomList.get(0);
|
|
|
- downloadByPath(orderRoomId.getAppVideoUrl(), map, "APP视频", zipList);
|
|
|
- downloadByPath(orderRoomId.getPcVideoUrl(), map, "PC视频", zipList);
|
|
|
- }
|
|
|
- String fileName = businessNo + ".zip";
|
|
|
- // 对文件进行压缩
|
|
|
- File targetFile = new File(UPLOAD_FILE_PATH + fileName);
|
|
|
- ZipUtil.zip(targetFile, Charset.forName("utf-8"), false, ArrayUtil.toArray(zipList, File.class));
|
|
|
- // 将压缩完成的文件上传到文件服务器
|
|
|
- String contentType = "application/x-zip-compressed";
|
|
|
- String uploadPath = businessNo + "/" + fileName;
|
|
|
|
|
|
- FileUploadUtil.uploadFile(uploadPath, contentType, targetFile);
|
|
|
-
|
|
|
- log.info("【结束】调用上链业务编号:" + businessNo);
|
|
|
- // 修改数据库的值
|
|
|
- OrderCochainEntity orderCochain = new OrderCochainEntity();
|
|
|
- orderCochain.setBusinessNo(businessNo);
|
|
|
- orderCochain.setStatus("1");
|
|
|
- orderCochainService.update(orderCochain, OrderCochainEntity::getBusinessNo);
|
|
|
- //调用区块
|
|
|
-
|
|
|
- // 删除本地的所有文件
|
|
|
- FileUtils.forceDelete(targetFile.getParentFile());
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 调用第三方上链接口
|
|
|
- */
|
|
|
- @XxlJob("cochain")
|
|
|
- public void jobCochain() {
|
|
|
- // chainEvidence();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -255,5 +263,4 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|