This commit is contained in:
2023-07-31 13:51:41 +08:00
parent 193f2a408c
commit ee630c5680
3 changed files with 112 additions and 17 deletions

View File

@@ -144,6 +144,8 @@ public interface IOrderBasicInfoService {
void orderSplittingOperations(String merchantId, String tradeDate);
void tempOrderSplittingOperations(String merchantId, String tradeDate);
/**
* 执行订单分账
* @param orderBasicInfo

View File

@@ -876,16 +876,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
public void orderSplittingOperations(String merchantId, String tradeDate) {
logger.info("运营商:{}, 交易日期:{}, 进行分账处理start", merchantId, tradeDate);
AdapayMemberAccount adapayMemberAccount = new AdapayMemberAccount();
adapayMemberAccount.setAdapayMemberId("0");
// 查询运营商有没有开通结算账户
// AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectByMerchantId(merchantId);
// if (adapayMemberAccount == null) {
// logger.error("订单分账逻辑error, 运营商id:{}, 未配置结算账户", merchantId);
// // throw new BusinessException(ReturnCodeEnum.CODE_ADAPAY_MEMBER_IS_NULL_ERROR);
// return;
// }
AdapayMemberAccount adapayMemberAccount = adapayMemberAccountService.selectByMerchantId(merchantId);
if (adapayMemberAccount == null) {
logger.error("订单分账逻辑error, 运营商id:{}, 未配置结算账户", merchantId);
return;
}
// 根据交易日期查询运营商下面所有站点的交易日报
List<SettleOrderReport> stationReportList = settleOrderReportService.selectByMerchantIdAndDate(merchantId, tradeDate);
@@ -902,12 +898,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
}
// 设置挡板8月1号之后的订单按照实际进行分账
// LocalDateTime now = LocalDateTime.now();
// LocalDateTime dateTime = LocalDateTime.of(2023, 8, 2, 0, 0, 0);
// if (now.isBefore(dateTime)) {
// logger.info("当前时间:{}早于:{}, 此订单不进行分账处理, 订单信息:{}", DateUtils.formatDateTime(now), DateUtils.formatDateTime(dateTime), JSON.toJSONString(orderBasicInfos));
// return;
// }
LocalDateTime now = LocalDateTime.now();
LocalDateTime dateTime = LocalDateTime.of(2023, 8, 2, 0, 0, 0);
if (now.isBefore(dateTime)) {
logger.info("当前时间:{}早于:{}, 此订单不进行分账处理, 订单信息:{}", DateUtils.formatDateTime(now), DateUtils.formatDateTime(dateTime), JSON.toJSONString(orderBasicInfos));
return;
}
// 清分账单信息
ClearingBillInfo clearingBillInfo = new ClearingBillInfo();
@@ -982,6 +978,104 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
logger.info("运营商:{}, 交易日期:{}, 进行分账处理end", merchantId, tradeDate);
}
/**
* 手动接口执行订单分账逻辑
* 8月1号之前的交易全部结算到本商户
*/
@Override
public void tempOrderSplittingOperations(String merchantId, String tradeDate) {
logger.info("运营商:{}, 交易日期:{}, 进行分账处理start", merchantId, tradeDate);
AdapayMemberAccount adapayMemberAccount = new AdapayMemberAccount();
adapayMemberAccount.setAdapayMemberId("0");
// 根据交易日期查询运营商下面所有站点的交易日报
List<SettleOrderReport> stationReportList = settleOrderReportService.selectByMerchantIdAndDate(merchantId, tradeDate);
for (SettleOrderReport orderReport : stationReportList) {
String orderCodes = orderReport.getOrderCodes();
if (StringUtils.isBlank(orderCodes)) {
logger.info("站点:{}, 日期:{}, 没有查到订单数据", orderReport.getStationId(), tradeDate);
continue;
}
List<String> orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ","));
List<OrderBasicInfo> orderBasicInfos = queryOrderList(orderCodeList);
if (CollectionUtils.isEmpty(orderBasicInfos)) {
continue;
}
// 清分账单信息
// ClearingBillInfo clearingBillInfo = new ClearingBillInfo();
// clearingBillInfo.setBillStatus("1");
// String clearingBillCode = "CLE" + IdUtils.getOrderCode();
// clearingBillInfo.setClearingBillCode(clearingBillCode);
// clearingBillInfo.setClearingTime(DateUtils.getNowDate());
// clearingBillInfo.setMerchantId(merchantId);
// clearingBillInfo.setOrderSource("1");
// 应收金额
BigDecimal receivableAmount = BigDecimal.ZERO;
// 应清分金额
BigDecimal shouldClearingAmount = BigDecimal.ZERO;
// 实际清分金额
BigDecimal actualClearingAmount = BigDecimal.ZERO;
// 手续费金额
BigDecimal feeAmount = BigDecimal.ZERO;
// 可提现金额
BigDecimal withdrawableAmount = BigDecimal.ZERO;
// 清分账单详情列表
List<ClearingBillDetail> billDetailList = Lists.newArrayList();
// 执行分账
for (OrderBasicInfo orderBasicInfo : orderBasicInfos) {
try {
PaymentConfirmResponse paymentConfirmResponse = doPaymentConfirm(orderBasicInfo, adapayMemberAccount);
if (paymentConfirmResponse != null && AdapayStatusEnum.SUCCEEDED.getValue().equals(paymentConfirmResponse.getStatus())) {
JSONObject jsonObject = JSON.parseObject(paymentConfirmResponse.getDescription());
String orderCode = (String) jsonObject.get("orderCode");
// 应收金额 = 订单结算金额汇总
// receivableAmount = receivableAmount.add(orderBasicInfo.getSettleAmount());
// // 应清分金额 = 订单产生的电费+服务费实际消费 汇总
// shouldClearingAmount = shouldClearingAmount.add(orderBasicInfo.getSettleAmount());
// // 实际清分金额 = 汇付清分接口返回的清分金额
// actualClearingAmount = actualClearingAmount.add(new BigDecimal(paymentConfirmResponse.getConfirm_amt()));
// // 手续费金额 = 汇付清分接口返回的手续费金额
// feeAmount = feeAmount.add(new BigDecimal(paymentConfirmResponse.getFee_amt()));
// // 可提现金额 = 实际清分金额 - 手续费金额
// withdrawableAmount = withdrawableAmount
// .add(new BigDecimal(paymentConfirmResponse.getConfirm_amt()))
// .subtract(new BigDecimal(paymentConfirmResponse.getFee_amt()));
// ClearingBillDetail clearingBillDetail = ClearingBillDetail.builder()
// .clearingBillCode(clearingBillCode)
// .orderCode(orderCode)
// .createTime(DateUtils.getNowDate())
// .delFlag(DelFlagEnum.NORMAL.getValue())
// .build();
// billDetailList.add(clearingBillDetail);
}
} catch (Exception e) {
logger.error("订单交易确认失败:{}", orderBasicInfo.getOrderCode(), e);
}
}
// clearingBillInfo.setReceivableAmount(receivableAmount);
// clearingBillInfo.setShouldClearingAmount(shouldClearingAmount);
// clearingBillInfo.setFeeAmount(feeAmount);
// clearingBillInfo.setWithdrawableAmount(withdrawableAmount);
// clearingBillInfo.setActualClearingAmount(actualClearingAmount);
// clearingBillInfo.setCreateTime(DateUtils.getNowDate());
// clearingBillInfo.setDelFlag(DelFlagEnum.NORMAL.getValue());
// 保存清分账单
// ClearingBillTransactionDTO dto = new ClearingBillTransactionDTO();
// dto.setClearingBillInfo(clearingBillInfo);
// dto.setBillDetailList(billDetailList);
// transactionService.createClearingBill(dto);
}
logger.info("运营商:{}, 交易日期:{}, 进行分账处理end", merchantId, tradeDate);
}
/**
* 交易确认
* @param orderBasicInfo 订单