diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuCreditInvestmentController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuCreditInvestmentController.java index 7620870..0dac7c4 100644 --- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuCreditInvestmentController.java +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuCreditInvestmentController.java @@ -149,7 +149,13 @@ public class StuCreditInvestmentController { } + @ApiOperation("资信调查通过") + @PostMapping("/creditInvestPass") + @AnonymousAccess + public ResultEntity creditInvestPass(String userId){ + return stuCreditInvestService.creditInvestPass(userId); + } } diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSignFactorContractBySupplyController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSignFactorContractBySupplyController.java new file mode 100644 index 0000000..4c320b5 --- /dev/null +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSignFactorContractBySupplyController.java @@ -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; + + + + //保理合同 + + + + + + + +} diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSignFactorContractController.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSignFactorContractController.java new file mode 100644 index 0000000..526ffbd --- /dev/null +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/controller/StuSignFactorContractController.java @@ -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 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 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; + } + + + } + + + + + +} diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfo.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfo.java index 7da5e3e..0d50430 100644 --- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfo.java +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfo.java @@ -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(); + } } \ No newline at end of file diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfoExample.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfoExample.java index fd40faf..79bc4f7 100644 --- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfoExample.java +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/entity/StuUploadResourceInfoExample.java @@ -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 values) { + addCriterion("factor_contract_encry_state in", values, "factorContractEncryState"); + return (Criteria) this; + } + + public Criteria andFactorContractEncryStateNotIn(List 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 values) { + addCriterion("factor_contract_decry_state in", values, "factorContractDecryState"); + return (Criteria) this; + } + + public Criteria andFactorContractDecryStateNotIn(List 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 values) { + addCriterion("encry_abstract in", values, "encryAbstract"); + return (Criteria) this; + } + + public Criteria andEncryAbstractNotIn(List 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 values) { + addCriterion("signature in", values, "signature"); + return (Criteria) this; + } + + public Criteria andSignatureNotIn(List 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 values) { + addCriterion("information_encry in", values, "informationEncry"); + return (Criteria) this; + } + + public Criteria andInformationEncryNotIn(List 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 { diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuUploadResourceInfoMapper.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuUploadResourceInfoMapper.java index 7ca3de2..761350a 100644 --- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuUploadResourceInfoMapper.java +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/mappers/StuUploadResourceInfoMapper.java @@ -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); diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuCreditInvestService.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuCreditInvestService.java index 621ac98..23eccf5 100644 --- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuCreditInvestService.java +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuCreditInvestService.java @@ -39,4 +39,13 @@ public interface StuCreditInvestService { */ ResultEntity supplyRunInfo(StuCoreInvest stuCoreInvest); + + + /** + * 资信调查通过 + * @param userId + * @return + */ + + ResultEntity creditInvestPass(String userId); } diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuSignFactorContractService.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuSignFactorContractService.java new file mode 100644 index 0000000..f9a4f37 --- /dev/null +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/StuSignFactorContractService.java @@ -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; +} diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuCreditInvestServiceImpl.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuCreditInvestServiceImpl.java index 5e9dc25..d61fc44 100644 --- a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuCreditInvestServiceImpl.java +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuCreditInvestServiceImpl.java @@ -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 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,"通过失败!"); + } + } diff --git a/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuSignFactorContractServiceImpl.java b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuSignFactorContractServiceImpl.java new file mode 100644 index 0000000..a89e1a2 --- /dev/null +++ b/BlockFinanceCentral/src/main/java/com/sztzjy/block_finance/service/impl/StuSignFactorContractServiceImpl.java @@ -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 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 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 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 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 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,"请选择正确密钥!"); + } +} diff --git a/BlockFinanceCentral/src/main/resources/mappers/StuUploadResourceInfoMapper.xml b/BlockFinanceCentral/src/main/resources/mappers/StuUploadResourceInfoMapper.xml index 3d90192..0bf7b6b 100644 --- a/BlockFinanceCentral/src/main/resources/mappers/StuUploadResourceInfoMapper.xml +++ b/BlockFinanceCentral/src/main/resources/mappers/StuUploadResourceInfoMapper.xml @@ -12,6 +12,11 @@ + + + + + @@ -73,7 +78,8 @@ 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 @@ -221,6 +261,21 @@ 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}, + @@ -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} @@ -272,6 +332,21 @@ 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} @@ -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} \ No newline at end of file