增加每次获取优惠券信息时,检查优惠券是否过期

This commit is contained in:
paulGao 2022-04-08 16:59:12 +08:00
parent 3439b7aee5
commit 7e542750f6
2 changed files with 38 additions and 2 deletions

View File

@ -125,6 +125,13 @@ public interface MemberCouponService extends IService<MemberCoupon> {
*/
void cancellation(String memberId, String id);
/**
* 作废无效的会员优惠券
*
* @return 是否操作成功
*/
boolean expireInvalidMemberCoupon(String memberId);
/**
* 关闭会员优惠券
*

View File

@ -1,5 +1,6 @@
package cn.lili.modules.promotion.serviceimpl;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.cache.Cache;
import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException;
@ -23,6 +24,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheConfig;
@ -108,8 +110,13 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
@Override
public IPage<MemberCoupon> getMemberCoupons(MemberCouponSearchParams param, PageVO pageVo) {
QueryWrapper<MemberCoupon> queryWrapper = param.queryWrapper();
Page<MemberCoupon> page = this.page(PageUtil.initPage(pageVo), queryWrapper);
if (page.getRecords().stream().anyMatch(i -> i.getEndTime().before(new Date()))) {
this.expireInvalidMemberCoupon(param.getMemberId());
return this.page(PageUtil.initPage(pageVo), queryWrapper);
}
return page;
}
/**
* 获取会员优惠券列表
@ -119,8 +126,13 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
*/
@Override
public List<MemberCoupon> getMemberCoupons(MemberCouponSearchParams param) {
List<MemberCoupon> list = this.list(param.queryWrapper());
if (list.stream().anyMatch(i -> i.getEndTime().before(new Date()))) {
this.expireInvalidMemberCoupon(param.getMemberId());
return this.list(param.queryWrapper());
}
return list;
}
/**
* 获取当前用户的优惠券列表优先读取缓存
@ -273,6 +285,23 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
this.update(memberCouponLambdaUpdateWrapper);
}
/**
* 清除无效的会员优惠券
*
* @return 是否操作成功
*/
@Override
@CacheEvict(key = "#memberId")
public boolean expireInvalidMemberCoupon(String memberId) {
//将过期优惠券变更为过期状体
LambdaUpdateWrapper<MemberCoupon> updateWrapper = new LambdaUpdateWrapper<MemberCoupon>()
.eq(CharSequenceUtil.isNotEmpty(memberId), MemberCoupon::getMemberId, memberId)
.eq(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.NEW.name())
.le(MemberCoupon::getEndTime, new Date())
.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.EXPIRE.name());
return this.update(updateWrapper);
}
private void receiverCoupon(String couponId, String memberId, String memberName, Coupon coupon) {
this.checkCouponLimit(couponId, memberId);
MemberCoupon memberCoupon = new MemberCoupon(coupon);