From 24681c81c09022f584a57006f2534b5f74723414 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 30 六月 2026 09:27:31 +0800
Subject: [PATCH] 初始化项目

---
 yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java b/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
index 862e130..ab215f6 100644
--- a/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
+++ b/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
@@ -77,7 +77,6 @@
     @Resource
     public SocialClientApi socialClientApi;
 
-    // TODO @鑺嬭壙锛氬湪璇︾粏棰勮涓嬶紱
     @Override
     public KeyValue<CombinationActivityDO, CombinationProductDO> validateCombinationRecord(
             Long userId, Long activityId, Long headId, Long skuId, Integer count) {
@@ -97,7 +96,7 @@
         }
 
         // 2. 鐖舵嫾鍥㈡槸鍚﹀瓨鍦�,鏄惁宸茬粡婊′簡
-        if (headId != null) {
+        if (isJoinCombination(headId)) {
             // 2.1. 鏌ヨ杩涜涓殑鐖舵嫾鍥�
             CombinationRecordDO record = combinationRecordMapper.selectByHeadId(headId, CombinationRecordStatusEnum.IN_PROGRESS.getStatus());
             if (record == null) {
@@ -129,7 +128,7 @@
             throw exception(COMBINATION_JOIN_ACTIVITY_PRODUCT_NOT_EXISTS);
         }
         // 4.3 鏍¢獙搴撳瓨鏄惁鍏呰冻
-        if (count >= sku.getStock()) {
+        if (count > sku.getStock()) {
             throw exception(COMBINATION_ACTIVITY_UPDATE_STOCK_FAIL);
         }
 
@@ -153,6 +152,16 @@
         return new KeyValue<>(activity, product);
     }
 
+    /**
+     * 鏄惁鍔犲叆宸叉湁鎷煎洟銆�
+     *
+     * 鍓嶇寮�鍥㈡椂鍙兘涓嶄紶 headId锛屼篃鍙兘浼� {@link CombinationRecordDO#HEAD_ID_GROUP}锛岄兘搴旇涓烘柊寮�鍥紱
+     * 鍙湁浼犲叆鐪熷疄鍥㈤暱璁板綍缂栧彿鏃讹紝鎵嶉渶瑕佹寜鍙傚洟鏍¢獙鐖舵嫾鍥€��
+     */
+    private static boolean isJoinCombination(Long headId) {
+        return headId != null && ObjUtil.notEqual(headId, CombinationRecordDO.HEAD_ID_GROUP);
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public CombinationRecordDO createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) {
@@ -166,7 +175,7 @@
         ProductSkuRespDTO sku = productSkuApi.getSku(reqDTO.getSkuId());
         CombinationRecordDO record = CombinationActivityConvert.INSTANCE.convert(reqDTO, keyValue.getKey(), user, spu, sku);
         // 2.1. 濡傛灉鏄洟闀块渶瑕佽缃� headId 涓� CombinationRecordDO#HEAD_ID_GROUP
-        if (record.getHeadId() == null) {
+        if (!isJoinCombination(record.getHeadId())) {
             record.setStartTime(LocalDateTime.now())
                     .setExpireTime(LocalDateTime.now().plusHours(keyValue.getKey().getLimitDuration()))
                     .setHeadId(CombinationRecordDO.HEAD_ID_GROUP);

--
Gitblit v1.9.3