luodangjia
2024-08-13 5952aac570624230c2c19ce68cea9344f38c5fb7
8.13.2
11个文件已修改
152 ■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java 6 ●●●● 补丁 | 查看 | 原始文档 | 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 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
@@ -1,5 +1,6 @@
package com.ruoyi.account.api.factory;
import com.ruoyi.account.api.dto.GrantCouponDto;
import com.ruoyi.account.api.feignClient.AppCouponClient;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.query.ExchangeRecordGoodsQuery;
@@ -42,6 +43,11 @@
            public R<PageInfo<ExchangeRecordVO>> getExchangeRecordByCouponId(ExchangeRecordGoodsQuery couponId) {
                return R.fail("根据优惠券id查询领取记录:"+throwable.getMessage());
            }
            @Override
            public R grantCoupon(GrantCouponDto dto) {
                return null;
            }
        };
    }
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
@@ -77,6 +77,10 @@
    @TableField("orderId")
    private Long orderId;
    @ApiModelProperty(value = "当前领取优惠卷的json记录")
    @TableField("coupon_json")
    private String couponJson;
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
@@ -9,6 +9,7 @@
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
@@ -38,6 +39,16 @@
    @TableField("charge_num")
    private Integer chargeNum;
    @ApiModelProperty(value = "购买时折扣金额")
    @TableField("discount_money")
    private BigDecimal discountMoney;
    @ApiModelProperty(value = "该会员记录应赠送的充电次数")
    @TableField("send_charge_num")
    private Integer sendChargeNum;
    @ApiModelProperty(value = "会员id")
    @TableField("vip_id")
    private Integer vipId;
