From 5952aac570624230c2c19ce68cea9344f38c5fb7 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 13 八月 2024 16:56:32 +0800
Subject: [PATCH] 8.13.2

---
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java          |    2 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java                             |   17 -----
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java      |    6 ++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java                   |    5 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java             |    6 +-
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java                      |    4 +
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java                  |    5 +
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java                          |   33 +++++++++-
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java               |   18 +++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java              |    6 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java |   54 ++++++++++++++---
 11 files changed, 120 insertions(+), 36 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
index cec1394..01867dc 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/factory/AppCouponFallbackFactory.java
+++ b/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;
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
index 0f6d8d1..d6a6fa3 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java
+++ b/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;
+
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
index 6f4e4a4..577fc54 100644
--- a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppUserVipDetail.java
+++ b/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;
 
 
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
index 4099d98..049f55c 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/factory/OtherFallbackFactory.java
+++ b/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());
+            }
         };
     }
 }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
index d07fd62..660b19a 100644
--- a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/feignClient/OtherClient.java
+++ b/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);
+
+
 
 
 
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
index a891991..f430616 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
+++ b/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);
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java
index 880fdb6..4dff539 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/TAppUserVipDetailService.java
+++ b/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);
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
index be05f28..c38b1d6 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/impl/TAppUserVipDetailServiceImpl.java
+++ b/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);
         }
     }
 }
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
index 4d1a322..0bdf907 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/task/TaskUtil.java
+++ b/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) {
diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
index 6091de5..1f503b3 100644
--- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java
+++ b/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));
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
index cbcd8b3..136933c 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TCouponController.java
+++ b/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));
+
+    }
     /**
      * 小程序远程调用 获取优惠券信息
      */

--
Gitblit v1.7.1