提交 bee7933f authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/test' into test

Former-commit-id: e62d633e
......@@ -128,6 +128,12 @@ public enum PerformanceResultEnum implements ResultEnum {
NB_BANK_NOTIFY_ERROR(1801, "宁波银行回调失败"),
NB_BANK_PAY_TYPE_ERROR(1802, "支付方式不支持"),
NB_BANK_ORDER_PAY_ERROR(1803, "宁波银行订单支付失败"),
NB_BANK_NO_MONEY_ERROR(1804, "账户余额不足"),
NB_BANK_PAY_DISABLE_ERROR(1805, "商户未开通相关支付方式"),
NB_BANK_ACCOUNT_NOT_FOUND_ERROR(1806, "账户信息不存在"),
NB_BANK_MERCHANT_STATUS_ERROR(1807, "商户信息不存在或商户状态异常"),
NB_BANK_AMOUNT_OUT_OF_RANGE_ERROR(1807, "明细金额超限"),
NB_BANK_NAME_BANK_NO_MISSMATCH_ERROR(1808, "账户名称与银行记录不符"),
PLATFORM_ACCOUNT_CONFIG_ONLY(1913, "当前配置已存在"),
PLATFORM_ACCOUNT_CONFIG_WITHDRAWAL_IS_NULL(1914, "提现平台账户未配置"),
......@@ -146,6 +152,7 @@ public enum PerformanceResultEnum implements ResultEnum {
OWNER_LOAN_RECORD_PAY_WAIT_ERROR(1853,"当前借款单状态不是待付款"),
OWNER_LOAN_PAYMENT_STATUS_ERROR(1854, "执行借款审批失败,请稍后重试"),
OWNER_LOAN_PAY_STATUS_ERROR(1855, "付款失败"),
DATA_STATUS_ERROR(1856, "当前状态有误")
;
private final int code;
......
......@@ -37,6 +37,9 @@ public class OwnerPaymentVO{
@ApiModelProperty("交易流水号(第三方)")
private String runningWaterOpenNo;
@ApiModelProperty("商户流水")
private String merchantRunningWaterNo;
@ApiModelProperty("付款单号")
private Long paymentNo;
......
......@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Slf4j
......@@ -52,5 +53,12 @@ public class CarrierOwnerPaymentController {
return Result.ok();
}
@ApiOperation(value = "付款重新支付(只更改借款状态)",notes = "<br>By:胡宇帆")
@GetMapping("/ownerPaymentRetryPay")
public Result<Object> ownerPaymentRetryPay(@RequestParam(value = "id") @NotBlank Integer id) {
ownerPaymentService.ownerPaymentRetryPay(id);
return Result.ok();
}
}
......@@ -52,6 +52,8 @@ public class OwnerPaymentDaoImpl extends BaseDaoImpl<OwnerPaymentMapper, OwnerPa
public void updateStatusAndMerchantRunningWaterNo(OwnerPayment ownerPayment) {
update(lUdWrapper().set(OwnerPayment::getStatus, ownerPayment.getStatus())
.set(OwnerPayment::getMerchantRunningWaterNo, ownerPayment.getMerchantRunningWaterNo())
.set(OwnerPayment::getOperateBy, ownerPayment.getOperateBy())
.set(OwnerPayment::getOperateTime, ownerPayment.getOperateTime())
.eq(OwnerPayment::getId, ownerPayment.getId())
);
}
......
......@@ -7,6 +7,7 @@ import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.BankTradeEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
......@@ -27,6 +28,7 @@ import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.base.Optional;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
......@@ -108,6 +110,9 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
@Override
public void ownerRepayment(OwnerRepaymentParam param) {
OwnerRepayment ownerRepayment = ownerRepaymentDao.getOneByField(OwnerRepayment::getRepaymentNo, param.getRepaymentNo()).get();
if (!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAY_WAIT.getCode())) {
throw new ServiceSystemException(PerformanceResultEnum.OWNER_LOAN_RECORD_PAY_STATUS_ERROR);
}
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getOneByField(OwnerLoanRecord::getLoanNo, ownerRepayment.getLoanNo()).get();
BankTrade bankTrade = new BankTrade();
OwnerBindCardRecord ownerBindCardRecord = ownerBindCardRecordDao.getOwnerBindCardByUserNo(ownerRepayment.getOwnerUserNo());
......@@ -115,8 +120,8 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(param.getPayChannel())) {
// 订单支付
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(ownerRepayment.getRepaymentNo(), "还款单",
ownerRepayment.getRepaymentBalance().intValue(), ownerLoanRecord.getLendingPartyBankCode(),
ownerLoanRecord.getLendingPartyAccount(), ownerBindCardRecord.getAccountBankName());
ownerRepayment.getRepaymentBalance().intValue(), ownerBindCardRecord.getOpenAccountBankNumber(),
ownerBindCardRecord.getBankCardNumber(), ownerBindCardRecord.getAccountBankName());
ownerRepayment.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
ownerRepayment.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
......
......@@ -66,6 +66,7 @@ import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -409,7 +410,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
}
vo.setOrderPayWay(false);
String bankName = borrower.getBankName();
if (nbBankConfig.getOrderSupportBank().contains(bankName)) {
if (StringUtils.isNotBlank(bankName) && nbBankConfig.getOrderSupportBank().contains(bankName)) {
vo.setOrderPayWay(true);
}
vo.setBankName(bankName);
......
......@@ -18,11 +18,13 @@ import com.clx.performance.vo.pc.loan.carrier.CarrierOwnerPaymentVO;
import com.clx.performance.vo.pc.loan.carrier.OwnerPaymentVO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -85,7 +87,18 @@ public class OwnerPaymentServiceImpl implements OwnerPaymentService {
}
ownerPayment.setMerchantRunningWaterNo(merSeqNo);
ownerPayment.setStatus(OwnerPaymentEnum.Status.PAYING.getCode());
ownerPayment.setOperateBy(TokenUtil.getLoginUserInfo().getUserName());
ownerPayment.setOperateTime(LocalDateTime.now());
ownerPaymentDao.updateStatusAndMerchantRunningWaterNo(ownerPayment);
}
@Override
public void ownerPaymentRetryPay(Integer id) {
OwnerPayment ownerPayment = ownerPaymentDao.getEntityByKey(id).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (!OwnerPaymentEnum.Status.PAY_FAIL.getCode().equals(ownerPayment.getStatus())) {
throw new ServiceSystemException(PerformanceResultEnum.DATA_STATUS_ERROR);
}
ownerPaymentDao.updatePayStatus(id, OwnerPaymentEnum.Status.PAY_WAIT.getCode());
}
}
......@@ -132,9 +132,9 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
OwnerCashierInfoVO vo = ownerRepaymentStruct.convertCashierInfo(ownerRepayment);
OwnerInfoFeignVO ownerInfoFeignVO = ownerInfoService.getOwnerInfo(ownerRepayment.getOwnerUserNo());
String ownerAccountBank = Objects.isNull(ownerInfoFeignVO.getOwnerAccountBank())? StringUtils.EMPTY:ownerInfoFeignVO.getOwnerAccountBank().trim();
String ownerAccountBank = StringUtils.isBlank(ownerInfoFeignVO.getOwnerAccountBank())? StringUtils.EMPTY:ownerInfoFeignVO.getOwnerAccountBank().trim();
vo.setOrderPayWay(false);
if(nbBankConfig.getOrderSupportBank().contains(ownerAccountBank)){
if(StringUtils.isNotBlank(ownerAccountBank) && nbBankConfig.getOrderSupportBank().contains(ownerAccountBank)){
vo.setOrderPayWay(true);
}
vo.setBankName(ownerAccountBank);
......@@ -249,7 +249,7 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
if (OwnerLoanRecordEnum.PayChannel.ORDER_DIRECT_PAY.getCode().equals(ownerRepayment.getPayChannel())) {
Integer tradeType = bankTrade.getTradeType();
// 调用宁波退款
bankService.refund(tradeType, bankTrade.getMerchantRunningWaterNo(), Integer.valueOf(ownerRepayment.getRepaymentBalance().movePointRight(2).toString()), bankTrade.getRunningWaterOpenNo());
bankService.refund(tradeType, bankTrade.getMerchantRunningWaterNo(), Integer.valueOf(ownerRepayment.getRepaymentBalance().toString()), bankTrade.getRunningWaterOpenNo());
}
......@@ -363,7 +363,10 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
@Transactional(rollbackFor = Exception.class)
public void adjust(Integer id) {
OwnerRepayment ownerRepayment = ownerRepaymentDao.getEntityByKey(id).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAYING.getCode())) {
if (!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAYING.getCode())
&&
!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAY_FAIL.getCode())
) {
log.info("还款记录状态异常,不是付款中,不能核销");
throw new ServiceSystemException(PerformanceResultEnum.OWNER_LOAN_RECORD_ADJUST_STATUS_ERROR);
}
......
......@@ -9,6 +9,7 @@ import com.clx.performance.enums.nbbank.NbBankRecordEnum;
import com.clx.performance.model.nbbank.NbBankRecord;
import com.clx.performance.service.thirdparty.nbbank.NbBankThirdpartyService;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.spring.ApplicationContextUtils;
import com.msl.common.exception.ServiceSystemException;
import com.nbopen.api.*;
import lombok.extern.slf4j.Slf4j;
......@@ -42,6 +43,8 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
@PostConstruct
public void bankInit() throws IOException {
new File("./test").mkdir();
File file = new File("/app/nbbank");
file.mkdir();
......@@ -153,7 +156,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 下单(directBankTransferOrder), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.DIRECT_BANK_TRANSFER_ORDER.getCode(), request, response);
ApplicationContextUtils.getBean(NbBankThirdpartyService.class).recordSave(NbBankRecordEnum.Type.DIRECT_BANK_TRANSFER_ORDER.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
......@@ -252,12 +255,27 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 下单(unionPayDirectOrder), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.UNION_PAY_DIRECT_ORDER.getCode(), request, response);
ApplicationContextUtils.getBean(NbBankThirdpartyService.class).recordSave(NbBankRecordEnum.Type.UNION_PAY_DIRECT_ORDER.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
if (!StringUtils.equals(data.getString("errorCode"), "000000")){
if (StringUtils.equals(data.getString("errorCode"), "MER006")){
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_PAY_DISABLE_ERROR);
}
else if (StringUtils.equals(data.getString("errorCode"), "BP3233")){
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_ACCOUNT_NOT_FOUND_ERROR);
}
else if (StringUtils.equals(data.getString("errorCode"), "MER001")){
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_MERCHANT_STATUS_ERROR);
}
else if (StringUtils.equals(data.getString("errorCode"), "BD2103")){
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_AMOUNT_OUT_OF_RANGE_ERROR);
}
else if (StringUtils.equals(data.getString("errorCode"), "BP3212")){
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_NAME_BANK_NO_MISSMATCH_ERROR);
}
else if (!StringUtils.equals(data.getString("errorCode"), "000000")){
log.info("宁波银行, 下单失败(unionPayDirectOrder), code:{}, msg:{}", data.getString("errorCode"), data.getString("errorMsg"));
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
......@@ -265,6 +283,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
return data;
} catch (Exception e) {
if (e instanceof ServiceSystemException) {throw (ServiceSystemException)e;}
log.info("宁波银行接口异常:{}", ExceptionUtils.getStackTrace(e));
}
......@@ -391,7 +410,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 查询交易结果(queryOrder), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.QUERY_ORDER.getCode(), request, response);
ApplicationContextUtils.getBean(NbBankThirdpartyService.class).recordSave(NbBankRecordEnum.Type.QUERY_ORDER.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
......@@ -452,18 +471,23 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 调账接口(fundTransferOrder), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.FUND_TRANSFER_ORDER.getCode(), request, response);
ApplicationContextUtils.getBean(NbBankThirdpartyService.class).recordSave(NbBankRecordEnum.Type.FUND_TRANSFER_ORDER.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
if (!StringUtils.equals(data.getString("errorCode"), "000000")){
if (!StringUtils.equals(data.getString("errorCode"), "PAY888")){
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_NO_MONEY_ERROR);
}
else if (!StringUtils.equals(data.getString("errorCode"), "000000")){
log.info("宁波银行, 调账接口(fundTransferOrder), code:{}, msg:{}", data.getString("errorCode"), data.getString("errorMsg"));
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
return data;
} catch (Exception e) {
if (e instanceof ServiceSystemException) {throw (ServiceSystemException)e;}
log.info("宁波银行接口异常:{}", ExceptionUtils.getStackTrace(e));
}
......@@ -533,7 +557,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
SDKResponse response = NBOpenSDK.send(request);
log.info("宁波银行, 退款(refund), 结果: {}", JSON.toJSONString(response));
recordSave(NbBankRecordEnum.Type.REFUND.getCode(), request, response);
ApplicationContextUtils.getBean(NbBankThirdpartyService.class).recordSave(NbBankRecordEnum.Type.REFUND.getCode(), request, response);
JSONObject responseJson = JSON.parseObject(JSON.toJSONString(response));
JSONObject data = responseJson.getJSONObject("data");
......@@ -552,6 +576,7 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_API_ERROR);
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
public void recordSave(Integer type, SDKRequest request, SDKResponse response) {
......@@ -681,7 +706,6 @@ public class NbBankThirdpartyServiceImpl implements NbBankThirdpartyService {
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void recordSave(Integer type,
String merId, String merSeqNo, String merDtTm, String transSeqNo,
Integer amount,
......
......@@ -16,4 +16,6 @@ public interface OwnerPaymentService {
CarrierOwnerPaymentVO getOwnerPaymentDetail(Integer id);
void pay(Integer id);
void ownerPaymentRetryPay(Integer id);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论