From 5280158e29fc5c3b0fd5e764410a87de1a996725 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期二, 03 九月 2024 10:00:58 +0800
Subject: [PATCH] 1.优惠券-返回字段添加 2.优惠券-会员定时任务

---
 src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java          |    3 +
 src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java   |   44 +++++++++++++-
 src/main/java/com/mzl/flower/schedule/ScheduleService.java                    |   12 ++++
 src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateVipVO.java     |   26 ++++++++
 src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java |   35 ++++++++++-
 src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateUserVO.java    |   27 +++++++++
 6 files changed, 141 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java
index 96d57a3..b2d167c 100644
--- a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplatePointVO.java
@@ -1,15 +1,12 @@
 package com.mzl.flower.dto.response.coupon;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.mzl.flower.base.AbstractTransDTO;
 import com.mzl.flower.base.annotation.DictTrans;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 @Data
 @ApiModel("积分记录")
@@ -87,4 +84,45 @@
 
 
 
+    /**
+     * 领取后有效类型(COUPON_usage_time_type)天、小时、分钟
+     */
+    @ApiModelProperty(value = "领取后有效类型(COUPON_USAGE_TIME_TYPE)")
+    @DictTrans(target = "usageTimeTypeName",codeType = "COUPON_USAGE_TIME_TYPE")
+    private String usageTimeType;
+
+    /**
+     * 领取后有效时间整数,比如90(天,小时,分钟)
+     */
+    @ApiModelProperty(value = "领取后有效时间整数")
+    private Integer usageTimeNum;
+
+    @ApiModelProperty(value = "使用时间类型(COUPON_USAGE_TYPE)")
+    @DictTrans(target = "usageTypeName",codeType = "COUPON_USAGE_TYPE")
+    private String usageType;
+
+    @ApiModelProperty(value = "使用时间类型")
+    private String usageTypeName;
+
+    @ApiModelProperty(value = "领取后有效类型名称")
+    private String usageTimeTypeName;
+
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)")
+    @DictTrans(target = "getTypeName",codeType = "COUPON_GET_TYPE")
+    private String getType;
+
+    /**
+     * 领取渠道(COUPON_GET_TYPE)首页弹窗、活动入口、领券中心
+     */
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)")
+    private String getTypeName;
+
+    /**
+     * 每人限领
+     */
+    @ApiModelProperty(value = "每人限领")
+    private Integer getLimit;
+
+
+
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateUserVO.java b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateUserVO.java
index b7d4179..b7e4be7 100644
--- a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateUserVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateUserVO.java
@@ -113,4 +113,31 @@
     @ApiModelProperty(value = "领取后有效时间整数")
     private Integer usageTimeNum;
 
+
+    @ApiModelProperty(value = "使用时间类型(COUPON_USAGE_TYPE)")
+    @DictTrans(target = "usageTypeName",codeType = "COUPON_USAGE_TYPE")
+    private String usageType;
+
+    @ApiModelProperty(value = "使用时间类型")
+    private String usageTypeName;
+
+    @ApiModelProperty(value = "领取后有效类型名称")
+    private String usageTimeTypeName;
+
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)")
+    @DictTrans(target = "getTypeName",codeType = "COUPON_GET_TYPE")
+    private String getType;
+
+    /**
+     * 领取渠道(COUPON_GET_TYPE)首页弹窗、活动入口、领券中心
+     */
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)")
+    private String getTypeName;
+
+    /**
+     * 每人限领
+     */
+    @ApiModelProperty(value = "每人限领")
+    private Integer getLimit;
+
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateVipVO.java b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateVipVO.java
index c1b88d8..7ed7135 100644
--- a/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateVipVO.java
+++ b/src/main/java/com/mzl/flower/dto/response/coupon/CouponTemplateVipVO.java
@@ -121,4 +121,30 @@
     @ApiModelProperty(value = "会员等级对象")
     private Member member;
 
+
+
+    @ApiModelProperty(value = "使用时间类型(COUPON_USAGE_TYPE)")
+    @DictTrans(target = "usageTypeName",codeType = "COUPON_USAGE_TYPE")
+    private String usageType;
+
+    @ApiModelProperty(value = "使用时间类型")
+    private String usageTypeName;
+
+
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)")
+    @DictTrans(target = "getTypeName",codeType = "COUPON_GET_TYPE")
+    private String getType;
+
+    /**
+     * 领取渠道(COUPON_GET_TYPE)首页弹窗、活动入口、领券中心
+     */
+    @ApiModelProperty(value = "领取渠道(COUPON_GET_TYPE)")
+    private String getTypeName;
+
+    /**
+     * 每人限领
+     */
+    @ApiModelProperty(value = "每人限领")
+    private Integer getLimit;
+
 }
