|
@@ -27,12 +27,12 @@ import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
- * <p>
|
|
|
|
|
- * 优惠券表 服务实现类
|
|
|
|
|
- * </p>
|
|
|
|
|
|
|
+ * 优惠券服务实现类(平台端)
|
|
|
|
|
+ * 实现优惠券相关的业务逻辑处理,包括优惠券的创建、更新、删除、查询等功能
|
|
|
|
|
+ * 支持优惠券规则配置、时间段限制、库存管理等
|
|
|
*
|
|
*
|
|
|
- * @author ssk
|
|
|
|
|
- * @since 2025-02-07
|
|
|
|
|
|
|
+ * @author zjy
|
|
|
|
|
+ * @since 2025-11-19
|
|
|
*/
|
|
*/
|
|
|
@Service
|
|
@Service
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
@@ -48,6 +48,20 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
|
|
|
|
|
private final LifeDiscountCouponUserMapper lifeDiscountCouponUserMapper;
|
|
private final LifeDiscountCouponUserMapper lifeDiscountCouponUserMapper;
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 发布优惠券
|
|
|
|
|
+ * 创建新的优惠券,包括以下功能:
|
|
|
|
|
+ * 1. 保存优惠券基本信息
|
|
|
|
|
+ * 2. 根据时间判断并设置可领取状态
|
|
|
|
|
+ * 3. 计算并设置优惠券有效期
|
|
|
|
|
+ * 4. 保存周中不可用规则
|
|
|
|
|
+ * 5. 保存节假日不可用规则
|
|
|
|
|
+ * 6. 保存领取规则
|
|
|
|
|
+ * 7. 保存指定时间段可用/不可用规则
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param lifeDiscountCouponDto 优惠券信息对象
|
|
|
|
|
+ * @return boolean 操作结果,true-成功,false-失败
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public boolean addDiscountCoupon(LifeDiscountCouponDto lifeDiscountCouponDto) {
|
|
public boolean addDiscountCoupon(LifeDiscountCouponDto lifeDiscountCouponDto) {
|
|
|
try {
|
|
try {
|
|
@@ -138,6 +152,18 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 修改优惠券
|
|
|
|
|
+ * 更新已存在的优惠券信息,包括以下功能:
|
|
|
|
|
+ * 1. 更新优惠券基本信息
|
|
|
|
|
+ * 2. 重新计算可领取状态
|
|
|
|
|
+ * 3. 重新计算有效期
|
|
|
|
|
+ * 4. 删除并重新保存所有规则信息(周中规则、节假日规则、领取规则)
|
|
|
|
|
+ * 5. 删除并重新保存时间段规则
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param lifeDiscountCouponDto 优惠券信息对象
|
|
|
|
|
+ * @return boolean 操作结果,true-成功,false-失败
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public boolean editDiscountCoupon(LifeDiscountCouponDto lifeDiscountCouponDto) {
|
|
public boolean editDiscountCoupon(LifeDiscountCouponDto lifeDiscountCouponDto) {
|
|
|
try {
|
|
try {
|
|
@@ -237,6 +263,13 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 删除优惠券
|
|
|
|
|
+ * 删除优惠券及其关联的所有规则信息
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param id 优惠券ID
|
|
|
|
|
+ * @return boolean 操作结果,true-成功,false-失败
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public boolean deleteDiscountCoupon(Integer id) {
|
|
public boolean deleteDiscountCoupon(Integer id) {
|
|
|
//删除优惠券表信息
|
|
//删除优惠券表信息
|
|
@@ -246,11 +279,27 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 修改优惠券库存数量
|
|
|
|
|
+ * 直接更新指定优惠券的库存数量
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param id 优惠券ID
|
|
|
|
|
+ * @param singleQty 库存数量
|
|
|
|
|
+ * @return boolean 操作结果,true-成功,false-失败
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public boolean updateCouponSingleQty(Integer id, Integer singleQty) {
|
|
public boolean updateCouponSingleQty(Integer id, Integer singleQty) {
|
|
|
return lifeDiscountCouponMapper.updateCouponById(id, singleQty) > 0;
|
|
return lifeDiscountCouponMapper.updateCouponById(id, singleQty) > 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 切换优惠券进行状态
|
|
|
|
|
+ * 切换优惠券的可领取状态(启用/暂停)
|
|
|
|
|
+ * 如果当前状态为不可领取,切换为可领取时会设置开始领取时间为当前日期
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param counponId 优惠券ID
|
|
|
|
|
+ * @return boolean 操作结果,true-成功,false-失败
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public boolean cutDiscountCouponStatus(String counponId) {
|
|
public boolean cutDiscountCouponStatus(String counponId) {
|
|
|
LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectById(counponId);
|
|
LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectById(counponId);
|
|
@@ -266,6 +315,20 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return true;
|
|
return true;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取该优惠券的明细信息
|
|
|
|
|
+ * 根据优惠券ID查询优惠券的详细信息,包括:
|
|
|
|
|
+ * 1. 优惠券基本信息
|
|
|
|
|
+ * 2. 周中不可用规则列表
|
|
|
|
|
+ * 3. 节假日不可用规则列表
|
|
|
|
|
+ * 4. 领取规则
|
|
|
|
|
+ * 5. 指定时间段可用规则列表
|
|
|
|
|
+ * 6. 自定义时间段不可用规则列表
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param counponId 优惠券ID
|
|
|
|
|
+ * @param userLoginInfo 当前登录用户信息
|
|
|
|
|
+ * @return LifeDiscountCouponVo 优惠券详情对象
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public LifeDiscountCouponVo getCounponDetailById(String counponId, UserLoginInfo userLoginInfo) {
|
|
public LifeDiscountCouponVo getCounponDetailById(String counponId, UserLoginInfo userLoginInfo) {
|
|
|
LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectById(counponId);
|
|
LifeDiscountCoupon lifeDiscountCoupon = lifeDiscountCouponMapper.selectById(counponId);
|
|
@@ -314,6 +377,14 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return lifeDiscountCouponVo;
|
|
return lifeDiscountCouponVo;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 日期增加天数(Java 8方式)
|
|
|
|
|
+ * 使用Java 8的日期API为指定日期增加天数
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param date 原始日期
|
|
|
|
|
+ * @param days 要增加的天数
|
|
|
|
|
+ * @return Date 增加后的日期
|
|
|
|
|
+ */
|
|
|
public static Date addDaysToDateJava8(Date date, int days) {
|
|
public static Date addDaysToDateJava8(Date date, int days) {
|
|
|
// 将Date转换为Instant
|
|
// 将Date转换为Instant
|
|
|
Instant instant = date.toInstant();
|
|
Instant instant = date.toInstant();
|
|
@@ -326,7 +397,13 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return Date.from(newLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
|
return Date.from(newLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- //获取纯日期
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取纯日期
|
|
|
|
|
+ * 将日期时间转换为纯日期(时间部分设置为00:00:00)
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param date 原始日期时间
|
|
|
|
|
+ * @return Date 纯日期(时间为00:00:00)
|
|
|
|
|
+ */
|
|
|
public static Date getPureDate(Date date) {
|
|
public static Date getPureDate(Date date) {
|
|
|
Instant instant = date.toInstant();
|
|
Instant instant = date.toInstant();
|
|
|
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
|
|
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
|
|
@@ -334,6 +411,26 @@ public class LifeDiscountCouponPlatformServiceImpl extends ServiceImpl<LifeDisco
|
|
|
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
|
return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取所有优惠券列表(分页)
|
|
|
|
|
+ * 根据条件查询店铺的优惠券列表,支持按名称、状态等条件筛选
|
|
|
|
|
+ * 主要功能:
|
|
|
|
|
+ * 1. 按优惠券名称模糊查询
|
|
|
|
|
+ * 2. 按状态筛选(进行中/已结束/已暂停)
|
|
|
|
|
+ * 3. 计算每个优惠券的当前状态(草稿/进行中/已结束/未开始/已暂停/已售罄)
|
|
|
|
|
+ * 4. 查询优惠券的规则配置信息
|
|
|
|
|
+ * 5. 统计优惠券已领取数量
|
|
|
|
|
+ * 6. 支持分页查询
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param storeId 店铺ID
|
|
|
|
|
+ * @param userLoginInfo 当前登录用户信息
|
|
|
|
|
+ * @param page 页码
|
|
|
|
|
+ * @param size 每页数量
|
|
|
|
|
+ * @param couponName 优惠券名称(模糊查询)
|
|
|
|
|
+ * @param couponsFromType 优惠券来源类型
|
|
|
|
|
+ * @param couponStatus 优惠券状态(1:进行中, 2:已结束, 3:已暂停)
|
|
|
|
|
+ * @return IPage<LifeDiscountCouponVo> 分页优惠券列表
|
|
|
|
|
+ */
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<LifeDiscountCouponVo> getStoreAllCouponList(String storeId, UserLoginInfo userLoginInfo, int page, int size, String couponName, Integer couponsFromType, Integer couponStatus) {
|
|
public IPage<LifeDiscountCouponVo> getStoreAllCouponList(String storeId, UserLoginInfo userLoginInfo, int page, int size, String couponName, Integer couponsFromType, Integer couponStatus) {
|
|
|
|
|
|