| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | couponRecordDO.setCouponDiscountType(couponTemplateDO.getCouponDiscountType()); |
| | | couponRecordDO.setGetUserType(couponTemplateDO.getGetUserType()); |
| | | couponRecordDO.setPoint(couponTemplateDO.getPoint()); |
| | | couponRecordDO.setMemberId(couponRecordDO.getMemberId()); |
| | | |
| | | |
| | | // 根据优惠券模板来计算优惠券的生效开始时间和结束时间 |
| | |
| | | @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 |