From f626a88d5ea5d58ac4e437669fdb03f0d5790cb3 Mon Sep 17 00:00:00 2001 From: "autumn.g@foxmail.com" Date: Thu, 25 May 2023 15:58:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=B7=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OrderBasicInfoServiceImpl.java | 103 +++++++++--------- 1 file changed, 54 insertions(+), 49 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 d7d2c00b2..617eff50c 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 @@ -167,66 +167,64 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { return orderListVOS; } - private void tempUpdateVirtualAmount(List orderListVOS) { - for (OrderListVO orderListVO : orderListVOS) { - if (orderListVO.getVirtualAmount() != null) { - continue; - } - // 订单总消费金额 - BigDecimal orderAmount = new BigDecimal(orderListVO.getOrderAmount()); - // 支付金额 - BigDecimal payAmount = new BigDecimal(orderListVO.getPayAmount()); + private void tempUpdateVirtualAmount(OrderListVO orderListVO) { + if (orderListVO.getVirtualAmount() != null) { + return; + } + // 订单总消费金额 + BigDecimal orderAmount = new BigDecimal(orderListVO.getOrderAmount()); + // 支付金额 + BigDecimal payAmount = new BigDecimal(orderListVO.getPayAmount()); - if (orderAmount.compareTo(payAmount) > 0) { - orderAmount = payAmount; - } + if (orderAmount.compareTo(payAmount) > 0) { + orderAmount = payAmount; + } - // 使用虚拟金额消费 金额 - BigDecimal virtualAmount = BigDecimal.ZERO; - // 结算金额 - BigDecimal settleAmount = BigDecimal.ZERO; + // 使用虚拟金额消费 金额 + BigDecimal virtualAmount = BigDecimal.ZERO; + // 结算金额 + BigDecimal settleAmount = BigDecimal.ZERO; - if (orderAmount.compareTo(BigDecimal.ZERO) > 0) { - if (StringUtils.equals(orderListVO.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { + if (orderAmount.compareTo(BigDecimal.ZERO) > 0) { + if (StringUtils.equals(orderListVO.getPayMode(), OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue())) { /* 余额支付 查询支付记录,如全部用本金支付,则虚拟金额为0,结算金额为订单消费金额, 如果使用了赠送金额,虚拟金额为赠送金额支付部分,结算金额=订单消费金额-虚拟金额消费部分 */ - // 查询支付记录 - List orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderListVO.getOrderCode()); - for (OrderPayRecord orderPayRecord : orderPayRecordList) { - if (StringUtils.equals(orderPayRecord.getPayMode(), OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) { - BigDecimal refundAmount = orderPayRecord.getRefundAmount(); - if (refundAmount == null) { - // 退款金额为null, 需要退款的金额 = 支付金额 - 订单金额 - refundAmount = orderPayRecord.getPayAmount().subtract(orderAmount); - } - // 赠送金额消费部分 = 支付金额 - 需要退款金额 - virtualAmount = orderPayRecord.getPayAmount().subtract(refundAmount); - // 结算金额 = 订单金额 - 赠送金额消费部分 - settleAmount = orderAmount.subtract(virtualAmount); - } else { - // 没有使用赠送金额支付,那么虚拟金额就是0,结算金额就等于订单金额 - settleAmount = orderAmount; + // 查询支付记录 + List orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderListVO.getOrderCode()); + for (OrderPayRecord orderPayRecord : orderPayRecordList) { + if (StringUtils.equals(orderPayRecord.getPayMode(), OrderPayRecordEnum.GIFT_BALANCE_PAYMENT.getValue())) { + BigDecimal refundAmount = orderPayRecord.getRefundAmount(); + if (refundAmount == null) { + // 退款金额为null, 需要退款的金额 = 支付金额 - 订单金额 + refundAmount = orderPayRecord.getPayAmount().subtract(orderAmount); } + // 赠送金额消费部分 = 支付金额 - 需要退款金额 + virtualAmount = orderPayRecord.getPayAmount().subtract(refundAmount); + // 结算金额 = 订单金额 - 赠送金额消费部分 + settleAmount = orderAmount.subtract(virtualAmount); + } else { + // 没有使用赠送金额支付,那么虚拟金额就是0,结算金额就等于订单金额 + settleAmount = orderAmount; } - } else { + } + } else { /* 微信支付 虚拟金额为0 结算金额等于订单消费金额 */ - settleAmount = orderAmount; - } + settleAmount = orderAmount; } - - OrderBasicInfo build = OrderBasicInfo.builder() - .id(Long.parseLong(orderListVO.getId())) - .orderCode(orderListVO.getOrderCode()) - .orderAmount(orderAmount) - .virtualAmount(virtualAmount) - .settleAmount(settleAmount) - .build(); - updateOrderBasicInfo(build); } + + OrderBasicInfo build = OrderBasicInfo.builder() + .id(Long.parseLong(orderListVO.getId())) + .orderCode(orderListVO.getOrderCode()) + .orderAmount(orderAmount) + .virtualAmount(virtualAmount) + .settleAmount(settleAmount) + .build(); + updateOrderBasicInfo(build); } /** @@ -1713,8 +1711,15 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { if (CollectionUtils.isEmpty(orderListVOS)) { return "没有订单需要修改"; } - - tempUpdateVirtualAmount(orderListVOS); - return "共修改" + orderListVOS.size() + "条订单数据"; + int i = 0; + for (OrderListVO orderListVO : orderListVOS) { + try { + tempUpdateVirtualAmount(orderListVO); + i += 1; + } catch (Exception e) { + logger.error("修改虚拟金额字段失败", e); + } + } + return "共查询到" + i + "条订单,修改成功" + i + "条订单数据"; } }