From 25494bca2766974ec5dc85244907b5e1e5642404 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期六, 17 八月 2024 15:56:13 +0800
Subject: [PATCH] 8.17

---
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java        |   25 +++++
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java         |   53 ++++++++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java                |   35 +++++++
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java         |   35 +++++++
 ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java              |   10 ++
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java |   87 +++++++++++++++--
 ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java          |    3 
 ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java              |   12 +-
 8 files changed, 244 insertions(+), 16 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
new file mode 100644
index 0000000..28613f6
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
@@ -0,0 +1,25 @@
+package com.ruoyi.account.api.dto;
+
+import com.ruoyi.account.api.model.TAppUserCar;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Data
+public class AppUserInfoDto {
+    @ApiModelProperty("1是0否")
+    private Integer isVip;
+    @ApiModelProperty("vip结束时间")
+    private LocalDateTime vipExpireTime;
+    @ApiModelProperty("当天是否签到")
+    private Integer isSign;
+    @ApiModelProperty("当前积分")
+    private Integer points;
+    @ApiModelProperty("当前优惠卷数量")
+    private Integer couponNum;
+    @ApiModelProperty("当前绑定的车辆")
+    private List<TAppUserCar> userCars;
+}
diff --git a/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
new file mode 100644
index 0000000..1af4b89
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
@@ -0,0 +1,35 @@
+package com.ruoyi.account.api.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+public class InfoCouponDto {
+    @ApiModelProperty(value = "优惠券名称")
+    @TableField("name")
+    private String name;
+    @ApiModelProperty(value = "优惠方式(1=满减,2=抵扣)")
+    @TableField("preferential_mode")
+    private Integer preferentialMode;
+
+    @ApiModelProperty(value = "优惠金额")
+    @TableField("discount_amount")
+    private BigDecimal discountAmount;
+    @ApiModelProperty(value = "满减条件为0时无条件")
+    @TableField("meet_the_conditions")
+    private BigDecimal meetTheConditions;
+
+    @ApiModelProperty(value = "折扣")
+    @TableField("discount")
+    private BigDecimal discount;
+    @ApiModelProperty(value = "结束时间")
+    @TableField("end_time")
+    private LocalDateTime endTime;
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private LocalDateTime startTime;
+}
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 d6a6fa3..b3bea84 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
@@ -45,6 +45,9 @@
     @ApiModelProperty(value = "结束时间")
     @TableField("end_time")
     private LocalDateTime endTime;
+    @ApiModelProperty(value = "开始时间")
+    @TableField("start_time")
+    private LocalDateTime startTime;
 
     @ApiModelProperty(value = "获得方式(1=积分兑换,2=现金购买)")
     @TableField("ways_to_obtain")
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java
new file mode 100644
index 0000000..f725386
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java
@@ -0,0 +1,10 @@
+package com.ruoyi.other.api.dto;
+
+import com.ruoyi.other.api.domain.TCoupon;
+import lombok.Data;
+
+@Data
+public class VipCouponDto {
+    private TCoupon tCoupon;
+    private Integer num;
+ }
diff --git a/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java
new file mode 100644
index 0000000..0783c96
--- /dev/null
+++ b/ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java
@@ -0,0 +1,35 @@
+package com.ruoyi.other.api.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.License;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+@Data
+public class VipInfoDto {
+
+    @ApiModelProperty("月卡价格")
+    private BigDecimal monthlyCard;
+    @ApiModelProperty("季卡价格")
+    private BigDecimal seasonCard;
+    @ApiModelProperty("年卡价格")
+    private BigDecimal annualCard;
+    @ApiModelProperty("最高抵扣价格")
+    private BigDecimal maximumDeduction;
+    @ApiModelProperty("抵扣次数")
+    private Integer discountTimes;
+
+    @ApiModelProperty(value = "双倍积分开关(0=否,1=是)")
+    private Integer doubleIntegration;
+
+    @ApiModelProperty(value = "商城专享价开关(0=否,1=是)")
+    private Integer mallExclusivePrice;
+    @ApiModelProperty(value = "可赠送的优惠卷列表")
+
+    private List<VipCouponDto> vipCouponDtos;
+
+    @ApiModelProperty(value = "最高总折扣")
+    private BigDecimal totalDiscount;
+}
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 b8205c8..c65c39b 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
@@ -1,6 +1,7 @@
 package com.ruoyi.account.controller;
 
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -21,15 +22,18 @@
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TExchangeOrder;
 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 io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.time.Duration;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -70,6 +74,13 @@
     @Resource
     private ExchangeOrderClient exchangeOrderClient;
 
