From 27e984ee7b1ae110e68e0d90a9bb966f2537e1c6 Mon Sep 17 00:00:00 2001 From: hucs Date: Fri, 21 Feb 2025 15:12:21 +0800 Subject: [PATCH] fix --- .../controller/WxCustomController.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java index ed3e1f1..c1ddaef 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java @@ -26,13 +26,11 @@ import com.starry.admin.modules.order.service.IPlayOrderComplaintInfoService; import com.starry.admin.modules.order.service.IPlayOrderEvaluateInfoService; import com.starry.admin.modules.order.service.IPlayOrderInfoService; import com.starry.admin.modules.shop.module.entity.PlayClerkGiftInfoEntity; +import com.starry.admin.modules.shop.module.entity.PlayCouponDetailsEntity; import com.starry.admin.modules.shop.module.entity.PlayCouponInfoEntity; import com.starry.admin.modules.shop.module.entity.PlayGiftInfoEntity; import com.starry.admin.modules.shop.module.vo.PlayCommodityInfoVo; -import com.starry.admin.modules.shop.service.IPlayClerkGiftInfoService; -import com.starry.admin.modules.shop.service.IPlayCommodityInfoService; -import com.starry.admin.modules.shop.service.IPlayCouponInfoService; -import com.starry.admin.modules.shop.service.IPlayGiftInfoService; +import com.starry.admin.modules.shop.service.*; import com.starry.admin.modules.weichat.entity.*; import com.starry.admin.modules.weichat.entity.clerk.PlayClerkUserInfoResultVo; import com.starry.admin.modules.weichat.entity.costom.PlayCustomHideLevelStateEditVo; @@ -60,6 +58,7 @@ import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; +import java.util.Objects; /** * @author admin @@ -111,6 +110,8 @@ public class WxCustomController { @Resource private IPlayCouponInfoService playCouponInfoService; + @Resource + private IPlayCouponDetailsService couponDetailsService; @Resource private WxCustomMpService wxCustomMpService; @@ -278,12 +279,20 @@ public class WxCustomController { PlayCommodityInfoVo commodityInfo = playCommodityInfoService.queryCommodityInfo(vo.getCommodityId(), clerkUserInfo.getLevelId()); + BigDecimal couponMoney = BigDecimal.ZERO; for (String couponId : vo.getCouponIds()) { - PlayCouponInfoEntity couponInfo = playCouponInfoService.selectPlayCouponInfoById(couponId); + PlayCouponDetailsEntity couponDetailsEntity = couponDetailsService.getById(couponId); + if (Objects.isNull(couponDetailsEntity)) { + throw new CustomException("优惠券不存在"); + } + PlayCouponInfoEntity couponInfo = playCouponInfoService.selectPlayCouponInfoById(couponDetailsEntity.getCouponId()); String couponReasonForUnavailableUse = playCouponInfoService.getCouponReasonForUnavailableUse(couponInfo, "0", vo.getCommodityId(), vo.getCommodityQuantity(), commodityInfo.getCommodityPrice()); if (StrUtil.isNotBlank(couponReasonForUnavailableUse)) { throw new CustomException("优惠券不可用"); } + if (couponInfo.getDiscountType().equals("0")) { + couponMoney = couponMoney.add(couponInfo.getDiscountAmount()); + } } @@ -291,6 +300,11 @@ public class WxCustomController { BigDecimal money = commodityInfo.getCommodityPrice().multiply(new BigDecimal(vo.getCommodityQuantity())); + money = money.subtract(couponMoney); + if (money.compareTo(BigDecimal.ZERO) < 1) { + money = BigDecimal.ZERO; + } + if (money.compareTo(customUserInfo.getAccountBalance()) > 0) { throw new ServiceException("余额不足", 998); }