|
|
@@ -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,6 +14,7 @@ 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.handler.annotation.XxlJob;
|
|
|
@@ -54,7 +56,6 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
AdminOrderService adminOrderService;
|
|
|
@Autowired
|
|
|
CochainService cochainService;
|
|
|
-
|
|
|
@Autowired
|
|
|
OrderFileMapper orderFileMapper;
|
|
|
@Autowired
|
|
|
@@ -64,23 +65,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();
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
}).start();
|
|
|
// t.set
|
|
|
@@ -94,13 +91,11 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
UPLOAD_FILE_PATH = downloadPath;
|
|
|
}
|
|
|
|
|
|
- private void chainEvidence() throws Exception {
|
|
|
+ private void chainEvidence() {
|
|
|
|
|
|
QueryWrapper<OrderCochainEntity> qw = new QueryWrapper<>();
|
|
|
- qw = qw.in("status", 0, 2).orderByAsc("create_time").last("limit 1");
|
|
|
-
|
|
|
+ qw = qw.lt("count", 3).in("status", 0, 2).orderByAsc("create_time").last("limit 1");
|
|
|
OrderCochainEntity cochainEntity = orderCochainService.getOne(qw);
|
|
|
-
|
|
|
if (cochainEntity == null) {
|
|
|
log.info("没有上链数据:");
|
|
|
return;
|
|
|
@@ -116,67 +111,80 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
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);
|
|
|
-
|
|
|
- // 带有盖章的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);
|
|
|
+ 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;
|
|
|
+ // 处理视频
|
|
|
+ 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);
|
|
|
|
|
|
- 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());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -184,7 +192,7 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
*/
|
|
|
@XxlJob("cochain")
|
|
|
public void jobCochain() {
|
|
|
- // chainEvidence();
|
|
|
+ chainEvidence();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -255,5 +263,4 @@ public class OrderCochainServiceImpl extends AbstractServiceImpl<IOrderCochainDa
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|