ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
@@ -79,6 +79,11 @@ @ApiModelProperty(value = "已赠送的月份") @TableField("send_month") private Integer sendMonth; /** * 本月会员优惠到期时间 */ @TableField("month_end_time") private LocalDateTime monthEndTime; @ApiModelProperty(value = "当时购买的vipJson") @TableField("vip_json") ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java
@@ -13,5 +13,5 @@ */ public interface TAppUserVipDetailService extends IService<TAppUserVipDetail> { void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum); void giveVipCoupun(TAppUserVipDetail recentDetail); } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
@@ -22,7 +22,7 @@ /** * <p> * 服务实现类 * 服务实现类 * </p> * * @author luodangjia @@ -30,49 +30,36 @@ */ @Service public class TAppUserVipDetailServiceImpl extends ServiceImpl<TAppUserVipDetailMapper, TAppUserVipDetail> implements TAppUserVipDetailService { @Resource private VipClient vipClient; @Resource private OtherClient otherClient; @Resource private TAppCouponService appCouponService; @Resource private TAppUserVipDetailService tAppUserVipDetailService; @Override public void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum) { //如果不包含,则更新sendNum,并且赠送优惠卷 TAppUserVipDetail byId = tAppUserVipDetailService.getById(recordId); if (byId.getStartTime().plusMonths(byId.getSendMonth()).toLocalDate().compareTo(LocalDate.now())==0&&LocalDate.now().isBefore(byId.getEndTime().toLocalDate())){ byId.setSendMonth(byId.getSendMonth()+1); //给这个用户发放对应vip的优惠卷以及充电次数加满 List<SendCouponDto> javaList = JSON.parseArray(byId.getCouponIds()).toJavaList(SendCouponDto.class); for (SendCouponDto sendCouponDto : javaList) { Integer number = sendCouponDto.getNumber(); for (Integer i = 0; i < number; i++) { R<TCoupon> couponById = otherClient.getCouponById(sendCouponDto.getId()); TCoupon coupon = couponById.getData(); //将该优惠卷添加到用户优惠卷中 TAppCoupon tAppCoupon = new TAppCoupon(); tAppCoupon.setAppUserId(appUserId); tAppCoupon.setCouponId(sendCouponDto.getId()); if (coupon.getValidityPeriodMode() == 1) { tAppCoupon.setEndTime(coupon.getEndTime()); } else { tAppCoupon.setEndTime(LocalDateTime.now().plusDays(coupon.getDays())); } tAppCoupon.setWaysToObtain(4); tAppCoupon.setStatus(1); tAppCoupon.setCouponJson(JSON.toJSONString(coupon)); appCouponService.save(tAppCoupon); } } } byId.setChargeNum(byId.getSendChargeNum()); tAppUserVipDetailService.updateById(byId); } @Resource private VipClient vipClient; @Resource private OtherClient otherClient; @Resource private TAppCouponService appCouponService; @Resource private TAppUserVipDetailService tAppUserVipDetailService; @Override public void giveVipCoupun(TAppUserVipDetail recentDetail) { Integer vipType = recentDetail.getVipType(); Integer sendMonth = recentDetail.getSendMonth(); //月卡 if(1 == vipType && 1 == sendMonth){ return; } //季卡 if(2 == vipType && 3 == sendMonth){ return; } //年卡 if(3 == vipType && 12 == sendMonth){ return; } recentDetail.setSendMonth(sendMonth + 1); recentDetail.setChargeNum(recentDetail.getSendChargeNum()); recentDetail.setMonthEndTime(LocalDateTime.now().plusMonths(1)); tAppUserVipDetailService.updateById(recentDetail); } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
@@ -19,61 +19,54 @@ */ @Component public class TaskUtil { @Resource private TAppUserVipDetailService tAppUserVipDetailService; @Resource private TAppUserService appUserService; /** * 每隔一分钟去处理的定时任务 */ @Scheduled(fixedRate = 1000 * 60) public void sendVipCoupon(){ try { //首先获取当前的月份,用int类型标识 LocalDate currentDate = LocalDate.now(); int monthNum = currentDate.getMonthValue(); //获取在当前时间内生效的vipDetail List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery() .ge(TAppUserVipDetail::getStartTime, currentDate) .le(TAppUserVipDetail::getEndTime, currentDate) .orderByDesc(TAppUserVipDetail::getStartTime).list(); //判断sendNum是否包括当前月份 for (TAppUserVipDetail recentDetail : recentDetails) { //赠送优惠卷 tAppUserVipDetailService.giveVipCoupun(recentDetail.getAppUserId(), recentDetail.getVipId(),recentDetail.getId(),monthNum); } } catch (Exception e) { e.printStackTrace(); } } @Scheduled(fixedRate = 1000 * 60) public void changeVipId(){ LocalDateTime currentDate = LocalDateTime.now(); List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery() .le(TAppUserVipDetail::getStartTime, currentDate) .ge(TAppUserVipDetail::getEndTime, currentDate) .orderByDesc(TAppUserVipDetail::getStartTime).list(); for (TAppUserVipDetail recentDetail : recentDetails) { TAppUser byId = appUserService.getById(recentDetail.getAppUserId()); if (byId!=null) { byId.setVipId(recentDetail.getVipId()); appUserService.updateById(byId); } } } @Resource private TAppUserVipDetailService tAppUserVipDetailService; @Resource private TAppUserService appUserService; /** * 每隔一分钟去处理的定时任务 */ @Scheduled(fixedRate = 1000 * 60) public void sendVipCoupon() { try { //会员优惠次数使用完后重新续次数 LocalDateTime currentDate = LocalDateTime.now(); List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery() .le(TAppUserVipDetail::getStartTime, currentDate) .ge(TAppUserVipDetail::getEndTime, currentDate) .eq(TAppUserVipDetail::getChargeNum, 0) .le(TAppUserVipDetail::getMonthEndTime, currentDate) .orderByDesc(TAppUserVipDetail::getStartTime).list(); for (TAppUserVipDetail recentDetail : recentDetails) { tAppUserVipDetailService.giveVipCoupun(recentDetail); } } catch (Exception e) { e.printStackTrace(); } } @Scheduled(fixedRate = 1000 * 60) public void changeVipId() { LocalDateTime currentDate = LocalDateTime.now(); List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery() .le(TAppUserVipDetail::getStartTime, currentDate) .ge(TAppUserVipDetail::getEndTime, currentDate) .orderByDesc(TAppUserVipDetail::getStartTime).list(); for (TAppUserVipDetail recentDetail : recentDetails) { TAppUser byId = appUserService.getById(recentDetail.getAppUserId()); if (byId != null) { byId.setVipId(recentDetail.getVipId()); appUserService.updateById(byId); } } } } ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
@@ -56,6 +56,7 @@ tAppUserVipDetail.setVipJson(JSON.toJSONString(info.getData())); tAppUserVipDetail.setVipType(type); tAppUserVipDetail.setCreateTime(LocalDateTime.now()); tAppUserVipDetail.setMonthEndTime(LocalDateTime.now().plusMonths(1)); tAppUserVipDetailService.save(tAppUserVipDetail); //直接赠送优惠卷 for (SendCouponDto sendCouponDto : javaList) { @@ -98,6 +99,7 @@ tAppUserVipDetail1.setVipType(type); tAppUserVipDetail1.setVipJson(JSON.toJSONString(info.getData())); tAppUserVipDetail1.setCreateTime(LocalDateTime.now()); tAppUserVipDetail1.setMonthEndTime(LocalDateTime.now().plusMonths(1)); tAppUserVipDetailService.save(tAppUserVipDetail1); }