luodangjia
2024-08-17 25494bca2766974ec5dc85244907b5e1e5642404
8.17
4个文件已添加
4个文件已修改
260 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java
New file
@@ -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;
}
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java
New file
@@ -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;
}
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")
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java
New file
@@ -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;
 }
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java
New file
@@ -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;
}
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 = {"用户管理-用户列表"})
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);
        }
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);
    }
}