+    @Resource
+    private  TAppUserSignService signService;
+    @Resource
+    private TAppCouponService appCouponService;
+    @Resource
+    private TAppUserCarService carService;
+
 
 
     @ApiOperation(value = "管理后台-根据手机号查询用户ids", tags = {"管理后台-活动费用统计"})
@@ -91,6 +102,20 @@
         }
         return R.ok(data);
     }
+
+
+    @ApiOperation(value = "单位下拉框", tags = {"用户管理-单位管理"})
+    @PostMapping(value = "/unit/select")
+    public R<List<TCompany>> unitSelect() {
+        UnitListQueryDto unitListQueryDto = new UnitListQueryDto();
+        unitListQueryDto.setPageCurr(1);
+        unitListQueryDto.setPageSize(9999);
+        //拿到单位列表
+        R<Page<TCompany>> pageR = otherClient.queryUnitPage(unitListQueryDto);
+
+        return R.ok(pageR.getData().getRecords());
+    }
+
 
     @ApiOperation(value = "单位管理添加或编辑", tags = {"用户管理-单位管理"})
     @PostMapping(value = "/unit/addOrUpdate")
@@ -262,7 +287,7 @@
         return R.ok(userDetailDto);
     }
 
-    @ApiOperation(value = "用户详情积分明细", tags = {"用户管理-用户列表"})
+    @ApiOperation(value = "用户详情积分明细", tags = {"后台-用户管理-用户列表","小程序-个人中心"})
     @PostMapping(value = "/user/points/page")
     public R<Page<TAppUserIntegralChange>> pointsDetail(@RequestBody PointsQueryDto pointsQueryDto) {
         List<Integer> types = new ArrayList<>();
@@ -298,7 +323,7 @@
 
     }
 
-    @ApiOperation(value = "用户详情积分明细", tags = {"用户管理-用户列表"})
+    @ApiOperation(value = "冻结解冻用户", tags = {"后台-用户管理-用户列表"})
     @PostMapping(value = "/user/status/change")
     public R pointsDetail(@RequestBody UserChangeDto userChangeDto) {
         TAppUser appUser = appUserService.getById(userChangeDto.getUserId());
@@ -306,14 +331,56 @@
         appUserService.updateById(appUser);
         return R.ok();
     }
-//    @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"})
-//    @PostMapping(value = "/user/info")
-//    public R info() {
-//        Long userId = 1L;
-//        TAppUser byId = appUserService.getById(userId);
-//
-//
-//    }
+
+    @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"})
+    @PostMapping(value = "/user/info")
+    public R<AppUserInfoDto> info() {
+        Long userId = 1L;
+        TAppUser byId = appUserService.getById(userId);
+        AppUserInfoDto appUserInfoDto = new AppUserInfoDto();
+
+        //判断会员
+        if (byId.getVipEndTime()==null||byId.getVipEndTime().isBefore(LocalDateTime.now())){
+            appUserInfoDto.setIsVip(0);
+        }else {
+            appUserInfoDto.setIsVip(1);
+            appUserInfoDto.setVipExpireTime(byId.getVipEndTime());
+        }
+        //判断当天是否签到
+        Long count = signService.lambdaQuery().eq(TAppUserSign::getSignDay, LocalDate.now()).count();
+        appUserInfoDto.setIsSign(count>0?1:0);
+        //获取当前拥有的优惠卷数量
+        Long coupons = appCouponService.lambdaQuery().eq(TAppCoupon::getAppUserId, userId).eq(TAppCoupon::getStatus, 1).count();
+        appUserInfoDto.setCouponNum(Math.toIntExact(coupons));
+        //当前绑定的车辆
+        List<TAppUserCar> list = carService.lambdaQuery().eq(TAppUserCar::getAppUserId, userId).list();
+        appUserInfoDto.setUserCars(list);
+        return R.ok(appUserInfoDto);
+
+
+    }
+
+    @ApiOperation(value = "优惠卷列表不分页(1可使用2不可用)", tags = {"小程序-个人中心"})
+    @PostMapping(value = "/user/coupon")
+    public R<List<InfoCouponDto>> userCoupon(@RequestParam("type") Integer type) {
+        LocalDateTime now = LocalDateTime.now();
+
+        List<InfoCouponDto> couponDtos = new ArrayList<>();
+        List<TAppCoupon> list = appCouponService.lambdaQuery().le(TAppCoupon::getStartTime, now).ge(TAppCoupon::getEndTime, now).eq(TAppCoupon::getStatus, type).list();
+        for (TAppCoupon tAppCoupon : list) {
+            TCoupon coupon = JSON.toJavaObject(JSON.parseObject(tAppCoupon.getCouponJson()), TCoupon.class);
+            InfoCouponDto infoCouponDto = new InfoCouponDto();
+            BeanUtils.copyProperties(coupon,infoCouponDto);
+            couponDtos.add(infoCouponDto);
+
+        }
+
+
+        return R.ok(couponDtos);
+
+
+    }
+
 
 
     @ApiOperation(value = "赠送会员", tags = {"用户管理-用户列表"})
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 0012af4..b477141 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
@@ -82,12 +82,12 @@
             //获取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 newAppUser = new TAppUserVipDetail();
