package com.ruoyi.account.util;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.ruoyi.account.api.dto.SendCouponDto;
|
import com.ruoyi.account.api.model.TAppCoupon;
|
import com.ruoyi.account.api.model.TAppUser;
|
import com.ruoyi.account.api.model.TAppUserVipDetail;
|
import com.ruoyi.account.service.TAppCouponService;
|
import com.ruoyi.account.service.TAppUserVipDetailService;
|
import com.ruoyi.common.core.domain.R;
|
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.Component;
|
|
import javax.annotation.Resource;
|
import java.time.LocalDateTime;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Component
|
public class GiveVipUtil {
|
|
@Resource
|
private VipClient vipClient;
|
@Resource
|
private TAppUserVipDetailService tAppUserVipDetailService;
|
@Resource
|
private OtherClient otherClient;
|
@Resource
|
private TAppCouponService appCouponService;
|
public void sendVip(TAppUser nowUser,Integer vipId,Integer plusDay,Integer type){
|
if (nowUser.getVipEndTime()==null||nowUser.getVipEndTime().isBefore(LocalDateTime.now())) {
|
nowUser.setVipEndTime(LocalDateTime.now().plusMonths(plusDay));
|
nowUser.setVipId(vipId);
|
//直接再detail里新增数据,因为不是续费
|
TAppUserVipDetail tAppUserVipDetail = new TAppUserVipDetail();
|
tAppUserVipDetail.setAppUserId(nowUser.getId());
|
tAppUserVipDetail.setStartTime(LocalDateTime.now());
|
tAppUserVipDetail.setEndTime(LocalDateTime.now().plusMonths(plusDay));
|
tAppUserVipDetail.setVipId(vipId);
|
|
R<TVip> info = vipClient.getInfo1(vipId);
|
TVip vip = info.getData();
|
List<SendCouponDto> javaList = new ArrayList<>();
|
if (vip.getCoupon()!=null) {
|
javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
|
}
|
|
tAppUserVipDetail.setCouponIds(vip.getCoupon());
|
tAppUserVipDetail.setSendChargeNum(vip.getDiscountTimes());
|
tAppUserVipDetail.setChargeNum(vip.getDiscountTimes());
|
tAppUserVipDetail.setDiscountMoney(vip.getMaximumDeduction());
|
tAppUserVipDetail.setSendMonth(1);
|
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) {
|
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(nowUser.getId());
|
tAppCoupon.setCouponId(Integer.valueOf(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));
|
tAppCoupon.setDetailId(tAppUserVipDetail.getId());
|
appCouponService.save(tAppCoupon);
|
}
|
}
|
}else {
|
TAppUserVipDetail tAppUserVipDetail2 = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, nowUser.getId()).orderByDesc(TAppUserVipDetail::getEndTime).last("limit 1").one();
|
TAppUserVipDetail tAppUserVipDetail1 = new TAppUserVipDetail();
|
tAppUserVipDetail1.setAppUserId(nowUser.getId());
|
tAppUserVipDetail1.setStartTime(tAppUserVipDetail2.getEndTime());
|
tAppUserVipDetail1.setEndTime(tAppUserVipDetail2.getEndTime().plusMonths(plusDay));
|
tAppUserVipDetail1.setVipId(vipId);
|
R<TVip> info = vipClient.getInfo1(vipId);
|
TVip vip = info.getData();
|
tAppUserVipDetail1.setCouponIds(vip.getCoupon());
|
tAppUserVipDetail1.setSendChargeNum(vip.getDiscountTimes());
|
tAppUserVipDetail1.setChargeNum(vip.getDiscountTimes());
|
tAppUserVipDetail1.setDiscountMoney(vip.getMaximumDeduction());
|
tAppUserVipDetail1.setSendMonth(1);
|
tAppUserVipDetail1.setVipType(type);
|
tAppUserVipDetail1.setVipJson(JSON.toJSONString(info.getData()));
|
tAppUserVipDetail1.setCreateTime(LocalDateTime.now());
|
tAppUserVipDetail1.setMonthEndTime(LocalDateTime.now().plusMonths(1));
|
tAppUserVipDetailService.save(tAppUserVipDetail1);
|
}
|
|
}
|
}
|