From f727a93931f801bbcd3b5eb0275169cf55a87d5e Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期日, 22 九月 2024 22:40:56 +0800
Subject: [PATCH] 1.优惠券-使用条件-根据满减还是无门槛控制 2.商品限购-根据payment_time来控制
---
src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateUserDTO.java | 2
src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java | 2
src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java | 2
src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java | 3
src/main/java/com/mzl/flower/service/payment/OrderService.java | 27 ++++++++
src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java | 2
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateActivyController.java | 19 +++++-
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateVipController.java | 14 +++-
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplatePointController.java | 14 +++-
src/main/java/com/mzl/flower/web/v2/coupon/CouponTemplateUserController.java | 36 +++++++-----
src/main/resources/mapper/payment/OrderMapper.xml | 10 +-
11 files changed, 93 insertions(+), 38 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java
index ce17931..6e2b34e 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateActivyDTO.java
@@ -111,7 +111,7 @@
@ApiModelProperty(value = "使用条件,满多少钱")
@NotNull(message = "使用条件不能为空")
@Max(value = 99999999,message = "使用条件不能超过99999999")
- @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
+// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
private BigDecimal minOrderAmount;
/**
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java
index a43f004..4c42fa6 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplatePointDTO.java
@@ -61,7 +61,7 @@
@ApiModelProperty(value = "使用条件")
@NotNull(message = "使用条件不能为空")
@Max(value = 99999999,message = "使用条件不能超过99999999")
- @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
+// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
private BigDecimal minOrderAmount;
/**
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 2bbdf17..bee84cf 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
@@ -59,7 +59,7 @@
@ApiModelProperty(value = "使用条件")
@NotNull(message = "使用条件不能为空")
@Max(value = 99999999,message = "使用条件不能超过99999999")
- @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
+// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
private BigDecimal minOrderAmount;
/**
diff --git a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java
index 37bfa1d..96a9138 100644
--- a/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java
+++ b/src/main/java/com/mzl/flower/dto/request/coupon/CreateCouponTemplateVipDTO.java
@@ -53,7 +53,7 @@
@ApiModelProperty(value = "使用条件")
@NotNull(message = "使用条件不能为空")
@Max(value = 99999999,message = "使用条件不能超过99999999")
- @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
+// @DecimalMin(value = "0.01", inclusive = true,message = "使用条件大于0")
private BigDecimal minOrderAmount;
diff --git a/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java b/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java
index a893c08..6dd5dc4 100644
--- a/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java
+++ b/src/main/java/com/mzl/flower/mapper/payment/OrderMapper.java
@@ -50,5 +50,6 @@
"LEFT JOIN t_customer_info c ON t1.create_by = c.user_id ")
List<Order> getOrderInfoByReceiveTime();
- Integer getFlowerCompleteNumToday(@Param("userId") String userId,@Param("flowerId") Long flowerId);
+ int getFlowerCompleteNumWithinTimeRange(@Param("userId") String userId ,@Param("flowerId") Long flowerId,
+ @Param("startTime") LocalDateTime startTime, @Param("endTime") LocalDateTime endTime);
}
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 68f2395..770572e 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -65,6 +65,7 @@
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
+import java.time.LocalTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -1575,7 +1576,31 @@
}
public Integer getFlowerCompleteNumToday(String userId,Long flowerId){
- Integer completeNum= orderMapper.getFlowerCompleteNumToday(userId,flowerId);
+
+ int completeNum = 0;
+ // 获取当前时间
+ LocalDateTime now = LocalDateTime.now();
+ // 构造今天的17:00
+ LocalDateTime todayAtFivePM = LocalDateTime.of(LocalDate.now(), LocalTime.of(17, 0));
+ // 定义时间区间的开始和结束时间
+ LocalDateTime startTime;
+ LocalDateTime endTime;
+
+ if (now.isAfter(todayAtFivePM)) {
+ // 当前时间大于今天的17:00,取今天17:00到明天17:00的区间
+ startTime = todayAtFivePM;
+ endTime = todayAtFivePM.plusDays(1); // 明天的17:00
+ } else {
+ // 当前时间小于今天的17:00,取昨天17:00到今天17:00的区间
+ startTime = todayAtFivePM.minusDays(1); // 昨天的17:00
+ endTime = todayAtFivePM; // 今天的17:00
+ }
+
+ // 调用Mapper方法,传递开始时间和结束时间
+ completeNum = orderMapper.getFlowerCompleteNumWithinTimeRange(userId, flowerId, startTime, endTime);
+
return completeNum;
+
+
}
}
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 d1282d6..08026a8 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
@@ -177,11 +177,22 @@
private void valid(CreateCouponTemplateActivyDTO dto){
- if (StringUtils.isNotBlank(dto.getCouponDiscountType())
- && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
- && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
- throw new ValidationException("优惠券使用条件不能小于面值金额");
+// if (StringUtils.isNotBlank(dto.getCouponDiscountType())
+// && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
+// && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
+// throw new ValidationException("优惠券使用条件不能小于面值金额");
+// }
+ if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) {
+
+ if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){
+ throw new ValidationException("优惠券使用条件不能小于0");
+ }
+ if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){
+ throw new ValidationException("优惠券使用条件不能小于面值金额");
+ }
+
}
+
if (StringUtils.isNotBlank(dto.getCouponDiscountType())
&& dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
&& dto.getCouponDiscountValue().compareTo(BigDecimal.ZERO) <= 0) {
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 2f05ceb..b9dddbe 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
@@ -216,11 +216,17 @@
private void valid(CreateCouponTemplatePointDTO dto){
- if (StringUtils.isNotBlank(dto.getCouponDiscountType())
- && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
- && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
- throw new ValidationException("优惠券使用条件不能小于面值金额");
+ if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) {
+
+ if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){
+ throw new ValidationException("优惠券使用条件不能小于0");
+ }
+ if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){
+ throw new ValidationException("优惠券使用条件不能小于面值金额");
+ }
+
}
+
if (StringUtils.isNotBlank(dto.getCouponDiscountType())
&& dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
&& dto.getCouponDiscountValue().compareTo(BigDecimal.ZERO) <= 0) {
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 d8be3ea..344ce2f 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
@@ -6,6 +6,7 @@
import com.mzl.flower.base.R;
import com.mzl.flower.base.ReturnDataDTO;
import com.mzl.flower.config.exception.ValidationException;
+import com.mzl.flower.dto.request.coupon.CreateCouponTemplateActivyDTO;
import com.mzl.flower.dto.request.coupon.CreateCouponTemplateBO;
import com.mzl.flower.dto.request.coupon.CreateCouponTemplateUserDTO;
import com.mzl.flower.dto.request.coupon.QueryCouponDTO;
@@ -45,14 +46,8 @@
@ApiOperation(value = "新增", notes = "新增")
public ResponseEntity<ReturnDataDTO> create(@Validated @RequestBody CreateCouponTemplateUserDTO dto) {
- if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
- throw new ValidationException("优惠券使用条件不能小于面值金额");
- }
- if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) {
- throw new ValidationException("无门槛的订单金额必须为0");
- }
-
+ valid(dto);
CreateCouponTemplateBO couponTemplateBO = new CreateCouponTemplateBO();
BeanUtils.copyProperties(dto, couponTemplateBO);
@@ -77,14 +72,7 @@
dto.setId(id);
- if (dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType()) && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
- throw new ValidationException("优惠券使用条件不能小于面值金额");
- }
-
- if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) {
- throw new ValidationException("无门槛的订单金额必须为0");
- }
-
+ valid(dto);
CouponTemplateDO couponTemplateDO = couponTemplateService.getById(dto.getId());
if (null == couponTemplateDO) {
@@ -187,4 +175,22 @@
}
+ private void valid(CreateCouponTemplateUserDTO dto){
+ if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) {
+
+ if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){
+ throw new ValidationException("优惠券使用条件不能小于0");
+ }
+ if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){
+ throw new ValidationException("优惠券使用条件不能小于面值金额");
+ }
+
+ }
+
+ if (dto.getCouponDiscountType().equals(CouponTypeEnum.ZERO.getType()) && dto.getMinOrderAmount().compareTo(BigDecimal.ZERO) != 0) {
+ throw new ValidationException("无门槛的订单金额必须为0");
+ }
+ }
+
+
}
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 ba54ed5..1af24f4 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
@@ -162,11 +162,17 @@
throw new ValidationException("会员等级不存在");
}
- if (StringUtils.isNotBlank(dto.getCouponDiscountType())
- && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
- && dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0) {
- throw new ValidationException("优惠券使用条件不能小于面值金额");
+ if (StringUtils.isNotBlank(dto.getCouponDiscountType()) && dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())) {
+
+ if(dto.getMinOrderAmount().compareTo(BigDecimal.ZERO)<=0){
+ throw new ValidationException("优惠券使用条件不能小于0");
+ }
+ if(dto.getMinOrderAmount().compareTo(dto.getCouponDiscountValue()) < 0){
+ throw new ValidationException("优惠券使用条件不能小于面值金额");
+ }
+
}
+
if (StringUtils.isNotBlank(dto.getCouponDiscountType())
&& dto.getCouponDiscountType().equals(CouponTypeEnum.DISCOUNT.getType())
&& dto.getCouponDiscountValue().compareTo(BigDecimal.ZERO) <= 0) {
diff --git a/src/main/resources/mapper/payment/OrderMapper.xml b/src/main/resources/mapper/payment/OrderMapper.xml
index 8d5e6e0..18894dc 100644
--- a/src/main/resources/mapper/payment/OrderMapper.xml
+++ b/src/main/resources/mapper/payment/OrderMapper.xml
@@ -261,15 +261,15 @@
join t_order_point_goods opg on opg.goods_record_id = gr.id
where opg.order_id = #{orderId}
</select>
- <select id="getFlowerCompleteNumToday" resultType="java.lang.Integer">
+ <select id="getFlowerCompleteNumWithinTimeRange" resultType="java.lang.Integer">
select IFNULL(sum(oi.num),0) as complete_num
from t_order o
left join t_order_item oi
on o.id=oi.order_id
where o.DELETEd=0 and oi.DELETEd=0
- and o.status_backend not in ('PENDING','CANCEL','REFUND')
- and o.create_by=#{userId}
- AND oi.flower_id=#{flowerId}
- AND o.complete_time BETWEEN DATE_SUB(CURDATE(), INTERVAL 1 DAY) + INTERVAL 17 HOUR AND CURDATE() + INTERVAL 17 HOUR
+ and o.status_backend not in ('PENDING','CANCEL','REFUND')
+ and o.create_by=#{userId}
+ AND oi.flower_id=#{flowerId}
+ AND o.payment_time BETWEEN #{startTime} AND #{endTime}
</select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3