package com.ruoyi.account.service.impl;
|
|
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;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author luodangjia
|
* @since 2024-08-08
|
*/
|
@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);
|
}
|
|
}
|