提交 b76e556b authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v10.7_borrowing_and_repayment_20240118' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/controller/temp/TempBankController.java
...@@ -138,6 +138,7 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -138,6 +138,7 @@ public enum PerformanceResultEnum implements ResultEnum {
OWNER_LOAN_RECORD_PAY_STATUS_ERROR(1850, "状态已变更无法支付"), OWNER_LOAN_RECORD_PAY_STATUS_ERROR(1850, "状态已变更无法支付"),
OWNER_LOAN_RECORD_CANCEL_STATUS_ERROR(1851, "状态已变更无法取消"), OWNER_LOAN_RECORD_CANCEL_STATUS_ERROR(1851, "状态已变更无法取消"),
OWNER_LOAN_RECORD_PAY_WAIT_ERROR(1852,"当前借款单状态不是待付款"),
; ;
private final int code; private final int code;
......
...@@ -10,11 +10,11 @@ import java.util.Optional; ...@@ -10,11 +10,11 @@ import java.util.Optional;
public enum OwnerLoanRecordEnum { public enum OwnerLoanRecordEnum {
; ;
//“待审批”,“审批通过”,“审批拒绝”,“付款中”,“付款成功”,“付款失败”
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum Status { public enum Status {
APPROVE_WAIT(10, "待审批"), APPROVE_WAIT(10, "待审批"),
PAY_WAIT(15, "待付款"),
APPROVE_PASS(20, "审批通过"), APPROVE_PASS(20, "审批通过"),
APPROVE_REFUSE(30, "审批拒绝"), APPROVE_REFUSE(30, "审批拒绝"),
PAYING(40, "付款中"), PAYING(40, "付款中"),
......
package com.clx.performance.param.pc.loan.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class OwnerRepaymentParam {
@ApiModelProperty("还款单号")
private Long repaymentNo;
@ApiModelProperty("支付通道:1订单支付 2转账支付")
private Integer payChannel;
}
...@@ -31,6 +31,6 @@ public class PageCarrierOwnerLoanRecordParam extends PageParam { ...@@ -31,6 +31,6 @@ public class PageCarrierOwnerLoanRecordParam extends PageParam {
@ApiModelProperty("借款类型 1:虚拟货币 2:资金") @ApiModelProperty("借款类型 1:虚拟货币 2:资金")
private Integer loanType; private Integer loanType;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status; private Integer status;
} }
...@@ -25,7 +25,7 @@ public class PageOwnerLoanRecordOfOwner extends PageParam { ...@@ -25,7 +25,7 @@ public class PageOwnerLoanRecordOfOwner extends PageParam {
@ApiModelProperty(value = "借款类型 1:虚拟货币 2:资金", example = "1") @ApiModelProperty(value = "借款类型 1:虚拟货币 2:资金", example = "1")
private Integer loanType; private Integer loanType;
@ApiModelProperty(value = "10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ", example = "1") @ApiModelProperty(value = "10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ", example = "1")
private Integer status; private Integer status;
} }
\ No newline at end of file
...@@ -43,7 +43,7 @@ public class CarrierOwnerOrderPaymentDetailVO { ...@@ -43,7 +43,7 @@ public class CarrierOwnerOrderPaymentDetailVO {
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status; private Integer status;
@ApiModelProperty("订单支付状态 10 待付款 40 付款中 50 付款成功 60 付款失败") @ApiModelProperty("订单支付状态 10 待付款 40 付款中 50 付款成功 60 付款失败")
......
...@@ -59,5 +59,8 @@ public class CarrierTransferPaymentDetailVO { ...@@ -59,5 +59,8 @@ public class CarrierTransferPaymentDetailVO {
@ApiModelProperty("付款最后时间") @ApiModelProperty("付款最后时间")
public String finalPaymentTime; public String finalPaymentTime;
@ApiModelProperty("借款单号")
private Long loanNo;
} }
...@@ -95,11 +95,11 @@ public class ExportOwnerLoanRecordVO { ...@@ -95,11 +95,11 @@ public class ExportOwnerLoanRecordVO {
private String payeeBankCode; private String payeeBankCode;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status; private Integer status;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private String statusMsg; private String statusMsg;
public String getStatusMsg(){ public String getStatusMsg(){
......
...@@ -91,11 +91,11 @@ public class OwnerLoanRecordVO { ...@@ -91,11 +91,11 @@ public class OwnerLoanRecordVO {
private String payeeBankCode; private String payeeBankCode;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status; private Integer status;
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private String statusMsg; private String statusMsg;
public String getStatusMsg(){ public String getStatusMsg(){
......
...@@ -26,6 +26,9 @@ public class OwnerOrderPaymentDetailVO { ...@@ -26,6 +26,9 @@ public class OwnerOrderPaymentDetailVO {
@ApiModelProperty("还款单号") @ApiModelProperty("还款单号")
private Long repaymentNo; private Long repaymentNo;
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("付款方") @ApiModelProperty("付款方")
private String payment; private String payment;
......
...@@ -22,6 +22,16 @@ import java.math.BigDecimal; ...@@ -22,6 +22,16 @@ import java.math.BigDecimal;
@Builder @Builder
public class OwnerTransferPaymentDetailVO { public class OwnerTransferPaymentDetailVO {
@ApiModelProperty("还款单号")
private Long repaymentNo;
@ApiModelProperty("借款单号")
private Long loanNo;
@ApiModelProperty("收款户名") @ApiModelProperty("收款户名")
private String payee; private String payee;
...@@ -60,4 +70,5 @@ public class OwnerTransferPaymentDetailVO { ...@@ -60,4 +70,5 @@ public class OwnerTransferPaymentDetailVO {
public String finalPaymentTime; public String finalPaymentTime;
} }
...@@ -200,4 +200,24 @@ public class RabbitBeanConfig { ...@@ -200,4 +200,24 @@ public class RabbitBeanConfig {
public Binding ownerLoanBind() { public Binding ownerLoanBind() {
return BindingBuilder.bind(ownerLoanQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY); return BindingBuilder.bind(ownerLoanQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY);
} }
/**
* 货主还款队列
* @return
*/
@Bean
public Queue ownerRepaymentQueue() {
return new Queue(RabbitKeyConstants.OWNER_REPAYMENT_QUEUE, true, false, false);
}
/**
* 货主还款bind
* @return
*/
@Bean
public Binding ownerRepaymentBind() {
return BindingBuilder.bind(ownerLoanQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_REPAYMENT_ROUTE_KEY);
}
} }
...@@ -93,4 +93,8 @@ public class RabbitKeyConstants { ...@@ -93,4 +93,8 @@ public class RabbitKeyConstants {
public static final String OWNER_LOAN_ROUTE_KEY ="clx-performance.loan.route.key"; public static final String OWNER_LOAN_ROUTE_KEY ="clx-performance.loan.route.key";
public static final String OWNER_LOAN_QUEUE ="clx-performance.loan.queue"; public static final String OWNER_LOAN_QUEUE ="clx-performance.loan.queue";
public static final String OWNER_REPAYMENT_QUEUE ="clx-performance.owner.repayment.queue";
public static final String OWNER_REPAYMENT_ROUTE_KEY ="clx-performance.owner.repayment.route.key";
} }
...@@ -41,13 +41,20 @@ public class CarrierOwnerLoanRecordController { ...@@ -41,13 +41,20 @@ public class CarrierOwnerLoanRecordController {
return Result.page(page.getRecords(),page.getTotal(),page.getPages()); return Result.page(page.getRecords(),page.getTotal(),page.getPages());
} }
@ApiOperation(value = "借款审批",notes = "<br>By:胡宇帆") @ApiOperation(value = "借款审批(虚拟币直接增加,资金需要跳收银台提交申请)",notes = "<br>By:胡宇帆")
@PostMapping("/ownerLoanRecordApprove") @PostMapping("/ownerLoanRecordApprove")
public Result<Object> ownerLoanRecordApprove(@RequestBody @Validated CarrierOwnerLoanRecordApproveParam param) { public Result<Object> ownerLoanRecordApprove(@RequestBody @Validated CarrierOwnerLoanRecordApproveParam param) {
ownerLoanRecordService.ownerLoanRecordApprove(param); ownerLoanRecordService.ownerLoanRecordApprove(param);
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "借款提交申请(调用宁波银行)",notes = "<br>By:胡宇帆")
@PostMapping("/ownerLoanRecordSubmitNbBank")
public Result<Object> ownerLoanRecordSubmitNbBank(@RequestBody @Validated CarrierOwnerLoanRecordApproveParam param) {
ownerLoanRecordService.ownerLoanRecordSubmitNbBank(param);
return Result.ok();
}
@ApiOperation(value = "借款重新支付(只更改借款状态)",notes = "<br>By:胡宇帆") @ApiOperation(value = "借款重新支付(只更改借款状态)",notes = "<br>By:胡宇帆")
@GetMapping("/ownerLoanRecordRetryPay") @GetMapping("/ownerLoanRecordRetryPay")
public Result<Object> ownerLoanRecordRetryPay(@RequestParam(value = "loanNo") @NotBlank String loanNo) { public Result<Object> ownerLoanRecordRetryPay(@RequestParam(value = "loanNo") @NotBlank String loanNo) {
...@@ -132,5 +139,14 @@ public class CarrierOwnerLoanRecordController { ...@@ -132,5 +139,14 @@ public class CarrierOwnerLoanRecordController {
return Result.ok(token); return Result.ok(token);
} }
@ApiOperation(value = "订单支付短信", notes = "<br>By:姜文业")
@GetMapping("/sendOrderPaySms")
public Result<String> sendOrderPaySms(@RequestParam("mobile") @NotBlank(message = "通知的手机号码不能为空") String mobile,
@Param("payee") @NotBlank(message = "收款方不能为空") String payee,
@Param("payeeAccount") @NotBlank(message = "收款账户不能为空") String payeeAccount) {
String token = ownerLoanRecordService.sendOrderPaySms(mobile,payee,payeeAccount);
return Result.ok(token);
}
} }
package com.clx.performance.controller.pc.loan.owner; package com.clx.performance.controller.pc.loan.owner;
import com.clx.performance.param.pc.loan.carrier.OwnerRepaymentParam;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam; import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
import com.clx.performance.service.loan.OwnerLoanAccountApproveService; import com.clx.performance.service.loan.OwnerLoanAccountApproveService;
import com.clx.performance.service.loan.OwnerLoanAccountService; import com.clx.performance.service.loan.OwnerLoanAccountService;
...@@ -54,4 +55,11 @@ public class OwnerLoanAccountController { ...@@ -54,4 +55,11 @@ public class OwnerLoanAccountController {
OwnerAccountVO ownerAccount = ownerLoanAccountService.getOwnerLoanAccount(); OwnerAccountVO ownerAccount = ownerLoanAccountService.getOwnerLoanAccount();
return Result.ok(ownerAccount); return Result.ok(ownerAccount);
} }
@ApiOperation(value = "货主还款",notes = "<br>By:胡宇帆")
@GetMapping("/ownerRepayment")
public Result<OwnerAccountVO> ownerRepayment(@RequestBody OwnerRepaymentParam param) {
ownerLoanAccountService.ownerRepayment(param);
return Result.ok();
}
} }
...@@ -87,6 +87,15 @@ public class OwnerRepaymentController { ...@@ -87,6 +87,15 @@ public class OwnerRepaymentController {
return Result.ok(token); return Result.ok(token);
} }
@ApiOperation(value = "订单支付短信", notes = "<br>By:姜文业")
@GetMapping("/sendOrderPaySms")
public Result<String> sendOrderPaySms(@RequestParam("mobile") @NotBlank(message = "通知的手机号码不能为空") String mobile,
@Param("payee") @NotBlank(message = "收款方不能为空") String payee,
@Param("payeeAccount") @NotBlank(message = "收款账户不能为空") String payeeAccount) {
String token = ownerRepaymentService.sendOrderPaySms(mobile,payee,payeeAccount);
return Result.ok(token);
}
} }
...@@ -39,20 +39,16 @@ public class TempBankController { ...@@ -39,20 +39,16 @@ public class TempBankController {
// return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000076809", "黑玫瑰")); // return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000076809", "黑玫瑰"));
// return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000075926", "客户客户")); // return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000075926", "客户客户"));
return Result.ok(bankService.orderDirectPay(null,1,"313332082914","86031110000180611", "槟榔王")); return Result.ok(bankService.orderDirectPay(null,"",1,"313332082914","86031110000180611", "槟榔王"));
} }
@ApiOperation(value = "订单支付1", notes = "<br>By:艾庆国") @ApiOperation(value = "订单支付1", notes = "<br>By:艾庆国")
@RequestMapping(value = "/orderDirectPay1", method = RequestMethod.POST) @RequestMapping(value = "/orderDirectPay1", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> orderDirectPay1(String payAcctNo, String payAcctNm) { public Result<NbBankOrderPayResultVO> orderDirectPay1(String payAcctNo, String payAcctNm) {
return Result.ok(bankService.orderDirectPay(null,1,"313332082914",payAcctNo, payAcctNm)); // return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000076809", "黑玫瑰"));
} // return Result.ok(bankService.orderDirectPay(null,2,"313332082914","86041110000075926", "客户客户"));
@ApiOperation(value = "订单支付2", notes = "<br>By:艾庆国") return Result.ok(bankService.orderDirectPay(null,"",1,"313332082914",payAcctNo, payAcctNm));
@RequestMapping(value = "/orderDirectPay2", method = RequestMethod.POST)
public Result<NbBankOrderPayResultVO> orderDirectPay2(String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
return Result.ok(bankService.orderDirectPay(null,1,payAcctOpenBankId,payAcctNo, payAcctNm));
} }
@ApiOperation(value = "查询", notes = "<br>By:艾庆国") @ApiOperation(value = "查询", notes = "<br>By:艾庆国")
......
...@@ -90,7 +90,7 @@ public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, O ...@@ -90,7 +90,7 @@ public class OwnerLoanRecordDaoImpl extends BaseDaoImpl<OwnerLoanRecordMapper, O
.set(OwnerLoanRecord::getMerchantRunningWaterNo, item.getMerchantRunningWaterNo()) .set(OwnerLoanRecord::getMerchantRunningWaterNo, item.getMerchantRunningWaterNo())
.set(OwnerLoanRecord::getRemittanceIdentificationCode, item.getRemittanceIdentificationCode()) .set(OwnerLoanRecord::getRemittanceIdentificationCode, item.getRemittanceIdentificationCode())
.set(OwnerLoanRecord::getLoanResidueBalance, item.getLoanResidueBalance()) .set(OwnerLoanRecord::getLoanResidueBalance, item.getLoanResidueBalance())
.set(OwnerLoanRecord::getRemittanceIdentificationCode, item.getRemittanceIdentificationCode())
.set(OwnerLoanRecord::getLendingParty, item.getLendingParty()) .set(OwnerLoanRecord::getLendingParty, item.getLendingParty())
.set(OwnerLoanRecord::getLendingPartyAccount, item.getLendingPartyAccount()) .set(OwnerLoanRecord::getLendingPartyAccount, item.getLendingPartyAccount())
); );
......
...@@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil;
import com.clx.performance.param.OwnerLoanPayNotifyMqParam; import com.clx.performance.param.OwnerLoanPayNotifyMqParam;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.enums.nbbank.NbBankStatusEnum; import com.clx.performance.enums.nbbank.NbBankStatusEnum;
import com.clx.performance.service.loan.OwnerLoanAccountService;
import com.clx.performance.service.loan.OwnerLoanRecordService; import com.clx.performance.service.loan.OwnerLoanRecordService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -22,6 +23,8 @@ public class OwnerLoanPayNotifyListener { ...@@ -22,6 +23,8 @@ public class OwnerLoanPayNotifyListener {
private final OwnerLoanRecordService ownerLoanRecordService; private final OwnerLoanRecordService ownerLoanRecordService;
private final OwnerLoanAccountService ownerLoanAccountService;
@RabbitListener(queues = RabbitKeyConstants.OWNER_LOAN_PAY_QUEUE) @RabbitListener(queues = RabbitKeyConstants.OWNER_LOAN_PAY_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
log.info("处理货主借款支付监听器执行,数据为{}", message); log.info("处理货主借款支付监听器执行,数据为{}", message);
...@@ -30,6 +33,7 @@ public class OwnerLoanPayNotifyListener { ...@@ -30,6 +33,7 @@ public class OwnerLoanPayNotifyListener {
if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.SUCCESS.getCode())) { if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.SUCCESS.getCode())) {
// 支付成功 // 支付成功
ownerLoanRecordService.paySuccess(param.getMerSeqNo()); ownerLoanRecordService.paySuccess(param.getMerSeqNo());
} }
else if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.FAIL.getCode())) { else if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.FAIL.getCode())) {
// 支付失败 // 支付失败
......
...@@ -68,6 +68,7 @@ public class OwnerLoanRecord implements HasKey<Integer> { ...@@ -68,6 +68,7 @@ public class OwnerLoanRecord implements HasKey<Integer> {
@ApiModelProperty("借款剩余金额") @ApiModelProperty("借款剩余金额")
private BigDecimal loanResidueBalance; private BigDecimal loanResidueBalance;
@TableField("borrower_id") @TableField("borrower_id")
@ApiModelProperty("借出方Id") @ApiModelProperty("借出方Id")
private Integer borrowerId; private Integer borrowerId;
...@@ -76,10 +77,23 @@ public class OwnerLoanRecord implements HasKey<Integer> { ...@@ -76,10 +77,23 @@ public class OwnerLoanRecord implements HasKey<Integer> {
@ApiModelProperty("借出方") @ApiModelProperty("借出方")
private String borrower; private String borrower;
@ApiModelProperty("借方账户") @ApiModelProperty("借方账户")
@TableField("borrower_account") @TableField("borrower_account")
private String borrowerAccount; private String borrowerAccount;
@TableField("borrower_bank")
@ApiModelProperty("借出方银行")
private String borrowerBank;
@TableField("borrower_bank_code")
@ApiModelProperty("借出方银行行号")
private String borrowerBankCode;
@TableField("borrower_open_bank")
@ApiModelProperty("借出方开户行")
private String borrowerOpenBank;
@TableField("remittance_identification_code") @TableField("remittance_identification_code")
@ApiModelProperty("汇款识别码") @ApiModelProperty("汇款识别码")
private String remittanceIdentificationCode; private String remittanceIdentificationCode;
...@@ -93,6 +107,20 @@ public class OwnerLoanRecord implements HasKey<Integer> { ...@@ -93,6 +107,20 @@ public class OwnerLoanRecord implements HasKey<Integer> {
@ApiModelProperty("借款方账户") @ApiModelProperty("借款方账户")
private String lendingPartyAccount; private String lendingPartyAccount;
@TableField("lending_party_bank")
@ApiModelProperty("借款方银行")
private String lendingPartyBank;
@TableField("lending_party_bank_code")
@ApiModelProperty("借款方银行行号")
private String lendingPartyBankCode;
@TableField("lending_party_open_bank")
@ApiModelProperty("借款方开户行")
private String lendingPartyOpenBank;
@TableField("payee") @TableField("payee")
@ApiModelProperty("收款方") @ApiModelProperty("收款方")
private String payee; private String payee;
...@@ -110,7 +138,7 @@ public class OwnerLoanRecord implements HasKey<Integer> { ...@@ -110,7 +138,7 @@ public class OwnerLoanRecord implements HasKey<Integer> {
private String payeeBankCode; private String payeeBankCode;
@TableField("status") @TableField("status")
@ApiModelProperty("10 待审批 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ") @ApiModelProperty("10 待审批 15 待付款 20 审批通过 30 审批拒绝 40 付款中 50 付款成功 60 付款失败 ")
private Integer status; private Integer status;
@TableField("approve_time") @TableField("approve_time")
......
...@@ -94,6 +94,10 @@ public class OwnerRepayment implements HasKey<Integer> { ...@@ -94,6 +94,10 @@ public class OwnerRepayment implements HasKey<Integer> {
@ApiModelProperty("借款单号") @ApiModelProperty("借款单号")
private Long loanNo; private Long loanNo;
@TableField("loan_type")
@ApiModelProperty("借款类型 1:虚拟货币 2:资金")
private Long loanType;
@TableField("status") @TableField("status")
@ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败") @ApiModelProperty("10 待付款 40 付款中 50 付款成功 60 付款失败")
private Integer status; private Integer status;
......
...@@ -5,26 +5,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,26 +5,31 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.component.OrderChildLoanComponent; import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao; import com.clx.performance.dao.loan.*;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OwnerLoanMqDTO; import com.clx.performance.dto.OwnerLoanMqDTO;
import com.clx.performance.enums.loan.BankTradeEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver; import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.model.loan.OrderChildLoanRetryRecord; import com.clx.performance.model.loan.*;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.loan.carrier.OwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam; import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.service.loan.OwnerLoanAccountService; import com.clx.performance.service.loan.OwnerLoanAccountService;
import com.clx.performance.service.thirdparty.nbbank.NbBankService;
import com.clx.performance.struct.loan.OwnerLoanAccountStruct; import com.clx.performance.struct.loan.OwnerLoanAccountStruct;
import com.clx.performance.vo.pc.loan.carrier.CarrierOwnerLoanAccountVO; import com.clx.performance.vo.pc.loan.carrier.CarrierOwnerLoanAccountVO;
import com.clx.performance.vo.pc.loan.owner.OwnerAccountVO; import com.clx.performance.vo.pc.loan.owner.OwnerAccountVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.convertor.aspect.UnitCovert; import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.user.data.UserSessionData; import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -34,6 +39,7 @@ import org.springframework.stereotype.Service; ...@@ -34,6 +39,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
/** /**
...@@ -60,6 +66,14 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService { ...@@ -60,6 +66,14 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
private final RabbitTemplate rabbitTemplate; private final RabbitTemplate rabbitTemplate;
private final OwnerRepaymentDao ownerRepaymentDao;
private final NbBankService bankService;
private final BankTradeDao bankTradeDao;
private final OwnerLoanRecordDao ownerLoanRecordDao;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void openOwnerLoanAccount(Long ownerUserNo, String ownerUserName, String mobile) { public void openOwnerLoanAccount(Long ownerUserNo, String ownerUserName, String mobile) {
...@@ -99,30 +113,42 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService { ...@@ -99,30 +113,42 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
return ownerAccountVO; return ownerAccountVO;
} }
/**
* 货主借款后执行阻塞流程的相关运单
*
* @param ownerUserNo
*/
@Override @Override
public void orderChildLoanProcess(Long ownerUserNo) { public void ownerRepayment(OwnerRepaymentParam param) {
List<OrderChildLoanRetryRecord> orderChildLoanRetryRecordList = orderChildLoanRetryRecordDao.selectListByIdAsc(); OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, param.getRepaymentNo()).get();
for (OrderChildLoanRetryRecord retryRecord : orderChildLoanRetryRecordList) { OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, ownerRepayment.getLoanNo()).get();
//生成借款标识 BankTrade bankTrade = new BankTrade();
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getEntityByKey(retryRecord.getSettlementDriverId()).get(); if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getEntityByKey(retryRecord.getSettlementOwnerId()).get(); // 订单支付
OrderChild orderChild = orderChildDao.getByChildNo(settlementDriverDetail.getChildNo()).get(); NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(ownerRepayment.getRepaymentNo(), "还款单",
OwnerLoanMqDTO dto = new OwnerLoanMqDTO(); ownerRepayment.getRepaymentBalance().intValue(), ownerLoanRecord.getPayeeBankCode(),
dto.setSettlementOwnerDetail(settlementOwnerDetail); ownerLoanRecord.getPayeeAccount(), ownerLoanRecord.getPayee());
dto.setSettlementDriverDetail(settlementDriverDetail); ownerRepayment.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
dto.setOrderChild(orderChild); ownerRepayment.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
//货主借款监听器处理
Message message = MessageBuilder.withBody(JSONUtil.parse(dto).toString().getBytes()).build(); bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_DIRECT_PAY.getCode());
rabbitTemplate.send( } else {
RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY, message //TODO 是否转账是部分支付
); // 转账支付
orderChildLoanRetryRecordDao.deleteByKey(retryRecord.getId()); NbBankOrderPayResultVO orderPayResultVO = bankService.orderTransferPay(ownerLoanRecord.getLoanBalance().intValue());
bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_TRANSFER_PAY.getCode());
} }
ownerRepayment.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
// 更新还款支付信息
//ownerRepaymentDao.updatePay(ownerLoanRecord);
bankTrade.setRelationNo(ownerRepayment.getRepaymentNo().toString());
bankTrade.setOrderType(BankTradeEnum.OrderType.OWNER_LOAN_RECORD.getCode());
bankTrade.setAmount(ownerLoanRecord.getLoanBalance());
bankTrade.setMerchantRunningWaterNo(ownerLoanRecord.getMerchantRunningWaterNo());
bankTrade.setRunningWaterOpenNo(ownerLoanRecord.getRunningWaterOpenNo());
bankTrade.setRemark("还款单");
// 保存银行交易记录
bankTradeDao.saveEntity(bankTrade);
} }
} }
......
...@@ -14,14 +14,19 @@ import com.clx.performance.config.ClxMessageConfig; ...@@ -14,14 +14,19 @@ import com.clx.performance.config.ClxMessageConfig;
import com.clx.performance.config.loan.ClxPayeeConfig; import com.clx.performance.config.loan.ClxPayeeConfig;
import com.clx.performance.config.loan.PaymentFromConfig; import com.clx.performance.config.loan.PaymentFromConfig;
import com.clx.performance.config.nbbank.NbBankConfig; import com.clx.performance.config.nbbank.NbBankConfig;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OwnerBindCardRecordDao; import com.clx.performance.dao.OwnerBindCardRecordDao;
import com.clx.performance.dao.loan.BorrowerDao; import com.clx.performance.dao.loan.BorrowerDao;
import com.clx.performance.dao.loan.OwnerLoanAccountDao; import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao; import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.dao.loan.OwnerLoanRecordDao; import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao; import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.LoanBalanceDTO; import com.clx.performance.dto.LoanBalanceDTO;
import com.clx.performance.dao.loan.*; import com.clx.performance.dao.loan.*;
import com.clx.performance.dto.OwnerLoanMqDTO;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.RunningWaterTypeEnum; import com.clx.performance.enums.RunningWaterTypeEnum;
import com.clx.performance.enums.loan.BankTradeEnum; import com.clx.performance.enums.loan.BankTradeEnum;
...@@ -29,8 +34,12 @@ import com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum; ...@@ -29,8 +34,12 @@ import com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum; import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum; import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.enums.nbbank.NbBankStatusEnum; import com.clx.performance.enums.nbbank.NbBankStatusEnum;
import com.clx.performance.extranal.user.impl.OwnerInfoServiceImpl;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OwnerBindCardRecord; import com.clx.performance.model.OwnerBindCardRecord;
import com.clx.performance.model.loan.*; import com.clx.performance.model.loan.*;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.loan.carrier.*; import com.clx.performance.param.pc.loan.carrier.*;
import com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam; import com.clx.performance.param.pc.loan.owner.ExportPaymentApplicationFormParam;
import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam; import com.clx.performance.param.pc.loan.owner.OwnerLoanRecordParam;
...@@ -58,6 +67,9 @@ import com.msl.user.data.UserSessionData; ...@@ -58,6 +67,9 @@ import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil; import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -103,10 +115,21 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -103,10 +115,21 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final ContractTemplateFeign contractTemplateFeign; private final ContractTemplateFeign contractTemplateFeign;
private final PaymentFromConfig paymentFromConfig; private final PaymentFromConfig paymentFromConfig;
private final NbBankConfig nbBankConfig; private final NbBankConfig nbBankConfig;
private final ClxPayeeConfig clxPayeeConfig; private final OwnerInfoServiceImpl ownerInfoService;
private final ClxMessageOpenapiFeign clxMessageOpenapiFeign; private final ClxMessageOpenapiFeign clxMessageOpenapiFeign;
private final ClxMessageConfig messageConfig; private final ClxMessageConfig messageConfig;
private final OrderChildLoanRetryRecordDao orderChildLoanRetryRecordDao;
private final SettlementDriverDetailDao settlementDriverDetailDao;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final OrderChildDao orderChildDao;
private final RabbitTemplate rabbitTemplate;
@Override @Override
public IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) { public IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) {
IPage<OwnerLoanRecord> page = ownerLoanRecordDao.pageOwnerLoanRecord(param); IPage<OwnerLoanRecord> page = ownerLoanRecordDao.pageOwnerLoanRecord(param);
...@@ -161,9 +184,24 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -161,9 +184,24 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
//同意 //同意
ownerLoanRecord.setLoanType(param.getLoanType()); ownerLoanRecord.setLoanType(param.getLoanType());
//设置借款记录中借款方和借出方的银行账户信息
OwnerInfoFeignVO ownerInfoFeignVO = ownerInfoService.getOwnerInfo(ownerLoanRecord.getOwnerUserNo());
String ownerAccountBank = ownerInfoFeignVO.getOwnerAccountBank();
ownerLoanRecord.setLendingParty(ownerInfoFeignVO.getName());
ownerLoanRecord.setLendingPartyBank(ownerAccountBank);
ownerLoanRecord.setLendingPartyAccount(ownerInfoFeignVO.getOwnerBankAccount());
ownerLoanRecord.setLendingPartyOpenBank(ownerInfoFeignVO.getOwnerOpenBank());
ownerLoanRecord.setLendingPartyBankCode(ownerInfoFeignVO.getOwnerOpenBankNumber());
//设置借款记录中借出方的银行账户信息
ownerLoanRecord.setBorrower(borrower.getName());
ownerLoanRecord.setBorrowerAccount(borrower.getBankCardNo());
ownerLoanRecord.setBorrowerBank(borrower.getBankName());
ownerLoanRecord.setBorrowerOpenBank(borrower.getOpenBankName());
ownerLoanRecord.setBorrowerBankCode(borrower.getOpenBankId());
if (OwnerLoanRecordEnum.LoanType.FUND.getCode().equals(param.getLoanType())) { if (OwnerLoanRecordEnum.LoanType.FUND.getCode().equals(param.getLoanType())) {
//ownerLoanRecord.setStatus() ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAY_WAIT.getCode());
fundPayProcess(param, ownerLoanRecord, borrower); //fundPayProcess(param, ownerLoanRecord, borrower);
} else { } else {
// 虚拟币 直接增加 更改状态审批通过 // 虚拟币 直接增加 更改状态审批通过
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.APPROVE_PASS.getCode()); ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.APPROVE_PASS.getCode());
...@@ -202,9 +240,10 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -202,9 +240,10 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private void fundPayProcess(CarrierOwnerLoanRecordApproveParam param, OwnerLoanRecord ownerLoanRecord, Borrower borrower) { private void fundPayProcess(CarrierOwnerLoanRecordApproveParam param, OwnerLoanRecord ownerLoanRecord, Borrower borrower) {
//资金 //资金
BankTrade bankTrade = new BankTrade(); BankTrade bankTrade = new BankTrade();
bankTrade.setRemark("借款单");
if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) { if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) {
// 订单支付 // 订单支付
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo(), NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo(), "借款单",
ownerLoanRecord.getLoanBalance().intValue(), borrower.getOpenBankId(), borrower.getBankCardNo(), borrower.getName()); ownerLoanRecord.getLoanBalance().intValue(), borrower.getOpenBankId(), borrower.getBankCardNo(), borrower.getName());
ownerLoanRecord.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo()); ownerLoanRecord.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
ownerLoanRecord.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo()); ownerLoanRecord.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
...@@ -223,7 +262,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -223,7 +262,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
ownerLoanRecord.setRemittanceIdentificationCode(orderPayResultVO.getSignNo()); ownerLoanRecord.setRemittanceIdentificationCode(orderPayResultVO.getSignNo());
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode()); ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
ownerLoanRecord.setLoanResidueBalance(ownerLoanRecord.getLoanBalance()); ownerLoanRecord.setLoanResidueBalance(ownerLoanRecord.getLoanBalance());
ownerLoanRecord.setRemittanceIdentificationCode(orderPayResultVO.getSignNo());
bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_TRANSFER_PAY.getCode()); bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_TRANSFER_PAY.getCode());
} }
// 更新借款支付信息 // 更新借款支付信息
...@@ -284,14 +323,12 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -284,14 +323,12 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
ownerRepayment.setRepaymentBalance(ownerLoanRecord.getLoanBalance()); ownerRepayment.setRepaymentBalance(ownerLoanRecord.getLoanBalance());
ownerRepayment.setRepaymentNo(idGenerateSnowFlake.nextId(2L)); ownerRepayment.setRepaymentNo(idGenerateSnowFlake.nextId(2L));
OwnerInfoFeignVO ownerInfoFeignVO = ownerFeign.getOwnerInfo(ownerLoanRecord.getOwnerUserNo()).getData();
log.info("生成还款记录,查询到用户信息:{}", JSONUtil.parse(ownerInfoFeignVO));
ownerRepayment.setPayment(ownerInfoFeignVO.getCompanyName());
ownerRepayment.setPaymentAccount(ownerInfoFeignVO.getOwnerBankAccount());
ownerRepayment.setPayee(ownerRepayment.getPayee()); ownerRepayment.setPayee(ownerLoanRecord.getPayee());
ownerRepayment.setPayeeAccount(ownerLoanRecord.getPayeeAccount()); ownerRepayment.setPayeeAccount(ownerLoanRecord.getPayeeAccount());
ownerRepayment.setPayChannel(ownerLoanRecord.getPayChannel()); ownerRepayment.setPayChannel(ownerLoanRecord.getPayChannel());
ownerRepayment.setPayeeBank(ownerLoanRecord.getPayeeBank());
ownerRepayment.setPayeeBankCode(ownerLoanRecord.getPayeeBankCode());
ownerRepayment.setBeOverdue(OwnerRePaymentEnum.BeOverdue.NO.getCode()); ownerRepayment.setBeOverdue(OwnerRePaymentEnum.BeOverdue.NO.getCode());
ownerRepayment.setCreateBy("系统"); ownerRepayment.setCreateBy("系统");
ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_WAIT.getCode()); ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_WAIT.getCode());
...@@ -378,7 +415,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -378,7 +415,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
.payeeAccount(payeeMap.getAccount()).payeeBank(payeeMap.getBank()).payeeBankNo(payeeMap.getBankNo()) .payeeAccount(payeeMap.getAccount()).payeeBank(payeeMap.getBank()).payeeBankNo(payeeMap.getBankNo())
.loanBalance(ownerLoanRecord.getLoanBalance()) .loanBalance(ownerLoanRecord.getLoanBalance())
.remittanceIdentificationCode(ownerLoanRecord.getRemittanceIdentificationCode()) .remittanceIdentificationCode(ownerLoanRecord.getRemittanceIdentificationCode())
.status(ownerLoanRecord.getStatus()).finalPaymentTime(ownerLoanRecord.getCloseOrderTime()).build(); .status(ownerLoanRecord.getStatus()).finalPaymentTime(ownerLoanRecord.getCloseOrderTime())
.loanNo(ownerLoanRecord.getLoanNo()).build();
} }
@Override @Override
...@@ -470,7 +508,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -470,7 +508,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) { if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) {
//资金 TODO 调宁波银企直连的产品,从诚联信账户中给鑫祥和执行转账 //资金 TODO 调宁波银企直连的产品,从诚联信账户中给鑫祥和执行转账
// 订单支付 // 订单支付
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo(), NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo(), "借款单",
ownerLoanRecord.getLoanBalance().intValue(), borrower.getOpenBankId(), borrower.getBankCardNo(), borrower.getName()); ownerLoanRecord.getLoanBalance().intValue(), borrower.getOpenBankId(), borrower.getBankCardNo(), borrower.getName());
ownerLoanRecord.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo()); ownerLoanRecord.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
ownerLoanRecord.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo()); ownerLoanRecord.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
...@@ -544,7 +582,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -544,7 +582,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(ownerLoanRecord.getStatus(), OwnerLoanRecordEnum.Status.PAYING.getCode())) { if (Objects.equals(ownerLoanRecord.getStatus(), OwnerLoanRecordEnum.Status.PAYING.getCode())) {
log.info("借款单非支付中状态, loanNo:{}", bankTrade.getRelationNo()); log.info("借款单非支付中状态, loanNo:{}", ownerLoanRecord.getLoanNo());
return; return;
} }
...@@ -568,10 +606,39 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -568,10 +606,39 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
//生成还款记录 //生成还款记录
initOwnerRepayment(ownerLoanRecord); initOwnerRepayment(ownerLoanRecord);
ownerLoanRecordDao.updateStatusById(ownerLoanRecord); ownerLoanRecordDao.updateStatusById(ownerLoanRecord);
//执行货主未处理借款标志的计费(运单确认生成后因为借款不够阻塞流程的相关计费进行处理)
orderChildLoanProcess(ownerLoanRecord.getOwnerUserNo());
break; break;
} }
} }
}
/**
* 执行货主未处理借款标志的计费
*
* @param ownerUserNo
*/
@Override
public void orderChildLoanProcess(Long ownerUserNo) {
List<OrderChildLoanRetryRecord> orderChildLoanRetryRecordList = orderChildLoanRetryRecordDao.selectListByIdAsc();
for (OrderChildLoanRetryRecord retryRecord : orderChildLoanRetryRecordList) {
//生成借款标识
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getEntityByKey(retryRecord.getSettlementDriverId()).get();
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getEntityByKey(retryRecord.getSettlementOwnerId()).get();
OrderChild orderChild = orderChildDao.getByChildNo(settlementDriverDetail.getChildNo()).get();
OwnerLoanMqDTO dto = new OwnerLoanMqDTO();
dto.setSettlementOwnerDetail(settlementOwnerDetail);
dto.setSettlementDriverDetail(settlementDriverDetail);
dto.setOrderChild(orderChild);
//货主借款监听器处理
Message message = MessageBuilder.withBody(JSONUtil.parse(dto).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY, message
);
orderChildLoanRetryRecordDao.deleteByKey(retryRecord.getId());
}
} }
@Override @Override
...@@ -682,7 +749,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -682,7 +749,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
} }
@Override @Override
public String sendLoanSms(String mobile,Long loanNo) { public String sendLoanSms(String mobile, Long loanNo) {
AliSmsMessageReq req = new AliSmsMessageReq(); AliSmsMessageReq req = new AliSmsMessageReq();
req.setTemplateCode(messageConfig.getRepaymentTemplateCode()); req.setTemplateCode(messageConfig.getRepaymentTemplateCode());
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
...@@ -698,4 +765,35 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -698,4 +765,35 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
return UUID.randomUUID().toString(); return UUID.randomUUID().toString();
} }
@Override
public String sendOrderPaySms(String mobile, String payee, String payeeAccount) {
AliSmsMessageReq req = new AliSmsMessageReq();
req.setTemplateCode(messageConfig.getOrderPayTemplateCode());
JSONObject jsonObject = new JSONObject();
jsonObject.set("companyName", payee);
jsonObject.set("bankAccount", payeeAccount);
jsonObject.set("bankName", "");
req.setChannelId(messageConfig.getChannelId());
req.setAppId(messageConfig.getAppId().toString());
req.setMobile(mobile);
req.setContent(jsonObject.toString());
req.setExpire(300L);
clxMessageOpenapiFeign.sendAliSms(req);
return UUID.randomUUID().toString();
}
@Override
public void ownerLoanRecordSubmitNbBank(CarrierOwnerLoanRecordApproveParam param) {
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, param.getLoanNo()).get();
if (!OwnerLoanRecordEnum.Status.PAY_WAIT.getCode().equals(ownerLoanRecord.getStatus())) {
throw new ServiceSystemException(PerformanceResultEnum.OWNER_LOAN_RECORD_PAY_WAIT_ERROR);
}
borrowerConfigDao.selectByBorrowerIdAndType(ownerLoanRecord.getBorrowerId(), param.getLoanType())
.orElseThrow(PerformanceResultEnum.BORROWER_CONFIG_TYPE_NOT_SUPPORT_ERROR);
Borrower borrower = borrowerDao.getEntityByKey(ownerLoanRecord.getBorrowerId())
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
fundPayProcess(param, ownerLoanRecord, borrower);
}
} }
...@@ -26,6 +26,7 @@ import com.clx.performance.vo.pc.loan.owner.ExportOwnerRepaymentVO; ...@@ -26,6 +26,7 @@ import com.clx.performance.vo.pc.loan.owner.ExportOwnerRepaymentVO;
import com.clx.performance.vo.pc.loan.owner.OwnerCashierInfoVO; import com.clx.performance.vo.pc.loan.owner.OwnerCashierInfoVO;
import com.clx.performance.vo.pc.loan.owner.OwnerOrderPaymentDetailVO; import com.clx.performance.vo.pc.loan.owner.OwnerOrderPaymentDetailVO;
import com.clx.performance.vo.pc.loan.owner.OwnerTransferPaymentDetailVO; import com.clx.performance.vo.pc.loan.owner.OwnerTransferPaymentDetailVO;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.clx.user.vo.pc.owner.OwnerBindCardVO; import com.clx.user.vo.pc.owner.OwnerBindCardVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
...@@ -106,14 +107,14 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -106,14 +107,14 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
PerformanceResultEnum.DATA_NOT_FIND); PerformanceResultEnum.DATA_NOT_FIND);
OwnerCashierInfoVO vo = ownerRepaymentStruct.convertCashierInfo(ownerRepayment); OwnerCashierInfoVO vo = ownerRepaymentStruct.convertCashierInfo(ownerRepayment);
OwnerBindCardVO bindCard = ownerInfoService.getOwnerBindCard(ownerRepayment.getOwnerUserNo()); OwnerInfoFeignVO ownerInfoFeignVO = ownerInfoService.getOwnerInfo(ownerRepayment.getOwnerUserNo());
String ownerAccountBank = bindCard.getOwnerAccountBank(); String ownerAccountBank = ownerInfoFeignVO.getOwnerAccountBank();
vo.setOrderPayWay(false); vo.setOrderPayWay(false);
if(nbBankConfig.getOrderSupportBank().contains(ownerAccountBank)){ if(nbBankConfig.getOrderSupportBank().contains(ownerAccountBank)){
vo.setOrderPayWay(true); vo.setOrderPayWay(true);
} }
vo.setBankName(ownerAccountBank); vo.setBankName(ownerAccountBank);
vo.setPayAccount(bindCard.getOwnerBankAccount()); vo.setPayAccount(ownerInfoFeignVO.getOwnerBankAccount());
return vo; return vo;
} }
...@@ -122,6 +123,10 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -122,6 +123,10 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
OwnerRepayment ownerRepayment = ownerRepaymentDao.getEntityByKey(id).orElseThrow( OwnerRepayment ownerRepayment = ownerRepaymentDao.getEntityByKey(id).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND); PerformanceResultEnum.DATA_NOT_FIND);
OwnerOrderPaymentDetailVO vo = ownerRepaymentStruct.convertOrderPaymentDetail(ownerRepayment); OwnerOrderPaymentDetailVO vo = ownerRepaymentStruct.convertOrderPaymentDetail(ownerRepayment);
ClxPayeeConfig.PayeeConfig payeeMap = ClxPayeeConfig.getPayee(ClxPayeeConfig.XXH_ID);
vo.setPayee(payeeMap.getName());
vo.setPayeeAccount(payeeMap.getAccount());
//计算倒计时时间,下单时间 + 30天 为截止时间 //计算倒计时时间,下单时间 + 30天 为截止时间
LocalDateTime endTime = ownerRepayment.getCreateTime().plusDays(30); LocalDateTime endTime = ownerRepayment.getCreateTime().plusDays(30);
vo.setFinalPaymentTime(DateUtils.formatDateTime(endTime).get()); vo.setFinalPaymentTime(DateUtils.formatDateTime(endTime).get());
...@@ -137,7 +142,8 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -137,7 +142,8 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
.payeeAccount(payeeMap.getAccount()).payeeBank(payeeMap.getBank()).payeeBankNo(payeeMap.getBankNo()) .payeeAccount(payeeMap.getAccount()).payeeBank(payeeMap.getBank()).payeeBankNo(payeeMap.getBankNo())
.repaymentBalance(ownerRepayment.getRepaymentBalance()) .repaymentBalance(ownerRepayment.getRepaymentBalance())
.remittanceIdentificationCode(ownerRepayment.getRemittanceIdentificationCode()) .remittanceIdentificationCode(ownerRepayment.getRemittanceIdentificationCode())
.status(ownerRepayment.getStatus()).finalPaymentTime(ownerRepayment.getCloseOrderTime()).build(); .status(ownerRepayment.getStatus()).finalPaymentTime(ownerRepayment.getCloseOrderTime())
.repaymentNo(ownerRepayment.getRepaymentNo()).build();
} }
@Override @Override
...@@ -165,7 +171,6 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -165,7 +171,6 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
AliSmsMessageReq req = new AliSmsMessageReq(); AliSmsMessageReq req = new AliSmsMessageReq();
req.setTemplateCode(messageConfig.getRepaymentTemplateCode()); req.setTemplateCode(messageConfig.getRepaymentTemplateCode());
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
//随机生成4位数字
jsonObject.set("repaymentNo", repaymentNo); jsonObject.set("repaymentNo", repaymentNo);
req.setChannelId(messageConfig.getChannelId()); req.setChannelId(messageConfig.getChannelId());
req.setAppId(messageConfig.getAppId().toString()); req.setAppId(messageConfig.getAppId().toString());
...@@ -176,4 +181,23 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -176,4 +181,23 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
return UUID.randomUUID().toString(); return UUID.randomUUID().toString();
} }
@Override
public String sendOrderPaySms(String mobile,String payee, String payeeAccount) {
AliSmsMessageReq req = new AliSmsMessageReq();
req.setTemplateCode(messageConfig.getOrderPayTemplateCode());
JSONObject jsonObject = new JSONObject();
jsonObject.set("companyName", payee);
jsonObject.set("bankAccount", payeeAccount);
jsonObject.set("bankName", "");
req.setChannelId(messageConfig.getChannelId());
req.setAppId(messageConfig.getAppId().toString());
req.setMobile(mobile);
req.setContent(jsonObject.toString());
req.setExpire(300L);
clxMessageOpenapiFeign.sendAliSms(req);
return UUID.randomUUID().toString();
}
} }
...@@ -83,7 +83,7 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -83,7 +83,7 @@ public class NbBankServiceImpl implements NbBankService {
* @param payAcctNm 付款户名 * @param payAcctNm 付款户名
*/ */
@Override @Override
public NbBankOrderPayResultVO orderDirectPay(Long loanNo, Integer amount, public NbBankOrderPayResultVO orderDirectPay(Long loanNo, String remark, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm) { String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
String merSeqNo = idGenerateSnowFlake.nextIdToString(1L); String merSeqNo = idGenerateSnowFlake.nextIdToString(1L);
...@@ -94,7 +94,7 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -94,7 +94,7 @@ public class NbBankServiceImpl implements NbBankService {
String transSeqNo = data.getString("transSeqNo"); String transSeqNo = data.getString("transSeqNo");
if (StringUtils.isBlank(transSeqNo)) { if (StringUtils.isBlank(transSeqNo)) {
log.info("宁波银行订单支付失败,借款单号{},返回结果:{}", loanNo, data); log.info("宁波银行订单支付失败,单号{},返回结果:{}", loanNo, data);
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_ORDER_PAY_ERROR); throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_ORDER_PAY_ERROR);
} }
NbBankOrderPayResultVO result = new NbBankOrderPayResultVO(); NbBankOrderPayResultVO result = new NbBankOrderPayResultVO();
...@@ -242,10 +242,13 @@ public class NbBankServiceImpl implements NbBankService { ...@@ -242,10 +242,13 @@ public class NbBankServiceImpl implements NbBankService {
param.setPayStatus(transStatus); param.setPayStatus(transStatus);
Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build(); Message message = MessageBuilder.withBody(JSONUtil.parse(param).toString().getBytes()).build();
//执行解绑自有车辆处理逻辑,将绑定记录正常改为取消 if ("借款单".equals(bankTrade.getRemark())) {
rabbitTemplate.send( //执行借款支付成功通知
RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_PAY_ROUTE_KEY, message rabbitTemplate.send(
); RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_PAY_ROUTE_KEY, message
);
}
} }
......
package com.clx.performance.service.loan; package com.clx.performance.service.loan;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.loan.carrier.OwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam; import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountParam;
import com.clx.performance.vo.pc.loan.carrier.CarrierOwnerLoanAccountVO; import com.clx.performance.vo.pc.loan.carrier.CarrierOwnerLoanAccountVO;
import com.clx.performance.vo.pc.loan.owner.OwnerAccountVO; import com.clx.performance.vo.pc.loan.owner.OwnerAccountVO;
...@@ -18,5 +19,5 @@ public interface OwnerLoanAccountService { ...@@ -18,5 +19,5 @@ public interface OwnerLoanAccountService {
OwnerAccountVO getOwnerLoanAccount(); OwnerAccountVO getOwnerLoanAccount();
void orderChildLoanProcess(Long ownerUserNo); void ownerRepayment(OwnerRepaymentParam param);
} }
...@@ -51,4 +51,10 @@ public interface OwnerLoanRecordService { ...@@ -51,4 +51,10 @@ public interface OwnerLoanRecordService {
void ownerLoanRecordCancelPay(String loanNo); void ownerLoanRecordCancelPay(String loanNo);
String sendLoanSms(String mobile,Long loanNo); String sendLoanSms(String mobile,Long loanNo);
String sendOrderPaySms(String mobile,String payee, String payeeAccount);
void ownerLoanRecordSubmitNbBank(CarrierOwnerLoanRecordApproveParam param);
void orderChildLoanProcess(Long ownerUserNo);
} }
...@@ -31,4 +31,5 @@ public interface OwnerRepaymentService { ...@@ -31,4 +31,5 @@ public interface OwnerRepaymentService {
String savePaymentApplicationForm(ExportPaymentApplicationFormParam param); String savePaymentApplicationForm(ExportPaymentApplicationFormParam param);
String sendPaymentSms(String mobile,Long repaymentNo); String sendPaymentSms(String mobile,Long repaymentNo);
String sendOrderPaySms(String mobile,String payee, String payeeAccount);
} }
...@@ -10,7 +10,7 @@ public interface NbBankService { ...@@ -10,7 +10,7 @@ public interface NbBankService {
NbBankOrderPayResultVO orderTransferPay(Integer amount); NbBankOrderPayResultVO orderTransferPay(Integer amount);
NbBankOrderPayResultVO orderDirectPay(Long loanNo,Integer amount, NbBankOrderPayResultVO orderDirectPay(Long loanNo, String remark, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm); String payAcctOpenBankId, String payAcctNo, String payAcctNm);
NbBankOrderResultVO getResult(String merSeqNo); NbBankOrderResultVO getResult(String merSeqNo);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论