diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index ea9901fbd..09c95373b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -144,6 +144,8 @@ public interface IOrderBasicInfoService { void orderSplittingOperations(String merchantId, String tradeDate); + void tempOrderSplittingOperations(String merchantId, String tradeDate); + /** * 执行订单分账 * @param orderBasicInfo diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index f4dfd8e25..be8d44533 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -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 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 stationReportList = settleOrderReportService.selectByMerchantIdAndDate(merchantId, tradeDate); + for (SettleOrderReport orderReport : stationReportList) { + String orderCodes = orderReport.getOrderCodes(); + if (StringUtils.isBlank(orderCodes)) { + logger.info("站点:{}, 日期:{}, 没有查到订单数据", orderReport.getStationId(), tradeDate); + continue; + } + List orderCodeList = Lists.newArrayList(StringUtils.split(orderCodes, ",")); + List 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 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 订单 diff --git a/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java b/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java index e51d694ec..d08786b07 100644 --- a/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java +++ b/jsowell-quartz/src/main/java/com/jsowell/quartz/task/JsowellTask.java @@ -171,8 +171,7 @@ public class JsowellTask { return; } // 获取日期 - // LocalDate yesterday = LocalDate.now().plusDays(-1); - LocalDate yesterday = LocalDate.of(2023, 7, 8); + LocalDate yesterday = LocalDate.now().plusDays(-1); // 调分账方法 pileMerchantInfos.parallelStream().forEach(merchant -> { orderBasicInfoService.orderSplittingOperations(merchant.getId()+"", yesterday.toString());