From f73c9f05cf37731a2f1f053f6768582e05275c86 Mon Sep 17 00:00:00 2001 From: xmzhao71 Date: Mon, 18 Sep 2023 18:37:33 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E4=BF=AE=E6=94=B9=E5=81=9C?= =?UTF-8?q?=E8=BD=A6=E5=8A=B5=E8=BF=87=E6=9C=9F=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/domain/po/WxCoupon.java | 10 +++- .../iformall/enums/EnumCouponValidType.java | 1 + .../service/impl/WxCouponServiceImpl.java | 54 +++++++++++-------- 3 files changed, 42 insertions(+), 23 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java index 9ccd37664..ca2018d79 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCoupon.java @@ -517,7 +517,6 @@ public class WxCoupon extends TenantEntity { return false; } - public Date getOuterRealValidDate(Date curr) { Date valid_date = null; if (this.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { @@ -525,7 +524,14 @@ public class WxCoupon extends TenantEntity { } else if (this.getValidType().equals(EnumCouponValidType.DAYS_AFTER_RECEIVING.getCode())) { int limit_days = this.getValidDays(); valid_date = DateUtils.getTimeAfterDays(limit_days, curr); - } else { + } else if (this.getValidType().equals(EnumCouponValidType.TIME_AND_DAYS.getCode())) { + // 时间范围和过期天数共存,最终过期时间以最小的为主 + int limit_days = this.getValidDays(); + valid_date = limit_days != 0 ? DateUtils.getTimeAfterDays(limit_days, curr) : DateUtils.getDayEnd(curr); + if (this.getValidEndDate().before(valid_date)) { + valid_date = this.getValidEndDate(); + } + } else { //永久有效 } return valid_date; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumCouponValidType.java b/mallinkService/src/main/java/com/iformall/enums/EnumCouponValidType.java index d62501caa..d2ed6aad5 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumCouponValidType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumCouponValidType.java @@ -9,6 +9,7 @@ public enum EnumCouponValidType { FOREVER(0, "永久有效"), BETWEEN_TWO_TIME(1, "时间范围"), DAYS_AFTER_RECEIVING(2, "领取后天数"), + TIME_AND_DAYS(3, "时间及天数,过期由最小的决定"), ; public static EnumCouponValidType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index d43ab5dc9..c3bc4b6b6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -564,27 +564,30 @@ public class WxCouponServiceImpl implements WxCouponService { } if (record.getValidType() != null) { - if (record.getValidType().equals(EnumCouponValidType.FOREVER.getCode())){ - record.setValidStartDate(null); - record.setValidEndDate(null); - record.setValidDays(null); - }else if( record.getValidType().equals(EnumCouponValidType.DAYS_AFTER_RECEIVING.getCode())) { - record.setValidStartDate(null); - record.setValidEndDate(null); - } else if (record.getValidType().equals(EnumCouponValidType.BETWEEN_TWO_TIME.getCode())) { - record.setValidDays(null); - - if(record.getSoldStartTime() != null && record.getSoldEndTime() != null){ - if(record.getValidStartDate().before(record.getSoldStartTime())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "有效时间需在售卖期之后"); - } - if(record.getValidEndDate().before(record.getSoldEndTime())){ - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "有效时间需在售卖期之后"); + switch (EnumCouponValidType.getEnum(record.getValidType())) { + case FOREVER: + record.setValidStartDate(null); + record.setValidEndDate(null); + record.setValidDays(null); + break; + case DAYS_AFTER_RECEIVING: + record.setValidStartDate(null); + record.setValidEndDate(null); + break; + case BETWEEN_TWO_TIME: + record.setValidDays(null); + case TIME_AND_DAYS: + if (record.getSoldStartTime() != null && record.getSoldEndTime() != null) { + if (record.getValidStartDate().before(record.getSoldStartTime())) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "有效时间需在售卖期之后"); + } + if (record.getValidEndDate().before(record.getSoldEndTime())) { + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "有效时间需在售卖期之后"); + } } - } - - } else { - return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请填写有效时间类型"); + break; + default: + return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "请填写有效时间类型"); } if(!this.validCouponDate(record)) { @@ -1400,7 +1403,16 @@ public class WxCouponServiceImpl implements WxCouponService { if(!wxCoupon.getValidDays().equals(oldCoupon.getValidDays())) { bChanged = true; } - }else{ + } else if (oldCoupon.getValidType().equals(EnumCouponValidType.TIME_AND_DAYS.getCode())) { + if(wxCoupon.getValidEndDate().before(oldCoupon.getValidEndDate()) || wxCoupon.getValidDays() < oldCoupon.getValidDays()) { + // 券有效期只可增加 + logger.error("券有效期只可增加"); + return new ResultData(ErrorCode.COUPON_VALID_DATE_ERR.getCode(), "券有效期只可增加"); + } + if(!wxCoupon.getValidEndDate().equals(oldCoupon.getValidEndDate()) || !wxCoupon.getValidDays().equals(oldCoupon.getValidDays())) { + bChanged = true; + } + } else{ wxCoupon.setValidStartDate(null); wxCoupon.setValidEndDate(null); wxCoupon.setValidDays(null);