From 9de2d03f174fb223e76cf4e17e2e4ff35895bdd4 Mon Sep 17 00:00:00 2001 From: zhangsan <646228430@qq.com> Date: Wed, 30 Jul 2025 18:25:15 +0800 Subject: [PATCH] =?UTF-8?q?7.30=20=E8=A7=A3=E5=86=B3=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=90=8C=E4=B8=80=E4=B8=AA=E6=8B=BC=E5=9B=A2=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=A4=E4=B8=AA=E7=9A=84bug=EF=BC=8C=E6=98=8E=E7=A1=AE?= =?UTF-8?q?=E4=B8=8B=E4=B8=80=E6=AD=A5=E4=BB=BB=E5=8A=A1=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev-ops/nginx/html/js/index.js | 23 +++++++++++++++---- .../lock/TradeLockLockOrderService.java | 1 - .../trade/service/task/TradeTaskService.java | 1 + .../adapter/repository/TradeRepository.java | 1 + .../trigger/http/MarketIndexController.java | 3 ++- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/dev-ops/nginx/html/js/index.js b/docs/dev-ops/nginx/html/js/index.js index 3ac23e3..159ceaa 100644 --- a/docs/dev-ops/nginx/html/js/index.js +++ b/docs/dev-ops/nginx/html/js/index.js @@ -81,14 +81,27 @@ document.addEventListener('DOMContentLoaded', () => { soldBox.textContent = `${allTeamUserCount}人已抢`; } - /* ------------- 渲染拼团列表 ------------- */ + /* ------------- 渲染拼团列表 (按 teamId 去重) ------------- */ function renderTeams(list = [], groupPrice = 0) { - if (!list?.length) { + // 1) 先按 teamId 聚合,只取第一条 + const uniq = []; + const seen = new Set(); + list.forEach(t => { + if (!seen.has(t.teamId)) { + uniq.push(t); + seen.add(t.teamId); + } + }); + + if (!uniq.length) { groupTitle.textContent = '小伙伴,赶紧去开团吧,做村里最靓的仔。'; return; } + + // 2) 绘制 userList.innerHTML = ''; - list.forEach(t => userList.appendChild(makeItem(t, groupPrice))); + uniq.forEach(t => userList.appendChild(makeItem(t, groupPrice))); + initUserMarquee(3); initCountdown(); } @@ -125,7 +138,9 @@ document.addEventListener('DOMContentLoaded', () => { div.className = 'user-item'; div.innerHTML = `
-
+
${maskedId}
仅剩 ${leftNum} 人成团 diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/lock/TradeLockLockOrderService.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/lock/TradeLockLockOrderService.java index 6837ad9..d7e4732 100644 --- a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/lock/TradeLockLockOrderService.java +++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/lock/TradeLockLockOrderService.java @@ -38,7 +38,6 @@ public class TradeLockLockOrderService implements ITradeLockOrderService { return repository.queryGroupBuyProgress(teamId); } - //TODO:设置超时未付款自动取消lock,释放资源 @Override public MarketPayOrderEntity lockMarketPayOrder(UserEntity userEntity, PayActivityEntity payActivityEntity, PayDiscountEntity payDiscountEntity) throws Exception{ log.info("拼团交易-锁定营销优惠支付订单:{} activityId:{} goodsId:{}", userEntity.getUserId(), payActivityEntity.getActivityId(), payDiscountEntity.getGoodsId()); diff --git a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/task/TradeTaskService.java b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/task/TradeTaskService.java index 40196ab..ca8e3cc 100644 --- a/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/task/TradeTaskService.java +++ b/group-buying-sys-domain/src/main/java/edu/whut/domain/trade/service/task/TradeTaskService.java @@ -68,6 +68,7 @@ public class TradeTaskService implements ITradeTaskService { * @return key——任务总量、successCount、errorCount、retryCount */ private Map execNotifyJob(List notifyTaskEntityList) throws Exception { + //successCount:成功回调的任务数量 int successCount = 0, errorCount = 0, retryCount = 0; for (NotifyTaskEntity notifyTask : notifyTaskEntityList) { // 回调小商城中的groupBuyNotify接口 success 成功,error 失败 diff --git a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java index db33a06..68aebff 100644 --- a/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java +++ b/group-buying-sys-infrastructure/src/main/java/edu/whut/infrastructure/adapter/repository/TradeRepository.java @@ -46,6 +46,7 @@ import java.util.concurrent.TimeUnit; @RequiredArgsConstructor // todo:逆向后,还要处理 redis recoveryCount // todo:用户退单后,他的参与活动次数应该释放,应该还能再次参加拼团 +// todo:支付商城端的消息处理,已支付->退款 未支付->定时任务查询->调用拼团系统释放锁单。 public class TradeRepository implements ITradeRepository { private final IGroupBuyOrderDao groupBuyOrderDao; diff --git a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java index d627d2d..fb36ff2 100644 --- a/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java +++ b/group-buying-sys-trigger/src/main/java/edu/whut/trigger/http/MarketIndexController.java @@ -32,7 +32,8 @@ public class MarketIndexController implements IMarketIndexService { private final IIndexGroupBuyMarketService indexGroupBuyMarketService; - @RateLimiterAccessInterceptor(key = "userId", fallbackMethod = "queryGroupBuyMarketConfigFallBack", permitsPerSecond = 1.0d, blacklistCount = 1) + // 每秒放 5 个令牌,超限 5 次后算进黑名单 + @RateLimiterAccessInterceptor(key = "userId", fallbackMethod = "queryGroupBuyMarketConfigFallBack", permitsPerSecond = 5.0d, blacklistCount = 5) @PostMapping("/query_group_buy_market_config") @Override public Response queryGroupBuyMarketConfig(