From 479aa557dc1e33305f38d911e3d4ba9b70519cab Mon Sep 17 00:00:00 2001
From: whb <17803890193@163.com>
Date: Tue, 26 Mar 2024 09:20:21 +0800
Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=A4=E6=98=93=E7=A1=AE?=
 =?UTF-8?q?=E8=AE=A4=EF=BC=88=E6=A0=B8=E5=BF=83=E4=BC=81=E4=B8=9A=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 BlockFinanceCentral/.gitignore                |    4 +-
 .../handler/GlobalExceptionHandler.java       |    2 +-
 .../controller/StuAddBussinessController.java |   99 ++
 ...roller.java => StuAddNodesController.java} |   26 +-
 .../stuEncryptOnChainController.java          |  149 ++
 .../stuTransactionConfirmationController.java |   93 +
 .../entity/StuTransactionDocumentsInfo.java   |  215 +++
 .../StuTransactionDocumentsInfoExample.java   | 1510 +++++++++++++++++
 .../entity/dto/StuSecretInfoDto.java          |   37 +
 .../entity/dto/StutInfoSecDto.java            |   35 +
 .../entity/dto/StutranDocDto.java             |   36 +
 .../StuTransactionDocumentsInfoMapper.java    |   32 +
 .../mappers/stuJoinNodeMapper.java            |    4 +-
 .../service/StuBusinessSupplyService.java     |    3 +
 .../service/StuEncryptOnChainService.java     |   25 +
 .../StuTransactionConfirmationService.java    |   40 +
 .../impl/StuBusinessSupplyServiceImpl.java    |   21 +
 .../impl/StuEncryptOnChainServiceImpl.java    |  119 ++
 ...StuTransactionConfirmationServiceImpl.java |  155 ++
 .../sztzjy/block_finance/util/RsaUtil.java    |   14 +
 .../StuTransactionDocumentsInfoMapper.xml     |  469 +++++
 21 files changed, 3072 insertions(+), 16 deletions(-)
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddBussinessController.java
 rename BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/{StuSupplyBusinessController.java => StuAddNodesController.java} (81%)
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuEncryptOnChainController.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuTransactionConfirmationController.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfo.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfoExample.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StuSecretInfoDto.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutInfoSecDto.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutranDocDto.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuTransactionDocumentsInfoMapper.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuEncryptOnChainService.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuTransactionConfirmationService.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuEncryptOnChainServiceImpl.java
 create mode 100644 BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuTransactionConfirmationServiceImpl.java
 create mode 100644 BlockFinanceCentral/src/main/resources/mappers/StuTransactionDocumentsInfoMapper.xml

diff --git a/BlockFinanceCentral/.gitignore b/BlockFinanceCentral/.gitignore
index 3f7ae75..b8e5a94 100644
--- a/BlockFinanceCentral/.gitignore
+++ b/BlockFinanceCentral/.gitignore
@@ -33,5 +33,7 @@ build/
 
 ### VS Code ###
 .vscode/
