From d70546f55e604f5547d82309e57d5de7041af579 Mon Sep 17 00:00:00 2001 From: wangw <1594593906@qq.com> Date: Thu, 25 Dec 2025 18:02:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BC=9A=E5=91=98=E6=88=90?= =?UTF-8?q?=E9=95=BF=E5=80=BC=20=E4=B8=8D=E5=AF=B9=20=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E9=80=80=E6=AC=BE=20=E5=85=A8=E9=A2=9D=20=E9=83=A8=E5=88=86=20?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/service/MkPointsConfigService.java | 5 ++ .../market/service/MkPointsUserService.java | 5 ++ .../impl/MkPointsConfigServiceImpl.java | 5 ++ .../service/impl/MkPointsUserServiceImpl.java | 45 ++++++++++++++++++ .../impl/TbMemberConfigServiceImpl.java | 5 +- .../order/service/impl/PayServiceImpl.java | 47 ++++++++++++------- 6 files changed, 92 insertions(+), 20 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsConfigService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsConfigService.java index 9beb6b942..668f2995b 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsConfigService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsConfigService.java @@ -17,4 +17,9 @@ public interface MkPointsConfigService extends IService { * */ void consumeAwardPoints(ShopUser shopUser, OrderInfo orderInfo); + + /** + * 订单退款成功,通过计算 给用户赠送积分 + */ + void removeConsumeAwardPoints(Long shopId, Long userId, Long orderId, String orderNo); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsUserService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsUserService.java index 9a48f4988..9965e2b79 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsUserService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkPointsUserService.java @@ -48,4 +48,9 @@ public interface MkPointsUserService extends IService { */ Long alterPoints(Long userId, Long shopUserId, @NotNull Long shopId, @NotNull PointsConstant floatType, @NotNull Integer points, Long sourceId, @NotBlank String reason); + + /** + * 订单退款 赠送的积分 扣除 + */ + void removePointByOrder(Long shopId, Long userId, Long orderId, String orderNo, String reason); } diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsConfigServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsConfigServiceImpl.java index 16c63cdb8..806c29700 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsConfigServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkPointsConfigServiceImpl.java @@ -65,4 +65,9 @@ public class MkPointsConfigServiceImpl extends ServiceImpl= Integer.parseInt(item.getValue())); + .eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode())) >= Integer.parseInt(item.getValue())); break; case "COST_AMOUNT": conditionMap.put("COST_AMOUNT", orderInfoService.getOneAs(query().select("IFNULL(sum(pay_amount), 0) as total_amount ").eq(OrderInfo::getShopId, shopId).eq(OrderInfo::getUserId, shopUserInfo.getUserId()) - .notIn(OrderInfo::getStatus, OrderStatusEnums.UNPAID.getCode(), OrderStatusEnums.CANCELLED.getCode()), BigDecimal.class) + .eq(OrderInfo::getStatus, OrderStatusEnums.DONE.getCode()), BigDecimal.class) .compareTo(new BigDecimal(item.getValue())) >= 0); break; @@ -309,6 +309,7 @@ public class TbMemberConfigServiceImpl extends ServiceImpl returnProMap = new HashMap<>(); boolean isPay = true; @@ -754,7 +760,6 @@ public class PayServiceImpl implements PayService { } } else { orderInfo.setStatus(OrderStatusEnums.REFUND.getCode()); - // ssss List orderDetails = orderDetailService.queryChain() .select(OrderDetail::getId, OrderDetail::getProductId, OrderDetail::getNum, OrderDetail::getReturnNum, OrderDetail::getPackAmount, OrderDetail::getReturnNum) .eq(OrderDetail::getOrderId, orderInfo.getId()) @@ -816,29 +821,35 @@ public class PayServiceImpl implements PayService { if (!returnProMap.isEmpty()) { rabbitPublisher.sendOrderRefundMsg(JSONObject.toJSONString(Map.of("orderId", orderInfo.getId(), "returnProMap", returnProMap))); } - refundOrderAfter(orderInfo.getId(), orderInfo.getShopId(), orderInfo.getUserId(), orderInfo.getOrderNo(), orderInfo.getPointsNum()); + refundOrderAfter(orderInfo.getId(), orderInfo.getShopId(), orderInfo.getUserId(), orderInfo.getOrderNo(), + orderInfo.getPointsNum(), isFirstRefund, orderInfo.getStatus().equals(OrderStatusEnums.REFUND.getCode())); return CzgResult.success(); } //触发订单退款时 后续处理 @Async - public void refundOrderAfter(@NonNull Long orderId, @NonNull Long shopId, Long userId, String orderNo, Integer pointsNum) { - // 退款分销还原 - FunUtils.safeRunVoid(() -> distributionUserService.refund(orderId, orderNo), - "订单id:{} 退款,分销处理失败", orderId); - if (userId == null) { - return; - } - FunUtils.safeRunVoid(() -> consumerCouponService.removeConsumerCoupon(shopId, userId, orderId), - "订单id:{} 退款,消费赠券回撤处理失败", orderId); - FunUtils.safeRunVoid(() -> consumeCashbackService.removeCashback(shopId, userId, orderId, orderNo), - "订单id:{} 退款,消费返现处理失败", orderId); - FunUtils.safeRunVoid(() -> { - if (pointsNum != null && pointsNum > 0) { - mkPointsUserService.alterPoints(userId, null, shopId, PointsConstant.ADD, - pointsNum, orderId, StrUtil.format("订单退款返还{}积分", pointsNum)); + public void refundOrderAfter(@NonNull Long orderId, @NonNull Long shopId, Long userId, String orderNo, + Integer pointsNum, boolean isFirstRefund, boolean isAllRefund) { + if (isFirstRefund) { + // 退款分销还原 + FunUtils.safeRunVoid(() -> distributionUserService.refund(orderId, orderNo), + "订单id:{} 退款,分销处理失败", orderId); + if (userId == null) { + return; } - }, "订单id:{} 退款,积分返还处理失败", orderId); + FunUtils.safeRunVoid(() -> consumerCouponService.removeConsumerCoupon(shopId, userId, orderId), + "订单id:{} 退款,消费赠券回撤处理失败", orderId); + FunUtils.safeRunVoid(() -> consumeCashbackService.removeCashback(shopId, userId, orderId, orderNo), + "订单id:{} 退款,消费返现扣除处理失败", orderId); + FunUtils.safeRunVoid(() -> pointsConfigService.removeConsumeAwardPoints(shopId, userId, orderId, orderNo), + "订单id:{} 退款,赠送积分扣除失败", orderId); + } + if (isAllRefund && userId != null && pointsNum != null && pointsNum > 0) { + FunUtils.safeRunVoid(() -> mkPointsUserService.alterPoints(userId, null, shopId, PointsConstant.ADD, + pointsNum, orderId, StrUtil.format("订单退款返还{}积分", pointsNum)), + "订单id:{} 退款,赠送积分扣除失败", orderId); + + } } @Override