Pu Zhibing
2025-03-31 db2d7720496c66c2007e7e3a0be88dbff81148ad
修改会员续优惠次数功能
5个文件已修改
75 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
@@ -40,39 +40,26 @@
    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()));
    public void giveVipCoupun(TAppUserVipDetail recentDetail) {
        Integer vipType = recentDetail.getVipType();
        Integer sendMonth = recentDetail.getSendMonth();
        //月卡
        if(1 == vipType && 1 == sendMonth){
            return;
                    }
                    tAppCoupon.setWaysToObtain(4);
                    tAppCoupon.setStatus(1);
                    tAppCoupon.setCouponJson(JSON.toJSONString(coupon));
                    appCouponService.save(tAppCoupon);
        //季卡
        if(2 == vipType && 3 == sendMonth){
            return;
                }
        //年卡
        if(3 == vipType && 12 == sendMonth){
            return;
                }
            }
        byId.setChargeNum(byId.getSendChargeNum());
        tAppUserVipDetailService.updateById(byId);
        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
@@ -33,27 +33,20 @@
    @Scheduled(fixedRate = 1000 * 60)
    public void sendVipCoupon(){
        try {
            //首先获取当前的月份,用int类型标识
            LocalDate currentDate = LocalDate.now();
            int monthNum = currentDate.getMonthValue();
            //获取在当前时间内生效的vipDetail
            //会员优惠次数使用完后重新续次数
            LocalDateTime currentDate = LocalDateTime.now();
            List<TAppUserVipDetail> recentDetails = tAppUserVipDetailService.lambdaQuery()
                    .ge(TAppUserVipDetail::getStartTime, currentDate)
                    .le(TAppUserVipDetail::getEndTime, currentDate)
                    .le(TAppUserVipDetail::getStartTime, currentDate)
                    .ge(TAppUserVipDetail::getEndTime, currentDate)
                    .eq(TAppUserVipDetail::getChargeNum, 0)
                    .le(TAppUserVipDetail::getMonthEndTime, currentDate)
                    .orderByDesc(TAppUserVipDetail::getStartTime).list();
            //判断sendNum是否包括当前月份
            for (TAppUserVipDetail recentDetail : recentDetails) {
                    //赠送优惠卷
                    tAppUserVipDetailService.giveVipCoupun(recentDetail.getAppUserId(), recentDetail.getVipId(),recentDetail.getId(),monthNum);
                tAppUserVipDetailService.giveVipCoupun(recentDetail);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
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);
        }