保理合同

master
whb 12 months ago
parent 741a1302df
commit 9570d59595

@ -149,7 +149,13 @@ public class StuCreditInvestmentController {
}
@ApiOperation("资信调查通过")
@PostMapping("/creditInvestPass")
@AnonymousAccess
public ResultEntity creditInvestPass(String userId){
return stuCreditInvestService.creditInvestPass(userId);
}
}

@ -0,0 +1,61 @@
package com.sztzjy.block_finance.controller;
import com.sztzjy.block_finance.annotation.AnonymousAccess;
import com.sztzjy.block_finance.entity.StuUploadResourceInfo;
import com.sztzjy.block_finance.entity.StuUploadResourceInfoExample;
import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
import com.sztzjy.block_finance.entity.dto.StutranDocDto;
import com.sztzjy.block_finance.mappers.StuUploadResourceInfoMapper;
import com.sztzjy.block_finance.service.StuSignFactorContractService;
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.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
/**
* @author 17803
* @date 2024-04-09 11:32
*/
@Api(tags = "签署保理合同(供应商)")
@RestController
@RequestMapping("/api/stu/signFactContract")
public class StuSignFactorContractBySupplyController {
@Autowired
private StuSignFactorContractService contractService;
@Autowired
private StuUploadResourceInfoMapper stuUploadResourceInfoMapper;
@Value("${file.path}")
private String filePath;
@Resource
private com.sztzjy.block_finance.util.file.IFileUtil IFileUtil;
//保理合同
}

@ -0,0 +1,148 @@
package com.sztzjy.block_finance.controller;
import com.sztzjy.block_finance.annotation.AnonymousAccess;
import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfo;
import com.sztzjy.block_finance.entity.StuTransactionDocumentsInfoExample;
import com.sztzjy.block_finance.entity.StuUploadResourceInfo;
import com.sztzjy.block_finance.entity.StuUploadResourceInfoExample;
import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
import com.sztzjy.block_finance.entity.dto.StutranDocDto;
import com.sztzjy.block_finance.mappers.StuUploadResourceInfoMapper;
import com.sztzjy.block_finance.service.StuSignFactorContractService;
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.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
/**
* @author 17803
* @date 2024-04-09 11:32
*/
@Api(tags = "签署保理合同")
@RestController
@RequestMapping("/api/stu/signFactContract")
public class StuSignFactorContractController {
@Autowired
private StuSignFactorContractService contractService;
@Autowired
private StuUploadResourceInfoMapper stuUploadResourceInfoMapper;
@Value("${file.path}")
private String filePath;
@Resource
private com.sztzjy.block_finance.util.file.IFileUtil IFileUtil;
@ApiOperation("保理合同加密")
@PostMapping("contractEncry")
@AnonymousAccess
public ResultEntity contractEncry(@RequestBody StutInfoSecDto dto){
return contractService.contractEncry(dto);
}
@ApiOperation("保理合同数字签名")
@PostMapping("contractSignature")
@AnonymousAccess
public ResultEntity contractSignature(@RequestBody StutranDocDto dto) throws Exception {
return contractService.contractSignature(dto);
}
@ApiOperation("保理合同交易信息加密")
@PostMapping("contractTranInfo")
@AnonymousAccess
public ResultEntity contractTranInfo(@RequestBody StutInfoSecDto dto) throws Exception {
return contractService.contractTranInfo(dto);
}
@ApiOperation("上传保理合同/客户结算条款")
@GetMapping("/uploadContract")
@AnonymousAccess
public ResultEntity uploadContract(@RequestParam(required = true) @RequestPart MultipartFile file,
@RequestParam(required = true) String userId,String fileName){
return contractService.uploadContract(file,userId,fileName);
}
@ApiOperation("模板预览")
@GetMapping("/preViewByContract")
@AnonymousAccess
public ResponseEntity<byte[]> preViewByContract(
@RequestParam(required = true,name = "name")@NotBlank @ApiParam("文件类型名如:国内有追索权保理业务合同及附件/客户结算条款") String name,
@NotBlank String userId) throws IOException {
StuUploadResourceInfoExample example = new StuUploadResourceInfoExample();
example.createCriteria().andUserIdEqualTo(userId).andModuleEqualTo(name);
List<StuUploadResourceInfo> uploadResourceInfoList = stuUploadResourceInfoMapper.selectByExample(example);
if (!uploadResourceInfoList.isEmpty()) {
String fileUrl = uploadResourceInfoList.get(0).getFileUrl();
// 模拟加载公章图片的数据(假设在硬盘上的某个路径下)
String imagePath = filePath + fileUrl;
// 替换为你的实际路径
byte[] sealBytes = Files.readAllBytes(Paths.get(imagePath));
// 构建HTTP响应设置Content-Type为image/png
return ResponseEntity.ok().contentType(MediaType.APPLICATION_PDF).body(sealBytes);
}else {
return null;
}
}
}

