From f249c277d066e151a84b766a6b82c3bbdbe1326b Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期二, 03 九月 2024 13:24:01 +0800
Subject: [PATCH] 1.优惠券-所有修改方法dto自传id 2.优惠券-积分-批量接口改成post方法 3.优惠券-定时任务-会员优惠券每月一号凌晨未使用自动过期 4.优惠券-优惠券下单接口
---
src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java | 26 ++++++++
/dev/null | 15 -----
src/main/java/com/mzl/flower/web/v2/coupon/CouponRecordController.java | 4 +
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java | 4 +
src/main/java/com/mzl/flower/schedule/ScheduleService.java | 7 ++
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java | 59 +++++++++++++++++++
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java | 4 +
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java | 3
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java | 29 ++++++++-
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java | 15 ++--
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java | 9 --
11 files changed, 139 insertions(+), 36 deletions(-)
diff --git a/src/main/java/com/mzl/flower/schedule/ScheduleService.java b/src/main/java/com/mzl/flower/schedule/ScheduleService.java
index 2a0c3f6..75f9e07 100644
--- a/src/main/java/com/mzl/flower/schedule/ScheduleService.java
+++ b/src/main/java/com/mzl/flower/schedule/ScheduleService.java
@@ -197,4 +197,11 @@
log.info("会员优惠券结束:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
}
+ @Scheduled(cron = "0 30 0 1 * ?")
+ public void expiredVipCouponRecordList() {
+ log.info("会员优惠券过期开始:" + DateFormatUtils.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ couponRecordService.expiredCouponRecordByListCurMonth();
+ 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 bc3a84e..accb4a5 100644
--- a/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
+++ b/src/main/java/com/mzl/flower/service/coupon/CouponRecordService.java
@@ -75,5 +75,31 @@
boolean checkCurMonVipCouponExists(String couponId, Long customId, LocalDateTime startDateTime,LocalDateTime endDateTime);
+ /**
+ * 优惠券使用
+ * @param couponId
+ * @param orderId
+ * @return
+ */
+ boolean useCoupon(String couponId,String orderId);
+
+ /**
+ * 优惠券退单
+ * @param couponId
+ * @param orderId
+ * @return
+ */
+ boolean cancelCouponUsage(String couponId,String orderId);
+
+ /**
+ * 根据订单号查找优惠券信息
+ * @param orderId
+ * @return
+ */
+ List<CouponRecordDO> getCouponListByOrderId(String orderId) ;
+
+
+ CouponRecordDO getCouponByOrderId(String orderId) ;
+
}
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 71f0bc9..18e029a 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
@@ -249,6 +249,7 @@
public boolean grantVipCouponRecordList() {
try{
+
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);
@@ -424,4 +425,62 @@
return baseMapper.selectCount(queryWrapper)>0;
}
+
+ @Transactional
+ @Override
+ public boolean useCoupon(String couponId, String orderId) {
+ // 优惠券为空
+ if(StringUtils.isBlank(couponId)){
+ throw new IllegalArgumentException("无效的优惠券");
+ }
+ // 验证优惠券存在且有效
+ final CouponRecordDO couponRecordDO = baseMapper.selectById(couponId);
+ if(null==couponRecordDO || StringUtils.isBlank(couponRecordDO.getOrderId()) ){
+ throw new IllegalArgumentException("无效的优惠券");
+ }
+ if(couponRecordDO.getStatus().equals(CouponUsedStatusEnum.USED.getType())){
+ throw new IllegalArgumentException("优惠券已经被使用");
+ }
+ if(couponRecordDO.getStatus().equals(CouponUsedStatusEnum.EXPIRED.getType()) || LocalDateTime.now().isAfter(couponRecordDO.getEffectiveEnd())){
+ throw new IllegalArgumentException("优惠券已过期");
+ }
+ if(StringUtils.isBlank(orderId)){
+ throw new IllegalArgumentException("订单id不能为空");
+ }
+
+ // 优惠券使用操作
+ couponRecordDO.setStatus(CouponUsedStatusEnum.USED.getType());
+ couponRecordDO.setUsedTime(LocalDateTime.now());
+ couponRecordDO.setOrderId(orderId);
+
+ return baseMapper.updateById(couponRecordDO)>0;
+ }
+
+ @Transactional
+ @Override
+ public boolean cancelCouponUsage(String couponId, String orderId) {
+ // 查询订单使用的优惠券
+ final CouponRecordDO couponRecordDO = getCouponByOrderId(orderId);
+ // TODO
+
+ return false;
+ }
+
+ @Override
+ public List<CouponRecordDO> getCouponListByOrderId(String orderId) {
+ QueryWrapper<CouponRecordDO> queryWrapper=new QueryWrapper<>();
+ queryWrapper.lambda().eq(CouponRecordDO::getDeleted,TrueOrFalseEnum.FALSE.isFlag())
+ .eq(CouponRecordDO::getOrderId,orderId);
+
+ return baseMapper.selectList(queryWrapper);
+ }
+
+ @Override
+ public CouponRecordDO getCouponByOrderId(String orderId) {
+ final List<CouponRecordDO> couponRecordDOList = getCouponListByOrderId(orderId);
+ if(CollectionUtils.isNotEmpty(couponRecordDOList)){
+ return couponRecordDOList.get(0);
+ }
+ return null;
+ }
}
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 9cd7758..e7cdb4f 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
@@ -66,7 +66,9 @@
@PutMapping("/{id}")
@ApiOperation(value = "修改", notes = "修改")
- public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponRecordDTO dto) {
+ public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponRecordDTO dto) {
+
+ dto.setId(id);
CouponRecordDO couponRecordDO= couponRecordService.getById(dto.getId());
if(null==couponRecordDO){
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
index b0d20bc..9b7109e 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java
@@ -65,8 +65,10 @@
@PutMapping("/{id}")
@ApiOperation(value = "修改", notes = "修改")
- public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateActivyDTO dto) {
+ public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateActivyDTO dto) {
+ // 手动设置id值
+ dto.setId(id);
// 信息验证
valid(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
index 5faa3c9..7658080 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateAppController.java
@@ -5,11 +5,14 @@
import com.mzl.flower.base.BaseController;
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
+import com.mzl.flower.config.exception.ValidationException;
import com.mzl.flower.config.security.SecurityUtils;
+import com.mzl.flower.dto.request.coupon.CreateCouponRecordDTO;
import com.mzl.flower.dto.request.coupon.QueryActivityEffectCouponDTO;
import com.mzl.flower.dto.request.coupon.QueryMineCouponRecordDTO;
import com.mzl.flower.dto.response.coupon.CouponTemplateAppVO;
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.CouponGetTypeEnum;
import com.mzl.flower.enums.CouponStatusEnum;
@@ -19,12 +22,11 @@
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.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;
+import org.springframework.web.bind.annotation.*;
/**
@@ -113,5 +115,26 @@
}
+ @PostMapping("/receive")
+ @ApiOperation(value = "优惠券领取", notes = "优惠券领取")
+ public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponRecordDTO dto) {
+
+ final CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getCouponId());
+ if(null==couponTemplateDO){
+ throw new ValidationException("优惠券不存在");
+ }
+
+ 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())){
+ throw new ValidationException("优惠券已下架");
+ }
+
+
+ couponRecordService.createCouponRecord(dto);
+ return returnData(R.SUCCESS.getCode(), null);
+ }
+
}
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java
index 2ab7890..aa89964 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateController.java
@@ -46,8 +46,10 @@
@PutMapping("/{id}")
@ApiOperation(value = "修改", notes = "修改")
- public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateDTO dto) {
+ public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateDTO dto) {
+ // 手动设置id值
+ dto.setId(id);
CouponTemplateDO couponTemplateDO= couponTemplateService.getById(dto.getId());
if(null==couponTemplateDO){
throw new ValidationException("优惠券不存在");
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateCustomerController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateCustomerController.java
deleted file mode 100644
index 8e02b37..0000000
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateCustomerController.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.mzl.flower.web.v2.coupon;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
-* @author @TaoJie
-* @since 2024-08-24
-*/
-@RestController
-@RequestMapping("/v2/coupon-template-point-custom-re")
-public class CouponTemplateCustomerController {
-
-
-}
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 4b51ad0..9817a86 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
@@ -65,8 +65,9 @@
@PutMapping("/{id}")
@ApiOperation(value = "修改", notes = "修改")
- public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplatePointDTO dto) {
+ public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplatePointDTO dto) {
// 信息校验
+ dto.setId(id);
valid(dto);
CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getId());
@@ -153,9 +154,9 @@
return returnData(R.SUCCESS.getCode(), null);
}
- @PutMapping("/batch/expire")
+ @PostMapping("/batch/expire")
@ApiOperation(value = "批量下架", notes = "批量下架")
- public ResponseEntity<ReturnDataDTO> expireBatch(BatchCouponTemplateDTO dto) {
+ public ResponseEntity<ReturnDataDTO> expireBatch(@RequestBody BatchCouponTemplateDTO dto) {
couponTemplateService.expireBatchCouponTemplate(dto);
@@ -165,9 +166,9 @@
- @PutMapping("/batch/active")
+ @PostMapping("/batch/active")
@ApiOperation(value = "批量发布", notes = "批量发布")
- public ResponseEntity<ReturnDataDTO> activeBatch(BatchCouponTemplateDTO dto) {
+ public ResponseEntity<ReturnDataDTO> activeBatch(@RequestBody BatchCouponTemplateDTO dto) {
couponTemplateService.activeBatchCouponTemplate(dto);
@@ -175,9 +176,9 @@
}
- @DeleteMapping("/batch/del")
+ @PostMapping("/batch/del")
@ApiOperation(value = "批量删除", notes = "批量删除")
- public ResponseEntity<ReturnDataDTO> deleteBatch(BatchCouponTemplateDTO dto) {
+ public ResponseEntity<ReturnDataDTO> deleteBatch(@RequestBody BatchCouponTemplateDTO dto) {
couponTemplateService.deleteBatchCouponTemplate(dto);
return returnData(R.SUCCESS.getCode(), null);
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..5b9f19d 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
@@ -7,7 +7,6 @@
import com.mzl.flower.base.ReturnDataDTO;
import com.mzl.flower.config.exception.ValidationException;
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;
@@ -29,11 +28,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;
/**
@@ -81,8 +75,9 @@
@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("订单金额不能小于折扣金额");
diff --git a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
index 158a82b..be32580 100644
--- a/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
+++ b/src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java
@@ -63,8 +63,9 @@
@PutMapping("/{id}")
@ApiOperation(value = "修改", notes = "修改")
- public ResponseEntity<ReturnDataDTO> update(@Validated @RequestBody CreateCouponTemplateVipDTO dto) {
+ public ResponseEntity<ReturnDataDTO> update(@PathVariable String id,@Validated @RequestBody CreateCouponTemplateVipDTO dto) {
+ dto.setId(id);
// 信息验证
valid(dto);
--
Gitblit v1.9.3