@@ -55,7 +66,12 @@
    @ApiModelProperty(value = "已赠送的月份")
    @TableField("send_month")
    private String sendMonth;
    private Integer sendMonth;
    @ApiModelProperty(value = "要赠送的优惠卷")
    @TableField("coupon_ids")
    private String couponIds;
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
@@ -6,6 +6,7 @@
import com.ruoyi.account.api.vo.CouponListVOVO;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.TCompany;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TUserTag;
import com.ruoyi.other.api.feignClient.OtherClient;
import org.slf4j.Logger;
@@ -85,6 +86,11 @@
            public R<List<CouponListVOVO>> getCouponInfoByCouponIds(List<CouponListVOVO> list) {
                return R.fail("我的优惠券列表获取信息:"+throwable.getMessage());
            }
            @Override
            public R<TCoupon> getCouponById(Integer id) {
                return R.fail("查询优惠卷:"+throwable.getMessage());
            }
        };
    }
}
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
@@ -7,6 +7,7 @@
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.TCompany;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TUserTag;
import com.ruoyi.other.api.factory.OtherFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
@@ -64,6 +65,10 @@
    R<List<CouponListVOVO>> getCouponInfoByCouponIds(@RequestBody List<CouponListVOVO> list);
    @PostMapping(value = "/t-coupon/getCouponById")
    R<TCoupon> getCouponById(@RequestParam Integer id);
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
@@ -315,11 +315,11 @@
        int plusDay = 0;
        if (giveVipDto.getType() == 1) {
            plusDay = 31;
            plusDay = 1;
        } else if (giveVipDto.getType() == 2) {
            plusDay = 93;
            plusDay = 3;
        } else if (giveVipDto.getType() == 3) {
            plusDay = 365;
            plusDay = 12;
        }
        //增加vipDetail
        giveVipUtil.sendVip(nowUser, giveVipDto.getVipId(),plusDay);
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);
    void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum);
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
@@ -3,17 +3,24 @@
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.account.api.dto.SendCouponDto;
import com.ruoyi.account.api.feignClient.AppCouponClient;
import com.ruoyi.account.api.model.TAppCoupon;
import com.ruoyi.account.api.model.TAppUserVipDetail;
import com.ruoyi.account.mapper.TAppUserVipDetailMapper;
import com.ruoyi.account.service.TAppCouponService;
import com.ruoyi.account.service.TAppUserVipDetailService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TVip;
import com.ruoyi.other.api.feignClient.OtherClient;
import com.ruoyi.other.api.feignClient.VipClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
@@ -28,20 +35,45 @@
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) {
        //给这个用户发放对应vip的优惠卷以及充电次数加满 ,重置抵扣金额
        R<TVip> info = vipClient.getInfo(vipId);
        TVip data = info.getData();
        String coupon = data.getCoupon();
        if (coupon!=null) {
            List<SendCouponDto> sendList = JSON.parseArray(coupon).toJavaList(SendCouponDto.class);
            for (SendCouponDto sendCouponDto : sendList) {
    public void giveVipCoupun(Long appUserId, Integer vipId,Long recordId,Integer monthNum) {
        //如果不包含,则更新sendNum,并且赠送优惠卷
        TAppUserVipDetail byId = tAppUserVipDetailService.getById(recordId);
        if (byId.getStartTime().toLocalDate().plusMonths(byId.getSendMonth()).compareTo(LocalDate.now())==0&&LocalDate.now().isBefore(byId.getEndTime().toLocalDate())){
            byId.setSendMonth(byId.getSendMonth()+1);
        //给这个用户发放对应vip的优惠卷以及充电次数加满
                
            if (byId.getCouponIds()!=null) {
                String[] sendList = byId.getCouponIds().split(",");
                for (String sendCouponDto : sendList) {
                    R<TCoupon> couponById = otherClient.getCouponById(Integer.valueOf(sendCouponDto));
                    TCoupon coupon = couponById.getData();
                    //将该优惠卷添加到用户优惠卷中
                    TAppCoupon tAppCoupon = new TAppCoupon();
                    tAppCoupon.setAppUserId(appUserId);
                    tAppCoupon.setCouponId(Integer.valueOf(sendCouponDto));
                    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);
        }
    }
}
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
@@ -39,23 +39,10 @@
                    .orderByDesc(TAppUserVipDetail::getStartTime).list();
            //判断sendNum是否包括当前月份
            for (TAppUserVipDetail recentDetail : recentDetails) {
                if (recentDetail.getSendMonth()!=null&&recentDetail.getSendMonth().contains(monthNum+"")){
                    //如果包含,则不执行操作
                    continue;
                }else {
                    //如果不包含,则更新sendNum,并且赠送优惠卷
                    TAppUserVipDetail byId = tAppUserVipDetailService.getById(recentDetail.getId());
                    if (byId==null){
                        byId.setSendMonth(byId.getSendMonth()+monthNum);
                    }else{
                        byId.setSendMonth(","+byId.getSendMonth()+monthNum);
                    }
                    tAppUserVipDetailService.updateById(byId);
                    //赠送优惠卷
                    tAppUserVipDetailService.giveVipCoupun(recentDetail.getAppUserId(), recentDetail.getVipId());
                }
                    tAppUserVipDetailService.giveVipCoupun(recentDetail.getAppUserId(), recentDetail.getVipId(),recentDetail.getId(),monthNum);
            }
        } catch (Exception e) {
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
@@ -1,30 +1,54 @@
package com.ruoyi.account.util;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.ruoyi.account.api.dto.SendCouponDto;
import com.ruoyi.account.api.model.TAppUser;
import com.ruoyi.account.api.model.TAppUserVipDetail;
import com.ruoyi.account.service.TAppUserVipDetailService;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.other.api.domain.TVip;
import com.ruoyi.other.api.feignClient.VipClient;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
@Component
public class GiveVipUtil {
    @Resource
    private VipClient vipClient;
    @Resource
    private TAppUserVipDetailService tAppUserVipDetailService;
    public void sendVip(TAppUser nowUser,Integer vipId,Integer plusDay){
        if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) {
            nowUser.setVipEndTime(LocalDateTime.now().plusDays(plusDay));
            nowUser.setVipEndTime(LocalDateTime.now().plusMonths(plusDay));
            //直接再detail里新增数据,因为不是续费
            TAppUserVipDetail tAppUserVipDetail = new TAppUserVipDetail();
            tAppUserVipDetail.setAppUserId(nowUser.getId());
            tAppUserVipDetail.setStartTime(LocalDateTime.now());
            tAppUserVipDetail.setEndTime(LocalDateTime.now().plusDays(plusDay));
            tAppUserVipDetail.setEndTime(LocalDateTime.now().plusMonths(plusDay).minusDays(1));
            tAppUserVipDetail.setVipId(vipId);
            R<TVip> info = vipClient.getInfo(vipId);
            TVip vip = info.getData();
            List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
            tAppUserVipDetail.setCouponIds(vip.getCoupon());
            tAppUserVipDetail.setSendChargeNum(vip.getDiscountTimes());
            tAppUserVipDetail.setChargeNum(vip.getDiscountTimes());
            tAppUserVipDetail.setDiscountMoney(vip.getMaximumDeduction());
            tAppUserVipDetailService.save(tAppUserVipDetail);
            //直接赠送优惠卷
        }else {
            nowUser.setVipEndTime(nowUser.getVipEndTime().plusDays(plusDay));
            //获取detail里结束时间大于当前时间的数据,并将enttime延长
@@ -33,8 +57,7 @@
            TAppUserVipDetail newAppUser = new TAppUserVipDetail();
            newAppUser.setAppUserId(nowUser.getId());
            newAppUser.setStartTime(tAppUserVipDetail.getEndTime());
            newAppUser.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay));
            newAppUser.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
            newAppUser.setVipId(vipId);
            tAppUserVipDetailService.save(newAppUser);
//                tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay));
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
@@ -115,6 +115,11 @@
        return AjaxResult.ok(tCouponService.pageList(dto));
    }
    @PostMapping(value = "/getCouponById")
    public R<TCoupon> getCouponById(@RequestParam Integer id) {
        return R.ok(tCouponService.getById(id));
    }
    /**
     * 小程序远程调用 获取优惠券信息
     */