ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/AppUserInfoDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/dto/InfoCouponDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-api/ruoyi-api-account/src/main/java/com/ruoyi/account/api/model/TAppCoupon.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipCouponDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-api/ruoyi-api-other/src/main/java/com/ruoyi/other/api/dto/VipInfoDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/util/GiveVipUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/TVipController.java | ●●●●● 补丁 | 查看 | 原始文档 | 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); } }