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().plusMonths(plusDay));
|
|
//直接再detail里新增数据,因为不是续费
|
TAppUserVipDetail tAppUserVipDetail = new TAppUserVipDetail();
|
tAppUserVipDetail.setAppUserId(nowUser.getId());
|
tAppUserVipDetail.setStartTime(LocalDateTime.now());
|
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延长
|
TAppUserVipDetail tAppUserVipDetail = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one();
|
|
TAppUserVipDetail newAppUser = new TAppUserVipDetail();
|
newAppUser.setAppUserId(nowUser.getId());
|
newAppUser.setStartTime(tAppUserVipDetail.getEndTime());
|
newAppUser.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
|
newAppUser.setVipId(vipId);
|
tAppUserVipDetailService.save(newAppUser);
|
// tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay));
|
// tAppUserVipDetailService.updateById(tAppUserVipDetail);
|
}
|
|
}
|
}
|