提交 79a85535 authored 作者: huyufan's avatar huyufan

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

...@@ -79,6 +79,7 @@ public enum OwnerLoanRecordEnum { ...@@ -79,6 +79,7 @@ public enum OwnerLoanRecordEnum {
public enum PayChannel { public enum PayChannel {
ORDER_DIRECT_PAY(1, "订单支付"), ORDER_DIRECT_PAY(1, "订单支付"),
ORDER_TRANSFER_PAY(2, "转账支付"), ORDER_TRANSFER_PAY(2, "转账支付"),
ASSET(3,"财资")
; ;
private final Integer code; private final Integer code;
......
package com.clx.performance.vo.pc.loan.carrier; package com.clx.performance.vo.pc.loan.carrier;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerPaymentEnum; import com.clx.performance.enums.loan.OwnerPaymentEnum;
import com.msl.common.convertor.type.MoneyOutConvert; import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -76,14 +77,14 @@ public class OwnerPaymentVO{ ...@@ -76,14 +77,14 @@ public class OwnerPaymentVO{
} }
@ApiModelProperty("默认财资 30 ") @ApiModelProperty("默认财资")
private Integer payChannel; private Integer payChannel;
@ApiModelProperty("财资") @ApiModelProperty("支付渠道名称")
private String payChannelMsg; private String payChannelMsg;
public String getPayChannelMsg(){ public String getPayChannelMsg(){
return "财资"; return OwnerLoanRecordEnum.PayChannel.ASSET.getMsg();
} }
......
...@@ -42,7 +42,6 @@ public class OwnerLoanAccountController { ...@@ -42,7 +42,6 @@ public class OwnerLoanAccountController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "货主借款申请",notes = "<br>By:胡宇帆") @ApiOperation(value = "货主借款申请",notes = "<br>By:胡宇帆")
@PostMapping("/ownerLoanRecordSubmit") @PostMapping("/ownerLoanRecordSubmit")
@UnitCovert(result = false) @UnitCovert(result = false)
...@@ -51,8 +50,6 @@ public class OwnerLoanAccountController { ...@@ -51,8 +50,6 @@ public class OwnerLoanAccountController {
return Result.ok(); return Result.ok();
} }
@ApiOperation(value = "货主借款账户信息",notes = "<br>By:刘海泉") @ApiOperation(value = "货主借款账户信息",notes = "<br>By:刘海泉")
@GetMapping("/getOwnerLoanAccount") @GetMapping("/getOwnerLoanAccount")
@UnitCovert(param = false) @UnitCovert(param = false)
...@@ -62,7 +59,7 @@ public class OwnerLoanAccountController { ...@@ -62,7 +59,7 @@ public class OwnerLoanAccountController {
} }
@ApiOperation(value = "货主还款",notes = "<br>By:胡宇帆") @ApiOperation(value = "货主还款",notes = "<br>By:胡宇帆")
@GetMapping("/ownerRepayment") @PostMapping("/ownerRepayment")
public Result<OwnerAccountVO> ownerRepayment(@RequestBody OwnerRepaymentParam param) { public Result<OwnerAccountVO> ownerRepayment(@RequestBody OwnerRepaymentParam param) {
ownerLoanAccountService.ownerRepayment(param); ownerLoanAccountService.ownerRepayment(param);
return Result.ok(); return Result.ok();
...@@ -70,8 +67,8 @@ public class OwnerLoanAccountController { ...@@ -70,8 +67,8 @@ public class OwnerLoanAccountController {
@ApiOperation(value = "取消支付(还款)",notes = "<br>By:胡宇帆") @ApiOperation(value = "取消支付(还款)",notes = "<br>By:胡宇帆")
@GetMapping("/ownerRepaymentCancelPay") @GetMapping("/ownerRepaymentCancelPay")
public Result<Object> ownerLoanRecordCancelPay(@RequestParam(value = "repaymentNo") @NotBlank String repaymentNo) { public Result<Object> ownerRepaymentCancelPay(@RequestParam(value = "repaymentNo") @NotBlank String repaymentNo) {
ownerRepaymentService.ownerLoanRecordCancelPay(repaymentNo); ownerRepaymentService.ownerRepaymentCancelPay(repaymentNo);
return Result.ok(); return Result.ok();
} }
......
...@@ -4,8 +4,7 @@ import cn.hutool.json.JSONUtil; ...@@ -4,8 +4,7 @@ import cn.hutool.json.JSONUtil;
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.param.OwnerBankNotifyMqParam; import com.clx.performance.param.OwnerBankNotifyMqParam;
import com.clx.performance.service.loan.OwnerLoanAccountService; import com.clx.performance.service.loan.OwnerRepaymentService;
import com.clx.performance.service.loan.OwnerLoanRecordService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.amqp.rabbit.annotation.RabbitListener;
...@@ -21,23 +20,22 @@ import java.util.Objects; ...@@ -21,23 +20,22 @@ import java.util.Objects;
@AllArgsConstructor @AllArgsConstructor
public class OwnerRepaymentPayNotifyListener { public class OwnerRepaymentPayNotifyListener {
private final OwnerLoanRecordService ownerLoanRecordService; private final OwnerRepaymentService ownerRepaymentService;
private final OwnerLoanAccountService ownerLoanAccountService;
@RabbitListener(queues = RabbitKeyConstants.OWNER_LOAN_PAY_QUEUE) @RabbitListener(queues = RabbitKeyConstants.OWNER_REPAYMENT_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
log.info("处理货主还款支付监听器执行,数据为{}", message); log.info("处理货主还款支付监听器执行,数据为{}", message);
OwnerBankNotifyMqParam param = JSONUtil.toBean(message, OwnerBankNotifyMqParam.class); OwnerBankNotifyMqParam param = JSONUtil.toBean(message, OwnerBankNotifyMqParam.class);
if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.SUCCESS.getCode())) { if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.SUCCESS.getCode())) {
// 支付成功 // 支付成功
ownerLoanRecordService.paySuccess(param.getMerSeqNo()); ownerRepaymentService.paySuccess(param.getMerSeqNo());
} }
else if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.FAIL.getCode())) { else if (Objects.equals(param.getPayStatus(), NbBankStatusEnum.Status.FAIL.getCode())) {
// 支付失败 // 支付失败
ownerLoanRecordService.payFail(param.getMerSeqNo()); ownerRepaymentService.payFail(param.getMerSeqNo());
} }
} }
} }
...@@ -77,7 +77,7 @@ public class OwnerPayment implements HasKey<Integer> { ...@@ -77,7 +77,7 @@ public class OwnerPayment implements HasKey<Integer> {
private Integer status; private Integer status;
@TableField("pay_channel") @TableField("pay_channel")
@ApiModelProperty("默认财资 30 ") @ApiModelProperty("默认财资")
private Integer payChannel; private Integer payChannel;
@TableField("operate_time") @TableField("operate_time")
......
...@@ -513,7 +513,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -513,7 +513,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
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());
ownerLoanRecord.setRemittanceIdentificationCode(null);
ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode()); ownerLoanRecord.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
ownerLoanRecord.setLoanResidueBalance(ownerLoanRecord.getLoanBalance()); ownerLoanRecord.setLoanResidueBalance(ownerLoanRecord.getLoanBalance());
......
package com.clx.performance.service.impl.loan; package com.clx.performance.service.impl.loan;
import cn.hutool.core.util.IdUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
...@@ -8,19 +9,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -8,19 +9,24 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.message.feign.ClxMessageOpenapiFeign; import com.clx.message.feign.ClxMessageOpenapiFeign;
import com.clx.message.req.message.AliSmsMessageReq; import com.clx.message.req.message.AliSmsMessageReq;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.config.ClxMessageConfig; 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.dao.loan.BankTradeDao; import com.clx.performance.dao.loan.BankTradeDao;
import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.dao.loan.OwnerPaymentDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao; import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum; import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerPaymentEnum;
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.extranal.user.impl.OwnerInfoServiceImpl;
import com.clx.performance.model.loan.BankTrade; import com.clx.performance.model.loan.BankTrade;
import com.clx.performance.model.loan.OwnerLoanRecord; import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.model.loan.OwnerPayment;
import com.clx.performance.model.loan.OwnerRepayment; import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam; import com.clx.performance.param.pc.loan.carrier.PageCarrierOwnerRepaymentParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner; import com.clx.performance.param.pc.loan.carrier.PageOwnerRepaymentOfOwner;
...@@ -74,6 +80,9 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -74,6 +80,9 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
private final ClxMessageConfig messageConfig; private final ClxMessageConfig messageConfig;
private final NbBankService bankService; private final NbBankService bankService;
private final BankTradeDao bankTradeDao; private final BankTradeDao bankTradeDao;
private final IdGenerateSnowFlake idGenerateSnowFlake;
private final OwnerPaymentDao ownerPaymentDao;
private final OwnerLoanRecordDao ownerLoanRecordDao;
@Override @Override
public IPage<OwnerRepaymentVO> pageOwnerRepayment(PageCarrierOwnerRepaymentParam param) { public IPage<OwnerRepaymentVO> pageOwnerRepayment(PageCarrierOwnerRepaymentParam param) {
...@@ -214,12 +223,11 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -214,12 +223,11 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ownerLoanRecordCancelPay(String repaymentNo) { public void ownerRepaymentCancelPay(String repaymentNo) {
OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, repaymentNo) OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, repaymentNo)
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); .orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAY_SUCCESS.getCode())) if (!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAYING.getCode())) {
{ log.info("还款记录状态异常,不是付款中,不能取消");
log.info("还款记录状态异常,不能取消");
throw new ServiceSystemException(PerformanceResultEnum.OWNER_LOAN_RECORD_CANCEL_STATUS_ERROR); throw new ServiceSystemException(PerformanceResultEnum.OWNER_LOAN_RECORD_CANCEL_STATUS_ERROR);
} }
BankTrade bankTrade = bankTradeDao.selectByRelationNo(repaymentNo).get(); BankTrade bankTrade = bankTradeDao.selectByRelationNo(repaymentNo).get();
...@@ -253,4 +261,53 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService { ...@@ -253,4 +261,53 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
ownerRepaymentDao.updateStatusById(ownerRepayment); ownerRepaymentDao.updateStatusById(ownerRepayment);
} }
@Transactional(rollbackFor = Exception.class)
@Override
public void paySuccess(String merSeqNo) {
// 查询交易流水
BankTrade bankTrade = bankTradeDao.getOneByField(BankTrade::getMerchantRunningWaterNo, merSeqNo)
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 查询还款信息
OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, bankTrade.getRelationNo()).get();
ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_SUCCESS.getCode());
// 更新借款信息
ownerRepaymentDao.updateStatusById(ownerRepayment);
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo,
ownerRepayment.getLoanNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
//生成付款记录
OwnerPayment ownerPayment = new OwnerPayment();
ownerPayment.setOwnerUserNo(ownerRepayment.getOwnerUserNo());
ownerPayment.setOwnerUserName(ownerRepayment.getOwnerUserName());
ownerPayment.setMobile(ownerRepayment.getMobile());
ownerPayment.setRunningWaterOpenNo(bankTrade.getRunningWaterOpenNo());
ownerPayment.setPaymentNo(idGenerateSnowFlake.nextId(1L));
ownerPayment.setRepaymentNo(ownerRepayment.getRepaymentNo());
ownerPayment.setPaymentBalance(ownerRepayment.getRepaymentBalance());
//付款单的付款方取还款单的收款方
ownerPayment.setPayment(ownerRepayment.getPayee());
ownerPayment.setPaymentAccount(ownerRepayment.getPayeeAccount());
//付款单的收款方取借款单的借出方
ownerPayment.setPayee(ownerLoanRecord.getBorrower());
ownerPayment.setPayeeAccount(ownerLoanRecord.getBorrowerAccount());
ownerPayment.setStatus(OwnerPaymentEnum.Status.PAY_WAIT.getCode());
ownerPayment.setPayChannel(OwnerLoanRecordEnum.PayChannel.ASSET.getCode());
ownerPayment.setCreateBy("system");
ownerPaymentDao.saveEntity(ownerPayment);
}
@Override
public void payFail(String merSeqNo) {
// 查询交易流水
BankTrade bankTrade = bankTradeDao.getOneByField(BankTrade::getMerchantRunningWaterNo, merSeqNo)
.orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 查询还款信息
OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, bankTrade.getRelationNo()).get();
ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_FAIL.getCode());
// 更新借款信息
ownerRepaymentDao.updateStatusById(ownerRepayment);
}
} }
...@@ -33,7 +33,11 @@ public interface OwnerRepaymentService { ...@@ -33,7 +33,11 @@ public interface OwnerRepaymentService {
String sendPaymentSms(String mobile,Long repaymentNo); String sendPaymentSms(String mobile,Long repaymentNo);
String sendOrderPaySms(String mobile,String payee, String payeeAccount); String sendOrderPaySms(String mobile,String payee, String payeeAccount);
void ownerLoanRecordCancelPay(String repaymentNo); void ownerRepaymentCancelPay(String repaymentNo);
void ownerRepaymentRetryPay(String repaymentNo); void ownerRepaymentRetryPay(String repaymentNo);
void paySuccess(String merSeqNo);
void payFail(String merSeqNo);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论