@ -23,6 +23,16 @@ public class StuUploadResourceInfo {
private String module;
private Integer factorContractEncryState;
private Integer factorContractDecryState;
private String encryAbstract;
private String signature;
private String informationEncry;
public String getId() {
return id;
}
@ -102,4 +112,44 @@ public class StuUploadResourceInfo {
public void setModule(String module) {
this.module = module == null ? null : module.trim();
}
public Integer getFactorContractEncryState() {
return factorContractEncryState;
}
public void setFactorContractEncryState(Integer factorContractEncryState) {
this.factorContractEncryState = factorContractEncryState;
}
public Integer getFactorContractDecryState() {
return factorContractDecryState;
}
public void setFactorContractDecryState(Integer factorContractDecryState) {
this.factorContractDecryState = factorContractDecryState;
}
public String getEncryAbstract() {
return encryAbstract;
}
public void setEncryAbstract(String encryAbstract) {
this.encryAbstract = encryAbstract == null ? null : encryAbstract.trim();
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature == null ? null : signature.trim();
}
public String getInformationEncry() {
return informationEncry;
}
public void setInformationEncry(String informationEncry) {
this.informationEncry = informationEncry == null ? null : informationEncry.trim();
}
}

@ -784,6 +784,336 @@ public class StuUploadResourceInfoExample {
addCriterion("module not between", value1, value2, "module");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateIsNull() {
addCriterion("factor_contract_encry_state is null");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateIsNotNull() {
addCriterion("factor_contract_encry_state is not null");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateEqualTo(Integer value) {
addCriterion("factor_contract_encry_state =", value, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateNotEqualTo(Integer value) {
addCriterion("factor_contract_encry_state <>", value, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateGreaterThan(Integer value) {
addCriterion("factor_contract_encry_state >", value, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateGreaterThanOrEqualTo(Integer value) {
addCriterion("factor_contract_encry_state >=", value, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateLessThan(Integer value) {
addCriterion("factor_contract_encry_state <", value, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateLessThanOrEqualTo(Integer value) {
addCriterion("factor_contract_encry_state <=", value, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateIn(List<Integer> values) {
addCriterion("factor_contract_encry_state in", values, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateNotIn(List<Integer> values) {
addCriterion("factor_contract_encry_state not in", values, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateBetween(Integer value1, Integer value2) {
addCriterion("factor_contract_encry_state between", value1, value2, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractEncryStateNotBetween(Integer value1, Integer value2) {
addCriterion("factor_contract_encry_state not between", value1, value2, "factorContractEncryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateIsNull() {
addCriterion("factor_contract_decry_state is null");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateIsNotNull() {
addCriterion("factor_contract_decry_state is not null");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateEqualTo(Integer value) {
addCriterion("factor_contract_decry_state =", value, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateNotEqualTo(Integer value) {
addCriterion("factor_contract_decry_state <>", value, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateGreaterThan(Integer value) {
addCriterion("factor_contract_decry_state >", value, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateGreaterThanOrEqualTo(Integer value) {
addCriterion("factor_contract_decry_state >=", value, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateLessThan(Integer value) {
addCriterion("factor_contract_decry_state <", value, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateLessThanOrEqualTo(Integer value) {
addCriterion("factor_contract_decry_state <=", value, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateIn(List<Integer> values) {
addCriterion("factor_contract_decry_state in", values, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateNotIn(List<Integer> values) {
addCriterion("factor_contract_decry_state not in", values, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateBetween(Integer value1, Integer value2) {
addCriterion("factor_contract_decry_state between", value1, value2, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andFactorContractDecryStateNotBetween(Integer value1, Integer value2) {
addCriterion("factor_contract_decry_state not between", value1, value2, "factorContractDecryState");
return (Criteria) this;
}
public Criteria andEncryAbstractIsNull() {
addCriterion("encry_abstract is null");
return (Criteria) this;
}
public Criteria andEncryAbstractIsNotNull() {
addCriterion("encry_abstract is not null");
return (Criteria) this;
}
public Criteria andEncryAbstractEqualTo(String value) {
addCriterion("encry_abstract =", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractNotEqualTo(String value) {
addCriterion("encry_abstract <>", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractGreaterThan(String value) {
addCriterion("encry_abstract >", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractGreaterThanOrEqualTo(String value) {
addCriterion("encry_abstract >=", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractLessThan(String value) {
addCriterion("encry_abstract <", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractLessThanOrEqualTo(String value) {
addCriterion("encry_abstract <=", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractLike(String value) {
addCriterion("encry_abstract like", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractNotLike(String value) {
addCriterion("encry_abstract not like", value, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractIn(List<String> values) {
addCriterion("encry_abstract in", values, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractNotIn(List<String> values) {
addCriterion("encry_abstract not in", values, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractBetween(String value1, String value2) {
addCriterion("encry_abstract between", value1, value2, "encryAbstract");
return (Criteria) this;
}
public Criteria andEncryAbstractNotBetween(String value1, String value2) {
addCriterion("encry_abstract not between", value1, value2, "encryAbstract");
return (Criteria) this;
}
public Criteria andSignatureIsNull() {
addCriterion("signature is null");
return (Criteria) this;
}
public Criteria andSignatureIsNotNull() {
addCriterion("signature is not null");
return (Criteria) this;
}
public Criteria andSignatureEqualTo(String value) {
addCriterion("signature =", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureNotEqualTo(String value) {
addCriterion("signature <>", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureGreaterThan(String value) {
addCriterion("signature >", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureGreaterThanOrEqualTo(String value) {
addCriterion("signature >=", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureLessThan(String value) {
addCriterion("signature <", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureLessThanOrEqualTo(String value) {
addCriterion("signature <=", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureLike(String value) {
addCriterion("signature like", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureNotLike(String value) {
addCriterion("signature not like", value, "signature");
return (Criteria) this;
}
public Criteria andSignatureIn(List<String> values) {
addCriterion("signature in", values, "signature");
return (Criteria) this;
}
public Criteria andSignatureNotIn(List<String> values) {
addCriterion("signature not in", values, "signature");
return (Criteria) this;
}
public Criteria andSignatureBetween(String value1, String value2) {
addCriterion("signature between", value1, value2, "signature");
return (Criteria) this;
}
public Criteria andSignatureNotBetween(String value1, String value2) {
addCriterion("signature not between", value1, value2, "signature");
return (Criteria) this;
}
public Criteria andInformationEncryIsNull() {
addCriterion("information_encry is null");
return (Criteria) this;
}
public Criteria andInformationEncryIsNotNull() {
addCriterion("information_encry is not null");
return (Criteria) this;
}
public Criteria andInformationEncryEqualTo(String value) {
addCriterion("information_encry =", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryNotEqualTo(String value) {
addCriterion("information_encry <>", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryGreaterThan(String value) {
addCriterion("information_encry >", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryGreaterThanOrEqualTo(String value) {
addCriterion("information_encry >=", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryLessThan(String value) {
addCriterion("information_encry <", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryLessThanOrEqualTo(String value) {
addCriterion("information_encry <=", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryLike(String value) {
addCriterion("information_encry like", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryNotLike(String value) {
addCriterion("information_encry not like", value, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryIn(List<String> values) {
addCriterion("information_encry in", values, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryNotIn(List<String> values) {
addCriterion("information_encry not in", values, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryBetween(String value1, String value2) {
addCriterion("information_encry between", value1, value2, "informationEncry");
return (Criteria) this;
}
public Criteria andInformationEncryNotBetween(String value1, String value2) {
addCriterion("information_encry not between", value1, value2, "informationEncry");
return (Criteria) this;
}
}
public static class Criteria extends GeneratedCriteria {

@ -7,6 +7,7 @@ import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface StuUploadResourceInfoMapper {
long countByExample(StuUploadResourceInfoExample example);

@ -39,4 +39,13 @@ public interface StuCreditInvestService {
*/
ResultEntity supplyRunInfo(StuCoreInvest stuCoreInvest);
/**
*
* @param userId
* @return
*/
ResultEntity creditInvestPass(String userId);
}

@ -0,0 +1,46 @@
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 org.springframework.web.multipart.MultipartFile;
/**
* @author 17803
* @date 2024-04-09 11:34
*/
public interface StuSignFactorContractService {
/**
*
* @param dto
* @return
*/
ResultEntity contractEncry(StutInfoSecDto dto);
/**
* /
* @param file
* @param userId
* @param fileName
* @return
*/
ResultEntity uploadContract(MultipartFile file, String userId, String fileName);
/**
*
* @param dto
* @return
*/
ResultEntity contractSignature(StutranDocDto dto) throws Exception;
/**
*
* @param dto
* @return
*/
ResultEntity contractTranInfo(StutInfoSecDto dto) throws Exception;
}

@ -161,5 +161,30 @@ public class StuCreditInvestServiceImpl implements StuCreditInvestService {
return new ResultEntity<>("保存成功!");
}
/**
*
* @param userId
* @return
*/
@Override
public ResultEntity creditInvestPass(String userId) {
StuCoreInvestExample example = new StuCoreInvestExample();
example.createCriteria().andUserIdEqualTo(userId);
List<StuCoreInvest> stuCoreInvestList = stuCoreInvestMapper.selectByExample(example);
if (!stuCoreInvestList.isEmpty())
{
stuCoreInvestList.get(0).setCreditInvest(1);
stuCoreInvestMapper.updateByPrimaryKeySelective(stuCoreInvestList.get(0));
return new ResultEntity<>(HttpStatus.OK,"通过成功!");
}
return new ResultEntity<>(HttpStatus.BAD_REQUEST,"通过失败!");
}
}

@ -0,0 +1,251 @@
package com.sztzjy.block_finance.service.impl;/**
* @author 17803
* @date 2024-04-09 11:34
*/
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.crypto.digest.DigestUtil;
import com.sztzjy.block_finance.config.Constant;
import com.sztzjy.block_finance.config.exception.handler.ServiceException;
import com.sztzjy.block_finance.entity.StuBlockOnChain;
import com.sztzjy.block_finance.entity.StuBlockOnChainExample;
import com.sztzjy.block_finance.entity.StuUploadResourceInfo;
import com.sztzjy.block_finance.entity.StuUploadResourceInfoExample;
import com.sztzjy.block_finance.entity.dto.StutInfoSecDto;
import com.sztzjy.block_finance.entity.dto.StutranDocDto;
import com.sztzjy.block_finance.mappers.StuBlockOnChainMapper;
import com.sztzjy.block_finance.mappers.StuUploadResourceInfoMapper;
import com.sztzjy.block_finance.service.StuSignFactorContractService;
import com.sztzjy.block_finance.util.ResultEntity;
import com.sztzjy.block_finance.util.RsaUtil;
import com.sztzjy.block_finance.util.file.IFileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service
public class StuSignFactorContractServiceImpl implements StuSignFactorContractService {
@Autowired
private StuUploadResourceInfoMapper stuUploadResourceInfoMapper;
@Autowired
private StuBlockOnChainMapper stuBlockOnChainMapper;
@Value("${file.path}")
private String filePath;
@Resource
private com.sztzjy.block_finance.util.file.IFileUtil IFileUtil;
/**
*
* @param dto
* @return
*/
@Override
public ResultEntity contractEncry(StutInfoSecDto dto) {
String sha256Hex1 = DigestUtil.sha256Hex("合同");
System.out.println(sha256Hex1);
if (Constant.SHENZHENPUBLICKEY.equals(dto.getPublicKey()))
{
String sha256Hex = DigestUtil.sha256Hex("合同");
StuUploadResourceInfoExample example = new StuUploadResourceInfoExample();
example.createCriteria().andUserIdEqualTo(dto.getUserId()).andModuleEqualTo("保理合同");
List<StuUploadResourceInfo> uploadResourceInfoList = stuUploadResourceInfoMapper.selectByExample(example);
if (uploadResourceInfoList.isEmpty()) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST,"加密失败");
}
uploadResourceInfoList.get(0).setEncryAbstract(sha256Hex);
stuUploadResourceInfoMapper.updateByPrimaryKeySelective(uploadResourceInfoList.get(0));
return new ResultEntity<>(HttpStatus.OK,"加密成功",sha256Hex);
}
throw new ServiceException(HttpStatus.ACCEPTED,"请选择正确密钥!");
}
/**
* /
* @param file
* @param userId
* @param fileName
* @return
*/
@Override
public ResultEntity uploadContract(MultipartFile file, String userId, String fileName) {
if (file.isEmpty())
{
return new ResultEntity(HttpStatus.BAD_REQUEST,"请勿上传空文件!");
}
//上传文件路径
String path = IFileUtil.upload(file);
StuUploadResourceInfoExample example = new StuUploadResourceInfoExample();
example.createCriteria().andUserIdEqualTo(userId).andModuleEqualTo(fileName);
List<StuUploadResourceInfo> uploadResourceInfoList = stuUploadResourceInfoMapper.selectByExample(example);
if (!uploadResourceInfoList.isEmpty()){
//更新上传
uploadResourceInfoList.get(0).setFileUrl(path);
uploadResourceInfoList.get(0).setUpdateTime(new Date());
uploadResourceInfoList.get(0).setFileName(file.getOriginalFilename());
uploadResourceInfoList.get(0).setFileSize(String.valueOf(file.getSize()));
stuUploadResourceInfoMapper.updateByPrimaryKeySelective(uploadResourceInfoList.get(0));
}else {
//第一次上传
StuUploadResourceInfo resourceInfo = new StuUploadResourceInfo();
resourceInfo.setId(IdUtil.simpleUUID());
resourceInfo.setFileUrl(path);
resourceInfo.setCreateTime(new Date());
resourceInfo.setFileName(file.getOriginalFilename());
resourceInfo.setFileSize(String.valueOf(file.getSize()));
stuUploadResourceInfoMapper.updateByPrimaryKeySelective(resourceInfo);
}
return new ResultEntity<>(HttpStatus.OK,"上传成功");
}
/**
*
* @param dto
* @return
*/
@Override
public ResultEntity contractSignature(StutranDocDto dto) throws Exception {
if (Constant.SHENZHENPRIVATEKEY.equals(dto.getPrivateKey()))
{
String sha256Hex = RsaUtil.decryptByPrivateKey("数字签名",dto.getPrivateKey());
StuUploadResourceInfoExample example = new StuUploadResourceInfoExample();
example.createCriteria().andUserIdEqualTo(dto.getUserId()).andModuleEqualTo("保理合同");
List<StuUploadResourceInfo> uploadResourceInfoList = stuUploadResourceInfoMapper.selectByExample(example);
if (uploadResourceInfoList.isEmpty()) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST,"加密失败");
}
uploadResourceInfoList.get(0).setSignature(sha256Hex);
stuUploadResourceInfoMapper.updateByPrimaryKeySelective(uploadResourceInfoList.get(0));
return new ResultEntity<>(HttpStatus.OK,"加密成功",sha256Hex);
}
throw new ServiceException(HttpStatus.ACCEPTED,"请选择正确密钥!");
}
/**
*
* @param dto
* @return
*/
@Override
public ResultEntity contractTranInfo(StutInfoSecDto dto) throws Exception {
if (Constant.SHENZHENPUBLICKEY.equals(dto.getPublicKey()))
{
//加密数据
String encrypt = RsaUtil.encryptByPrivateKey("保理合同上链", dto.getPublicKey());
//通过hash256将加密数据生成区块哈希
String blockHashInfo = DigestUtil.sha256Hex(encrypt);
StuUploadResourceInfoExample example = new StuUploadResourceInfoExample();
example.createCriteria().andUserIdEqualTo(dto.getUserId()).andModuleEqualTo("保理合同");
List<StuUploadResourceInfo> uploadResourceInfoList = stuUploadResourceInfoMapper.selectByExample(example);
if (uploadResourceInfoList.isEmpty()) {
return new ResultEntity<>(HttpStatus.BAD_REQUEST,"加密失败");
}
uploadResourceInfoList.get(0).setEncryAbstract(encrypt);
uploadResourceInfoList.get(0).setFactorContractEncryState(1);
stuUploadResourceInfoMapper.updateByPrimaryKeySelective(uploadResourceInfoList.get(0));
//上链
//根据时间获取上一条加密数据,将数据加密,
StuBlockOnChainExample onChainExample = new StuBlockOnChainExample();
onChainExample.createCriteria().andUserIdEqualTo(dto.getUserId());
List<StuBlockOnChain> blockOnChainList = stuBlockOnChainMapper.selectByExample(onChainExample);
if (!blockOnChainList.isEmpty()){
//追加在上一个区块链后面
StuBlockOnChain stuBlockOnChain1 = stuBlockOnChainMapper.selectByTime(dto.getUserId());
StuBlockOnChain onChain = stuBlockOnChainMapper.selectByPrimaryKey(stuBlockOnChain1.getId());
Integer sequence = onChain.getSequence();
String chainName = onChain.getChainName();
// 从原始字符串中提取数字部分
String numberPart = chainName.replaceAll("[^\\d]", "");
// 将数字部分转换为整数
int number = Integer.parseInt(numberPart);
// 递增数字
number++;
// 根据原始字符串的格式构建新的字符串(保持数字部分的格式)
String newString = chainName.replaceAll("\\d+", String.format("%1d", number));
StuBlockOnChain chain = new StuBlockOnChain();
chain.setBlockIndex(onChain.getBlockIndex() + 1);
chain.setChainName(newString);
chain.setUserId(dto.getUserId());
chain.setChainTime(System.currentTimeMillis());
chain.setBlockHash(blockHashInfo);
chain.setPreBlockHash(onChain.getBlockHash());
chain.setId(RandomUtil.randomString(64));
chain.setBuyData(encrypt);
chain.setSequence(sequence+1);
stuBlockOnChainMapper.insert(chain);
return new ResultEntity(HttpStatus.ACCEPTED,"加密成功!",encrypt);
}else {
return new ResultEntity(HttpStatus.BAD_REQUEST,"加密失败!");
}
}
throw new ServiceException(HttpStatus.ACCEPTED,"请选择正确密钥!");
}
}

@ -12,6 +12,11 @@
<result column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="exccess" jdbcType="VARCHAR" property="exccess" />
<result column="module" jdbcType="VARCHAR" property="module" />
<result column="factor_contract_encry_state" jdbcType="INTEGER" property="factorContractEncryState" />
<result column="factor_contract_decry_state" jdbcType="INTEGER" property="factorContractDecryState" />
<result column="encry_abstract" jdbcType="VARCHAR" property="encryAbstract" />
<result column="signature" jdbcType="VARCHAR" property="signature" />
<result column="information_encry" jdbcType="VARCHAR" property="informationEncry" />
</resultMap>
<sql id="Example_Where_Clause">
<where>
@ -73,7 +78,8 @@
</sql>
<sql id="Base_Column_List">
id, file_name, file_size, file_url, file_type, create_time, update_time, user_id,
exccess, module
exccess, module, factor_contract_encry_state, factor_contract_decry_state, encry_abstract,
signature, information_encry
</sql>
<select id="selectByExample" parameterType="com.sztzjy.block_finance.entity.StuUploadResourceInfoExample" resultMap="BaseResultMap">
select
@ -109,11 +115,15 @@
insert into stu_upload_resource_info (id, file_name, file_size,
file_url, file_type, create_time,
update_time, user_id, exccess,
module)
module, factor_contract_encry_state, factor_contract_decry_state,
encry_abstract, signature, information_encry
)
values (#{id,jdbcType=VARCHAR}, #{fileName,jdbcType=VARCHAR}, #{fileSize,jdbcType=VARCHAR},
#{fileUrl,jdbcType=VARCHAR}, #{fileType,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}, #{userId,jdbcType=VARCHAR}, #{exccess,jdbcType=VARCHAR},
#{module,jdbcType=VARCHAR})
#{module,jdbcType=VARCHAR}, #{factorContractEncryState,jdbcType=INTEGER}, #{factorContractDecryState,jdbcType=INTEGER},
#{encryAbstract,jdbcType=VARCHAR}, #{signature,jdbcType=VARCHAR}, #{informationEncry,jdbcType=VARCHAR}
)
</insert>
<insert id="insertSelective" parameterType="com.sztzjy.block_finance.entity.StuUploadResourceInfo">
insert into stu_upload_resource_info
@ -148,6 +158,21 @@
<if test="module != null">
module,
</if>
<if test="factorContractEncryState != null">
factor_contract_encry_state,
</if>
<if test="factorContractDecryState != null">
factor_contract_decry_state,
</if>
<if test="encryAbstract != null">
encry_abstract,
</if>
<if test="signature != null">
signature,
</if>
<if test="informationEncry != null">
information_encry,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
@ -180,6 +205,21 @@
<if test="module != null">
#{module,jdbcType=VARCHAR},
</if>
<if test="factorContractEncryState != null">
#{factorContractEncryState,jdbcType=INTEGER},
</if>
<if test="factorContractDecryState != null">
#{factorContractDecryState,jdbcType=INTEGER},
</if>
<if test="encryAbstract != null">
#{encryAbstract,jdbcType=VARCHAR},
</if>
<if test="signature != null">
#{signature,jdbcType=VARCHAR},
</if>
<if test="informationEncry != null">
#{informationEncry,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select id="countByExample" parameterType="com.sztzjy.block_finance.entity.StuUploadResourceInfoExample" resultType="java.lang.Long">
@ -221,6 +261,21 @@
<if test="record.module != null">
module = #{record.module,jdbcType=VARCHAR},
</if>
<if test="record.factorContractEncryState != null">
factor_contract_encry_state = #{record.factorContractEncryState,jdbcType=INTEGER},
</if>
<if test="record.factorContractDecryState != null">
factor_contract_decry_state = #{record.factorContractDecryState,jdbcType=INTEGER},
</if>
<if test="record.encryAbstract != null">
encry_abstract = #{record.encryAbstract,jdbcType=VARCHAR},
</if>
<if test="record.signature != null">
signature = #{record.signature,jdbcType=VARCHAR},
</if>
<if test="record.informationEncry != null">
information_encry = #{record.informationEncry,jdbcType=VARCHAR},
</if>
</set>
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
@ -237,7 +292,12 @@
update_time = #{record.updateTime,jdbcType=TIMESTAMP},
user_id = #{record.userId,jdbcType=VARCHAR},
exccess = #{record.exccess,jdbcType=VARCHAR},
module = #{record.module,jdbcType=VARCHAR}
module = #{record.module,jdbcType=VARCHAR},
factor_contract_encry_state = #{record.factorContractEncryState,jdbcType=INTEGER},
factor_contract_decry_state = #{record.factorContractDecryState,jdbcType=INTEGER},
encry_abstract = #{record.encryAbstract,jdbcType=VARCHAR},
signature = #{record.signature,jdbcType=VARCHAR},
information_encry = #{record.informationEncry,jdbcType=VARCHAR}
<if test="_parameter != null">
<include refid="Update_By_Example_Where_Clause" />
</if>
@ -272,6 +332,21 @@
<if test="module != null">
module = #{module,jdbcType=VARCHAR},
</if>
<if test="factorContractEncryState != null">
factor_contract_encry_state = #{factorContractEncryState,jdbcType=INTEGER},
</if>
<if test="factorContractDecryState != null">
factor_contract_decry_state = #{factorContractDecryState,jdbcType=INTEGER},
</if>
<if test="encryAbstract != null">
encry_abstract = #{encryAbstract,jdbcType=VARCHAR},
</if>
<if test="signature != null">
signature = #{signature,jdbcType=VARCHAR},
</if>
<if test="informationEncry != null">
information_encry = #{informationEncry,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
@ -285,7 +360,12 @@
update_time = #{updateTime,jdbcType=TIMESTAMP},
user_id = #{userId,jdbcType=VARCHAR},
exccess = #{exccess,jdbcType=VARCHAR},
module = #{module,jdbcType=VARCHAR}
module = #{module,jdbcType=VARCHAR},
factor_contract_encry_state = #{factorContractEncryState,jdbcType=INTEGER},
factor_contract_decry_state = #{factorContractDecryState,jdbcType=INTEGER},
encry_abstract = #{encryAbstract,jdbcType=VARCHAR},
signature = #{signature,jdbcType=VARCHAR},
information_encry = #{informationEncry,jdbcType=VARCHAR}
where id = #{id,jdbcType=VARCHAR}
</update>
</mapper>
Loading…
Cancel
Save