优化结算时获取用户优惠券信息(增加redis存储)
This commit is contained in:
parent
459a736ebc
commit
1c28e0bd5f
@ -2,7 +2,6 @@ package cn.lili.modules.order.cart.render.impl;
|
||||
|
||||
import cn.hutool.core.text.CharSequenceUtil;
|
||||
import cn.lili.common.enums.PromotionTypeEnum;
|
||||
import cn.lili.common.security.context.UserContext;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.common.utils.StringUtils;
|
||||
import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO;
|
||||
@ -13,11 +12,8 @@ import cn.lili.modules.order.cart.render.CartRenderStep;
|
||||
import cn.lili.modules.order.cart.render.util.PromotionPriceUtil;
|
||||
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.enums.CouponTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsScopeTypeEnum;
|
||||
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
|
||||
import cn.lili.modules.promotion.entity.vos.MemberCouponVO;
|
||||
import cn.lili.modules.promotion.service.MemberCouponService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@ -64,11 +60,7 @@ public class CouponRender implements CartRenderStep {
|
||||
* @param tradeDTO 交易dto
|
||||
*/
|
||||
private void renderCouponRule(TradeDTO tradeDTO) {
|
||||
MemberCouponSearchParams searchParams = new MemberCouponSearchParams();
|
||||
searchParams.setMemberId(UserContext.getCurrentUser().getId());
|
||||
searchParams.setMemberCouponStatus(MemberCouponStatusEnum.NEW.name());
|
||||
searchParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
List<MemberCoupon> memberCouponList = memberCouponService.getMemberCoupons(searchParams);
|
||||
List<MemberCoupon> memberCouponList = memberCouponService.getMemberCoupons(tradeDTO.getMemberId());
|
||||
|
||||
if (!memberCouponList.isEmpty()) {
|
||||
this.checkMemberExistCoupon(tradeDTO, memberCouponList);
|
||||
|
File diff suppressed because one or more lines are too long
@ -3,7 +3,6 @@ package cn.lili.modules.promotion.service;
|
||||
import cn.lili.common.vo.PageVO;
|
||||
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
|
||||
import cn.lili.modules.promotion.entity.dto.search.MemberCouponSearchParams;
|
||||
import cn.lili.modules.promotion.entity.enums.MemberCouponStatusEnum;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
@ -55,12 +54,19 @@ public interface MemberCouponService extends IService<MemberCoupon> {
|
||||
/**
|
||||
* 获取会员优惠券列表
|
||||
*
|
||||
* @param pageVo 分页参数
|
||||
* @param param 查询参数
|
||||
* @return 会员优惠券列表
|
||||
*/
|
||||
List<MemberCoupon> getMemberCoupons(MemberCouponSearchParams param);
|
||||
|
||||
/**
|
||||
* 获取当前用户的优惠券列表(优先读取缓存)
|
||||
*
|
||||
* @param memberId 会员id
|
||||
* @return 会员优惠券列表
|
||||
*/
|
||||
List<MemberCoupon> getMemberCoupons(String memberId);
|
||||
|
||||
/**
|
||||
* 获取会员优惠券列表
|
||||
*
|
||||
@ -97,27 +103,19 @@ public interface MemberCouponService extends IService<MemberCoupon> {
|
||||
*/
|
||||
long getMemberCouponsNum();
|
||||
|
||||
/**
|
||||
* 更新会员优惠券状态
|
||||
*
|
||||
* @param status 要变更的状态
|
||||
* @param id 会员优惠券id
|
||||
*/
|
||||
void updateMemberCouponStatus(MemberCouponStatusEnum status, String id);
|
||||
|
||||
/**
|
||||
* 使用优惠券
|
||||
*
|
||||
* @param ids 会员优惠券id
|
||||
*/
|
||||
void used(List<String> ids);
|
||||
void used(String memberId, List<String> ids);
|
||||
|
||||
/**
|
||||
* 作废当前会员优惠券
|
||||
*
|
||||
* @param id id
|
||||
*/
|
||||
void cancellation(String id);
|
||||
void cancellation(String memberId, String id);
|
||||
|
||||
/**
|
||||
* 关闭会员优惠券
|
||||
|
@ -1,5 +1,6 @@
|
||||
package cn.lili.modules.promotion.serviceimpl;
|
||||
|
||||
import cn.lili.cache.Cache;
|
||||
import cn.lili.common.enums.ResultCode;
|
||||
import cn.lili.common.exception.ServiceException;
|
||||
import cn.lili.common.security.AuthUser;
|
||||
@ -24,6 +25,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.cache.annotation.CacheConfig;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -37,6 +41,7 @@ import java.util.*;
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@CacheConfig(cacheNames = "{MemberCoupon}")
|
||||
public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
|
||||
|
||||
/**
|
||||
@ -45,6 +50,12 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
@Autowired
|
||||
private CouponService couponService;
|
||||
|
||||
/**
|
||||
* 缓存
|
||||
*/
|
||||
@Autowired
|
||||
private Cache cache;
|
||||
|
||||
@Override
|
||||
public void checkCouponLimit(String couponId, String memberId) {
|
||||
Coupon coupon = couponService.getById(couponId);
|
||||
@ -71,6 +82,7 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
* @param memberName 会员名称
|
||||
*/
|
||||
@Override
|
||||
@CacheEvict(key = "#memberId")
|
||||
public void receiveBuyerCoupon(String couponId, String memberId, String memberName) {
|
||||
Coupon coupon = couponService.getById(couponId);
|
||||
if (coupon != null && !CouponGetEnum.FREE.name().equals(coupon.getGetType())) {
|
||||
@ -82,6 +94,7 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
}
|
||||
|
||||
@Override
|
||||
@CacheEvict(key = "#memberId")
|
||||
public void receiveCoupon(String couponId, String memberId, String memberName) {
|
||||
Coupon coupon = couponService.getById(couponId);
|
||||
if (coupon != null) {
|
||||
@ -108,6 +121,22 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
return this.list(param.queryWrapper());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前用户的优惠券列表(优先读取缓存)
|
||||
*
|
||||
* @param memberId 会员id
|
||||
* @return 会员优惠券列表
|
||||
*/
|
||||
@Override
|
||||
@Cacheable(key = "#memberId")
|
||||
public List<MemberCoupon> getMemberCoupons(String memberId) {
|
||||
MemberCouponSearchParams searchParams = new MemberCouponSearchParams();
|
||||
searchParams.setMemberId(Objects.requireNonNull(UserContext.getCurrentUser()).getId());
|
||||
searchParams.setMemberCouponStatus(MemberCouponStatusEnum.NEW.name());
|
||||
searchParams.setPromotionStatus(PromotionsStatusEnum.START.name());
|
||||
return this.getMemberCoupons(searchParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员优惠券列表
|
||||
*
|
||||
@ -177,31 +206,10 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
return this.count(queryWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新会员优惠券状态
|
||||
*
|
||||
* @param status 要变更的状态
|
||||
* @param id 会员优惠券id
|
||||
*/
|
||||
@Override
|
||||
public void updateMemberCouponStatus(MemberCouponStatusEnum status, String id) {
|
||||
MemberCoupon memberCoupon = this.getById(id);
|
||||
if (memberCoupon == null) {
|
||||
throw new ServiceException(ResultCode.COUPON_MEMBER_NOT_EXIST);
|
||||
}
|
||||
String memberCouponStatus = memberCoupon.getMemberCouponStatus();
|
||||
if (memberCouponStatus.equals(MemberCouponStatusEnum.NEW.name()) || memberCouponStatus.equals(MemberCouponStatusEnum.USED.name())) {
|
||||
LambdaUpdateWrapper<MemberCoupon> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(MemberCoupon::getId, id).set(MemberCoupon::getMemberCouponStatus, status.name());
|
||||
this.update(updateWrapper);
|
||||
} else {
|
||||
throw new ServiceException(ResultCode.COUPON_MEMBER_STATUS_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void used(List<String> ids) {
|
||||
@CacheEvict(key = "#memberId")
|
||||
public void used(String memberId, List<String> ids) {
|
||||
if (ids != null && !ids.isEmpty()) {
|
||||
List<MemberCoupon> memberCoupons = this.listByIds(ids);
|
||||
|
||||
@ -228,7 +236,8 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
* @param id id
|
||||
*/
|
||||
@Override
|
||||
public void cancellation(String id) {
|
||||
@CacheEvict(key = "#memberId")
|
||||
public void cancellation(String memberId, String id) {
|
||||
LambdaUpdateWrapper<MemberCoupon> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(MemberCoupon::getId, id);
|
||||
updateWrapper.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.CLOSED.name());
|
||||
@ -245,6 +254,7 @@ public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, Mem
|
||||
LambdaUpdateWrapper<MemberCoupon> memberCouponLambdaUpdateWrapper = new LambdaUpdateWrapper<MemberCoupon>()
|
||||
.in(MemberCoupon::getCouponId, couponIds)
|
||||
.set(MemberCoupon::getMemberCouponStatus, MemberCouponStatusEnum.CLOSED.name());
|
||||
this.cache.vagueDel("{MemberCoupon}");
|
||||
this.update(memberCouponLambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 管理端,优惠券接口
|
||||
@ -91,7 +92,8 @@ public class CouponManagerController {
|
||||
@ApiOperation(value = "会员优惠券作废")
|
||||
@PutMapping(value = "/member/cancellation/{id}")
|
||||
public ResultMessage<Object> cancellation(@PathVariable String id) {
|
||||
memberCouponService.cancellation(id);
|
||||
AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
|
||||
memberCouponService.cancellation(currentUser.getId(), id);
|
||||
return ResultUtil.success(ResultCode.COUPON_CANCELLATION_SUCCESS);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user