diff --git a/cash-common/cash-common-mq/src/main/java/com/czg/config/RabbitPublisher.java b/cash-common/cash-common-mq/src/main/java/com/czg/config/RabbitPublisher.java index e12e06b54..a5e49a8a5 100644 --- a/cash-common/cash-common-mq/src/main/java/com/czg/config/RabbitPublisher.java +++ b/cash-common/cash-common-mq/src/main/java/com/czg/config/RabbitPublisher.java @@ -133,6 +133,7 @@ public class RabbitPublisher { /** * 订单商品状态消息 + * type bc 广播 */ public void sendOrderDetailStatusMsg(String shopId, String type) { sendMsg(RabbitConstants.Queue.ORDER_DETAIL_STATUS_QUEUE, JSONObject.toJSONString(Map.of( diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java index 40023bbcd..82c9c2b77 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkConsumeCashbackService.java @@ -30,5 +30,8 @@ public interface MkConsumeCashbackService extends IService { */ void cashback(Long shopId, Long userId, BigDecimal amount, Long orderId, String orderNo); + /** + * 订单退款 删除返现 + */ void removeCashback(Long shopId, Long userId, Long orderId, String orderNo); } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopRechargeService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopRechargeService.java index 286edc171..7658cf5da 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopRechargeService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkShopRechargeService.java @@ -22,13 +22,19 @@ import java.util.List; public interface MkShopRechargeService extends IService { MkShopRechargeVO detail(Long shopId); + MkShopRechargeVO detailApp(Long shopId); Boolean edit(Long shopId, MkShopRechargeDTO shopRechargeDTO); BigDecimal checkRecharge(Long mainShopId, @NotNull(message = "店铺不能为空") Long shopId, Long userId, Long rechargeDetailId, @DecimalMin("0.01") BigDecimal money); - void recharge(Long shopId, Long shopUserId, Long rechargeDetailId, BigDecimal amount, Long paymentId, String payType, ShopUserFlowBizEnum bizEnum); + /** + * 充值 + * @param isNoJoin 是否没有执行 加入会员的方法 + * 会员如果是条件开通 则 需要统计 + */ + void recharge(Long shopId, Long shopUserId, Long rechargeDetailId, BigDecimal amount, Long paymentId, String payType, ShopUserFlowBizEnum bizEnum, boolean isNoJoin); List getList(long loginIdAsLong); diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java index ab97f2e20..bde15ea62 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkConsumeCashbackServiceImpl.java @@ -194,16 +194,18 @@ public class MkConsumeCashbackServiceImpl extends ServiceImpl memberConfigService.joinMemberByCondition(shopId, shopUser.getUserId(), shopUser)); + } } @Override diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java index b2696b816..ffddac17a 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/TbMemberConfigServiceImpl.java @@ -11,7 +11,6 @@ import com.czg.account.entity.ShopUser; import com.czg.account.service.ShopConfigService; import com.czg.account.service.ShopInfoService; import com.czg.account.service.ShopUserService; -import com.czg.account.service.UserInfoService; import com.czg.constant.TableValueConstant; import com.czg.constants.PayTypeConstants; import com.czg.exception.CzgException; @@ -60,8 +59,6 @@ public class TbMemberConfigServiceImpl extends ServiceImpl { - shopCouponRecordService.grant(shopUser.getMainShopId(), new MkRewardCouponDTO().setCouponId(item.getCoupon().getId()) - .setNum(item.getNum()) - .setUserId(shopUser.getUserId()) - .setShopId(shopUser.getMainShopId()), "购买会员赠券"); - - }); + levelVO.getCycleRewardCouponList().forEach(item -> + shopCouponRecordService.grant(shopUser.getMainShopId(), new MkRewardCouponDTO().setCouponId(item.getCoupon().getId()) + .setNum(item.getNum()) + .setUserId(shopUser.getUserId()) + .setShopId(shopUser.getMainShopId()), "购买会员赠券")); } } @@ -425,13 +420,14 @@ public class TbMemberConfigServiceImpl extends ServiceImpl= 0; - case "RECHARGE_AMOUNT" -> paymentService.getOneAs(query().select("IFNULL(sum(amount), 0) as total_amount") - .eq(OrderPayment::getShopId, shopId) - .eq(OrderPayment::getSourceType, PayTypeConstants.SourceType.MEMBER_IN) - .eq(OrderPayment::getPayType, PayTypeConstants.PayType.PAY) - .eq(OrderPayment::getSourceId, shopUser.getId()) - .eq(OrderPayment::getPayStatus, PayTypeConstants.PayStatus.SUCCESS), BigDecimal.class) - .compareTo(new BigDecimal(item.getValue())) >= 0; + case "RECHARGE_AMOUNT" -> + paymentService.getOneAs(query().select("IFNULL(sum(amount), 0) as total_amount") + .eq(OrderPayment::getShopId, shopId) + .eq(OrderPayment::getSourceType, PayTypeConstants.SourceType.MEMBER_IN) + .eq(OrderPayment::getPayType, PayTypeConstants.PayType.PAY) + .eq(OrderPayment::getSourceId, shopUser.getId()) + .eq(OrderPayment::getPayStatus, PayTypeConstants.PayStatus.SUCCESS), BigDecimal.class) + .compareTo(new BigDecimal(item.getValue())) >= 0; default -> throw new CzgException("会员开通条件类型错误"); }; if (!canOpen) { diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoCustomServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoCustomServiceImpl.java index 2fd314787..b283c5433 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoCustomServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoCustomServiceImpl.java @@ -1088,87 +1088,34 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService { .setRelationId(orderInfo.getId()) .setMoney(BigDecimal.valueOf(czgCallBackDto.getAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN)); shopUserService.updateMoney(shopUserMoneyEditDTO); - OrderInfo orderInfo1 = new OrderInfo(); - orderInfo1.setId(orderInfo.getId()); - orderInfo1.setIsFreeDine(1); - orderInfo1.setStatus(OrderStatusEnums.DONE.getCode()); - orderInfo1.setPayAmount(BigDecimal.ZERO); - orderInfo1.setPaidTime(LocalDateTime.now()); - orderInfo1.setPayType(PayEnums.FREE_PAY.getValue()); - orderInfoService.updateById(orderInfo1); - orderDetailService.updateOrderDetailStatus(orderInfo.getId(), OrderStatusEnums.DONE.getCode()); - redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId()); + upOrderInfo(orderInfo, BigDecimal.ZERO, + LocalDateTime.now(), null, PayEnums.FREE_PAY); } } else { - shopRechargeService.recharge(payment.getShopId(), payment.getSourceId(), payment.getRelatedId(), - BigDecimal.valueOf(czgCallBackDto.getAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN), payment.getId(), payment.getSourceType(), bizEnum); //充值并支付 ↓ orderInfo = orderInfoService.getOne(new QueryWrapper() .eq(OrderInfo::getPayOrderId, payment.getId()) .eq(OrderInfo::getPayType, PayEnums.VIP_PAY.getValue())); if (orderInfo != null) { - OrderInfo upOrderInfo = new OrderInfo() - .setId(orderInfo.getId()) - .setPayType(PayEnums.VIP_PAY.getValue()) - .setPaidTime(LocalDateTime.now()) - .setPayAmount(orderInfo.getOrderAmount()) - .setStatus(OrderStatusEnums.DONE.getCode()); - orderInfoService.updateById(upOrderInfo); - orderDetailService.updateOrderDetailStatus(orderInfo.getId(), OrderStatusEnums.DONE.getCode()); ShopUserMoneyEditDTO shopUserMoneyEditDTO = new ShopUserMoneyEditDTO() .setId(shopUser.getId()) .setType(0) .setBizEnum(ShopUserFlowBizEnum.ORDER_PAY) .setRelationId(orderInfo.getId()) .setMoney(orderInfo.getOrderAmount()); - shopUserService.updateMoney(shopUserMoneyEditDTO); - redisService.del(RedisCst.classKeyExpired.EXPIRED_ORDER + orderInfo.getId()); - - // 发放成长值 - shopUser = shopUserService.getById(shopUser); - //充值 - memberConfigService.deliver(shopUser, - TableValueConstant.MemberExpFlow.Type.RECHARGE, - BigDecimal.valueOf(czgCallBackDto.getAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN), null, orderInfo.getId()); - if (TransactionSynchronizationManager.isSynchronizationActive()) { - OrderInfo finalOrderInfo = orderInfo; - TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { - @Override - public void afterCommit() { - // 事务成功提交后执行消息发送 - String printParam = finalOrderInfo.getId() + "_" + (!"after-pay".equals(finalOrderInfo.getPayMode()) ? 1 : 0) + "_1"; - rabbitPublisher.sendOrderPrintMsg(printParam, finalOrderInfo.getIsPrint() == 1); -// log.info("订单{}事务提交后,发送打印消息", orderId); - } - }); - } else { - // 非事务环境下直接发送(兼容无事务场景) - String printParam = orderInfo.getId() + "_" + (!"after-pay".equals(orderInfo.getPayMode()) ? 1 : 0) + "_1"; - rabbitPublisher.sendOrderPrintMsg(printParam, orderInfo.getIsPrint() == 1); -// log.info("非事务环境下,直接发送订单{}打印消息", orderId); - } + upOrderInfo(orderInfo, orderInfo.getOrderAmount(), + LocalDateTime.now(), null, PayEnums.VIP_PAY); } + shopRechargeService.recharge(payment.getShopId(), payment.getSourceId(), payment.getRelatedId(), + BigDecimal.valueOf(czgCallBackDto.getAmount()).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN), + payment.getId(), payment.getSourceType(), bizEnum, orderInfo == null); } - - } - - // 分销奖励 -// if (shopUser != null) { -// distributionUserService.distribute(payment.getId(), payment.getOrderNo(), payment.getAmount(), shopUser.getUserId(), payment.getShopId(), "recharge"); -// } -// if (orderInfo != null) { -// distributionUserService.distribute(payment.getId(), payment.getOrderNo(), payment.getAmount(), orderInfo.getUserId(), payment.getShopId(), "recharge"); -// } } else if (PayTypeConstants.SourceType.MEMBER_PAY.equals(payment.getSourceType())) { //购买会员 ShopUser shopUser = shopUserService.getById(payment.getSourceId()); memberConfigService.joinMember(payment.getShopId(), shopUser.getUserId(), payment.getRelatedId()); - // 充值赠送积分 -// memberConfigService.deliver(shopUser.getMainShopId(), shopUser.getUserId(), TableValueConstant.MemberExpFlow.Type.COST, payment.getAmount(), null, payment.getId()); - - // 分销员开通 } else if (PayTypeConstants.SourceType.DISTRIBUTION.equals(payment.getSourceType())) { distributionUserService.open(payment.getSourceId(), payment.getAmount(), payment.getShopId(), payment.getId()); } else if (PayTypeConstants.SourceType.POINT.equals(payment.getSourceType())) { @@ -1300,14 +1247,14 @@ public class OrderInfoCustomServiceImpl implements OrderInfoCustomService { shopUserUseInfo(orderInfo, shopUser); // 后续 赠送等功能 挂账支付不赠送 if (!orderInfo.getPayType().equals(PayEnums.CREDIT_PAY.getValue())) { - FunUtils.safeRunVoid(() -> consumerCouponService.receiveConsumerCoupon(shopUser.getSourceShopId(), orderInfo.getId(), - orderInfo.getPayAmount(), shopUser.getUserId(), shopUser.getId()), "订单{}消费赠券失败", orderInfo.getId()); - FunUtils.safeRunVoid(() -> pointsConfigService.consumeAwardPoints(shopUser, orderInfo), "订单{}赠送积分失败", orderInfo.getId()); - - FunUtils.safeRunVoid(() -> consumeCashbackService.cashback(orderInfo.getShopId(), shopUser.getUserId(), - orderInfo.getPayAmount(), orderInfo.getId(), orderInfo.getOrderNo()), "订单{}消费返现失败", orderInfo.getId()); - + if (!orderInfo.getPayType().equals(PayEnums.FREE_PAY.getValue())) { + FunUtils.safeRunVoid(() -> consumerCouponService.receiveConsumerCoupon(shopUser.getSourceShopId(), orderInfo.getId(), + orderInfo.getPayAmount(), shopUser.getUserId(), shopUser.getId()), "订单{}消费赠券失败", orderInfo.getId()); + FunUtils.safeRunVoid(() -> pointsConfigService.consumeAwardPoints(shopUser, orderInfo), "订单{}赠送积分失败", orderInfo.getId()); + FunUtils.safeRunVoid(() -> consumeCashbackService.cashback(orderInfo.getShopId(), shopUser.getUserId(), + orderInfo.getPayAmount(), orderInfo.getId(), orderInfo.getOrderNo()), "订单{}消费返现失败", orderInfo.getId()); + } FunUtils.safeRunVoid(() -> { if (shopUser.getIsVip().equals(0)) { // 消费累计成为会员的情况 diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java index 7ab5be449..3d609ac97 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/PayServiceImpl.java @@ -425,15 +425,16 @@ public class PayServiceImpl implements PayService { return CzgResult.failure("支付密码错误"); } } - if (shopUser.getIsVip().equals(0)) { - //更新会员 - ShopUser updateInfo = new ShopUser(); - updateInfo.setIsVip(1); - updateInfo.setJoinTime(LocalDateTime.now()); - updateInfo.setId(payParam.getShopUserId()); - shopUserService.updateById(updateInfo); - } - shopRechargeService.recharge(shopUser.getMainShopId(), shopUser.getId(), payParam.getRechargeDetailId(), payParam.getAmount(), null, "cash", ShopUserFlowBizEnum.CASH_IN); +// if (shopUser.getIsVip().equals(0)) { +// //更新会员 +// ShopUser updateInfo = new ShopUser(); +// updateInfo.setIsVip(1); +// updateInfo.setJoinTime(LocalDateTime.now()); +// updateInfo.setId(payParam.getShopUserId()); +// shopUserService.updateById(updateInfo); +// } + shopRechargeService.recharge(shopUser.getMainShopId(), shopUser.getId(), payParam.getRechargeDetailId(), + payParam.getAmount(), null, "cash", ShopUserFlowBizEnum.CASH_IN, true); return CzgResult.success(); } @@ -825,19 +826,19 @@ public class PayServiceImpl implements PayService { // 退款分销还原 FunUtils.safeRunVoid(() -> distributionUserService.refund(orderId, orderNo), "订单id:{} 退款,分销处理失败", orderId); - if (userId != null) { - 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)); - } - }, - "订单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)); + } + }, "订单id:{} 退款,积分返还处理失败", orderId); } @Override