From b1bb9bcbe6a451855a298478a6d9690183e2e991 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期五, 30 八月 2024 14:33:50 +0800
Subject: [PATCH] 1.优惠券customerId 改成Long

---
 src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java              |   11 ++
 src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java               |    4 
 src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java  |    2 
 src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java            |    2 
 src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java |   29 +++++++
 src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java           |    9 ++
 src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java     |   53 ++++++++++++-
 src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java          |    4 
 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java       |   77 +++++++++++++++++++
 src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java                         |   27 ++++++
 src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java        |    3 
 src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java  |    6 +
 src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml                   |    5 +
 13 files changed, 220 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java
index 01a29b8..5d34ca0 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java
@@ -72,6 +72,6 @@
 
     @ApiModelProperty(value = "指定的用户列表id")
     @NotNull(message = "指定的用户列表id不能为空")
-    private List<String> pointCostomIdList;
+    private List<Long> pointCostomIdList;
 
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java
new file mode 100644
index 0000000..a309696
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryActivityEffectCouponDTO.java
@@ -0,0 +1,29 @@
+package com.mzl.flower.dto.request.coupon;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+@ApiModel("App活动优惠券实体类")
+public class QueryActivityEffectCouponDTO {
+
+
+    @ApiModelProperty(value = "优惠券类型(COUPON_TYPE)" ,hidden = true)
+    private String couponDiscountType;
+
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)",hidden = true)
+    private String getType;
+
+    @ApiModelProperty(value = "领取用户类型(COUPON_GET_USER_TYPE)",hidden = true)
+    private String getUserType;
+
+    @ApiModelProperty(value = "优惠券种类(COUPON_CATEGORY)",hidden = true)
+    private String category;
+
+    @ApiModelProperty(value = "优惠券状态(COUPON_STATUS)",hidden = true)
+    private String status;
+
+
+}
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java
index 1ea37c0..7f473a7 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java
@@ -5,7 +5,7 @@
 
 
 @Data
-public class QueryCouponDTO extends QueryCouponVipDTO {
+public class QueryCouponDTO {
 
 
     @ApiModelProperty(value = "id")
@@ -29,4 +29,6 @@
     @ApiModelProperty(value = "优惠券状态")
     private String status;
 
+
+
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java
index 9abcb4c..76fb073 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponVipDTO.java
@@ -13,9 +13,7 @@
     @ApiModelProperty(value = "优惠券类型")
     private String couponDiscountType;
 
-
     @ApiModelProperty(value = "id")
     private String id;
-
 
 }
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
index bc9145b..8c3d62a 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
@@ -7,8 +7,8 @@
 @Data
 public class QueryExistCouponDTO {
 
-    @ApiModelProperty(value = "优惠券ID")
-    private String customerId;
+    @ApiModelProperty(value = "商户ID")
+    private Long customerId;
 
     @ApiModelProperty(value = "优惠券ID")
     private String couponId;
diff --git a/src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java b/src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java
new file mode 100644
index 0000000..918f2a5
--- /dev/null
+++ b/src/main/java/com/mzl/flower/enums/CouponGetTypeEnum.java
@@ -0,0 +1,27 @@
+package com.mzl.flower.enums;
+
+import lombok.Getter;
+
+/**
+ * 优惠券领取渠道
+ */
+public enum CouponGetTypeEnum {
+
+
+    HOME("home","首页弹框"),
+    ACTIVITY("activity","活动入口"),
+    CENTER("center","领券中心"),
+
+
+    ;
+
+    @Getter
+    private String type;
+
+    private String desc;
+    private CouponGetTypeEnum(String type, String desc){
+        this.type=type;
+        this.desc=desc;
+    }
+
+}
diff --git a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java
index 5122677..142bbfa 100644
--- a/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java
+++ b/src/main/java/com/mzl/flower/mapper/coupon/CouponTemplateMapperCustom.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.mzl.flower.dto.request.coupon.BatchCouponTemplateDTO;
 import com.mzl.flower.dto.request.coupon.QueryActivePointCouponDTO;
+import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO;
 import com.mzl.flower.dto.request.coupon.QueryCouponDTO;
 import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
 import com.mzl.flower.entity.coupon.CouponTemplateDO;
@@ -46,4 +47,6 @@
     List<CouponTemplateVO> getCouponPointList(@Param("param") QueryActivePointCouponDTO dto);
 
     Page<CouponTemplateVO> getPointPage(Page page,@Param("param") QueryActivePointCouponDTO dto);
+
+    List<CouponTemplateVO> getActivityEffectList(@Param("param") QueryActivityEffectCouponDTO dto);
 }
diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
index 28a7355..46fe72b 100644
--- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
+++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -56,6 +56,15 @@
      * @param queryExistCouponDTO
      * @return
      */
-    int getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO);
+    Integer getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO);
+
+    /**
+     * 根据优惠券的ID来查找已经领取的优惠券的数量
+     * @param couponId
+     * @return
+     */
+    Integer getExistGainCouponRecordAmountById(String couponId);
+
+    Integer getUserGainCouponRecordAmountById(String couponId,Long customerId);
 
 }
