src/main/java/com/mzl/flower/service/impl/coupon/CouponTemplateServiceImpl2.java
@@ -40,6 +40,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -264,6 +265,7 @@
                List<CouponRecordDO> couponUsageDOList = couponTemplateCustomerDOList.stream().map(pointCustomRe -> {
                    CouponRecordDO couponRecordDO = new CouponRecordDO();
                    couponRecordDO.setId(IdUtil.simpleUUID());
                    couponRecordDO.setCouponId(pointCustomRe.getCouponId());
                    couponRecordDO.setCustomerId(pointCustomRe.getCustomId());
@@ -290,7 +292,9 @@
                    couponRecordDO.setCouponDiscountType(couponTemplateDO.getCouponDiscountType());
                    couponRecordDO.setGetUserType(couponTemplateDO.getGetUserType());
                    couponRecordDO.setPoint(couponTemplateDO.getPoint());
                    couponRecordDO.setMemberId(couponRecordDO.getMemberId());
                    couponRecordDO.setMemberId(couponTemplateDO.getMemberId());
                    couponRecordDO.setImageUrl(couponTemplateDO.getImageUrl());
                    couponRecordDO.setCouponDescription(couponTemplateDO.getCouponDescription());
                    // 创建相关信息
                    couponRecordDO.create(SecurityUtils.getUserId());
@@ -419,7 +423,9 @@
            if(couponTemplateDO==null){
                throw new ValidationException("优惠券不存在");
            }
            if(couponTemplateDO.getCouponAmount()<=0 ){
               throw new ValidationException("优惠券已兑换完");
            }
            CustomerPoint cp = customerPointMapper.selectOne(new LambdaQueryWrapper<CustomerPoint>()
                    .eq(CustomerPoint::getUserId, SecurityUtils.getUserId()));
            if(cp == null || (cp.getTotalPoint()-cp.getUsedPoint()-cp.getExpiredPoint()- cp.getExpiredPoint()) < couponTemplateDO.getPoint() * dto.getNum()){
@@ -437,6 +443,10 @@
            recordDTO.setCustomerId(customer.getId());
            couponRecordService.createCouponRecord(recordDTO);
//            //更新优惠券数量
//            couponTemplateDO.setCouponAmount(couponTemplateDO.getCouponAmount()-dto.getNum());
//            couponTemplateService.updateById(couponTemplateDO);
            //更新积分汇总
            cp.setUsedPoint(cp.getUsedPoint()+couponTemplateDO.getPoint());
            customerPointMapper.updateById(cp);
@@ -452,8 +462,6 @@
            detail.setRemarks(couponTemplateDO.getCouponName());
            detail.create(SecurityUtils.getUserId());
            customerPointDetailMapper.insert(detail);
        }catch (Exception e){
            throw new ValidationException("兑换失败");
        }finally {
            lockService.releaseObjectLock(key,"");
        }
@@ -483,9 +491,51 @@
    }
    @Override
    public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) {
    public boolean expireActivityCouponTemplateAll() {
        return couponTemplateMapperCustom.getActivityEffectList(dto);
        return couponTemplateMapperCustom.expireActivityCouponTemplateAll()>0;
    }
    @Override
    public List<CouponTemplateVO> getActivityEffectListWithMine(QueryActivityEffectCouponDTO dto) {
        // 1.点击领取,优惠券状态变成灰色+已领取(根据web端优惠券限领次数判断)
        //2.把已领取的优惠券按照领取时间排列到最下面
        List<CouponTemplateVO> list= couponTemplateMapperCustom.getActivityEffectListWithMine(dto);
        // 将列表分为已经领取和未领取的,根据getYetFlag来判断,下面的所有操作都要判空
        if(CollectionUtils.isNotEmpty(list)){
            // 遍历列表,查看当前的优惠券是否已经达到领取次数,如果是则为true,不是为false
            list.forEach(item->{
                if (item != null) {
                    item.setGetYetFlag(false);
                    if (null != item.getGetNum() && null != item.getGetLimit() && item.getGetNum() >= item.getGetLimit()) {
                        item.setGetYetFlag(true);
                    }
                }
            });
            List<CouponTemplateVO> getYetList = list.stream().filter(item->item.getGetYetFlag()).collect(Collectors.toList());
            List<CouponTemplateVO> getNotYetList = list.stream().filter(item->!item.getGetYetFlag()).collect(Collectors.toList());
            list.clear();
            if(CollectionUtils.isNotEmpty(getNotYetList)){
                // 将未领取的根据create_time 倒序排序
                getNotYetList.sort(Comparator.comparing(CouponTemplateVO::getCreateTime).reversed());
                // 将未领取和已领取的合并成新list返回
                list.addAll(getNotYetList);
            }
            if(CollectionUtils.isNotEmpty(getYetList)){
                // 将已经领取的根据recordCreateTime 时间正序排
                getYetList.sort(Comparator.comparing(CouponTemplateVO::getRecordCreateTime));
                list.addAll(getYetList);
            }
            return list;
        }
        return new ArrayList<>();
    }
    @Override
    public List<CouponTemplateVO> getActivityEffectList(QueryActivityEffectCouponDTO dto) {
        return couponTemplateMapperCustom.getActivityEffectListWithMine(dto);
    }
}