From db2d7720496c66c2007e7e3a0be88dbff81148ad Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 31 三月 2025 17:29:41 +0800 Subject: [PATCH] 修改会员续优惠次数功能 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java | 2 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java | 107 ++++++++++++-------------- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java | 2 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java | 5 + ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java | 79 ++++++++----------- 5 files changed, 91 insertions(+), 104 deletions(-) diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java index 701a010..b8924ab 100644 --- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java +++ b/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") diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java index 4dff539..874f21f 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java +++ b/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); } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java index b5907d9..ca490ed 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java +++ b/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); + } + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java index 578e04a..9018fe3 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java +++ b/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); + } + } + + } + + } diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java index 70dda50..807a699 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java +++ b/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); } -- Gitblit v1.7.1