diff --git a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java
index 648effb..a1b7339 100644
--- a/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java
+++ b/src/main/java/com/mzl/flower/service/coupon/CouponTemplateService2.java
@@ -82,5 +82,14 @@
      */
     Page<CouponTemplateVO> getPointPage(Page page, QueryActivePointCouponDTO dto);
 
+    /**
+     * 获取活动优惠券
+     * 1.需要领取时间在有效期内的
+     * 2.已经发布的
+     * @param dto
+     * @return
+     */
+    List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto);
+
     void exchangeCoupon(ExchangeCouponDTO dto);
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
index a56b81e..68ce170 100644
--- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -67,6 +67,8 @@
     @Override
     public boolean createCouponRecord(CreateCouponRecordDTO dto) {
 
+        // TODO 需要控制超领
+
         final Customer customer = customerMapper.selectById(dto.getCustomerId());
         if(null==customer){
             throw new ValidationException("商户信息不存在");
@@ -77,10 +79,32 @@
             throw new ValidationException("优惠券不存在");
         }
 
-        // TODO  活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发
+        // 活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发
+        if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && (
+                couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) || couponTemplateDO.getCategory().equals(CouponCategoryEnum.POINT.getStatus())
+                )){
+            // 获取当前优惠券已经领取的数量
+            final Integer gainTotal = getExistGainCouponRecordAmountById(couponTemplateDO.getId());
+            if(couponTemplateDO.getCouponAmount().compareTo(gainTotal)<=0){
+                throw new ValidationException("当前优惠券已经领完!");
+            }
+        }
 
+        // 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券
+        if(StringUtils.isNotBlank(couponTemplateDO.getCategory()) && couponTemplateDO.getCategory().equals(CouponCategoryEnum.ACTIVITY.getStatus()) ){
+            // 查看当前优惠券的领取时间在不在设置的领取时间范围类
+            LocalDateTime now = LocalDateTime.now();
+            // 判断当前时间是否在领取时间范围内
+            if (!(now.isAfter(couponTemplateDO.getGetStartDate()) && now.isBefore(couponTemplateDO.getGetEndDate()))) {
+                throw new ValidationException("当前时间不在优惠券的领取时间范围内,无法操作!");
+            }
 
-        // TODO 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券
+            // 获取当前优惠券已经领取的数量
+            final Integer customGainTotal = getUserGainCouponRecordAmountById(couponTemplateDO.getId(),customer.getId());
+            if(couponTemplateDO.getGetLimit().compareTo(customGainTotal)<=0){
+                throw new ValidationException("超出个人领取限制,每人限领"+couponTemplateDO.getGetLimit()+"张!");
+            }
+        }
 
 
         CouponRecordDO couponRecordDO=new CouponRecordDO();
@@ -146,7 +170,6 @@
 
             }
         }
-
 
         return baseMapper.insert(couponRecordDO)>0;
     }
@@ -297,13 +320,33 @@
     }
 
     @Override
