From af0c0c32059ed61f6e60a9dfdddc7d0576c94231 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 4 Nov 2024 18:07:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96vip=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../master/controller/UserVipController.java | 80 ++++++++++++++++++- 1 file changed, 77 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/peanut/modules/master/controller/UserVipController.java b/src/main/java/com/peanut/modules/master/controller/UserVipController.java index c915105a..0e19a9de 100644 --- a/src/main/java/com/peanut/modules/master/controller/UserVipController.java +++ b/src/main/java/com/peanut/modules/master/controller/UserVipController.java @@ -1,13 +1,17 @@ package com.peanut.modules.master.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.DateUtils; import com.peanut.common.utils.R; +import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.entity.MyUserEntity; import com.peanut.modules.common.entity.UserVip; +import com.peanut.modules.common.entity.VipBuyConfigEntity; import com.peanut.modules.master.service.MyUserService; import com.peanut.modules.master.service.UserVipService; +import com.peanut.modules.sociology.service.VipBuyConfigService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -16,9 +20,9 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.transaction.Transactional; import java.math.BigDecimal; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * 超V管理 @@ -32,6 +36,76 @@ public class UserVipController { private UserVipService vipService; @Autowired private MyUserService userService; + @Autowired + private VipBuyConfigService vipBuyConfigService; + + //获取vip商品 + @RequestMapping("/getVipProductForUser") + public R getVipProductForUser(@RequestBody Map params){ + int uid = Integer.parseInt(params.get("uid").toString()); + MyUserEntity userEntity = userService.getById(uid); + Integer chaoCount = vipService.count(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 1).gt(UserVip::getEndTime,new Date()).eq(UserVip::getState,0)); + Integer medicalCount = vipService.count(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 2).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0)); + Integer sociologyCount = vipService.count(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 3).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0)); + //获取超v列表 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(VipBuyConfigEntity::getType,userEntity.getVip().equals("1")||userEntity.getVip().equals("2")||userEntity.getVip().equals("3")? Collections.singletonList(1): Arrays.asList(1,2,3)); + wrapper.and(r->r.eq(VipBuyConfigEntity::getDateType,0).or(f->f.eq(VipBuyConfigEntity::getDateType,1).lt(VipBuyConfigEntity::getStartTime,new Date()).gt(VipBuyConfigEntity::getEndTime,new Date()))); + List vipBuyConfigEntities = vipBuyConfigService.list(wrapper); + for (VipBuyConfigEntity v:vipBuyConfigEntities){ + if(v.getType()==1){ + if(userEntity.getVip().equals("0")){ + v.setLastFee(chaoCount==0?v.getFee():v.getRebateFee()); + } else { + if(userEntity.getVip().equals("2")){//医学转超v计算价格 + List userVips = vipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 2).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0)); + if(userVips.size()!=1){ + return R.error("用户vip信息异常,请联系管理员"); + } + UserVip userVip = userVips.get(0); + Date nowDate = new Date(); // 第一个日期 + Date endDate = userVip.getEndTime(); // 第二个日期 + long differenceInMilliseconds = endDate.getTime() - nowDate.getTime(); + int differenceInDays = (int) TimeUnit.MILLISECONDS.toDays(differenceInMilliseconds); + int i = (12000 / (3 * 365)) * differenceInDays;//默认按照打折价格抵扣 + BigDecimal chaFee = BigDecimal.valueOf(i); + v.setLastFee(chaoCount>0?v.getRebateFee().subtract(chaFee):v.getFee().subtract(chaFee)); + } else if (userEntity.getVip().equals("3")) {//国学vip转超v计算价格 + List userVips = vipService.list(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 3).gt(UserVip::getEndTime, new Date()).eq(UserVip::getState, 0)); + if(userVips.size()!=1){ + return R.error("用户vip信息异常,请联系管理员"); + } + UserVip userVip = userVips.get(0); + Date nowDate = new Date(); // 第一个日期 + Date endDate = userVip.getEndTime(); // 第二个日期 + long differenceInMilliseconds = endDate.getTime() - nowDate.getTime(); + int differenceInDays = (int)TimeUnit.MILLISECONDS.toDays(differenceInMilliseconds); + int i = (5888 / (3 * 365)) * differenceInDays;//默认按照打折价格抵扣 + BigDecimal chaFee = BigDecimal.valueOf(i); + v.setLastFee(chaoCount>0?v.getRebateFee().subtract(chaFee):v.getFee().subtract(chaFee)); + }else { + v.setLastFee(v.getRebateFee()); + } + } + }else { + v.setLastFee(chaoCount>0||medicalCount>0||sociologyCount>0?v.getRebateFee():v.getFee()); + } + } + Map> flag = new HashMap<>(); + List collect = vipBuyConfigEntities.stream().filter(r -> r.getType() == 1 &&r.getDateType()==0).collect(Collectors.toList()); + List collect2 = vipBuyConfigEntities.stream().filter(r -> r.getType() == 1 && r.getDateType() == 1).collect(Collectors.toList()); + List collect4 = vipBuyConfigEntities.stream().filter(r -> r.getType() == 2 && r.getDateType()==0).collect(Collectors.toList()); + List collect5 = vipBuyConfigEntities.stream().filter(r -> r.getType() == 2 && r.getDateType() == 1).collect(Collectors.toList()); + List collect1 = vipBuyConfigEntities.stream().filter(r -> r.getType() == 3 && r.getDateType()==0).collect(Collectors.toList()); + List collect3 = vipBuyConfigEntities.stream().filter(r -> r.getType() == 3 && r.getDateType() == 1).collect(Collectors.toList()); + flag.put("super",collect); + flag.put("super_hd",collect2); + flag.put("sociology",collect1); + flag.put("sociology_hd",collect3); + flag.put("medical",collect4); + flag.put("medical_hd",collect5); + return R.ok().put("list",flag); + } @RequestMapping("/listByPage") public R listByPage(@RequestBody Map params) {