From 2b57f006a51aa8ab14e0917547fb0a426e8879bc Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 14 Apr 2025 15:50:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E7=94=A8=E6=88=B7=E5=BD=93?= =?UTF-8?q?=E5=89=8D=E5=9F=B9=E8=AE=AD=E7=8F=AD=E6=9C=80=E4=BD=8E=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ShopProductServiceImpl.java | 5 +- .../controller/TrainingClassController.java | 7 ++ .../modules/common/entity/TrainingToUser.java | 6 +- .../common/service/TrainingClassService.java | 7 ++ .../common/service/UserVipService.java | 16 ++-- .../impl/TrainingClassServiceImpl.java | 88 +++++++++++++++++++ .../service/impl/UserVipServiceImpl.java | 35 ++++---- .../service/impl/CourseServiceImpl.java | 10 +-- .../controller/PsycheCourseController.java | 4 +- .../service/impl/CourseServiceImpl.java | 4 +- 10 files changed, 142 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java index 89cef6b4..88d77188 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/ShopProductServiceImpl.java @@ -1,5 +1,6 @@ package com.peanut.modules.book.service.impl; import com.peanut.common.utils.ExcludeEmptyQueryWrapper; +import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.service.UserVipService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -55,7 +56,7 @@ public class ShopProductServiceImpl extends ServiceImpl params) { + Map info = trainingClassService.getFinalPriceByUser((int)params.get("classId"),(int)params.get("userId")); + return R.ok().put("info",info); + } + //培训班列表 @RequestMapping("/trainingClassList") public R trainingClassList(@RequestBody Map params) { diff --git a/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java b/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java index 4a4fefbc..00bd20f6 100644 --- a/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java +++ b/src/main/java/com/peanut/modules/common/entity/TrainingToUser.java @@ -20,11 +20,11 @@ public class TrainingToUser { private Integer trainingId; - private String payMethod; - private String orderSn; - private BigDecimal money; + private String identity; + + private String payMethod; private Date createTime; diff --git a/src/main/java/com/peanut/modules/common/service/TrainingClassService.java b/src/main/java/com/peanut/modules/common/service/TrainingClassService.java index 5b2b52e9..b6ffe53e 100644 --- a/src/main/java/com/peanut/modules/common/service/TrainingClassService.java +++ b/src/main/java/com/peanut/modules/common/service/TrainingClassService.java @@ -1,7 +1,14 @@ package com.peanut.modules.common.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.peanut.modules.common.entity.MyUserEntity; import com.peanut.modules.common.entity.TrainingClass; +import java.math.BigDecimal; +import java.util.Map; + public interface TrainingClassService extends IService { + + Map getFinalPriceByUser(int classId, int userId); + } diff --git a/src/main/java/com/peanut/modules/common/service/UserVipService.java b/src/main/java/com/peanut/modules/common/service/UserVipService.java index 1e2ab18d..e7209af8 100644 --- a/src/main/java/com/peanut/modules/common/service/UserVipService.java +++ b/src/main/java/com/peanut/modules/common/service/UserVipService.java @@ -12,14 +12,14 @@ public interface UserVipService extends IService { boolean isVip(); boolean isVip(int uid); boolean noMedicalVip(); - boolean isMedicalVip(); - boolean isChineseWesternVip(); - boolean isAcupunctureVip(); - boolean istumorVip(); - boolean isSociologyVip(); - boolean isPsycheVip(); - boolean is4569SVip(); - boolean is78SVip(); + boolean isMedicalVip(int uid); + boolean isChineseWesternVip(int uid); + boolean isAcupunctureVip(int uid); + boolean istumorVip(int uid); + boolean isSociologyVip(int uid); + boolean isPsycheVip(int uid); + boolean is4569SVip(int uid); + boolean is78SVip(int uid); //是否是这门课的vip UserVip ownCourseCatalogueByVip(int courseId); diff --git a/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java index d21d25ac..0b099f32 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/TrainingClassServiceImpl.java @@ -1,13 +1,101 @@ package com.peanut.modules.common.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.modules.common.dao.TrainingClassDao; +import com.peanut.modules.common.dao.UserVipDao; +import com.peanut.modules.common.entity.MyUserEntity; import com.peanut.modules.common.entity.TrainingClass; +import com.peanut.modules.common.entity.UserContribution; +import com.peanut.modules.common.entity.UserVip; import com.peanut.modules.common.service.TrainingClassService; +import com.peanut.modules.common.service.UserContributionService; +import com.peanut.modules.common.service.UserVipService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; + @Slf4j @Service("commonTrainingClassService") public class TrainingClassServiceImpl extends ServiceImpl implements TrainingClassService { + + @Autowired + private UserVipService userVipService; + @Autowired + private UserContributionService userContributionService; + + @Override + public Map getFinalPriceByUser(int classId,int userId) { + TrainingClass trainingClass = this.getById(classId); + BigDecimal fee = trainingClass.getFee(); + String identity ="原价"; + if (trainingClass!=null){ + if (StringUtils.isNotEmpty(trainingClass.getVipType())){ + String[] vipTypes = trainingClass.getVipType().split(","); + for (String vipType : vipTypes) { + int count = userVipService.count(new LambdaQueryWrapper() + .eq(UserVip::getUserId,userId).eq(UserVip::getType,vipType).eq(UserVip::getState,0)); + if (count>0){ + fee = trainingClass.getVipFee(); + identity = "vip"; + } + } + } + if (StringUtils.isNotEmpty(trainingClass.getSvipType())){ + String[] svipTypes = trainingClass.getSvipType().split(","); + for (String svipType : svipTypes) { + if ("1".equals(svipType)&&userVipService.is4569SVip(userId)){ + if (fee.compareTo(trainingClass.getSvipFee())>0){ + fee = trainingClass.getSvipFee(); + identity = "svip"; + } + }else if ("2".equals(svipType)&&userVipService.is78SVip(userId)){ + if (fee.compareTo(trainingClass.getSvipFee())>0){ + fee = trainingClass.getSvipFee(); + identity = "svip"; + } + } + } + } + if (trainingClass.getThreeHuFee().compareTo(BigDecimal.ZERO)>0){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.eq(UserContribution::getUserId,userId); + wrapper.selectSum(UserContribution::getScore); + Map map = userContributionService.getMap(wrapper); + if (map != null&&map.containsKey("score")){ + if (new BigDecimal(map.get("score").toString()).compareTo(new BigDecimal(90))>=0){ + if (fee.compareTo(trainingClass.getThreeHuFee())>0){ + fee = trainingClass.getThreeHuFee(); + identity = "三星湖粉"; + } + } + } + } + if (trainingClass.getFiveHuFee().compareTo(BigDecimal.ZERO)>0){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper(); + wrapper.eq(UserContribution::getUserId,userId); + wrapper.selectSum(UserContribution::getScore); + Map map = userContributionService.getMap(wrapper); + if (map != null&&map.containsKey("score")){ + if (new BigDecimal(map.get("score").toString()).compareTo(new BigDecimal(150))>=0){ + if (fee.compareTo(trainingClass.getFiveHuFee())>0){ + fee = trainingClass.getFiveHuFee(); + identity = "五星湖粉"; + } + } + } + } + } + Map map = new HashMap<>(); + map.put("fee",fee); + map.put("identity",identity); + return map; + } + } diff --git a/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java index 6d215c10..a5543c66 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/UserVipServiceImpl.java @@ -69,53 +69,52 @@ public class UserVipServiceImpl extends ServiceImpl impleme } @Override - public boolean isMedicalVip() { - return isVipByType(4); + public boolean isMedicalVip(int uid) { + return isVipByType(4,uid); } @Override - public boolean isChineseWesternVip() { - return isVipByType(9); + public boolean isChineseWesternVip(int uid) { + return isVipByType(9,uid); } @Override - public boolean isAcupunctureVip() { - return isVipByType(5); + public boolean isAcupunctureVip(int uid) { + return isVipByType(5,uid); } @Override - public boolean istumorVip() { - return isVipByType(6); + public boolean istumorVip(int uid) { + return isVipByType(6,uid); } @Override - public boolean isSociologyVip() { - return isVipByType(7); + public boolean isSociologyVip(int uid) { + return isVipByType(7,uid); } @Override - public boolean isPsycheVip() { - return isVipByType(8); + public boolean isPsycheVip(int uid) { + return isVipByType(8,uid); } @Override - public boolean is4569SVip() { - if (isVipByType(4)&&isVipByType(9)&&isVipByType(5)&&isVipByType(6)){ + public boolean is4569SVip(int uid) { + if (isVipByType(4,uid)&&isVipByType(9,uid)&&isVipByType(5,uid)&&isVipByType(6,uid)){ return true; } return false; } @Override - public boolean is78SVip() { - if (isVipByType(7)&&isVipByType(8)){ + public boolean is78SVip(int uid) { + if (isVipByType(7,uid)&&isVipByType(8,uid)){ return true; } return false; } - public boolean isVipByType(int type) { - int uid = ShiroUtils.getUId(); + public boolean isVipByType(int type,int uid) { if (uid >= 10000) { List userVipList = userVipDao.selectList(new LambdaQueryWrapper() .eq(UserVip::getUserId, uid) diff --git a/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java b/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java index a32a7368..22aadee5 100644 --- a/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java @@ -165,19 +165,19 @@ public class CourseServiceImpl extends ServiceImpl impl wrapper.rightJoin(CourseToMedicine.class,CourseToMedicine::getCourseId,CourseEntity::getId); //开通的会员下的课程 List list = new ArrayList<>();//通过顶级标签获取最下层标签 - if (userVipService.isMedicalVip()){ + if (userVipService.isMedicalVip(ShiroUtils.getUId())){ userVipService.bottomLabel(1,list); } - if (userVipService.isChineseWesternVip()){ + if (userVipService.isChineseWesternVip(ShiroUtils.getUId())){ userVipService.bottomLabel(74,list); } - if (userVipService.isAcupunctureVip()){ + if (userVipService.isAcupunctureVip(ShiroUtils.getUId())){ userVipService.bottomLabel(2,list); } - if (userVipService.istumorVip()){ + if (userVipService.istumorVip(ShiroUtils.getUId())){ userVipService.bottomLabel(5,list); } - if (userVipService.isPsycheVip()){ + if (userVipService.isPsycheVip(ShiroUtils.getUId())){ userVipService.bottomLabel(4,list); } //购买的课程 diff --git a/src/main/java/com/peanut/modules/psyche/controller/PsycheCourseController.java b/src/main/java/com/peanut/modules/psyche/controller/PsycheCourseController.java index 23234910..d9889fdc 100644 --- a/src/main/java/com/peanut/modules/psyche/controller/PsycheCourseController.java +++ b/src/main/java/com/peanut/modules/psyche/controller/PsycheCourseController.java @@ -38,7 +38,7 @@ public class PsycheCourseController { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.distinct(); wrapper.rightJoin(CourseToPsyche.class,CourseToPsyche::getCourseId,CourseEntity::getId); - if (!userVipService.isPsycheVip()){ + if (!userVipService.isPsycheVip(ShiroUtils.getUId())){ wrapper.leftJoin(UserCourseBuyEntity.class,UserCourseBuyEntity::getCourseId,CourseEntity::getId); wrapper.eq(UserCourseBuyEntity::getUserId,ShiroUtils.getUId()); } @@ -87,7 +87,7 @@ public class PsycheCourseController { wrapper.orderByAsc(CourseCatalogueEntity::getSort); List> list = courseService.listMaps(wrapper); for (Map courseEntity : list) { - if (!userVipService.isPsycheVip()){ + if (!userVipService.isPsycheVip(ShiroUtils.getUId())){ courseEntities.add(courseEntity); } } diff --git a/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java b/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java index 7076d150..415075a2 100644 --- a/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java @@ -358,7 +358,7 @@ public class CourseServiceImpl extends ServiceImpl impl wrapper.orderByAsc(CourseCatalogueEntity::getSort); List> courseList = this.getBaseMapper().selectMaps(wrapper); for (Map map:courseList){ - if (!userVipService.isSociologyVip()){ + if (!userVipService.isSociologyVip((int)param.get("userId"))){ courseEntities.add(map); } } @@ -373,7 +373,7 @@ public class CourseServiceImpl extends ServiceImpl impl } } List courseEntities = null; - if (userVipService.isSociologyVip()){ + if (userVipService.isSociologyVip(user.getId())){ MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseToSociologyEntity::getCourseId); wrapper.selectAll(CourseEntity.class);