From 16433ffdc2917329829890c49403b2e397f06408 Mon Sep 17 00:00:00 2001 From: zhangsan <646228430@qq.com> Date: Tue, 1 Jul 2025 13:22:38 +0800 Subject: [PATCH] =?UTF-8?q?7.1=20=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9Bbug?= =?UTF-8?q?=E3=80=81=E8=A1=A5=E5=85=85=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AbstractDiscountCalculateService.java | 15 +++++++++++---- .../activity/service/trial/node/MarketNode.java | 6 +++--- .../whut/trigger/http/MarketTradeController.java | 14 +++++++++++++- .../java/edu/whut/types/enums/ResponseCode.java | 4 ++++ 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/discount/AbstractDiscountCalculateService.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/discount/AbstractDiscountCalculateService.java index 1840e45..f25bf41 100644 --- a/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/discount/AbstractDiscountCalculateService.java +++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/discount/AbstractDiscountCalculateService.java @@ -1,22 +1,30 @@ package edu.whut.domain.activity.service.discount; +import edu.whut.domain.activity.adapter.repository.IActivityRepository; import edu.whut.domain.activity.model.valobj.DiscountTypeEnum; import edu.whut.domain.activity.model.valobj.GroupBuyActivityDiscountVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import java.math.BigDecimal; /** * 折扣计算服务抽象类 */ +@RequiredArgsConstructor +@Slf4j public abstract class AbstractDiscountCalculateService implements IDiscountCalculateService { - + final protected IActivityRepository repository; @Override public BigDecimal calculate(String userId, BigDecimal originalPrice, GroupBuyActivityDiscountVO.GroupBuyDiscount groupBuyDiscount) { // 1. 人群标签过滤, 只有当 discountType = TAG 时才检查用户是否在标签范围内 if (DiscountTypeEnum.TAG.equals(groupBuyDiscount.getDiscountType())){ boolean isCrowdRange = filterTagId(userId, groupBuyDiscount.getTagId()); - if (!isCrowdRange) return originalPrice; // 不在标签范围 → 无优惠 + if (!isCrowdRange) { + log.info("折扣优惠计算拦截,用户不再优惠人群标签范围内 userId:{}", userId); + return originalPrice; + } } // 2. 折扣优惠计算 return doCalculate(originalPrice, groupBuyDiscount); @@ -24,8 +32,7 @@ public abstract class AbstractDiscountCalculateService implements IDiscountCalcu // 人群过滤 - 限定人群优惠 private boolean filterTagId(String userId, String tagId) { - - return true; + return repository.isTagCrowdRange(tagId, userId); } //留给子类实现的抽象方法,真正去算“直减多少 / 满减多少 / N 元购” protected abstract BigDecimal doCalculate(BigDecimal originalPrice, GroupBuyActivityDiscountVO.GroupBuyDiscount groupBuyDiscount); diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/trial/node/MarketNode.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/trial/node/MarketNode.java index d12290a..7495601 100644 --- a/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/trial/node/MarketNode.java +++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/activity/service/trial/node/MarketNode.java @@ -98,9 +98,9 @@ public class MarketNode extends AbstractGroupBuyMarketSupport lockMarketPayOrder(LockMarketPayOrderRequestDTO lockMarketPayOrderRequestDTO) { try { @@ -108,6 +110,15 @@ public class MarketTradeController implements IMarketTradeService { .goodsId(goodsId) .activityId(activityId) .build()); + + // 人群限定 + if (!trialBalance.getIsVisible() || !trialBalance.getIsEnable()){ + return Response.builder() + .code(ResponseCode.E0007.getCode()) + .info(ResponseCode.E0007.getInfo()) + .build(); + } + //获取拼团活动配置信息 GroupBuyActivityDiscountVO discountVO = trialBalance.getGroupBuyActivityDiscountVO(); @@ -129,6 +140,7 @@ public class MarketTradeController implements IMarketTradeService { .goodsName(trialBalance.getGoodsName()) .originalPrice(trialBalance.getOriginalPrice()) .deductionPrice(trialBalance.getDeductionPrice()) + .payPrice(trialBalance.getPayPrice()) .outTradeNo(outTradeNo) .build()); diff --git a/group-buying-sys-types/src/main/java/edu/whut/types/enums/ResponseCode.java b/group-buying-sys-types/src/main/java/edu/whut/types/enums/ResponseCode.java index 40c8c77..6743f90 100644 --- a/group-buying-sys-types/src/main/java/edu/whut/types/enums/ResponseCode.java +++ b/group-buying-sys-types/src/main/java/edu/whut/types/enums/ResponseCode.java @@ -19,6 +19,10 @@ public enum ResponseCode { E0004("E0004", "拼团活动切量拦截"), E0005("E0005", "拼团组队失败,记录更新为0"), E0006("E0006", "拼团组队完结,锁单量已达成"), + E0007("E0007", "拼团人群限定,不可参与"), + E0101("E0101", "拼团活动未生效"), + E0102("E0102", "不在拼团活动有效时间内"), + E0103("E0103", "当前用户参与此拼团次数已达上限"), ; private String code;