From b676641e11008cb05b4e595850dbbf617fb7da56 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期四, 29 八月 2024 17:37:06 +0800
Subject: [PATCH] 1.积分优惠券-获取全部已发布的优惠券

---
 src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java          |   11 +++++
 src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java        |    4 +-
 src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java |   36 ++++++++++++++---
 src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java      |   19 +++++++++
 src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java |   10 +++++
 src/main/java/com/mzl/flower/dto/request/coupon/QueryCouponDTO.java           |    3 +
 src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml               |   13 ++++--
 7 files changed, 81 insertions(+), 15 deletions(-)

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 105e331..1ea37c0 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
@@ -26,4 +26,7 @@
     @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)")
     private String category;
 
+    @ApiModelProperty(value = "优惠券状态")
+    private String status;
+
 }
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
new file mode 100644
index 0000000..bc9145b
--- /dev/null
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/QueryExistCouponDTO.java
@@ -0,0 +1,19 @@
+package com.mzl.flower.dto.request.coupon;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+
+@Data
+public class QueryExistCouponDTO {
+
+    @ApiModelProperty(value = "优惠券ID")
+    private String customerId;
+
+    @ApiModelProperty(value = "优惠券ID")
+    private String couponId;
+
+    @ApiModelProperty(value = "优惠券种类(活动优惠券、用户优惠券、会员优惠券,积分优惠券)")
+    private String category;
+
+}
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 a4b5162..8ae3a4d 100644
--- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
+++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -1,12 +1,13 @@
 package com.mzl.flower.service.coupon;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO;
 import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO;
 import com.mzl.flower.dto.request.coupon.QueryCouponStatisticsBO;
+import com.mzl.flower.dto.request.coupon.QueryExistCouponDTO;
 import com.mzl.flower.dto.response.coupon.CouponRecordVO;
 import com.mzl.flower.entity.coupon.CouponRecordDO;
-import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
 
@@ -49,4 +50,12 @@
     int statisCouponTemplateCurMonCount(QueryCouponStatisticsBO queryCouponStatisticsBO);
 
     int statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO);
+
+    /**
+     * 根据优惠券种类,优惠券ID,用户的ID查找优惠券的记录数量
+     * @param queryExistCouponDTO
+     * @return
+     */
+    int getExistCouponAmount(QueryExistCouponDTO queryExistCouponDTO);
+
 }
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 de6d5f1..222f64b 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
@@ -9,15 +9,13 @@
 import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO;
 import com.mzl.flower.dto.request.coupon.QueryCouponRecordDTO;
 import com.mzl.flower.dto.request.coupon.QueryCouponStatisticsBO;
+import com.mzl.flower.dto.request.coupon.QueryExistCouponDTO;
 import com.mzl.flower.dto.response.coupon.CouponRecordVO;
 import com.mzl.flower.entity.coupon.CouponRecordDO;
 import com.mzl.flower.entity.coupon.CouponTemplateDO;
 import com.mzl.flower.entity.customer.Customer;
 import com.mzl.flower.entity.system.User;
-import com.mzl.flower.enums.CouponCategoryEnum;
-import com.mzl.flower.enums.CouponUsageTimeTypeEnum;
-import com.mzl.flower.enums.CouponUsageTypeEnum;
-import com.mzl.flower.enums.CouponUsedStatusEnum;
+import com.mzl.flower.enums.*;
 import com.mzl.flower.mapper.coupon.CouponRecordMapper;
 import com.mzl.flower.mapper.coupon.CouponRecordMapperCustom;
 import com.mzl.flower.mapper.customer.CustomerMapper;
@@ -74,14 +72,27 @@
             throw new ValidationException("商户信息不存在");
         }
 
+        final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId());
+
+        // TODO  活动优惠券和积分优惠券需要根据库存来控制- 根据优惠券的发放数量来控制有没有超发
+
+
+        // TODO 根据用户领取设置的getLimit 查看当前用户是否已经超领优惠券
+
+
         CouponRecordDO couponRecordDO=new CouponRecordDO();
         BeanUtils.copyProperties(dto,couponRecordDO);
         couponRecordDO.create(SecurityUtils.getUserId());
         // 设置为待使用状态
         couponRecordDO.setStatus(CouponUsedStatusEnum.UNUSED.getType());
 
+        // 根据商户设置用户id
+        if(StringUtils.isBlank(dto.getUserId()) && StringUtils.isNotBlank(customer.getUserId())){
+            couponRecordDO.setUserId(customer.getUserId());
+        }
+
         // 优惠券字段冗余
