From f727a93931f801bbcd3b5eb0275169cf55a87d5e Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期日, 22 九月 2024 22:40:56 +0800
Subject: [PATCH] 1.优惠券-使用条件-根据满减还是无门槛控制 2.商品限购-根据payment_time来控制

---
 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java |   74 +++++++++++++++++++++----------------
 1 files changed, 42 insertions(+), 32 deletions(-)

diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
index a472602..344ce2f 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java
@@ -6,22 +6,20 @@
 import com.mzl.flower.base.R;
 import com.mzl.flower.base.ReturnDataDTO;
 import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.dto.request.coupon.CreateCouponTemplateActivyDTO;
 import com.mzl.flower.dto.request.coupon.CreateCouponTemplateBO;
-import com.mzl.flower.dto.request.coupon.CreateCouponTemplatePointDTO;
 import com.mzl.flower.dto.request.coupon.CreateCouponTemplateUserDTO;
 import com.mzl.flower.dto.request.coupon.QueryCouponDTO;
 import com.mzl.flower.dto.response.coupon.CouponTemplatePointVO;
 import com.mzl.flower.dto.response.coupon.CouponTemplateUserVO;
 import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
 import com.mzl.flower.entity.coupon.CouponTemplateDO;
-import com.mzl.flower.enums.CouponCategoryEnum;
-import com.mzl.flower.enums.CouponGetUserTypeEnum;
-import com.mzl.flower.enums.CouponTypeEnum;
-import com.mzl.flower.enums.CouponUsageTypeEnum;
+import com.mzl.flower.enums.*;
 import com.mzl.flower.service.coupon.CouponTemplateService2;
 import com.mzl.flower.utils.ConverterUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -29,11 +27,6 @@
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
 
 
 /**
@@ -53,21 +46,15 @@
     @ApiOperation(value = "新增", notes = "新增")
     public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponTemplateUserDTO dto) {
 
-        if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
-            throw new ValidationException("订单金额不能小于折扣金额");
-        }
 
-        if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) {
-            throw new ValidationException("无门槛的订单金额必须为0");
-        }
-
+        valid(dto);
 
         CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO();
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
         // 设置成指定用户
-        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.POINT.getType());
-        // 设置成积分优惠券
+        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.TARGET.getType());
+        // 设置成用户优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.USER.getStatus());
         // 设置默认类型
         couponTemplateBO.setUsageType(CouponUsageTypeEnum.GET_AFTER_TIME.getType());
@@ -81,17 +68,11 @@
 
     @PutMapping("/{id}")
     @ApiOperation(value = "修改", notes = "修改")
-    public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateUserDTO dto) {
+    public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateUserDTO dto) {
 
+        dto.setId(id);
 
-        if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
-            throw new ValidationException("订单金额不能小于折扣金额");
-        }
-
-        if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) {
-            throw new ValidationException("无门槛的订单金额必须为0");
-        }
-
+        valid(dto);
 
         CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getId());
         if (null == couponTemplateDO) {
@@ -99,11 +80,12 @@
         }
 
         CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO();
+        BeanUtils.copyProperties(couponTemplateDO,couponTemplateBO);
         BeanUtils.copyProperties(dto, couponTemplateBO);
 
          // 设置成指定用户
-        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.POINT.getType());
-        // 设置成积分优惠券
+        couponTemplateBO.setGetUserType(CouponGetUserTypeEnum.TARGET.getType());
+        // 设置成用户优惠券
         couponTemplateBO.setCategory(CouponCategoryEnum.USER.getStatus());
         // 设置默认类型
         couponTemplateBO.setUsageType(CouponUsageTypeEnum.GET_AFTER_TIME.getType());
@@ -138,7 +120,7 @@
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplatePointVO>>> page(
             Page page, QueryCouponDTO dto
     ) {
-        // 设置只查询积分优惠券的
+        // 设置只查询用户优惠券的
         dto.setCategory(CouponCategoryEnum.USER.getStatus());
         Page<CouponTemplateVO> resultPage = couponTemplateService.getPage(page, dto);
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transPage(resultPage, CouponTemplateUserVO.class));
@@ -148,7 +130,7 @@
     @ApiOperation(value = "查询-全部", notes = "查询-全部")
     public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> list(QueryCouponDTO dto
     ) {
-        // 设置只查询积分优惠券的
+        // 设置只查询用户优惠券的
         dto.setCategory(CouponCategoryEnum.USER.getStatus());
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplateUserVO.class));
     }
@@ -161,6 +143,16 @@
         CouponTemplateDO couponTemplateDO = couponTemplateService.getById(id);
         if (null == couponTemplateDO) {
             throw new ValidationException("优惠券不存在");
+        }
+
+        if(StringUtils.isNotBlank(couponTemplateDO.getStatus())
+                &&  couponTemplateDO.getStatus().equals(CouponStatusEnum.ACTIVE.getStatus())){
+            throw new ValidationException("已发布的的商品不可重复发布");
+        }
+
+        if(StringUtils.isNotBlank(couponTemplateDO.getStatus())
+              &&  couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){
+            throw new ValidationException("已下架的商品不可重复上架");
         }
 
         couponTemplateService.activeCouponTemplate(id);
@@ -183,4 +175,22 @@
     }
 
 
+    private void valid(CreateCouponTemplateUserDTO dto){
+        if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) {
+
+            if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){
+                throw new ValidationException("优惠券使用条件不能小于0");
+            }
+            if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){
+                throw new ValidationException("优惠券使用条件不能小于面值金额");
+            }
+
+        }
+
+        if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) {
+            throw new ValidationException("无门槛的订单金额必须为0");
+        }
+    }
+
+
 }

--
Gitblit v1.9.3