提交 0b7548a0 authored 作者: huyufan's avatar huyufan

借款申请拆分接口,增加付款状态

上级 f2a10985
...@@ -15,6 +15,7 @@ public enum OwnerLoanRecordEnum { ...@@ -15,6 +15,7 @@ public enum OwnerLoanRecordEnum {
@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;
}
...@@ -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) {
......
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();
}
} }
...@@ -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) {
...@@ -125,5 +139,42 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService { ...@@ -125,5 +139,42 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
} }
} }
@Override
public void ownerRepayment(OwnerRepaymentParam param) {
OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, param.getRepaymentNo()).get();
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, ownerRepayment.getLoanNo()).get();
BankTrade bankTrade = new BankTrade();
if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) {
// 订单支付
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(ownerRepayment.getRepaymentNo(),
ownerRepayment.getRepaymentBalance().intValue(), null, null, "");
ownerRepayment.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
ownerRepayment.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
ownerRepayment.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_DIRECT_PAY.getCode());
} else {
// 转账支付
NbBankOrderPayResultVO orderPayResultVO = bankService.orderTransferPay(ownerLoanRecord.getLoanBalance().intValue());
bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_TRANSFER_PAY.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());
// 保存银行交易记录
bankTradeDao.saveEntity(bankTrade);
}
} }
...@@ -178,8 +178,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -178,8 +178,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
ownerLoanRecord.setBorrowerBankCode(borrower.getOpenBankId()); 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());
...@@ -218,6 +218,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -218,6 +218,7 @@ 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(),
...@@ -300,14 +301,12 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -300,14 +301,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());
...@@ -732,4 +731,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService { ...@@ -732,4 +731,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
return UUID.randomUUID().toString(); return UUID.randomUUID().toString();
} }
@Override
public void ownerLoanRecordSubmitNbBank(CarrierOwnerLoanRecordApproveParam param) {
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, param.getLoanNo()).get();
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);
}
} }
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;
...@@ -19,4 +20,6 @@ public interface OwnerLoanAccountService { ...@@ -19,4 +20,6 @@ public interface OwnerLoanAccountService {
OwnerAccountVO getOwnerLoanAccount(); OwnerAccountVO getOwnerLoanAccount();
void orderChildLoanProcess(Long ownerUserNo); void orderChildLoanProcess(Long ownerUserNo);
void ownerRepayment(OwnerRepaymentParam param);
} }
...@@ -53,4 +53,6 @@ public interface OwnerLoanRecordService { ...@@ -53,4 +53,6 @@ public interface OwnerLoanRecordService {
String sendLoanSms(String mobile,Long loanNo); String sendLoanSms(String mobile,Long loanNo);
String sendOrderPaySms(String mobile,String payee, String payeeAccount); String sendOrderPaySms(String mobile,String payee, String payeeAccount);
void ownerLoanRecordSubmitNbBank(CarrierOwnerLoanRecordApproveParam param);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论