-    public int getExistCouponAmount(QueryExistCouponDTO dto) {
+    public Integer getExistCouponAmount(QueryExistCouponDTO dto) {
         QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
         queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
                 .eq(StringUtils.isNotBlank(dto.getCouponId()), CouponRecordDO::getCouponId,dto.getCouponId())
-                .eq(StringUtils.isNotBlank(dto.getCustomerId()),CouponRecordDO::getCustomerId,dto.getCustomerId())
+                .eq(null!=dto.getCustomerId(),CouponRecordDO::getCustomerId,dto.getCustomerId())
                 .eq(StringUtils.isNotBlank(dto.getCategory()),CouponRecordDO::getCategory,dto.getCategory());
 
         return baseMapper.selectCount(queryWrapper);
     }
+
+    @Override
+    public Integer getExistGainCouponRecordAmountById(String couponId) {
+        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
+        queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
+                .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId)
+                ;
+        return baseMapper.selectCount(queryWrapper);
+    }
+
+    @Override
+    public Integer getUserGainCouponRecordAmountById(String couponId, Long customerId) {
+        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
+        queryWrapper.lambda().eq(CouponRecordDO::getDeleted, TrueOrFalseEnum.FALSE.isFlag())
+                .eq(StringUtils.isNotBlank(couponId), CouponRecordDO::getCouponId,couponId)
+                .eq(null!=customerId,CouponRecordDO::getCustomerId,customerId)
+                ;
+
+        return baseMapper.selectCount(queryWrapper);
+    }
 }
diff --git a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
index d5df0b5..6364853 100644
--- a/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
+++ b/src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -382,4 +382,10 @@
         customerPointDetailMapper.insert(detail);
     }
 
+    @Override
+    public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) {
+
+        return couponTemplateMapperCustom.getActivityEffectList(dto);
+    }
+
 }
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
new file mode 100644
index 0000000..7108d92
--- /dev/null
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
@@ -0,0 +1,77 @@
+package com.mzl.flower.web.v2.coupon;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.mzl.flower.base.BaseController;
+import com.mzl.flower.base.R;
+import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO;
+import com.mzl.flower.dto.request.coupon.QueryCouponDTO;
+import com.mzl.flower.dto.response.coupon.CouponTemplateVO;
+import com.mzl.flower.enums.CouponCategoryEnum;
+import com.mzl.flower.enums.CouponGetTypeEnum;
+import com.mzl.flower.enums.CouponStatusEnum;
+import com.mzl.flower.service.coupon.CouponTemplateService2;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+/**
+ * @author @TaoJie
+ * @since 2024-08-22
+ */
+@RestController
+@RequestMapping("/api/v2/coupon/app")
+@Api(value = "优惠券管理-小程序", tags = "优惠券管理-小程序")
+@Validated
+public class CouponTemplateAppController extends BaseController {
+
+    @Autowired
+    CouponTemplateService2 couponTemplateService;
+
+    @GetMapping("/home/list")
+    @ApiOperation(value = "查询-首页弹框", notes = "查询-首页弹框")
+    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> homeList(QueryActivityEffectCouponDTO dto) {
+        // TODO  需要查找到领取时间优惠券的开始时间和结束时间内的优惠券
+
+        // 活动优惠券
+        dto.setCategory(CouponCategoryEnum.ACTIVITY.getStatus());
+        // 已经发布
+        dto.setStatus(CouponStatusEnum.ACTIVE.getStatus());
+        // 首页弹窗
+        dto.setGetType(CouponGetTypeEnum.HOME.getType());
+
+        couponTemplateService.getActivityEffectList(dto);
+
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+    @GetMapping("/activy/list")
+    @ApiOperation(value = "查询-活动", notes = "查询-活动")
+    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> activyList(QueryActivityEffectCouponDTO dto) {
+        // TODO
+
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+    @GetMapping("/center/list")
+    @ApiOperation(value = "查询-中心", notes = "查询-中心")
+    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> centerList(QueryActivityEffectCouponDTO dto) {
+        // TODO
+
+        return returnData(R.SUCCESS.getCode(),null);
+    }
+
+
+
+
+
+
+
+}
diff --git a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
index 1fca610..6340109 100644
--- a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
+++ b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
@@ -69,6 +69,11 @@
         <include refid="QueryPointSql" />
     </select>
 
+<!--    app活动优惠券-->
+    <select id="getActivityEffectList" resultType="com.mzl.flower.dto.response.coupon.CouponTemplateVO">
+
+    </select>
+
     <sql id="QueryPointSql">
         select *
         from t_coupon_template

--
Gitblit v1.9.3