framework/src/main/java/cn/lili/modules/promotion/serviceimpl/CouponServiceImpl.java
@@ -8,12 +8,16 @@
import cn.lili.common.event.TransactionCommitSendMQEvent;
import cn.lili.common.exception.ServiceException;
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
import cn.lili.common.utils.DateUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.promotion.entity.dos.Coupon;
import cn.lili.modules.promotion.entity.dos.FullDiscount;
import cn.lili.modules.promotion.entity.dos.MemberCoupon;
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.dto.search.CouponSearchParams;
import cn.lili.modules.promotion.entity.dto.search.FullDiscountSearchParams;
@@ -24,6 +28,7 @@
import cn.lili.modules.promotion.entity.enums.PromotionsStatusEnum;
import cn.lili.modules.promotion.entity.vos.CouponVO;
import cn.lili.modules.promotion.mapper.CouponMapper;
import cn.lili.modules.promotion.mapper.MemberCouponMapper;
import cn.lili.modules.promotion.service.*;
import cn.lili.modules.promotion.tools.PromotionTools;
import cn.lili.mybatis.util.PageUtil;
@@ -31,6 +36,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
@@ -39,6 +45,7 @@
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -82,6 +89,36 @@
    @Autowired
    private ApplicationEventPublisher applicationEventPublisher;
    @Autowired
    private MemberCouponMapper memberCouponMapper;
    @Override
    public void getUserCouponsStatus(List<CouponVO> list) {
        AuthUser currentUser = Objects.requireNonNull(UserContext.getCurrentUser());
        if (StringUtils.isNotBlank(currentUser.getId())){
            List<String> ids = list.stream().map(CouponVO::getId).collect(Collectors.toList());
            //获得分页优惠劵后的结果后,判断对象是否被用户获得过。
            List<MemberCoupon> userCouponVOS  = new LambdaQueryChainWrapper<>(memberCouponMapper)
                    .in(MemberCoupon::getCouponId,ids)
                    .eq(MemberCoupon::getMemberId,currentUser.getId())
                    .list();
            //用户获得过的优惠卷id集合
            List<String> userHaveCouponIds = userCouponVOS.stream().map(MemberCoupon::getCouponId).collect(Collectors.toList());
            //修改状态
            for(CouponVO couponVO : list){
                boolean owned = false;
                for (String id : userHaveCouponIds){
                    if(id.equals(couponVO.getId())){
                        owned = true;
                        break;
                    }
                }
                couponVO.setOwned(owned);
            }
        }
    }
    /**
     * 领取优惠券
     *