+//            newAppUser.setAppUserId(nowUser.getId());
+//            newAppUser.setStartTime(tAppUserVipDetail.getEndTime());
+            tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusMonths(plusDay).minusDays(1));
+//            newAppUser.setVipId(vipId);
+            tAppUserVipDetailService.updateById(tAppUserVipDetail);
 //                tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plusDays(plusDay));
 //                tAppUserVipDetailService.updateById(tAppUserVipDetail);
         }
diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
index 6868a19..dfd4f46 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java
@@ -1,13 +1,19 @@
 package com.ruoyi.other.controller;
 
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.ruoyi.account.api.dto.SendCouponDto;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.other.api.domain.TCoupon;
 import com.ruoyi.other.api.domain.TIntegralRule;
 import com.ruoyi.other.api.domain.TUserTag;
 import com.ruoyi.other.api.domain.TVip;
+import com.ruoyi.other.api.dto.VipCouponDto;
+import com.ruoyi.other.api.dto.VipInfoDto;
+import com.ruoyi.other.service.TCouponService;
 import com.ruoyi.other.service.TVipService;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -16,6 +22,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -33,6 +42,8 @@
 public class TVipController {
     @Autowired
     private TVipService vipService;
+    @Resource
+    private TCouponService couponService;
     @PostMapping("/saveVip")
     @ApiOperation(value = "会员添加")
     public AjaxResult saveVip(@RequestBody TVip dto) {
@@ -122,5 +133,47 @@
         }
     }
 
+
+    @ApiOperation(value = "会员信息", tags = {"小程序-个人中心"})
+    @PostMapping("/vipInfo")
+    public AjaxResult vipInfo() {
+        List<VipInfoDto> vipInfoDtos = new ArrayList<>();
+        List<TVip> vips = vipService.lambdaQuery().eq(TVip::getReveal, 1).list();
+        for (TVip vip : vips) {
+            VipInfoDto vipInfoDto = new VipInfoDto();
+            vipInfoDto.setMonthlyCard(vip.getMonthlyCardReveal()==1?vip.getMonthlyCard():null);
+            vipInfoDto.setSeasonCard(vip.getSeasonCardReveal()==1?vip.getSeasonCard():null);
+            vipInfoDto.setAnnualCard(vip.getAnnualCardReveal()==1?vip.getAnnualCard():null);
+            vipInfoDto.setMaximumDeduction(vip.getMaximumDeduction());
+            vipInfoDto.setDiscountTimes(vip.getDiscountTimes());
+            vipInfoDto.setDoubleIntegration(vip.getDoubleIntegration());
+            vipInfoDto.setMallExclusivePrice(vip.getMallExclusivePrice());
+            List<SendCouponDto> javaList = JSON.parseArray(vip.getCoupon()).toJavaList(SendCouponDto.class);
+            List<VipCouponDto> vipCouponDtos = new ArrayList<>();
+            if (!javaList.isEmpty()){
+                for (SendCouponDto sendCouponDto : javaList) {
+                    VipCouponDto vipCouponDto = new VipCouponDto();
+                    TCoupon byId = couponService.getById(sendCouponDto.getId());
+                    vipCouponDto.setNum(sendCouponDto.getNumber());
+                    vipCouponDto.setTCoupon(byId);
+                    vipCouponDtos.add(vipCouponDto);
+                }
+            }
+
+            vipInfoDto.setVipCouponDtos(vipCouponDtos);
+
+            //计算总折扣
+            BigDecimal  total = BigDecimal.ZERO;
+            total = total.add(vip.getMaximumDeduction().multiply(BigDecimal.valueOf(vip.getDiscountTimes())));
+            for (VipCouponDto vipCouponDto : vipCouponDtos) {
+                TCoupon tCoupon = vipCouponDto.getTCoupon();
+                total.add(tCoupon.getDiscount());
+            }
+            vipInfoDto.setTotalDiscount(total);
+            vipInfoDtos.add(vipInfoDto);
+        }
+        return AjaxResult.success(vipInfoDtos);
+    }
+
 }
 

--
Gitblit v1.7.1