陶杰
2024-09-02 dde5cf11c3ca6bddbd6aaeccf4e69d4f96ae8a45
src/main/java/com/mzl/flower/service/impl/coupon/CouponRecordServiceImpl.java
@@ -1,6 +1,5 @@
package com.mzl.flower.service.impl.coupon;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -11,7 +10,6 @@
import com.mzl.flower.entity.coupon.CouponRecordDO;
import com.mzl.flower.entity.coupon.CouponTemplateDO;
import com.mzl.flower.entity.customer.Customer;
import com.mzl.flower.entity.system.User;
import com.mzl.flower.enums.*;
import com.mzl.flower.mapper.coupon.CouponRecordMapper;
import com.mzl.flower.mapper.coupon.CouponRecordMapperCustom;
@@ -125,6 +123,7 @@
        couponRecordDO.setCouponDiscountType(couponTemplateDO.getCouponDiscountType());
        couponRecordDO.setGetUserType(couponTemplateDO.getGetUserType());
        couponRecordDO.setPoint(couponTemplateDO.getPoint());
        couponRecordDO.setMemberId(couponRecordDO.getMemberId());
        // 根据优惠券模板来计算优惠券的生效开始时间和结束时间
@@ -217,56 +216,58 @@
    @Override
    public boolean grantVipCouponRecordList() {
        try{
            LocalDateTime now = LocalDateTime.now();
            LocalDateTime firstDayStart = now.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0).withNano(0);
            LocalDateTime lastDayEnd = now.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59).withNano(0);
            // 获取所有会员模版列表
            List<CouponTemplateDO> vipTemplateList= couponTemplateService.getVipCouponTemplate();
            // 遍历所有相同等级用户信息,并根据优惠券设置的规则构造优惠券
            final List<CouponTemplateDO> updateCouponTemplateList = vipTemplateList.stream().map(couponTemplateDO -> {
                final List<User> vipGradeUserList = userService.getVipGradeUserList(couponTemplateDO.getVipGrade());
                final List<CouponRecordDO> gradeCouponRecordList = vipGradeUserList.stream().map(user -> {
                    CouponRecordDO couponRecordDO = new CouponRecordDO();
                    BeanUtils.copyProperties(couponTemplateDO, couponRecordDO);
                    couponRecordDO.setId(IdUtil.simpleUUID());
                    couponRecordDO.setCouponId(couponTemplateDO.getId());
                    couponRecordDO.setUserId(user.getId());
                    couponRecordDO.setStatus(CouponUsedStatusEnum.UNUSED.getType());
                    couponRecordDO.setEffectiveStart(firstDayStart);
                    couponRecordDO.setEffectiveEnd(lastDayEnd);
                    // 创建信息
                    couponRecordDO.create();
                    return couponRecordDO;
                }).collect(Collectors.toList());
                // 批量保存等级下的优惠券信息
                saveBatch(gradeCouponRecordList);
                couponTemplateDO.setUsageStartDate(firstDayStart);
                couponTemplateDO.setUsageEndDate(lastDayEnd);
                couponTemplateDO.setGetStartDate(firstDayStart);
                couponTemplateDO.setGetEndDate(lastDayEnd);
                // 设置默认类型固定
                couponTemplateDO.setUsageType(CouponUsageTypeEnum.FIXED.getType());
                return couponTemplateDO;
            }).collect(Collectors.toList());
            // 批量更新原模版时间
            couponTemplateService.updateBatchById(updateCouponTemplateList);
            return true;
        }catch (Exception e){
            // 报错日志信息报错
            log.error(e.getMessage());
            return false;
        }
        // TODO 会员等级修改
//        try{
//            LocalDateTime now = LocalDateTime.now();
//            LocalDateTime firstDayStart = now.with(TemporalAdjusters.firstDayOfMonth()).withHour(0).withMinute(0).withSecond(0).withNano(0);
//            LocalDateTime lastDayEnd = now.with(TemporalAdjusters.lastDayOfMonth()).withHour(23).withMinute(59).withSecond(59).withNano(0);
//
//            // 获取所有会员模版列表
//            List<CouponTemplateDO> vipTemplateList= couponTemplateService.getVipCouponTemplate();
//
//            // 遍历所有相同等级用户信息,并根据优惠券设置的规则构造优惠券
//            final List<CouponTemplateDO> updateCouponTemplateList = vipTemplateList.stream().map(couponTemplateDO -> {
//                final List<User> vipGradeUserList = userService.getVipGradeUserList(couponTemplateDO.getVipGrade());
//                final List<CouponRecordDO> gradeCouponRecordList = vipGradeUserList.stream().map(user -> {
//                    CouponRecordDO couponRecordDO = new CouponRecordDO();
//                    BeanUtils.copyProperties(couponTemplateDO, couponRecordDO);
//                    couponRecordDO.setId(IdUtil.simpleUUID());
//                    couponRecordDO.setCouponId(couponTemplateDO.getId());
//                    couponRecordDO.setUserId(user.getId());
//                    couponRecordDO.setStatus(CouponUsedStatusEnum.UNUSED.getType());
//                    couponRecordDO.setEffectiveStart(firstDayStart);
//                    couponRecordDO.setEffectiveEnd(lastDayEnd);
//
//                    // 创建信息
//                    couponRecordDO.create();
//                    return couponRecordDO;
//                }).collect(Collectors.toList());
//
//                // 批量保存等级下的优惠券信息
//                saveBatch(gradeCouponRecordList);
//
//                couponTemplateDO.setUsageStartDate(firstDayStart);
//                couponTemplateDO.setUsageEndDate(lastDayEnd);
//                couponTemplateDO.setGetStartDate(firstDayStart);
//                couponTemplateDO.setGetEndDate(lastDayEnd);
//
//                // 设置默认类型固定
//                couponTemplateDO.setUsageType(CouponUsageTypeEnum.FIXED.getType());
//
//                return couponTemplateDO;
//
//            }).collect(Collectors.toList());
//
//            // 批量更新原模版时间
//            couponTemplateService.updateBatchById(updateCouponTemplateList);
//
//            return true;
//        }catch (Exception e){
//            // 报错日志信息报错
//            log.error(e.getMessage());
//            return false;
//        }
        return false;
    }
    @Override