From 580270f1f03baaa9f02b5083536ea285a2c22f97 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Wed, 5 Jun 2024 16:50:05 +0800 Subject: [PATCH] =?UTF-8?q?vip=E8=B4=AD=E4=B9=B0=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../medical/controller/UserController.java | 24 +++++ .../medical/service/VipBuyConfigService.java | 9 ++ .../service/impl/VipBuyConfigServiceImpl.java | 89 +++++++++++++++++++ .../sociology/controller/UserController.java | 6 +- ...pService.java => VipBuyConfigService.java} | 2 +- ...Impl.java => VipBuyConfigServiceImpl.java} | 7 +- ...ogyService.xml => VipBuyConfigService.xml} | 0 ...ogyService.xml => VipBuyConfigService.xml} | 0 ...eJobLogDao.xml => VipBuyConfigService.xml} | 0 9 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 src/main/java/com/peanut/modules/medical/controller/UserController.java create mode 100644 src/main/java/com/peanut/modules/medical/service/VipBuyConfigService.java create mode 100644 src/main/java/com/peanut/modules/medical/service/impl/VipBuyConfigServiceImpl.java rename src/main/java/com/peanut/modules/sociology/service/{VipService.java => VipBuyConfigService.java} (79%) rename src/main/java/com/peanut/modules/sociology/service/impl/{VipServiceImpl.java => VipBuyConfigServiceImpl.java} (95%) rename src/main/resources/mapper/{CourseSociologyService.xml => VipBuyConfigService.xml} (100%) rename src/main/resources/mapper/app/{CourseSociologyService.xml => VipBuyConfigService.xml} (100%) rename src/main/resources/mapper/job/{ScheduleJobLogDao.xml => VipBuyConfigService.xml} (100%) diff --git a/src/main/java/com/peanut/modules/medical/controller/UserController.java b/src/main/java/com/peanut/modules/medical/controller/UserController.java new file mode 100644 index 00000000..3c20e3a5 --- /dev/null +++ b/src/main/java/com/peanut/modules/medical/controller/UserController.java @@ -0,0 +1,24 @@ +package com.peanut.modules.medical.controller; + +import com.peanut.common.utils.R; +import com.peanut.modules.medical.service.VipBuyConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; + +@Slf4j +@RestController("medicalUserController") +@RequestMapping("/medical/user") +public class UserController { + + @Autowired + private VipBuyConfigService vipBuyConfigService; + + @RequestMapping("/getVipProductForUser") + public R getVipProductForUser() throws ParseException { + return vipBuyConfigService.getVipProductForUser(); + } +} diff --git a/src/main/java/com/peanut/modules/medical/service/VipBuyConfigService.java b/src/main/java/com/peanut/modules/medical/service/VipBuyConfigService.java new file mode 100644 index 00000000..77f48d7e --- /dev/null +++ b/src/main/java/com/peanut/modules/medical/service/VipBuyConfigService.java @@ -0,0 +1,9 @@ +package com.peanut.modules.medical.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.common.utils.R; +import com.peanut.modules.common.entity.VipBuyConfigEntity; + +public interface VipBuyConfigService extends IService { + R getVipProductForUser(); +} diff --git a/src/main/java/com/peanut/modules/medical/service/impl/VipBuyConfigServiceImpl.java b/src/main/java/com/peanut/modules/medical/service/impl/VipBuyConfigServiceImpl.java new file mode 100644 index 00000000..9b3e8021 --- /dev/null +++ b/src/main/java/com/peanut/modules/medical/service/impl/VipBuyConfigServiceImpl.java @@ -0,0 +1,89 @@ +package com.peanut.modules.medical.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.peanut.common.utils.R; +import com.peanut.common.utils.ShiroUtils; +import com.peanut.modules.common.dao.MyUserDao; +import com.peanut.modules.common.dao.UserVipDao; +import com.peanut.modules.common.dao.VipBuyConfigDao; +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.medical.service.VipBuyConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +@Slf4j +@Service("medicalVipBuyConfigService") +public class VipBuyConfigServiceImpl extends ServiceImpl implements VipBuyConfigService { + + @Autowired + private MyUserDao myUserDao; + @Autowired + private UserVipDao userVipDao; + + @Override + public R getVipProductForUser() { + int uid = ShiroUtils.getUId(); + MyUserEntity userEntity = myUserDao.selectById(uid); + Integer chaoCount = userVipDao.selectCount(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 1).gt(UserVip::getEndTime,new Date()).eq(UserVip::getState,0)); + Integer medicalCount = userVipDao.selectCount(new LambdaQueryWrapper().eq(UserVip::getUserId, uid).eq(UserVip::getType, 2).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("3")? Collections.singletonList(1): Arrays.asList(1,2)); + 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 = this.getBaseMapper().selectList(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 = userVipDao.selectList(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 = userVipDao.selectList(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?v.getRebateFee():v.getFee()); + } + } + Map> flag = new HashMap<>(); + List collect = vipBuyConfigEntities.stream().filter(r -> r.getType() == 1).collect(Collectors.toList()); + List collect1 = vipBuyConfigEntities.stream().filter(r -> r.getType() == 2).collect(Collectors.toList()); + if(collect.size()>0) flag.put("super",collect); + if(collect1.size()>0) flag.put("medicine",collect1); + return R.ok().put("list",flag); + } +} diff --git a/src/main/java/com/peanut/modules/sociology/controller/UserController.java b/src/main/java/com/peanut/modules/sociology/controller/UserController.java index 4a96992a..c7f36fbf 100644 --- a/src/main/java/com/peanut/modules/sociology/controller/UserController.java +++ b/src/main/java/com/peanut/modules/sociology/controller/UserController.java @@ -1,7 +1,7 @@ package com.peanut.modules.sociology.controller; import com.peanut.common.utils.R; -import com.peanut.modules.sociology.service.VipService; +import com.peanut.modules.sociology.service.VipBuyConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; @@ -14,11 +14,11 @@ import java.text.ParseException; @RequestMapping("sociology/user") public class UserController { @Autowired - private VipService vipService; + private VipBuyConfigService vipBuyConfigService; @RequestMapping("/getVipProductForUser") public R getVipProductForUser() throws ParseException { - return vipService.getVipProductForUser(); + return vipBuyConfigService.getVipProductForUser(); } } diff --git a/src/main/java/com/peanut/modules/sociology/service/VipService.java b/src/main/java/com/peanut/modules/sociology/service/VipBuyConfigService.java similarity index 79% rename from src/main/java/com/peanut/modules/sociology/service/VipService.java rename to src/main/java/com/peanut/modules/sociology/service/VipBuyConfigService.java index ec422527..d37d2d8b 100644 --- a/src/main/java/com/peanut/modules/sociology/service/VipService.java +++ b/src/main/java/com/peanut/modules/sociology/service/VipBuyConfigService.java @@ -6,6 +6,6 @@ import com.peanut.modules.common.entity.VipBuyConfigEntity; import java.text.ParseException; -public interface VipService extends IService { +public interface VipBuyConfigService extends IService { R getVipProductForUser() throws ParseException; } diff --git a/src/main/java/com/peanut/modules/sociology/service/impl/VipServiceImpl.java b/src/main/java/com/peanut/modules/sociology/service/impl/VipBuyConfigServiceImpl.java similarity index 95% rename from src/main/java/com/peanut/modules/sociology/service/impl/VipServiceImpl.java rename to src/main/java/com/peanut/modules/sociology/service/impl/VipBuyConfigServiceImpl.java index 1bae1834..9aec79d7 100644 --- a/src/main/java/com/peanut/modules/sociology/service/impl/VipServiceImpl.java +++ b/src/main/java/com/peanut/modules/sociology/service/impl/VipBuyConfigServiceImpl.java @@ -10,23 +10,20 @@ import com.peanut.modules.common.dao.VipBuyConfigDao; 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.common.service.UserVipService; -import com.peanut.modules.sociology.service.VipService; +import com.peanut.modules.sociology.service.VipBuyConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.text.DateFormat; import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @Slf4j @Service("sociologyUserService") -public class VipServiceImpl extends ServiceImpl implements VipService { +public class VipBuyConfigServiceImpl extends ServiceImpl implements VipBuyConfigService { @Autowired private MyUserDao myUserDao; @Autowired diff --git a/src/main/resources/mapper/CourseSociologyService.xml b/src/main/resources/mapper/VipBuyConfigService.xml similarity index 100% rename from src/main/resources/mapper/CourseSociologyService.xml rename to src/main/resources/mapper/VipBuyConfigService.xml diff --git a/src/main/resources/mapper/app/CourseSociologyService.xml b/src/main/resources/mapper/app/VipBuyConfigService.xml similarity index 100% rename from src/main/resources/mapper/app/CourseSociologyService.xml rename to src/main/resources/mapper/app/VipBuyConfigService.xml diff --git a/src/main/resources/mapper/job/ScheduleJobLogDao.xml b/src/main/resources/mapper/job/VipBuyConfigService.xml similarity index 100% rename from src/main/resources/mapper/job/ScheduleJobLogDao.xml rename to src/main/resources/mapper/job/VipBuyConfigService.xml