From c3e78af9e9eede3d6b5555b6b9d821a002bb2307 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 18 Feb 2025 13:36:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=85=85=E7=94=B5=E5=81=9C?= =?UTF-8?q?=E8=BD=A6=E4=BC=98=E6=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OrderBasicInfoServiceImpl.java | 24 ++++++++++++++----- .../thirdparty/common/CommonService.java | 14 +++++++++-- .../src/views/financial/financeDetail.vue | 10 ++++---- 3 files changed, 35 insertions(+), 13 deletions(-) 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 c9b3ca2df..f30703b84 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 @@ -1773,19 +1773,31 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { */ @Override public OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) throws BaseAdaPayException { + // 查询订单信息 + OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode()); + afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo); + // 校验订单支付金额,消费金额,退款金额 BigDecimal orderPayAmount = afterSettleOrderDTO.getOrderPayAmount(); // 支付金额 BigDecimal orderConsumeAmount = afterSettleOrderDTO.getOrderConsumeAmount(); // 消费金额 BigDecimal orderSettleAmount = afterSettleOrderDTO.getOrderSettleAmount(); BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额 - if (orderSettleAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) { - logger.info("realTimeOrderSplit-订单:{}, 支付金额与结算金额+退款金额不相等", afterSettleOrderDTO.getOrderCode()); - return null; + + // 如果是余额支付, 校验消费金额+ 退款金额 = 支付金额 + if (StringUtils.equals(orderBasicInfo.getPayMode(), "1")) { + if (orderConsumeAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) { + logger.info("realTimeOrderSplit-订单:{}, 支付金额与消费金额+退款金额不相等", afterSettleOrderDTO.getOrderCode()); + return null; + } } - // 查询订单信息 - OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode()); - afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo); + // 如果是在线支付, 校验消费金额+ 退款金额 = 支付金额 + if (StringUtils.equals(orderBasicInfo.getPayMode(), "4") || StringUtils.equals(orderBasicInfo.getPayMode(), "5")) { + if (orderSettleAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) { + logger.info("realTimeOrderSplit-订单:{}, 支付金额与结算金额+退款金额不相等", afterSettleOrderDTO.getOrderCode()); + return null; + } + } // 订单结算金额,汇付分账 splittingMethod(afterSettleOrderDTO); diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java index f52d74aa2..63cad9432 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java @@ -57,6 +57,7 @@ import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.spec.InvalidKeySpecException; import java.text.ParseException; +import java.time.LocalTime; import java.util.List; import java.util.Map; import java.util.Objects; @@ -698,6 +699,15 @@ public class CommonService { String sumChargingTime = realTimeMonitorData.getSumChargingTime(); // 充电时长 String chargingDegree = realTimeMonitorData.getChargingDegree(); // 充电度数 String conditionType = String.valueOf(chargeParkingDiscount.getConditionType()); + + // 判断订单创建时间,是否在优惠时间段内 + LocalTime createLocalTime = DateUtils.date2LocalDateTime(orderBasicInfo.getCreateTime()).toLocalTime(); + if (createLocalTime.isBefore(chargeParkingDiscount.getStartTime()) || createLocalTime.isAfter(chargeParkingDiscount.getEndTime())) { + // 不在优惠时间段内 + log.info("{}该订单不在优惠时间段({}-{})内", orderBasicInfo.getOrderCode(), chargeParkingDiscount.getStartTime(), chargeParkingDiscount.getEndTime()); + return; + } + // 如果conditionType为1判断充电度数, 如果为2判断充电时长 boolean flag = false; if (StringUtils.equals(conditionType, Constants.ONE)) { @@ -713,14 +723,14 @@ public class CommonService { } if (!flag) { // 不满足发券条件 - log.info(orderBasicInfo.getOrderCode() + " 该订单不满足发券条件"); + log.info("{} 该订单不满足发券条件", orderBasicInfo.getOrderCode()); return; } // 是否已经发券 String redisKey = CacheConstants.CAR_BIND_COUPON_BY_ORDER_CODE + orderBasicInfo.getOrderCode(); Object cacheObject = redisCache.getCacheObject(redisKey); if (cacheObject != null) { - log.info(orderBasicInfo.getOrderCode() + " 该订单已经发券"); + log.info("{} 该订单已经发券", orderBasicInfo.getOrderCode()); return; } // 绑定停车券 diff --git a/jsowell-ui/src/views/financial/financeDetail.vue b/jsowell-ui/src/views/financial/financeDetail.vue index e84273de2..21c5c3a40 100644 --- a/jsowell-ui/src/views/financial/financeDetail.vue +++ b/jsowell-ui/src/views/financial/financeDetail.vue @@ -118,11 +118,11 @@