diff --git a/src/main/java/com/mzl/flower/schedule/ScheduleService.java b/src/main/java/com/mzl/flower/schedule/ScheduleService.java
index eea6f6f..2a0c3f6 100644
--- a/src/main/java/com/mzl/flower/schedule/ScheduleService.java
+++ b/src/main/java/com/mzl/flower/schedule/ScheduleService.java
@@ -9,6 +9,7 @@
 import com.mzl.flower.mapper.flower.FlowerCategoryMapper;
 import com.mzl.flower.mapper.partner.PartnerMapper;
 import com.mzl.flower.mapper.payment.OrderMapper;
+import com.mzl.flower.service.coupon.CouponRecordService;
 import com.mzl.flower.service.flower.FlowerCategoryService;
 import com.mzl.flower.service.flower.FlowerService;
 import com.mzl.flower.service.payment.*;
@@ -56,6 +57,9 @@
 
     @Autowired
     private OrderItemSettlementService orderItemSettlementService;
+
+    @Autowired
+    private CouponRecordService couponRecordService;
 
     @Scheduled(cron = "1 0/20 * * * ?")
     public void calculateAvePrice() {
@@ -185,4 +189,12 @@
         billService.generateBill(date.plusDays(-1));
         log.info("账单结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
     }
+
+    @Scheduled(cron = "0 30 0 1 * ?")
+    public void grantVipCouponRecordList() {
+        log.info("会员优惠券开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+        couponRecordService.grantVipCouponRecordList();
+        log.info("会员优惠券结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+    }
+
 }
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 76e6ee8..bc3a84e 100644
--- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
+++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -6,6 +6,7 @@
 import com.mzl.flower.dto.response.coupon.CouponRecordVO;
 import com.mzl.flower.entity.coupon.CouponRecordDO;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -72,5 +73,7 @@
      */
     void checkCouponExpired(QueryMineCouponRecordDTO dto);
 
+    boolean checkCurMonVipCouponExists(String couponId, Long customId, LocalDateTime startDateTime,LocalDateTime endDateTime);
+
 
 }
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 2de8630..71f0bc9 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
@@ -32,6 +32,7 @@
 import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjusters;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -271,11 +272,16 @@
                     couponRecordDO.setEffectiveStart(firstDayStart);
                     couponRecordDO.setEffectiveEnd(lastDayEnd);
                     couponRecordDO.setMemberId(couponTemplateDO.getMemberId());
-
                     // 创建信息
                     couponRecordDO.create();
-                    return couponRecordDO;
-                }).collect(Collectors.toList());
+                    if(!checkCurMonVipCouponExists(couponRecordDO.getCouponId(),couponRecordDO.getCustomerId(),firstDayStart,lastDayEnd)){
+                        return couponRecordDO;
+                    }else{
+                        return null;
+                    }
+
+                }).filter(Objects::nonNull)
+                        .collect(Collectors.toList());
 
                 // 批量保存等级下的优惠券信息
                 saveBatch(gradeCouponRecordList);
@@ -395,4 +401,27 @@
         // 将未使用的优惠券直接过期
         couponRecordMapperCustom.checkCouponExpired(dto);
     }
+
+    @Override
+    public boolean checkCurMonVipCouponExists(String couponId, Long customId, LocalDateTime startDateTime, LocalDateTime endDateTime) {
+
+        LocalDateTime now = LocalDateTime.now();
+        LocalDateTime firstDayStart = now.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0).withNano(0);
+        LocalDateTime lastDayEnd = now.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59).withNano(0);
+        if(null==startDateTime){
+            startDateTime=firstDayStart;
+        }
+        if(null==endDateTime){
+            endDateTime=lastDayEnd;
+        }
+
+        QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
+        queryWrapper.lambda().eq(CouponRecordDO::getDeleted,TrueOrFalseEnum.FALSE.isFlag())
+                .eq(CouponRecordDO::getCouponId,couponId)
+                .eq(CouponRecordDO::getCustomerId,customId)
+                .eq(CouponRecordDO::getEffectiveStart,startDateTime)
+                .eq(CouponRecordDO::getEffectiveEnd,endDateTime);
+        return  baseMapper.selectCount(queryWrapper)>0;
+
+    }
 }

--
Gitblit v1.9.3