From 68a674ba51a21a392935ce5cf2f5547472f8d717 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 22 Jan 2026 14:03:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(coupon):=20=E6=B7=BB=E5=8A=A0=E4=BC=98?= =?UTF-8?q?=E6=83=A0=E5=88=B8=E9=A2=86=E5=8F=96=E5=90=8E=E6=9C=89=E6=95=88?= =?UTF-8?q?=E6=9C=9F=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 PriceCouponClaimRecord 实体中添加过期时间字段 - 在 PriceCouponConfig 实体中添加领取后有效天数配置 - 更新查询可用优惠券的 SQL 条件以过滤过期券 - 修改插入领用记录的 SQL 语句以包含过期时间 - 实现领取时根据配置计算过期时间的逻辑 --- .../basic/pricing/entity/PriceCouponClaimRecord.java | 8 +++++++- .../com/ycwl/basic/pricing/entity/PriceCouponConfig.java | 7 ++++++- .../pricing/mapper/PriceCouponClaimRecordMapper.java | 7 ++++--- .../basic/pricing/service/impl/CouponServiceImpl.java | 9 +++++++++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponClaimRecord.java b/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponClaimRecord.java index dd5c24b5..9e5dbcfb 100644 --- a/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponClaimRecord.java +++ b/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponClaimRecord.java @@ -33,7 +33,13 @@ public class PriceCouponClaimRecord { * 领取时间 */ private Date claimTime; - + + /** + * 过期时间(根据领取时间+领取后有效期计算) + */ + @TableField("expire_time") + private Date expireTime; + /** * 使用时间 */ diff --git a/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponConfig.java b/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponConfig.java index fd85c025..9be942bb 100644 --- a/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponConfig.java +++ b/src/main/java/com/ycwl/basic/pricing/entity/PriceCouponConfig.java @@ -85,7 +85,12 @@ public class PriceCouponConfig { * 失效时间 */ private Date validUntil; - + + /** + * 领取后有效天数(NULL表示不限制,仅使用全局有效期) + */ + private Integer validDaysAfterClaim; + /** * 是否启用 */ diff --git a/src/main/java/com/ycwl/basic/pricing/mapper/PriceCouponClaimRecordMapper.java b/src/main/java/com/ycwl/basic/pricing/mapper/PriceCouponClaimRecordMapper.java index d5484183..8ebfde58 100644 --- a/src/main/java/com/ycwl/basic/pricing/mapper/PriceCouponClaimRecordMapper.java +++ b/src/main/java/com/ycwl/basic/pricing/mapper/PriceCouponClaimRecordMapper.java @@ -25,7 +25,8 @@ public interface PriceCouponClaimRecordMapper extends BaseMapper NOW()") + "AND c.is_active = 1 AND c.valid_from <= NOW() AND c.valid_until > NOW() " + + "AND (r.expire_time IS NULL OR r.expire_time > NOW())") List selectUserAvailableCoupons(Long userId); /** @@ -58,8 +59,8 @@ public interface PriceCouponClaimRecordMapper extends BaseMapper 0) { + java.util.Calendar calendar = java.util.Calendar.getInstance(); + calendar.setTime(claimTime); + calendar.add(java.util.Calendar.DAY_OF_MONTH, coupon.getValidDaysAfterClaim()); + claimRecord.setExpireTime(calendar.getTime()); + } + claimRecord.setStatus(CouponStatus.CLAIMED); claimRecord.setScenicId(request.getScenicId()); claimRecord.setCreateTime(claimTime);