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/coupon/CouponTemplateServiceImpl.java |   18 +++++++++++++++++-
 1 files changed, 17 insertions(+), 1 deletions(-)

diff --git a/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImpl.java b/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImpl.java
index 8c25cb8..d4323c6 100644
--- a/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImpl.java
+++ b/yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/coupon/CouponTemplateServiceImpl.java
@@ -52,6 +52,9 @@
 
     @Override
     public Long createCouponTemplate(CouponTemplateCreateReqVO createReqVO) {
+        // 鏍¢獙鍙戞斁鏁伴噺涓嶈兘灏忎簬姣忎汉闄愰鏁伴噺锛堜粎鍦� CouponTakeTypeEnum.USER 鐢ㄦ埛棰嗗彇鏃讹級
+        validateTotalCountNotLessThanTakeLimitCount(createReqVO.getTakeType(), createReqVO.getTotalCount(),
+                createReqVO.getTakeLimitCount());
         // 鏍¢獙鍟嗗搧鑼冨洿
         validateProductScope(createReqVO.getProductScope(), createReqVO.getProductScopeValues());
         // 鎻掑叆
@@ -66,8 +69,11 @@
     public void updateCouponTemplate(CouponTemplateUpdateReqVO updateReqVO) {
         // 鏍¢獙瀛樺湪
         CouponTemplateDO couponTemplate = validateCouponTemplateExists(updateReqVO.getId());
+        // 鏍¢獙鍙戞斁鏁伴噺涓嶈兘灏忎簬姣忎汉闄愰鏁伴噺锛堜粎鍦� CouponTakeTypeEnum.USER 鐢ㄦ埛棰嗗彇鏃讹級
+        validateTotalCountNotLessThanTakeLimitCount(updateReqVO.getTakeType(), updateReqVO.getTotalCount(),
+                updateReqVO.getTakeLimitCount());
         // 鏍¢獙鍙戞斁鏁伴噺涓嶈兘杩囧皬锛堜粎鍦� CouponTakeTypeEnum.USER 鐢ㄦ埛棰嗗彇鏃讹級
-        if (CouponTakeTypeEnum.isUser(couponTemplate.getTakeType())
+        if (CouponTakeTypeEnum.isUser(updateReqVO.getTakeType())
                 && !isTotalCountUnlimited(updateReqVO.getTotalCount()) // 闈炰笉闄愬埗鎬诲彂鏀炬暟閲�
                 && updateReqVO.getTotalCount() < couponTemplate.getTakeCount()) {
             throw exception(COUPON_TEMPLATE_TOTAL_COUNT_TOO_SMALL, couponTemplate.getTakeCount());
@@ -104,6 +110,16 @@
         return couponTemplate;
     }
 
+    private void validateTotalCountNotLessThanTakeLimitCount(Integer takeType, Integer totalCount, Integer takeLimitCount) {
+        // 淇 https://gitee.com/yudaocode/yudao-mall-uniapp/issues/IJLP6Q 鍙嶉
+        if (CouponTakeTypeEnum.isUser(takeType)
+                && !isTakeLimitCountUnlimited(takeLimitCount)
+                && !isTotalCountUnlimited(totalCount)
+                && takeLimitCount > totalCount) {
+            throw exception(COUPON_TEMPLATE_NOT_ENOUGH);
+        }
+    }
+
     private void validateProductScope(Integer productScope, List<Long> productScopeValues) {
         if (Objects.equals(PromotionProductScopeEnum.SPU.getScope(), productScope)) {
             productSpuApi.validateSpuList(productScopeValues);

--
Gitblit v1.9.3