-/logs/
+logs/
+
+
 
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/config/exception/handler/GlobalExceptionHandler.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/config/exception/handler/GlobalExceptionHandler.java
index 1db18f7..55340a3 100644
--- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/config/exception/handler/GlobalExceptionHandler.java
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/config/exception/handler/GlobalExceptionHandler.java
@@ -85,7 +85,7 @@ public class GlobalExceptionHandler {
     @ExceptionHandler(ServiceException.class)
     public ResultEntity<String> serviceExceptionHandler(ServiceException e) {
         log.error("异常信息", e);
-        return new ResultEntity<>(HttpStatus.SEE_OTHER, e.getMessage());
+        return new ResultEntity<>(HttpStatus.ACCEPTED, e.getMessage());
     }
 
 
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddBussinessController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddBussinessController.java
new file mode 100644
index 0000000..cb00abe
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddBussinessController.java
@@ -0,0 +1,99 @@
+package com.sztzjy.block_finance.controller;
+
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.RandomUtil;
+import com.sztzjy.block_finance.annotation.AnonymousAccess;
+import com.sztzjy.block_finance.config.exception.handler.InvoceTException;
+import com.sztzjy.block_finance.config.security.TokenProvider;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
+import com.sztzjy.block_finance.mappers.StuTransactionDocumentsInfoMapper;
+import com.sztzjy.block_finance.util.ResultDataEntity;
+import com.sztzjy.block_finance.util.ResultEntity;
+import com.sztzjy.block_finance.util.file.IFileUtil;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotBlank;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * @author 17803
+ * @date 2024-03-08 9:22
+ */
+
+@RestController
+@RequestMapping("api/stu/addbussinessInfo")
+@Api(tags = "(预览,下载,查阅)统一接口")
+public class StuAddBussinessController {
+
+    @Value("${file.path}")
+    private String filePath;
+
+    @Resource
+    private  IFileUtil IFileUtil;
+
+    @Autowired
+    private StuTransactionDocumentsInfoMapper docMapper;
+
+
+
+    @GetMapping("/viewByPurchase")
+    @ApiOperation("预览,查阅")
+    @AnonymousAccess
+    ResponseEntity<byte[]> viewByPurchase(String userId,String docName) throws IOException, IOException {
+
+        HashMap<String, String> map = new HashMap<>();
+        map.put("采购订单","/supply/部分3 采购订单1.pdf");
+        map.put("开具发票","/supply/部分3 采购订单1.pdf");
+        map.put("邮件确认订单","/supply/部分2 邮件确认订单.pdf");
+        map.put("交货对账单","/supply/部分3 采购订单1.pdf");
+        map.put("确认开增值税发票","/supply/部分3 采购订单1.pdf");
+        //map.put("确认开增值税发票","/supply/部分3 采购订单1.pdf");
+
+        String docPath = map.get(docName);
+        // 模拟加载公章图片的数据(假设在硬盘上的某个路径下)
+        String imagePath = filePath +docPath;
+// 替换为你的实际路径
+        byte[] sealBytes = Files.readAllBytes(Paths.get(imagePath));
+
+        // 构建HTTP响应,设置Content-Type为image/png
+        return ResponseEntity.ok().contentType(MediaType.APPLICATION_PDF).body(sealBytes);
+
+    }
+
+
+    @GetMapping("/downloadOrderInfo")
+    @ApiOperation("下载")
+    @AnonymousAccess
+    public void downloadOrderInfo(@RequestParam String userId ,HttpServletResponse response) {
+
+       // TokenProvider.getJWTUser(TOKEN);
+
+        IFileUtil.download(response,"/supply/部分3 采购订单1.pdf");
+
+    }
+
+
+
+
+
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSupplyBusinessController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddNodesController.java
similarity index 81%
rename from BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSupplyBusinessController.java
rename to BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddNodesController.java
index ca27815..61c562d 100644
--- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSupplyBusinessController.java
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuAddNodesController.java
@@ -6,6 +6,7 @@ package com.sztzjy.block_finance.controller;
 
 import com.sztzjy.block_finance.annotation.AnonymousAccess;
 import com.sztzjy.block_finance.entity.dto.StuAddNodesDto;
+import com.sztzjy.block_finance.entity.dto.StuSecretInfoDto;
 import com.sztzjy.block_finance.entity.stuJoinNode;
 import com.sztzjy.block_finance.service.StuBusinessSupplyService;
 import com.sztzjy.block_finance.util.ResultEntity;
@@ -28,9 +29,9 @@ import java.util.List;
 
 
 @RestController
-@RequestMapping("api/stu/businessSupply")
-@Api(tags = "供应链接口")
-public class StuSupplyBusinessController {
+@RequestMapping("api/stu/addnodes")
+@Api(tags = "加入节点,注册")
+public class StuAddNodesController {
 
     @Autowired
     private StuBusinessSupplyService stuBusinessSupplyService;
@@ -72,16 +73,15 @@ public class StuSupplyBusinessController {
 
 
 
-//    @GetMapping("/getSecretInfo")
-//    @ApiOperation(value = "密码箱公私密钥")
-//    @AnonymousAccess
-//    public ResultEntity<List<stuJoinNode>> getNodesInfo(@ApiParam("用户ID") String userId){
-//
-//        List<stuJoinNode> nodeList =  stuBusinessSupplyService.getNodesInfo(userId);
-//
-//
-//        return new ResultEntity<>(HttpStatus.OK,"获取成功",nodeList);
-//    }
+    @GetMapping("/getSecretInfo")
+    @ApiOperation(value = "获取密码箱公私密钥")
+    @AnonymousAccess
+    public ResultEntity<StuSecretInfoDto> getSecretInfo(@ApiParam("用户ID") String userId){
+
+        StuSecretInfoDto nodeList =  stuBusinessSupplyService.getSecretInfo(userId);
+
+        return new ResultEntity<>(HttpStatus.OK,"获取成功",nodeList);
+    }
 
 
 
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuEncryptOnChainController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuEncryptOnChainController.java
new file mode 100644
index 0000000..b2a3f2e
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuEncryptOnChainController.java
@@ -0,0 +1,149 @@
+package com.sztzjy.block_finance.controller;
+
+import cn.hutool.core.util.IdUtil;
+import com.sun.xml.bind.v2.TODO;
+import com.sztzjy.block_finance.annotation.AnonymousAccess;
+import com.sztzjy.block_finance.config.exception.handler.InvoceTException;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
+import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
+import com.sztzjy.block_finance.entity.dto.StutranDocDto;
+import com.sztzjy.block_finance.mappers.StuTransactionDocumentsInfoMapper;
+import com.sztzjy.block_finance.service.StuEncryptOnChainService;
+import com.sztzjy.block_finance.util.ResultEntity;
+import com.sztzjy.block_finance.util.file.IFileUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotBlank;
+import java.security.NoSuchAlgorithmException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author 17803
+ * @date 2024-03-21 15:48
+ */
+
+@RestController
+@RequestMapping("api/stu/encrypt")
+@Api(tags = "交易信息上链(一级供应商)")
+public class stuEncryptOnChainController {
+
+    @Autowired
+   private StuEncryptOnChainService service;
+
+    @Value("${file.path}")
+    private String filePath;
+
+    @Resource
+    private com.sztzjy.block_finance.util.file.IFileUtil IFileUtil;
+
+    @Autowired
+    private StuTransactionDocumentsInfoMapper docMapper;
+
+
+    @ApiOperation("交易文件数字签名加密")
+    @PostMapping("tranDoc")
+    @AnonymousAccess
+    public ResultEntity tranDoc(@RequestBody @Validated StutranDocDto dto ) throws NoSuchAlgorithmException {
+
+
+        return    service.tranDoc(dto);
+
+
+    }
+
+    @ApiOperation("交易相关信息加密")
+    @PostMapping("InfoSec")
+    @AnonymousAccess
+    public ResultEntity InfoSec(@RequestBody @Validated StutInfoSecDto dto ) throws Exception {
+
+
+        return    service.InfoSec(dto);
+
+
+    }
+
+    @PostMapping("/upload")
+    @ApiOperation("上传文件")
+    @AnonymousAccess
+    public ResultEntity upload(@RequestParam(required = true) @RequestPart MultipartFile file,
+                               @RequestParam(required = true) String userId,
+                               @ApiParam("文件名")@RequestParam(required = true) @NotBlank String fileName) {
+
+       //TODO  上传名字做校验
+
+
+
+
+
+
+        if (file.isEmpty()) {
+            throw new InvoceTException(HttpStatus.ACCEPTED, "请勿上传空文件!");
+        }
+
+        // 获取文件名
+        String originalFilename = file.getOriginalFilename();
+
+        // 判断文件扩展名是否为图片格式
+
+        if (!StringUtils.hasLength(originalFilename) || (!originalFilename.toLowerCase().endsWith(".pdf")))
+        {
+            throw new InvoceTException(HttpStatus.ACCEPTED, "请上传正确的文件!");
+        }
+
+
+        StuTransactionDocumentsInfoExample example = new StuTransactionDocumentsInfoExample();
+        example.createCriteria().andUserIdEqualTo(userId).andFileNameEqualTo(fileName);
+
+
+        List<StuTransactionDocumentsInfo> documentsInfoList = docMapper.selectByExample(example);
+
+
+        String uploadPath = IFileUtil.upload(file);
+
+
+        if (!documentsInfoList.isEmpty()){
+
+            StuTransactionDocumentsInfo documentsInfo = documentsInfoList.get(0);
+            documentsInfo.setUrl(uploadPath);
+            documentsInfo.setUpdateTime(new Date());
+
+            docMapper.updateByPrimaryKeySelective(documentsInfo);
+
+
+        }else {
+
+            StuTransactionDocumentsInfo documentsInfo = new StuTransactionDocumentsInfo();
+            documentsInfo.setCreateTime(new Date());
+            documentsInfo.setFileName(fileName);
+            documentsInfo.setUrl(uploadPath);
+            documentsInfo.setUploadStatus(1);
+            documentsInfo.setUserId(userId);
+            documentsInfo.setId((int) IdUtil.getSnowflakeNextId());
+
+            docMapper.insertSelective(documentsInfo);
+
+
+        }
+
+
+        return new ResultEntity<>(HttpStatus.OK, "上传成功",uploadPath);
+
+    }
+
+
+
+
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuTransactionConfirmationController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuTransactionConfirmationController.java
new file mode 100644
index 0000000..636a605
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/stuTransactionConfirmationController.java
@@ -0,0 +1,93 @@
+package com.sztzjy.block_finance.controller;
+
+import cn.hutool.core.util.IdUtil;
+import com.sztzjy.block_finance.annotation.AnonymousAccess;
+import com.sztzjy.block_finance.config.exception.handler.InvoceTException;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
+import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
+import com.sztzjy.block_finance.entity.dto.StutranDocDto;
+import com.sztzjy.block_finance.mappers.StuTransactionDocumentsInfoMapper;
+import com.sztzjy.block_finance.service.StuEncryptOnChainService;
+import com.sztzjy.block_finance.service.StuTransactionConfirmationService;
+import com.sztzjy.block_finance.util.ResultEntity;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.HttpStatus;
+import org.springframework.util.StringUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotBlank;
+import java.security.NoSuchAlgorithmException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author 17803
+ * @date 2024-03-21 15:48
+ */
+
+@RestController
+@RequestMapping("api/stu/transactConfirm")
+@Api(tags = "交易确认(核心企业)")
+public class stuTransactionConfirmationController {
+
+    @Autowired
+   private StuTransactionConfirmationService stuTransactionConfirmationService;
+
+    @Value("${file.path}")
+    private String filePath;
+
+    @Resource
+    private com.sztzjy.block_finance.util.file.IFileUtil IFileUtil;
+
+    @Autowired
+    private StuTransactionDocumentsInfoMapper docMapper;
+
+
+
+
+    @ApiOperation("交易文件数据")
+    @PostMapping("tranDoc")
+    @AnonymousAccess
+    public ResultEntity<List<StuTransactionDocumentsInfo>> tranDataList(String userId ){
+
+
+     return  stuTransactionConfirmationService.tranDataList(userId);
+
+
+
+    }
+
+
+    @ApiOperation("交易相关信息解密")
+    @AnonymousAccess
+   @PostMapping("updateEncryByInfo")
+    public ResultEntity  updateEncryByInfo(@RequestBody @Validated StutranDocDto dto){
+
+        return stuTransactionConfirmationService.updateEncryByInfo(dto);
+
+
+    }
+
+
+    @ApiOperation("数字签名解密")
+    @AnonymousAccess
+    @PostMapping("digitalEncryByInfo")
+    public ResultEntity  digitalEncryByInfo(@RequestBody @Validated StutInfoSecDto dto){
+
+        return stuTransactionConfirmationService.digitalEncryByInfo(dto);
+
+
+    }
+
+
+
+
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfo.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfo.java
new file mode 100644
index 0000000..9d8af39
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfo.java
@@ -0,0 +1,215 @@
+package com.sztzjy.block_finance.entity;
+
+import java.util.Date;
+
+public class StuTransactionDocumentsInfo {
+    private Integer id;
+
+    private String fileName;
+
+    private String url;
+
+    private Integer uploadStatus;
+
+    private Integer informationStatus;
+
+    private Integer informationStatusEncry;
+
+    private Integer signatureVerificationStatusEncry;
+
+    private Integer signatureVerificationStatus;
+
+    private String userId;
+
+    private Integer discountDisplay;
+
+    private Integer supplierDisplay;
+
+    private Integer coreEnterpriseDisplay;
+
+    private Integer coreEnterpriseReceiveStatus;
+
+    private Integer factoringCompanyDisplay;
+
+    private Integer factoringCompaniesReceiveStatus;
+
+    private Integer readStatus;
+
+    private Integer downloadStatus;
+
+    private Date createTime;
+
+    private Date updateTime;
+
+    private String crypDigest;
+
+    private String informationCiphertext;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName == null ? null : fileName.trim();
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url == null ? null : url.trim();
+    }
+
+    public Integer getUploadStatus() {
+        return uploadStatus;
+    }
+
+    public void setUploadStatus(Integer uploadStatus) {
+        this.uploadStatus = uploadStatus;
+    }
+
+    public Integer getInformationStatus() {
+        return informationStatus;
+    }
+
+    public void setInformationStatus(Integer informationStatus) {
+        this.informationStatus = informationStatus;
+    }
+
+    public Integer getInformationStatusEncry() {
+        return informationStatusEncry;
+    }
+
+    public void setInformationStatusEncry(Integer informationStatusEncry) {
+        this.informationStatusEncry = informationStatusEncry;
+    }
+
+    public Integer getSignatureVerificationStatusEncry() {
+        return signatureVerificationStatusEncry;
+    }
+
+    public void setSignatureVerificationStatusEncry(Integer signatureVerificationStatusEncry) {
+        this.signatureVerificationStatusEncry = signatureVerificationStatusEncry;
+    }
+
+    public Integer getSignatureVerificationStatus() {
+        return signatureVerificationStatus;
+    }
+
+    public void setSignatureVerificationStatus(Integer signatureVerificationStatus) {
+        this.signatureVerificationStatus = signatureVerificationStatus;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId == null ? null : userId.trim();
+    }
+
+    public Integer getDiscountDisplay() {
+        return discountDisplay;
+    }
+
+    public void setDiscountDisplay(Integer discountDisplay) {
+        this.discountDisplay = discountDisplay;
+    }
+
+    public Integer getSupplierDisplay() {
+        return supplierDisplay;
+    }
+
+    public void setSupplierDisplay(Integer supplierDisplay) {
+        this.supplierDisplay = supplierDisplay;
+    }
+
+    public Integer getCoreEnterpriseDisplay() {
+        return coreEnterpriseDisplay;
+    }
+
+    public void setCoreEnterpriseDisplay(Integer coreEnterpriseDisplay) {
+        this.coreEnterpriseDisplay = coreEnterpriseDisplay;
+    }
+
+    public Integer getCoreEnterpriseReceiveStatus() {
+        return coreEnterpriseReceiveStatus;
+    }
+
+    public void setCoreEnterpriseReceiveStatus(Integer coreEnterpriseReceiveStatus) {
+        this.coreEnterpriseReceiveStatus = coreEnterpriseReceiveStatus;
+    }
+
+    public Integer getFactoringCompanyDisplay() {
+        return factoringCompanyDisplay;
+    }
+
+    public void setFactoringCompanyDisplay(Integer factoringCompanyDisplay) {
+        this.factoringCompanyDisplay = factoringCompanyDisplay;
+    }
+
+    public Integer getFactoringCompaniesReceiveStatus() {
+        return factoringCompaniesReceiveStatus;
+    }
+
+    public void setFactoringCompaniesReceiveStatus(Integer factoringCompaniesReceiveStatus) {
+        this.factoringCompaniesReceiveStatus = factoringCompaniesReceiveStatus;
+    }
+
+    public Integer getReadStatus() {
+        return readStatus;
+    }
+
+    public void setReadStatus(Integer readStatus) {
+        this.readStatus = readStatus;
+    }
+
+    public Integer getDownloadStatus() {
+        return downloadStatus;
+    }
+
+    public void setDownloadStatus(Integer downloadStatus) {
+        this.downloadStatus = downloadStatus;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getCrypDigest() {
+        return crypDigest;
+    }
+
+    public void setCrypDigest(String crypDigest) {
+        this.crypDigest = crypDigest == null ? null : crypDigest.trim();
+    }
+
+    public String getInformationCiphertext() {
+        return informationCiphertext;
+    }
+
+    public void setInformationCiphertext(String informationCiphertext) {
+        this.informationCiphertext = informationCiphertext == null ? null : informationCiphertext.trim();
+    }
+}
\ No newline at end of file
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfoExample.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfoExample.java
new file mode 100644
index 0000000..27d0e7d
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuTransactionDocumentsInfoExample.java
@@ -0,0 +1,1510 @@
+package com.sztzjy.block_finance.entity;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class StuTransactionDocumentsInfoExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public StuTransactionDocumentsInfoExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Integer value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Integer> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Integer> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Integer value1, Integer value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameIsNull() {
+            addCriterion("file_name is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameIsNotNull() {
+            addCriterion("file_name is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameEqualTo(String value) {
+            addCriterion("file_name =", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotEqualTo(String value) {
+            addCriterion("file_name <>", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameGreaterThan(String value) {
+            addCriterion("file_name >", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameGreaterThanOrEqualTo(String value) {
+            addCriterion("file_name >=", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameLessThan(String value) {
+            addCriterion("file_name <", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameLessThanOrEqualTo(String value) {
+            addCriterion("file_name <=", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameLike(String value) {
+            addCriterion("file_name like", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotLike(String value) {
+            addCriterion("file_name not like", value, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameIn(List<String> values) {
+            addCriterion("file_name in", values, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotIn(List<String> values) {
+            addCriterion("file_name not in", values, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameBetween(String value1, String value2) {
+            addCriterion("file_name between", value1, value2, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andFileNameNotBetween(String value1, String value2) {
+            addCriterion("file_name not between", value1, value2, "fileName");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNull() {
+            addCriterion("url is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIsNotNull() {
+            addCriterion("url is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlEqualTo(String value) {
+            addCriterion("url =", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotEqualTo(String value) {
+            addCriterion("url <>", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThan(String value) {
+            addCriterion("url >", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlGreaterThanOrEqualTo(String value) {
+            addCriterion("url >=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThan(String value) {
+            addCriterion("url <", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLessThanOrEqualTo(String value) {
+            addCriterion("url <=", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlLike(String value) {
+            addCriterion("url like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotLike(String value) {
+            addCriterion("url not like", value, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlIn(List<String> values) {
+            addCriterion("url in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotIn(List<String> values) {
+            addCriterion("url not in", values, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlBetween(String value1, String value2) {
+            addCriterion("url between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUrlNotBetween(String value1, String value2) {
+            addCriterion("url not between", value1, value2, "url");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusIsNull() {
+            addCriterion("upload_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusIsNotNull() {
+            addCriterion("upload_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusEqualTo(Integer value) {
+            addCriterion("upload_status =", value, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusNotEqualTo(Integer value) {
+            addCriterion("upload_status <>", value, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusGreaterThan(Integer value) {
+            addCriterion("upload_status >", value, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("upload_status >=", value, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusLessThan(Integer value) {
+            addCriterion("upload_status <", value, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("upload_status <=", value, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusIn(List<Integer> values) {
+            addCriterion("upload_status in", values, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusNotIn(List<Integer> values) {
+            addCriterion("upload_status not in", values, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusBetween(Integer value1, Integer value2) {
+            addCriterion("upload_status between", value1, value2, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUploadStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("upload_status not between", value1, value2, "uploadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusIsNull() {
+            addCriterion("information_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusIsNotNull() {
+            addCriterion("information_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEqualTo(Integer value) {
+            addCriterion("information_status =", value, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusNotEqualTo(Integer value) {
+            addCriterion("information_status <>", value, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusGreaterThan(Integer value) {
+            addCriterion("information_status >", value, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("information_status >=", value, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusLessThan(Integer value) {
+            addCriterion("information_status <", value, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("information_status <=", value, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusIn(List<Integer> values) {
+            addCriterion("information_status in", values, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusNotIn(List<Integer> values) {
+            addCriterion("information_status not in", values, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusBetween(Integer value1, Integer value2) {
+            addCriterion("information_status between", value1, value2, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("information_status not between", value1, value2, "informationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryIsNull() {
+            addCriterion("information_status_encry is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryIsNotNull() {
+            addCriterion("information_status_encry is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryEqualTo(Integer value) {
+            addCriterion("information_status_encry =", value, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryNotEqualTo(Integer value) {
+            addCriterion("information_status_encry <>", value, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryGreaterThan(Integer value) {
+            addCriterion("information_status_encry >", value, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryGreaterThanOrEqualTo(Integer value) {
+            addCriterion("information_status_encry >=", value, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryLessThan(Integer value) {
+            addCriterion("information_status_encry <", value, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryLessThanOrEqualTo(Integer value) {
+            addCriterion("information_status_encry <=", value, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryIn(List<Integer> values) {
+            addCriterion("information_status_encry in", values, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryNotIn(List<Integer> values) {
+            addCriterion("information_status_encry not in", values, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryBetween(Integer value1, Integer value2) {
+            addCriterion("information_status_encry between", value1, value2, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationStatusEncryNotBetween(Integer value1, Integer value2) {
+            addCriterion("information_status_encry not between", value1, value2, "informationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryIsNull() {
+            addCriterion("signature_verification_status_encry is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryIsNotNull() {
+            addCriterion("signature_verification_status_encry is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryEqualTo(Integer value) {
+            addCriterion("signature_verification_status_encry =", value, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryNotEqualTo(Integer value) {
+            addCriterion("signature_verification_status_encry <>", value, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryGreaterThan(Integer value) {
+            addCriterion("signature_verification_status_encry >", value, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryGreaterThanOrEqualTo(Integer value) {
+            addCriterion("signature_verification_status_encry >=", value, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryLessThan(Integer value) {
+            addCriterion("signature_verification_status_encry <", value, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryLessThanOrEqualTo(Integer value) {
+            addCriterion("signature_verification_status_encry <=", value, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryIn(List<Integer> values) {
+            addCriterion("signature_verification_status_encry in", values, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryNotIn(List<Integer> values) {
+            addCriterion("signature_verification_status_encry not in", values, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryBetween(Integer value1, Integer value2) {
+            addCriterion("signature_verification_status_encry between", value1, value2, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEncryNotBetween(Integer value1, Integer value2) {
+            addCriterion("signature_verification_status_encry not between", value1, value2, "signatureVerificationStatusEncry");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusIsNull() {
+            addCriterion("signature_verification_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusIsNotNull() {
+            addCriterion("signature_verification_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusEqualTo(Integer value) {
+            addCriterion("signature_verification_status =", value, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusNotEqualTo(Integer value) {
+            addCriterion("signature_verification_status <>", value, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusGreaterThan(Integer value) {
+            addCriterion("signature_verification_status >", value, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("signature_verification_status >=", value, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusLessThan(Integer value) {
+            addCriterion("signature_verification_status <", value, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("signature_verification_status <=", value, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusIn(List<Integer> values) {
+            addCriterion("signature_verification_status in", values, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusNotIn(List<Integer> values) {
+            addCriterion("signature_verification_status not in", values, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusBetween(Integer value1, Integer value2) {
+            addCriterion("signature_verification_status between", value1, value2, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andSignatureVerificationStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("signature_verification_status not between", value1, value2, "signatureVerificationStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIsNull() {
+            addCriterion("user_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIsNotNull() {
+            addCriterion("user_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdEqualTo(String value) {
+            addCriterion("user_id =", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotEqualTo(String value) {
+            addCriterion("user_id <>", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdGreaterThan(String value) {
+            addCriterion("user_id >", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdGreaterThanOrEqualTo(String value) {
+            addCriterion("user_id >=", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLessThan(String value) {
+            addCriterion("user_id <", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLessThanOrEqualTo(String value) {
+            addCriterion("user_id <=", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdLike(String value) {
+            addCriterion("user_id like", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotLike(String value) {
+            addCriterion("user_id not like", value, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdIn(List<String> values) {
+            addCriterion("user_id in", values, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotIn(List<String> values) {
+            addCriterion("user_id not in", values, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdBetween(String value1, String value2) {
+            addCriterion("user_id between", value1, value2, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andUserIdNotBetween(String value1, String value2) {
+            addCriterion("user_id not between", value1, value2, "userId");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayIsNull() {
+            addCriterion("discount_display is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayIsNotNull() {
+            addCriterion("discount_display is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayEqualTo(Integer value) {
+            addCriterion("discount_display =", value, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayNotEqualTo(Integer value) {
+            addCriterion("discount_display <>", value, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayGreaterThan(Integer value) {
+            addCriterion("discount_display >", value, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayGreaterThanOrEqualTo(Integer value) {
+            addCriterion("discount_display >=", value, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayLessThan(Integer value) {
+            addCriterion("discount_display <", value, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayLessThanOrEqualTo(Integer value) {
+            addCriterion("discount_display <=", value, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayIn(List<Integer> values) {
+            addCriterion("discount_display in", values, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayNotIn(List<Integer> values) {
+            addCriterion("discount_display not in", values, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayBetween(Integer value1, Integer value2) {
+            addCriterion("discount_display between", value1, value2, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andDiscountDisplayNotBetween(Integer value1, Integer value2) {
+            addCriterion("discount_display not between", value1, value2, "discountDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayIsNull() {
+            addCriterion("supplier_display is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayIsNotNull() {
+            addCriterion("supplier_display is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayEqualTo(Integer value) {
+            addCriterion("supplier_display =", value, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayNotEqualTo(Integer value) {
+            addCriterion("supplier_display <>", value, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayGreaterThan(Integer value) {
+            addCriterion("supplier_display >", value, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayGreaterThanOrEqualTo(Integer value) {
+            addCriterion("supplier_display >=", value, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayLessThan(Integer value) {
+            addCriterion("supplier_display <", value, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayLessThanOrEqualTo(Integer value) {
+            addCriterion("supplier_display <=", value, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayIn(List<Integer> values) {
+            addCriterion("supplier_display in", values, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayNotIn(List<Integer> values) {
+            addCriterion("supplier_display not in", values, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayBetween(Integer value1, Integer value2) {
+            addCriterion("supplier_display between", value1, value2, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andSupplierDisplayNotBetween(Integer value1, Integer value2) {
+            addCriterion("supplier_display not between", value1, value2, "supplierDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayIsNull() {
+            addCriterion("core_enterprise_display is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayIsNotNull() {
+            addCriterion("core_enterprise_display is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayEqualTo(Integer value) {
+            addCriterion("core_enterprise_display =", value, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayNotEqualTo(Integer value) {
+            addCriterion("core_enterprise_display <>", value, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayGreaterThan(Integer value) {
+            addCriterion("core_enterprise_display >", value, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayGreaterThanOrEqualTo(Integer value) {
+            addCriterion("core_enterprise_display >=", value, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayLessThan(Integer value) {
+            addCriterion("core_enterprise_display <", value, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayLessThanOrEqualTo(Integer value) {
+            addCriterion("core_enterprise_display <=", value, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayIn(List<Integer> values) {
+            addCriterion("core_enterprise_display in", values, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayNotIn(List<Integer> values) {
+            addCriterion("core_enterprise_display not in", values, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayBetween(Integer value1, Integer value2) {
+            addCriterion("core_enterprise_display between", value1, value2, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseDisplayNotBetween(Integer value1, Integer value2) {
+            addCriterion("core_enterprise_display not between", value1, value2, "coreEnterpriseDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusIsNull() {
+            addCriterion("core_enterprise_receive_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusIsNotNull() {
+            addCriterion("core_enterprise_receive_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusEqualTo(Integer value) {
+            addCriterion("core_enterprise_receive_status =", value, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusNotEqualTo(Integer value) {
+            addCriterion("core_enterprise_receive_status <>", value, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusGreaterThan(Integer value) {
+            addCriterion("core_enterprise_receive_status >", value, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("core_enterprise_receive_status >=", value, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusLessThan(Integer value) {
+            addCriterion("core_enterprise_receive_status <", value, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("core_enterprise_receive_status <=", value, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusIn(List<Integer> values) {
+            addCriterion("core_enterprise_receive_status in", values, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusNotIn(List<Integer> values) {
+            addCriterion("core_enterprise_receive_status not in", values, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusBetween(Integer value1, Integer value2) {
+            addCriterion("core_enterprise_receive_status between", value1, value2, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCoreEnterpriseReceiveStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("core_enterprise_receive_status not between", value1, value2, "coreEnterpriseReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayIsNull() {
+            addCriterion("factoring_company_display is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayIsNotNull() {
+            addCriterion("factoring_company_display is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayEqualTo(Integer value) {
+            addCriterion("factoring_company_display =", value, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayNotEqualTo(Integer value) {
+            addCriterion("factoring_company_display <>", value, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayGreaterThan(Integer value) {
+            addCriterion("factoring_company_display >", value, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayGreaterThanOrEqualTo(Integer value) {
+            addCriterion("factoring_company_display >=", value, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayLessThan(Integer value) {
+            addCriterion("factoring_company_display <", value, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayLessThanOrEqualTo(Integer value) {
+            addCriterion("factoring_company_display <=", value, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayIn(List<Integer> values) {
+            addCriterion("factoring_company_display in", values, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayNotIn(List<Integer> values) {
+            addCriterion("factoring_company_display not in", values, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayBetween(Integer value1, Integer value2) {
+            addCriterion("factoring_company_display between", value1, value2, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompanyDisplayNotBetween(Integer value1, Integer value2) {
+            addCriterion("factoring_company_display not between", value1, value2, "factoringCompanyDisplay");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusIsNull() {
+            addCriterion("factoring_companies_receive_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusIsNotNull() {
+            addCriterion("factoring_companies_receive_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusEqualTo(Integer value) {
+            addCriterion("factoring_companies_receive_status =", value, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusNotEqualTo(Integer value) {
+            addCriterion("factoring_companies_receive_status <>", value, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusGreaterThan(Integer value) {
+            addCriterion("factoring_companies_receive_status >", value, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("factoring_companies_receive_status >=", value, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusLessThan(Integer value) {
+            addCriterion("factoring_companies_receive_status <", value, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("factoring_companies_receive_status <=", value, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusIn(List<Integer> values) {
+            addCriterion("factoring_companies_receive_status in", values, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusNotIn(List<Integer> values) {
+            addCriterion("factoring_companies_receive_status not in", values, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusBetween(Integer value1, Integer value2) {
+            addCriterion("factoring_companies_receive_status between", value1, value2, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andFactoringCompaniesReceiveStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("factoring_companies_receive_status not between", value1, value2, "factoringCompaniesReceiveStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusIsNull() {
+            addCriterion("read_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusIsNotNull() {
+            addCriterion("read_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusEqualTo(Integer value) {
+            addCriterion("read_status =", value, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusNotEqualTo(Integer value) {
+            addCriterion("read_status <>", value, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusGreaterThan(Integer value) {
+            addCriterion("read_status >", value, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("read_status >=", value, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusLessThan(Integer value) {
+            addCriterion("read_status <", value, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("read_status <=", value, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusIn(List<Integer> values) {
+            addCriterion("read_status in", values, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusNotIn(List<Integer> values) {
+            addCriterion("read_status not in", values, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusBetween(Integer value1, Integer value2) {
+            addCriterion("read_status between", value1, value2, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andReadStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("read_status not between", value1, value2, "readStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusIsNull() {
+            addCriterion("download_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusIsNotNull() {
+            addCriterion("download_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusEqualTo(Integer value) {
+            addCriterion("download_status =", value, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusNotEqualTo(Integer value) {
+            addCriterion("download_status <>", value, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusGreaterThan(Integer value) {
+            addCriterion("download_status >", value, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("download_status >=", value, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusLessThan(Integer value) {
+            addCriterion("download_status <", value, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("download_status <=", value, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusIn(List<Integer> values) {
+            addCriterion("download_status in", values, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusNotIn(List<Integer> values) {
+            addCriterion("download_status not in", values, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusBetween(Integer value1, Integer value2) {
+            addCriterion("download_status between", value1, value2, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDownloadStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("download_status not between", value1, value2, "downloadStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNull() {
+            addCriterion("create_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIsNotNull() {
+            addCriterion("create_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeEqualTo(Date value) {
+            addCriterion("create_time =", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotEqualTo(Date value) {
+            addCriterion("create_time <>", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThan(Date value) {
+            addCriterion("create_time >", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("create_time >=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThan(Date value) {
+            addCriterion("create_time <", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("create_time <=", value, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeIn(List<Date> values) {
+            addCriterion("create_time in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotIn(List<Date> values) {
+            addCriterion("create_time not in", values, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeBetween(Date value1, Date value2) {
+            addCriterion("create_time between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("create_time not between", value1, value2, "createTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNull() {
+            addCriterion("update_time is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIsNotNull() {
+            addCriterion("update_time is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeEqualTo(Date value) {
+            addCriterion("update_time =", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotEqualTo(Date value) {
+            addCriterion("update_time <>", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThan(Date value) {
+            addCriterion("update_time >", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) {
+            addCriterion("update_time >=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThan(Date value) {
+            addCriterion("update_time <", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeLessThanOrEqualTo(Date value) {
+            addCriterion("update_time <=", value, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeIn(List<Date> values) {
+            addCriterion("update_time in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotIn(List<Date> values) {
+            addCriterion("update_time not in", values, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeBetween(Date value1, Date value2) {
+            addCriterion("update_time between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andUpdateTimeNotBetween(Date value1, Date value2) {
+            addCriterion("update_time not between", value1, value2, "updateTime");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestIsNull() {
+            addCriterion("cryp_digest is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestIsNotNull() {
+            addCriterion("cryp_digest is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestEqualTo(String value) {
+            addCriterion("cryp_digest =", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestNotEqualTo(String value) {
+            addCriterion("cryp_digest <>", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestGreaterThan(String value) {
+            addCriterion("cryp_digest >", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestGreaterThanOrEqualTo(String value) {
+            addCriterion("cryp_digest >=", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestLessThan(String value) {
+            addCriterion("cryp_digest <", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestLessThanOrEqualTo(String value) {
+            addCriterion("cryp_digest <=", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestLike(String value) {
+            addCriterion("cryp_digest like", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestNotLike(String value) {
+            addCriterion("cryp_digest not like", value, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestIn(List<String> values) {
+            addCriterion("cryp_digest in", values, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestNotIn(List<String> values) {
+            addCriterion("cryp_digest not in", values, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestBetween(String value1, String value2) {
+            addCriterion("cryp_digest between", value1, value2, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andCrypDigestNotBetween(String value1, String value2) {
+            addCriterion("cryp_digest not between", value1, value2, "crypDigest");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextIsNull() {
+            addCriterion("information_ciphertext is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextIsNotNull() {
+            addCriterion("information_ciphertext is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextEqualTo(String value) {
+            addCriterion("information_ciphertext =", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextNotEqualTo(String value) {
+            addCriterion("information_ciphertext <>", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextGreaterThan(String value) {
+            addCriterion("information_ciphertext >", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextGreaterThanOrEqualTo(String value) {
+            addCriterion("information_ciphertext >=", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextLessThan(String value) {
+            addCriterion("information_ciphertext <", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextLessThanOrEqualTo(String value) {
+            addCriterion("information_ciphertext <=", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextLike(String value) {
+            addCriterion("information_ciphertext like", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextNotLike(String value) {
+            addCriterion("information_ciphertext not like", value, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextIn(List<String> values) {
+            addCriterion("information_ciphertext in", values, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextNotIn(List<String> values) {
+            addCriterion("information_ciphertext not in", values, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextBetween(String value1, String value2) {
+            addCriterion("information_ciphertext between", value1, value2, "informationCiphertext");
+            return (Criteria) this;
+        }
+
+        public Criteria andInformationCiphertextNotBetween(String value1, String value2) {
+            addCriterion("information_ciphertext not between", value1, value2, "informationCiphertext");
+            return (Criteria) this;
+        }
+    }
+
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}
\ No newline at end of file
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StuSecretInfoDto.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StuSecretInfoDto.java
new file mode 100644
index 0000000..7dba665
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StuSecretInfoDto.java
@@ -0,0 +1,37 @@
+package com.sztzjy.block_finance.entity.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author 17803
+ * @date 2024-03-07 17:34
+ */
+
+@Data
+@ApiModel(description = "密码箱")
+public class StuSecretInfoDto {
+    @ApiModelProperty(value = "昆明闻泰通讯有限公司公钥")
+    private String kunMingPublicKey;
+    @ApiModelProperty(value = "昆明闻泰通讯有限公司私钥")
+    private String kunMingPrivateKey;
+
+    @ApiModelProperty(value = "银邦科技有限公司公钥")
+    private String yinBangPublicKey;
+
+    @ApiModelProperty(value = "银邦科技有限公司私钥")
+    private String yinBangPrivateKey;
+
+    @ApiModelProperty(value = "信丰世嘉科技有限公司公钥")
+    private String xinFengPublicKey;
+    @ApiModelProperty(value = "信丰世嘉科技有限公司私钥")
+    private String xinFengPrivateKey;
+
+    @ApiModelProperty(value = "深圳拓朴商业保理有限公司公钥")
+    private String shenZhenPublicKey;
+    @ApiModelProperty(value = "深圳拓朴商业保理有限公司私钥")
+    private String shenZhenPrivateKey;
+
+
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutInfoSecDto.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutInfoSecDto.java
new file mode 100644
index 0000000..99bcfd8
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutInfoSecDto.java
@@ -0,0 +1,35 @@
+package com.sztzjy.block_finance.entity.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author 17803
+ * @date 2024-03-21 15:53
+ */
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class StutInfoSecDto {
+
+
+//    private String publicKey;
+    @NotBlank
+    private String publicKey;
+
+    @NotBlank
+    private String userId;
+
+
+
+
+
+
+
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutranDocDto.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutranDocDto.java
new file mode 100644
index 0000000..a3a2c5e
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/dto/StutranDocDto.java
@@ -0,0 +1,36 @@
+package com.sztzjy.block_finance.entity.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author 17803
+ * @date 2024-03-21 15:53
+ */
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class StutranDocDto {
+
+
+//    private String publicKey;
+    @NotBlank
+    private String privateKey;
+
+    @NotBlank
+    private String userId;
+
+
+
+
+
+
+
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuTransactionDocumentsInfoMapper.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuTransactionDocumentsInfoMapper.java
new file mode 100644
index 0000000..c942ffd
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuTransactionDocumentsInfoMapper.java
@@ -0,0 +1,32 @@
+package com.sztzjy.block_finance.mappers;
+
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
+import java.util.List;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
+public interface StuTransactionDocumentsInfoMapper {
+    long countByExample(StuTransactionDocumentsInfoExample example);
+
+    int deleteByExample(StuTransactionDocumentsInfoExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(StuTransactionDocumentsInfo record);
+
+    int insertSelective(StuTransactionDocumentsInfo record);
+
+    List<StuTransactionDocumentsInfo> selectByExample(StuTransactionDocumentsInfoExample example);
+
+    StuTransactionDocumentsInfo selectByPrimaryKey(Integer id);
+
+    int updateByExampleSelective(@Param("record") StuTransactionDocumentsInfo record, @Param("example") StuTransactionDocumentsInfoExample example);
+
+    int updateByExample(@Param("record") StuTransactionDocumentsInfo record, @Param("example") StuTransactionDocumentsInfoExample example);
+
+    int updateByPrimaryKeySelective(StuTransactionDocumentsInfo record);
+
+    int updateByPrimaryKey(StuTransactionDocumentsInfo record);
+}
\ No newline at end of file
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/stuJoinNodeMapper.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/stuJoinNodeMapper.java
index 91fed9f..27ba884 100644
--- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/stuJoinNodeMapper.java
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/stuJoinNodeMapper.java
@@ -3,8 +3,10 @@ package com.sztzjy.block_finance.mappers;
 import com.sztzjy.block_finance.entity.stuJoinNode;
 import com.sztzjy.block_finance.entity.stuJoinNodeExample;
 import java.util.List;
-import org.apache.ibatis.annotations.Param;
 
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+@Mapper
 public interface stuJoinNodeMapper {
     long countByExample(stuJoinNodeExample example);
 
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuBusinessSupplyService.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuBusinessSupplyService.java
index a04a70a..359ea62 100644
--- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuBusinessSupplyService.java
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuBusinessSupplyService.java
@@ -1,6 +1,7 @@
 package com.sztzjy.block_finance.service;
 
 import com.sztzjy.block_finance.entity.dto.StuAddNodesDto;
+import com.sztzjy.block_finance.entity.dto.StuSecretInfoDto;
 import com.sztzjy.block_finance.entity.stuJoinNode;
 import io.swagger.annotations.ApiParam;
 import org.springframework.web.multipart.MultipartFile;
@@ -23,4 +24,6 @@ public interface StuBusinessSupplyService {
     String uploadBussinessImg(MultipartFile file,
                               String userId,
                               String userName);
+    //获取密码箱公私密钥
+    StuSecretInfoDto getSecretInfo(String userId);
 }
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuEncryptOnChainService.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuEncryptOnChainService.java
new file mode 100644
index 0000000..b758f79
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuEncryptOnChainService.java
@@ -0,0 +1,25 @@
+package com.sztzjy.block_finance.service;
+
+import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
+import com.sztzjy.block_finance.entity.dto.StutranDocDto;
+import com.sztzjy.block_finance.util.ResultEntity;
+
+import java.security.NoSuchAlgorithmException;
+
+/**
+ * @author 17803
+ * @date 2024-03-21 15:57
+ */
+public interface StuEncryptOnChainService {
+
+    //交易文件数字签名
+    ResultEntity tranDoc(StutranDocDto dto) throws NoSuchAlgorithmException;
+
+    /**
+        * 交易相关信息加密
+        * @param dto
+        * @return
+    */
+
+    ResultEntity InfoSec(StutInfoSecDto dto) throws Exception;
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuTransactionConfirmationService.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuTransactionConfirmationService.java
new file mode 100644
index 0000000..5f98852
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuTransactionConfirmationService.java
@@ -0,0 +1,40 @@
+package com.sztzjy.block_finance.service;
+
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
+import com.sztzjy.block_finance.entity.dto.StutranDocDto;
+import com.sztzjy.block_finance.util.ResultEntity;
+
+import java.util.List;
+
+/**
+ * @author 17803
+ * @date 2024-03-25 17:39
+ */
+
+
+public interface StuTransactionConfirmationService {
+    /**
+        * 交易文件数据
+        * @param userId
+        * @return
+    */
+
+    ResultEntity<List<StuTransactionDocumentsInfo>> tranDataList(String userId);
+
+    /**
+        * 交易相关信息解密
+        * @param dto
+        * @return
+    */
+
+    ResultEntity updateEncryByInfo(StutranDocDto dto);
+
+    /**
+        * 数字签名解密
+        * @param dto
+        * @return
+    */
+
+    ResultEntity digitalEncryByInfo(StutInfoSecDto dto);
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuBusinessSupplyServiceImpl.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuBusinessSupplyServiceImpl.java
index beec415..cc759db 100644
--- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuBusinessSupplyServiceImpl.java
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuBusinessSupplyServiceImpl.java
@@ -9,6 +9,7 @@ import com.sztzjy.block_finance.config.Constant;
 import com.sztzjy.block_finance.config.exception.handler.InvoceTException;
 import com.sztzjy.block_finance.config.exception.handler.NoContentException;
 import com.sztzjy.block_finance.entity.dto.StuAddNodesDto;
+import com.sztzjy.block_finance.entity.dto.StuSecretInfoDto;
 import com.sztzjy.block_finance.entity.stuJoinNode;
 import com.sztzjy.block_finance.entity.stuJoinNodeExample;
 import com.sztzjy.block_finance.mappers.stuJoinNodeMapper;
@@ -249,4 +250,24 @@ public class StuBusinessSupplyServiceImpl implements StuBusinessSupplyService {
         }
 
     }
+
+    //获取密码箱公私密钥
+    @Override
+    public StuSecretInfoDto getSecretInfo(String userId) {
+
+        StuSecretInfoDto stuSecretInfoDto = new StuSecretInfoDto();
+        stuSecretInfoDto.setKunMingPublicKey(Constant.KUNMINGPUBLICKEY);
+        stuSecretInfoDto.setKunMingPrivateKey(Constant.KUNMINGPRIVATEKEY);
+
+        stuSecretInfoDto.setXinFengPublicKey(Constant.XINFENGPUBLICKEY);
+        stuSecretInfoDto.setXinFengPrivateKey(Constant.XINFENGPRIVATEKEY);
+
+        stuSecretInfoDto.setYinBangPublicKey(Constant.YINBANGPUBLICKEY);
+        stuSecretInfoDto.setYinBangPrivateKey(Constant.YINBANGPRIVATEKEY);
+
+        stuSecretInfoDto.setShenZhenPublicKey(Constant.SHENZHENPUBLICKEY);
+        stuSecretInfoDto.setShenZhenPrivateKey(Constant.SHENZHENPRIVATEKEY);
+
+        return stuSecretInfoDto;
+    }
 }
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuEncryptOnChainServiceImpl.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuEncryptOnChainServiceImpl.java
new file mode 100644
index 0000000..bb49f1a
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuEncryptOnChainServiceImpl.java
@@ -0,0 +1,119 @@
+package com.sztzjy.block_finance.service.impl;/**
+ * @author 17803
+ * @date 2024-03-21 15:58
+ */
+
+import com.sztzjy.block_finance.config.Constant;
+import com.sztzjy.block_finance.config.exception.handler.InvoceTException;
+import com.sztzjy.block_finance.config.exception.handler.ServiceException;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
+import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
+import com.sztzjy.block_finance.entity.dto.StutranDocDto;
+import com.sztzjy.block_finance.mappers.StuTransactionDocumentsInfoMapper;
+import com.sztzjy.block_finance.service.StuEncryptOnChainService;
+import com.sztzjy.block_finance.util.ResultEntity;
+import com.sztzjy.block_finance.util.RsaUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+
+import java.security.NoSuchAlgorithmException;
+import java.util.List;
+
+@Service
+public class StuEncryptOnChainServiceImpl implements StuEncryptOnChainService {
+
+
+
+    @Autowired
+    private StuTransactionDocumentsInfoMapper documentsInfoMapper;
+
+    //交易文件数字签名
+    @Override
+    public ResultEntity tranDoc(StutranDocDto dto) throws NoSuchAlgorithmException {
+
+        //校验私钥
+        if (Constant.XINFENGPRIVATEKEY.equals(dto.getPrivateKey()))
+        {
+
+                //加密摘要
+               // String s = RsaUtil.encryptByPrivateKey(dto.getUserId(),Constant.XINFENGPRIVATEKEY);
+                String s = RsaUtil.generateHash(dto.getUserId());
+
+                StuTransactionDocumentsInfoExample example = new StuTransactionDocumentsInfoExample();
+                example.createCriteria().andUserIdEqualTo(dto.getUserId());
+                //查询用户数据
+                List<StuTransactionDocumentsInfo> stuTransactionDocumentsInfoList = documentsInfoMapper.selectByExample(example);
+                if (stuTransactionDocumentsInfoList.size() == 5){
+
+                    //五条数据批量更新
+
+                    stuTransactionDocumentsInfoList.forEach(documentsInfo->{
+                        documentsInfo.setCrypDigest(s);
+                        documentsInfo.setSignatureVerificationStatus(1);
+                        documentsInfoMapper.updateByPrimaryKeySelective(documentsInfo);
+                    });
+
+                    return new ResultEntity<>(HttpStatus.OK,"加密成功",s);
+                }else {
+                    throw  new ServiceException(HttpStatus.ACCEPTED,"请先完成文件上传!");
+
+                }
+
+
+        }else {
+            throw  new ServiceException(HttpStatus.ACCEPTED,"请选择正确的密钥!");
+        }
+
+
+
+
+    }
+
+    /**
+     * 交易相关信息加密
+     * @param dto
+     * @return
+     */
+    @Override
+    public ResultEntity InfoSec(StutInfoSecDto dto) throws Exception {
+
+        //校验公钥
+        if (Constant.XINFENGPUBLICKEY.equals(dto.getPublicKey()))
+        {
+
+
+            String s = RsaUtil.encryptByPublicKey(dto.getUserId(),Constant.XINFENGPUBLICKEY);
+            StuTransactionDocumentsInfoExample example = new StuTransactionDocumentsInfoExample();
+            example.createCriteria().andUserIdEqualTo(dto.getUserId());
+            //查询用户数据
+            List<StuTransactionDocumentsInfo> stuTransactionDocumentsInfoList = documentsInfoMapper.selectByExample(example);
+            if (stuTransactionDocumentsInfoList.size() == 5){
+
+                    //五条数据批量更新
+                    stuTransactionDocumentsInfoList.forEach(documentsInfo->{
+                    documentsInfo.setInformationCiphertext(s);
+                    documentsInfo.setInformationStatus(1);
+
+                    documentsInfoMapper.updateByPrimaryKeySelective(documentsInfo);
+                });
+
+                return new ResultEntity<>(HttpStatus.OK,"加密成功",s);
+            }else {
+
+                throw  new ServiceException(HttpStatus.ACCEPTED,"请先完成文件上传!");
+            }
+
+
+
+        }else
+        {
+            throw  new ServiceException(HttpStatus.ACCEPTED,"请选择正确的密钥!");
+        }
+
+
+
+
+    }
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuTransactionConfirmationServiceImpl.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuTransactionConfirmationServiceImpl.java
new file mode 100644
index 0000000..2fab844
--- /dev/null
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuTransactionConfirmationServiceImpl.java
@@ -0,0 +1,155 @@
+package com.sztzjy.block_finance.service.impl;/**
+ * @author 17803
+ * @date 2024-03-25 17:39
+ */
+
+import com.sztzjy.block_finance.config.Constant;
+import com.sztzjy.block_finance.config.exception.handler.ServiceException;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
+import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
+import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
+import com.sztzjy.block_finance.entity.dto.StutranDocDto;
+import com.sztzjy.block_finance.mappers.StuTransactionDocumentsInfoMapper;
+import com.sztzjy.block_finance.service.StuTransactionConfirmationService;
+import com.sztzjy.block_finance.util.ResultEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class StuTransactionConfirmationServiceImpl implements StuTransactionConfirmationService {
+
+
+    @Autowired
+    private StuTransactionDocumentsInfoMapper documentsInfoMapper;
+
+    /**
+        * 交易文件数据
+        * @param userId
+        * @return
+    */
+
+    @Override
+    public ResultEntity<List<StuTransactionDocumentsInfo>> tranDataList(String userId) {
+
+        StuTransactionDocumentsInfoExample example = new StuTransactionDocumentsInfoExample();
+        example.createCriteria().andUserIdEqualTo(userId);
+        List<StuTransactionDocumentsInfo> stuTransactionDocumentsInfoList = documentsInfoMapper.selectByExample(example);
+        if (!stuTransactionDocumentsInfoList.isEmpty()){
+
+            //判断交易相关信息解密状态
+            if (stuTransactionDocumentsInfoList.get(0).getInformationStatusEncry() == 1){
+                return  new ResultEntity<>(HttpStatus.OK,"获取成功!",stuTransactionDocumentsInfoList);
+            }
+
+            stuTransactionDocumentsInfoList.forEach(item->{
+                item.setFileName("--");
+
+            });
+            return  new ResultEntity<>(HttpStatus.OK,"获取成功!",stuTransactionDocumentsInfoList);
+
+        }else {
+
+            return  new ResultEntity<>(HttpStatus.OK);
+        }
+
+
+
+    }
+
+    /**
+        * 交易相关信息解密
+        * @param dto
+        * @return
+    */
+
+    @Override
+    public ResultEntity updateEncryByInfo(StutranDocDto dto) {
+
+        //判断私钥是否正确
+        if (Constant.XINFENGPRIVATEKEY.equals(dto.getPrivateKey())){
+
+            StuTransactionDocumentsInfoExample example = new StuTransactionDocumentsInfoExample();
+            example.createCriteria().andUserIdEqualTo(dto.getUserId());
+
+            List<StuTransactionDocumentsInfo> stuTransactionDocumentsInfoList = documentsInfoMapper.selectByExample(example);
+            if (!stuTransactionDocumentsInfoList.isEmpty()){
+
+//                更新解密状态
+                stuTransactionDocumentsInfoList.forEach(item->{
+                    item.setInformationStatus(1);
+                    documentsInfoMapper.updateByPrimaryKey(item);
+                });
+
+
+                return new ResultEntity(HttpStatus.OK,"解密成功!");
+
+
+            }else {
+
+                return new ResultEntity(HttpStatus.BAD_REQUEST,"暂未查到加密数据!");
+            }
+
+
+
+        }else {
+
+
+            throw new ServiceException(HttpStatus.ACCEPTED,"请选择正确的密钥!");
+
+        }
+
+
+
+
+
+
+    }
+
+    /**
+        * 数字签名解密
+        * @param dto
+        * @return
+    */
+
+    @Override
+    public ResultEntity digitalEncryByInfo(StutInfoSecDto dto) {
+
+        if (Constant.XINFENGPUBLICKEY.equals(dto.getPublicKey()))
+        {
+
+            StuTransactionDocumentsInfoExample example = new StuTransactionDocumentsInfoExample();
+            example.createCriteria().andUserIdEqualTo(dto.getUserId());
+
+            List<StuTransactionDocumentsInfo> stuTransactionDocumentsInfoList = documentsInfoMapper.selectByExample(example);
+            if (!stuTransactionDocumentsInfoList.isEmpty()){
+
+//                更新解密状态
+                stuTransactionDocumentsInfoList.forEach(item->{
+                    item.setSignatureVerificationStatusEncry(1);
+                    documentsInfoMapper.updateByPrimaryKey(item);
+                });
+
+
+                return new ResultEntity(HttpStatus.OK,"解密成功!");
+
+
+            }else {
+
+                return new ResultEntity(HttpStatus.BAD_REQUEST,"暂未查到加密数据!");
+            }
+
+
+
+        }else {
+
+            throw new ServiceException(HttpStatus.ACCEPTED,"请选择正确的密钥!");
+
+        }
+
+
+
+    }
+}
diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/util/RsaUtil.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/util/RsaUtil.java
index 4e590c1..6b9f5f8 100644
--- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/util/RsaUtil.java
+++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/util/RsaUtil.java
@@ -338,6 +338,20 @@ public class RsaUtil {
     }
 
 
+    public static String generateHash(String text) throws NoSuchAlgorithmException {
+        MessageDigest digest = MessageDigest.getInstance("SHA-256");
+        byte[] hash = digest.digest(text.getBytes());
+
+        // Convert byte array to hexadecimal string
+        StringBuilder hexString = new StringBuilder();
+        for (byte b : hash) {
+            String hex = Integer.toHexString(0xff & b);
+            if (hex.length() == 1) hexString.append('0');
+            hexString.append(hex);
+        }
+        return hexString.toString();
+    }
+
 
 
 
diff --git a/BlockFinanceCentral/src/main/resources/mappers/StuTransactionDocumentsInfoMapper.xml b/BlockFinanceCentral/src/main/resources/mappers/StuTransactionDocumentsInfoMapper.xml
new file mode 100644
index 0000000..f290d82
--- /dev/null
+++ b/BlockFinanceCentral/src/main/resources/mappers/StuTransactionDocumentsInfoMapper.xml
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sztzjy.block_finance.mappers.StuTransactionDocumentsInfoMapper">
+  <resultMap id="BaseResultMap" type="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo">
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="file_name" jdbcType="VARCHAR" property="fileName" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="upload_status" jdbcType="INTEGER" property="uploadStatus" />
+    <result column="information_status" jdbcType="INTEGER" property="informationStatus" />
+    <result column="information_status_encry" jdbcType="INTEGER" property="informationStatusEncry" />
+    <result column="signature_verification_status_encry" jdbcType="INTEGER" property="signatureVerificationStatusEncry" />
+    <result column="signature_verification_status" jdbcType="INTEGER" property="signatureVerificationStatus" />
+    <result column="user_id" jdbcType="VARCHAR" property="userId" />
+    <result column="discount_display" jdbcType="INTEGER" property="discountDisplay" />
+    <result column="supplier_display" jdbcType="INTEGER" property="supplierDisplay" />
+    <result column="core_enterprise_display" jdbcType="INTEGER" property="coreEnterpriseDisplay" />
+    <result column="core_enterprise_receive_status" jdbcType="INTEGER" property="coreEnterpriseReceiveStatus" />
+    <result column="factoring_company_display" jdbcType="INTEGER" property="factoringCompanyDisplay" />
+    <result column="factoring_companies_receive_status" jdbcType="INTEGER" property="factoringCompaniesReceiveStatus" />
+    <result column="read_status" jdbcType="INTEGER" property="readStatus" />
+    <result column="download_status" jdbcType="INTEGER" property="downloadStatus" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="cryp_digest" jdbcType="VARCHAR" property="crypDigest" />
+    <result column="information_ciphertext" jdbcType="VARCHAR" property="informationCiphertext" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, file_name, url, upload_status, information_status, information_status_encry, 
+    signature_verification_status_encry, signature_verification_status, user_id, discount_display, 
+    supplier_display, core_enterprise_display, core_enterprise_receive_status, factoring_company_display, 
+    factoring_companies_receive_status, read_status, download_status, create_time, update_time, 
+    cryp_digest, information_ciphertext
+  </sql>
+  <select id="selectByExample" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from stu_transaction_documents_info
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from stu_transaction_documents_info
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    delete from stu_transaction_documents_info
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample">
+    delete from stu_transaction_documents_info
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo">
+    insert into stu_transaction_documents_info (id, file_name, url, 
+      upload_status, information_status, information_status_encry, 
+      signature_verification_status_encry, signature_verification_status, 
+      user_id, discount_display, supplier_display, 
+      core_enterprise_display, core_enterprise_receive_status, 
+      factoring_company_display, factoring_companies_receive_status, 
+      read_status, download_status, create_time, 
+      update_time, cryp_digest, information_ciphertext
+      )
+    values (#{id,jdbcType=INTEGER}, #{fileName,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, 
+      #{uploadStatus,jdbcType=INTEGER}, #{informationStatus,jdbcType=INTEGER}, #{informationStatusEncry,jdbcType=INTEGER}, 
+      #{signatureVerificationStatusEncry,jdbcType=INTEGER}, #{signatureVerificationStatus,jdbcType=INTEGER}, 
+      #{userId,jdbcType=VARCHAR}, #{discountDisplay,jdbcType=INTEGER}, #{supplierDisplay,jdbcType=INTEGER}, 
+      #{coreEnterpriseDisplay,jdbcType=INTEGER}, #{coreEnterpriseReceiveStatus,jdbcType=INTEGER}, 
+      #{factoringCompanyDisplay,jdbcType=INTEGER}, #{factoringCompaniesReceiveStatus,jdbcType=INTEGER}, 
+      #{readStatus,jdbcType=INTEGER}, #{downloadStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, 
+      #{updateTime,jdbcType=TIMESTAMP}, #{crypDigest,jdbcType=VARCHAR}, #{informationCiphertext,jdbcType=VARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo">
+    insert into stu_transaction_documents_info
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="fileName != null">
+        file_name,
+      </if>
+      <if test="url != null">
+        url,
+      </if>
+      <if test="uploadStatus != null">
+        upload_status,
+      </if>
+      <if test="informationStatus != null">
+        information_status,
+      </if>
+      <if test="informationStatusEncry != null">
+        information_status_encry,
+      </if>
+      <if test="signatureVerificationStatusEncry != null">
+        signature_verification_status_encry,
+      </if>
+      <if test="signatureVerificationStatus != null">
+        signature_verification_status,
+      </if>
+      <if test="userId != null">
+        user_id,
+      </if>
+      <if test="discountDisplay != null">
+        discount_display,
+      </if>
+      <if test="supplierDisplay != null">
+        supplier_display,
+      </if>
+      <if test="coreEnterpriseDisplay != null">
+        core_enterprise_display,
+      </if>
+      <if test="coreEnterpriseReceiveStatus != null">
+        core_enterprise_receive_status,
+      </if>
+      <if test="factoringCompanyDisplay != null">
+        factoring_company_display,
+      </if>
+      <if test="factoringCompaniesReceiveStatus != null">
+        factoring_companies_receive_status,
+      </if>
+      <if test="readStatus != null">
+        read_status,
+      </if>
+      <if test="downloadStatus != null">
+        download_status,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+      <if test="updateTime != null">
+        update_time,
+      </if>
+      <if test="crypDigest != null">
+        cryp_digest,
+      </if>
+      <if test="informationCiphertext != null">
+        information_ciphertext,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=INTEGER},
+      </if>
+      <if test="fileName != null">
+        #{fileName,jdbcType=VARCHAR},
+      </if>
+      <if test="url != null">
+        #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="uploadStatus != null">
+        #{uploadStatus,jdbcType=INTEGER},
+      </if>
+      <if test="informationStatus != null">
+        #{informationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="informationStatusEncry != null">
+        #{informationStatusEncry,jdbcType=INTEGER},
+      </if>
+      <if test="signatureVerificationStatusEncry != null">
+        #{signatureVerificationStatusEncry,jdbcType=INTEGER},
+      </if>
+      <if test="signatureVerificationStatus != null">
+        #{signatureVerificationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="userId != null">
+        #{userId,jdbcType=VARCHAR},
+      </if>
+      <if test="discountDisplay != null">
+        #{discountDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="supplierDisplay != null">
+        #{supplierDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="coreEnterpriseDisplay != null">
+        #{coreEnterpriseDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="coreEnterpriseReceiveStatus != null">
+        #{coreEnterpriseReceiveStatus,jdbcType=INTEGER},
+      </if>
+      <if test="factoringCompanyDisplay != null">
+        #{factoringCompanyDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="factoringCompaniesReceiveStatus != null">
+        #{factoringCompaniesReceiveStatus,jdbcType=INTEGER},
+      </if>
+      <if test="readStatus != null">
+        #{readStatus,jdbcType=INTEGER},
+      </if>
+      <if test="downloadStatus != null">
+        #{downloadStatus,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="crypDigest != null">
+        #{crypDigest,jdbcType=VARCHAR},
+      </if>
+      <if test="informationCiphertext != null">
+        #{informationCiphertext,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample" resultType="java.lang.Long">
+    select count(*) from stu_transaction_documents_info
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update stu_transaction_documents_info
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=INTEGER},
+      </if>
+      <if test="record.fileName != null">
+        file_name = #{record.fileName,jdbcType=VARCHAR},
+      </if>
+      <if test="record.url != null">
+        url = #{record.url,jdbcType=VARCHAR},
+      </if>
+      <if test="record.uploadStatus != null">
+        upload_status = #{record.uploadStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.informationStatus != null">
+        information_status = #{record.informationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.informationStatusEncry != null">
+        information_status_encry = #{record.informationStatusEncry,jdbcType=INTEGER},
+      </if>
+      <if test="record.signatureVerificationStatusEncry != null">
+        signature_verification_status_encry = #{record.signatureVerificationStatusEncry,jdbcType=INTEGER},
+      </if>
+      <if test="record.signatureVerificationStatus != null">
+        signature_verification_status = #{record.signatureVerificationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.userId != null">
+        user_id = #{record.userId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.discountDisplay != null">
+        discount_display = #{record.discountDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="record.supplierDisplay != null">
+        supplier_display = #{record.supplierDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="record.coreEnterpriseDisplay != null">
+        core_enterprise_display = #{record.coreEnterpriseDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="record.coreEnterpriseReceiveStatus != null">
+        core_enterprise_receive_status = #{record.coreEnterpriseReceiveStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.factoringCompanyDisplay != null">
+        factoring_company_display = #{record.factoringCompanyDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="record.factoringCompaniesReceiveStatus != null">
+        factoring_companies_receive_status = #{record.factoringCompaniesReceiveStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.readStatus != null">
+        read_status = #{record.readStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.downloadStatus != null">
+        download_status = #{record.downloadStatus,jdbcType=INTEGER},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.updateTime != null">
+        update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.crypDigest != null">
+        cryp_digest = #{record.crypDigest,jdbcType=VARCHAR},
+      </if>
+      <if test="record.informationCiphertext != null">
+        information_ciphertext = #{record.informationCiphertext,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update stu_transaction_documents_info
+    set id = #{record.id,jdbcType=INTEGER},
+      file_name = #{record.fileName,jdbcType=VARCHAR},
+      url = #{record.url,jdbcType=VARCHAR},
+      upload_status = #{record.uploadStatus,jdbcType=INTEGER},
+      information_status = #{record.informationStatus,jdbcType=INTEGER},
+      information_status_encry = #{record.informationStatusEncry,jdbcType=INTEGER},
+      signature_verification_status_encry = #{record.signatureVerificationStatusEncry,jdbcType=INTEGER},
+      signature_verification_status = #{record.signatureVerificationStatus,jdbcType=INTEGER},
+      user_id = #{record.userId,jdbcType=VARCHAR},
+      discount_display = #{record.discountDisplay,jdbcType=INTEGER},
+      supplier_display = #{record.supplierDisplay,jdbcType=INTEGER},
+      core_enterprise_display = #{record.coreEnterpriseDisplay,jdbcType=INTEGER},
+      core_enterprise_receive_status = #{record.coreEnterpriseReceiveStatus,jdbcType=INTEGER},
+      factoring_company_display = #{record.factoringCompanyDisplay,jdbcType=INTEGER},
+      factoring_companies_receive_status = #{record.factoringCompaniesReceiveStatus,jdbcType=INTEGER},
+      read_status = #{record.readStatus,jdbcType=INTEGER},
+      download_status = #{record.downloadStatus,jdbcType=INTEGER},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      update_time = #{record.updateTime,jdbcType=TIMESTAMP},
+      cryp_digest = #{record.crypDigest,jdbcType=VARCHAR},
+      information_ciphertext = #{record.informationCiphertext,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo">
+    update stu_transaction_documents_info
+    <set>
+      <if test="fileName != null">
+        file_name = #{fileName,jdbcType=VARCHAR},
+      </if>
+      <if test="url != null">
+        url = #{url,jdbcType=VARCHAR},
+      </if>
+      <if test="uploadStatus != null">
+        upload_status = #{uploadStatus,jdbcType=INTEGER},
+      </if>
+      <if test="informationStatus != null">
+        information_status = #{informationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="informationStatusEncry != null">
+        information_status_encry = #{informationStatusEncry,jdbcType=INTEGER},
+      </if>
+      <if test="signatureVerificationStatusEncry != null">
+        signature_verification_status_encry = #{signatureVerificationStatusEncry,jdbcType=INTEGER},
+      </if>
+      <if test="signatureVerificationStatus != null">
+        signature_verification_status = #{signatureVerificationStatus,jdbcType=INTEGER},
+      </if>
+      <if test="userId != null">
+        user_id = #{userId,jdbcType=VARCHAR},
+      </if>
+      <if test="discountDisplay != null">
+        discount_display = #{discountDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="supplierDisplay != null">
+        supplier_display = #{supplierDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="coreEnterpriseDisplay != null">
+        core_enterprise_display = #{coreEnterpriseDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="coreEnterpriseReceiveStatus != null">
+        core_enterprise_receive_status = #{coreEnterpriseReceiveStatus,jdbcType=INTEGER},
+      </if>
+      <if test="factoringCompanyDisplay != null">
+        factoring_company_display = #{factoringCompanyDisplay,jdbcType=INTEGER},
+      </if>
+      <if test="factoringCompaniesReceiveStatus != null">
+        factoring_companies_receive_status = #{factoringCompaniesReceiveStatus,jdbcType=INTEGER},
+      </if>
+      <if test="readStatus != null">
+        read_status = #{readStatus,jdbcType=INTEGER},
+      </if>
+      <if test="downloadStatus != null">
+        download_status = #{downloadStatus,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateTime != null">
+        update_time = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="crypDigest != null">
+        cryp_digest = #{crypDigest,jdbcType=VARCHAR},
+      </if>
+      <if test="informationCiphertext != null">
+        information_ciphertext = #{informationCiphertext,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo">
+    update stu_transaction_documents_info
+    set file_name = #{fileName,jdbcType=VARCHAR},
+      url = #{url,jdbcType=VARCHAR},
+      upload_status = #{uploadStatus,jdbcType=INTEGER},
+      information_status = #{informationStatus,jdbcType=INTEGER},
+      information_status_encry = #{informationStatusEncry,jdbcType=INTEGER},
+      signature_verification_status_encry = #{signatureVerificationStatusEncry,jdbcType=INTEGER},
+      signature_verification_status = #{signatureVerificationStatus,jdbcType=INTEGER},
+      user_id = #{userId,jdbcType=VARCHAR},
+      discount_display = #{discountDisplay,jdbcType=INTEGER},
+      supplier_display = #{supplierDisplay,jdbcType=INTEGER},
+      core_enterprise_display = #{coreEnterpriseDisplay,jdbcType=INTEGER},
+      core_enterprise_receive_status = #{coreEnterpriseReceiveStatus,jdbcType=INTEGER},
+      factoring_company_display = #{factoringCompanyDisplay,jdbcType=INTEGER},
+      factoring_companies_receive_status = #{factoringCompaniesReceiveStatus,jdbcType=INTEGER},
+      read_status = #{readStatus,jdbcType=INTEGER},
+      download_status = #{downloadStatus,jdbcType=INTEGER},
+      create_time = #{createTime,jdbcType=TIMESTAMP},
+      update_time = #{updateTime,jdbcType=TIMESTAMP},
+      cryp_digest = #{crypDigest,jdbcType=VARCHAR},
+      information_ciphertext = #{informationCiphertext,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+</mapper>
\ No newline at end of file