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