-        final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId());
+
         if(null!=couponTemplateDO){
             couponRecordDO.setCategory(couponTemplateDO.getGetUserType());
             couponRecordDO.setCouponCode(couponTemplateDO.getCouponCode());
@@ -125,11 +136,11 @@
                     }
                     if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.HOUR.getType())) {
                         // 小时
-                        couponRecordDO.setEffectiveEnd(currentTime.plusDays(couponTemplateDO.getUsageTimeNum()));
+                        couponRecordDO.setEffectiveEnd(currentTime.plusHours(couponTemplateDO.getUsageTimeNum()));
                     }
                     if (couponTemplateDO.getUsageTimeType().equals(CouponUsageTimeTypeEnum.MINUTE.getType())) {
                         // 分钟
-                        couponRecordDO.setEffectiveEnd(currentTime.plusDays(couponTemplateDO.getUsageTimeNum()));
+                        couponRecordDO.setEffectiveEnd(currentTime.plusMinutes(couponTemplateDO.getUsageTimeNum()));
                     }
 
                 }
@@ -285,4 +296,15 @@
     public int statisCouponPointCurMonPontAmonut(QueryCouponStatisticsBO queryCouponStatisticsBO) {
         return couponRecordMapperCustom.statisCouponPointCurMonPointAmonut(queryCouponStatisticsBO);
     }
+
+    @Override
+    public int 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(StringUtils.isNotBlank(dto.getCategory()),CouponRecordDO::getCategory,dto.getCategory());
+
+        return baseMapper.selectCount(queryWrapper);
+    }
 }
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
index 8a137ef..9cd7758 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java
@@ -52,10 +52,10 @@
             throw new ValidationException("优惠券不存在");
         }
 
-        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && !couponTemplateDO.getStatus().equals(CouponStatusEnum.INACTIVE.getStatus())){
+        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.INACTIVE.getStatus())){
             throw new ValidationException("优惠券还未发布");
         }
-        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && !couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){
+        if(StringUtils.isNotBlank(couponTemplateDO.getStatus()) && couponTemplateDO.getStatus().equals(CouponStatusEnum.EXPIRED.getStatus())){
             throw new ValidationException("优惠券已下架");
         }
 
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
index 5fbb65b..2d943f5 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java
@@ -11,6 +11,7 @@
 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.CouponStatusEnum;
 import com.mzl.flower.enums.CouponTypeEnum;
 import com.mzl.flower.enums.CouponUsageTypeEnum;
 import com.mzl.flower.service.coupon.CouponTemplateService2;
@@ -190,6 +191,15 @@
         return returnData(R.SUCCESS.getCode(), ConverterUtil.transObject(couponTemplateVO, CouponTemplatePointVO.class));
     }
 
+    @GetMapping("/active/list")
+    @ApiOperation(value = "查询-全部", notes = "查询-全部")
+    public ResponseEntity<ReturnDataDTO<Page<CouponTemplateVO>>> activelist() {
+        // 设置只查询积分优惠券的
+        QueryCouponDTO dto=new QueryCouponDTO();
+        dto.setCategory(CouponCategoryEnum.POINT.getStatus());
+        dto.setStatus(CouponStatusEnum.ACTIVE.getStatus());
+        return returnData(R.SUCCESS.getCode(), ConverterUtil.transList(couponTemplateService.getList(dto), CouponTemplatePointVO.class));
+    }
 
     private void valid(CreateCouponTemplatePointDTO dto){
 
diff --git a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
index 62f1f26..11af393 100644
--- a/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
+++ b/src/main/resources/mapper/coupon/CouponTemplateMapperCustom.xml
@@ -70,11 +70,11 @@
             create_by_user.nick_name as createByName,
             IFNULL(get_num.cnt, 0) as getNum,
             IFNULL(t.coupon_amount, 0) - IFNULL(get_num.cnt, 0) as unGetNum
-            from t_coupon_template t
-            left join t_user create_by_user
-            on t.create_by =create_by_user.id
-            left join (select coupon_template_id,count(1) as cnt  from t_coupon_usage where deleted=0 group by coupon_template_id) get_num
-            on t.id=get_num.coupon_template_id
+        from t_coupon_template t
+        left join t_user create_by_user
+        on t.create_by =create_by_user.id
+        left join (select coupon_id,count(1) as cnt  from t_coupon_record where deleted=0 group by coupon_id) get_num
+        on t.id=get_num.coupon_id
         ) t
         where t.deleted=0
         <if test="param.name != null and param.name != ''">
@@ -95,6 +95,9 @@
         <if test="param.category != null and param.category != ''">
             AND t.category =  #{param.category}
         </if>
+        <if test="param.status != null and param.status != ''">
+            AND t.status =  #{param.status}
+        </if>
         order by t.create_time desc
     </sql>
 

--
Gitblit v1.9.3