From d22951c76d39a91ef9fc8bc9686ac1d59b2cbf25 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 11 Jun 2024 13:26:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=BB=E5=AD=A6-=E6=88=91=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/dao/UserCourseStudyingDao.java | 9 ++ .../common/entity/UserCourseStudying.java | 24 +++ .../peanut/modules/job/task/CourseTask.java | 2 +- .../medical/controller/CourseController.java | 43 ++++++ .../medical/service/CourseService.java | 12 ++ .../impl/CourseMedicalServiceImpl.java | 2 +- .../service/impl/CourseServiceImpl.java | 139 +++++++++++++++++- 7 files changed, 224 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/peanut/modules/common/dao/UserCourseStudyingDao.java create mode 100644 src/main/java/com/peanut/modules/common/entity/UserCourseStudying.java diff --git a/src/main/java/com/peanut/modules/common/dao/UserCourseStudyingDao.java b/src/main/java/com/peanut/modules/common/dao/UserCourseStudyingDao.java new file mode 100644 index 00000000..ee141107 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/dao/UserCourseStudyingDao.java @@ -0,0 +1,9 @@ +package com.peanut.modules.common.dao; + +import com.github.yulichang.base.MPJBaseMapper; +import com.peanut.modules.common.entity.UserCourseStudying; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface UserCourseStudyingDao extends MPJBaseMapper { +} diff --git a/src/main/java/com/peanut/modules/common/entity/UserCourseStudying.java b/src/main/java/com/peanut/modules/common/entity/UserCourseStudying.java new file mode 100644 index 00000000..645dd4bb --- /dev/null +++ b/src/main/java/com/peanut/modules/common/entity/UserCourseStudying.java @@ -0,0 +1,24 @@ +package com.peanut.modules.common.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import java.util.Date; + +@Data +@TableName("user_course_studying") +public class UserCourseStudying { + + @TableId + private Integer id; + + private Integer userId; + + private Integer catalogueId; + + private Date createTime; + + @TableLogic + private Integer delFlag; +} diff --git a/src/main/java/com/peanut/modules/job/task/CourseTask.java b/src/main/java/com/peanut/modules/job/task/CourseTask.java index 3dfa8f85..bcaeff2e 100644 --- a/src/main/java/com/peanut/modules/job/task/CourseTask.java +++ b/src/main/java/com/peanut/modules/job/task/CourseTask.java @@ -32,7 +32,7 @@ public class CourseTask implements ITask{ } }else { //开始时间+有效天数,过期删除 - if (DateUtils.addDays(userCourseBuyEntity.getStartTime(),userCourseBuyEntity.getDays()).getTime() >= new Date().getTime()) { + if (userCourseBuyEntity.getEndTime().getTime() <= new Date().getTime()) { userCourseBuyDao.deleteById(userCourseBuyEntity.getId()); } } diff --git a/src/main/java/com/peanut/modules/medical/controller/CourseController.java b/src/main/java/com/peanut/modules/medical/controller/CourseController.java index 4d93e80f..065219bb 100644 --- a/src/main/java/com/peanut/modules/medical/controller/CourseController.java +++ b/src/main/java/com/peanut/modules/medical/controller/CourseController.java @@ -4,21 +4,64 @@ import com.peanut.common.utils.R; import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.entity.CourseCatalogueChapterVideoEntity; import com.peanut.modules.common.entity.CourseEntity; +import com.peanut.modules.common.entity.CourseMedicine; +import com.peanut.modules.common.entity.UserCourseStudying; import com.peanut.modules.common.to.ParamTo; +import com.peanut.modules.medical.service.CourseMedicalService; +import com.peanut.modules.medical.service.CourseService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Map; @Slf4j @RestController("medicalCourse") @RequestMapping("medical/course") public class CourseController { + @Autowired + private CourseService courseService; + @Autowired + private CourseMedicalService courseMedicalService; + //添加正在学习(收藏) + @RequestMapping("/addUserCourseStudying") + public R addUserCourseStudying(@RequestBody UserCourseStudying userCourseStudying){ + return R.ok().put("success",courseService.addUserCourseStudying(userCourseStudying)); + } + //移除正在学习(收藏) + @RequestMapping("/delUserCourseStudying") + public R delUserCourseStudying(@RequestBody Map param){ + return R.ok().put("success",courseService.delUserCourseStudying(param)); + } + + //我的课程-正在学习(收藏) + @RequestMapping("/getUserCourseStudying") + public R getUserCourseStudying(@RequestBody Map param){ + List courseList = courseService.getUserCourseStudying(param); + return R.ok().put("courseList",courseList); + } + + //我的课程-全部 + @RequestMapping("/getUserCourseBuy") + public R getUserCourseBuy(@RequestBody Map param){ + List courseMedicineList = courseMedicalService.getCourseMedicalTree(); + param.put("courseMedicineList",courseMedicineList); + List courseList = courseService.getUserCourseBuy(param); + return R.ok().put("courseList",courseList); + } + + //我的课程-过期课程 + @RequestMapping("/getCourseExpire") + public R getCourseExpire(@RequestBody Map param){ + List courseList = courseService.getCourseExpire(param); + return R.ok().put("courseList",courseList); + } } diff --git a/src/main/java/com/peanut/modules/medical/service/CourseService.java b/src/main/java/com/peanut/modules/medical/service/CourseService.java index f9fec9ac..e41f0d5b 100644 --- a/src/main/java/com/peanut/modules/medical/service/CourseService.java +++ b/src/main/java/com/peanut/modules/medical/service/CourseService.java @@ -3,9 +3,11 @@ package com.peanut.modules.medical.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.peanut.modules.common.entity.CourseEntity; +import com.peanut.modules.common.entity.UserCourseStudying; import com.peanut.modules.common.to.ParamTo; import java.util.List; +import java.util.Map; public interface CourseService extends IService { @@ -15,4 +17,14 @@ public interface CourseService extends IService { List getUserLateCourseList(ParamTo param); + boolean addUserCourseStudying(UserCourseStudying userCourseStudying); + + boolean delUserCourseStudying(Map param); + + List getUserCourseStudying(Map param); + + List getUserCourseBuy(Map param); + + List getCourseExpire(Map param); + } diff --git a/src/main/java/com/peanut/modules/medical/service/impl/CourseMedicalServiceImpl.java b/src/main/java/com/peanut/modules/medical/service/impl/CourseMedicalServiceImpl.java index 0fb4d701..76710028 100644 --- a/src/main/java/com/peanut/modules/medical/service/impl/CourseMedicalServiceImpl.java +++ b/src/main/java/com/peanut/modules/medical/service/impl/CourseMedicalServiceImpl.java @@ -100,7 +100,7 @@ public class CourseMedicalServiceImpl extends ServiceImpl courseEntities = toMedicineDao.selectJoinList(CourseEntity.class, wrapper); - if(courseEntities.size()!=0){ + if(courseEntities.size()>0){ for (CourseEntity co:courseEntities){ List courseCatalogueEntities = courseCatalogueDao.selectList(new LambdaQueryWrapper().eq(CourseCatalogueEntity::getCourseId, co.getId()).orderByAsc(CourseCatalogueEntity::getSort)); co.setCourseCatalogueEntityList(courseCatalogueEntities); 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 c4b3b4cd..0e27ebc3 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 @@ -1,24 +1,36 @@ package com.peanut.modules.medical.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.peanut.modules.common.dao.CourseDao; -import com.peanut.modules.common.entity.CourseEntity; -import com.peanut.modules.common.entity.CourseToMedicineMarketEntity; -import com.peanut.modules.common.entity.CourseToMedicine; -import com.peanut.modules.common.entity.UserToCourseEntity; +import com.peanut.modules.common.dao.*; +import com.peanut.modules.common.entity.*; import com.peanut.modules.common.to.ParamTo; import com.peanut.modules.medical.service.CourseService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Map; @Slf4j @Service("medicalCourseService") public class CourseServiceImpl extends ServiceImpl implements CourseService { + @Autowired + UserCourseStudyingDao studyingDao; + @Autowired + MyUserDao userDao; + @Autowired + private CourseToMedicineDao toMedicineDao; + @Autowired + private CourseCatalogueDao courseCatalogueDao; + @Autowired + private UserCourseBuyDao courseBuyDao; + @Override public Page getMedicalCourseList(ParamTo param) { MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); @@ -55,4 +67,121 @@ public class CourseServiceImpl extends ServiceImpl impl List courseEntities = this.getBaseMapper().selectJoinList(CourseEntity.class, wrapper); return courseEntities; } + + @Override + public boolean addUserCourseStudying(UserCourseStudying userCourseStudying) { + if (studyingDao.insert(userCourseStudying)>0){ + return true; + }else { + return false; + } + } + + @Override + public boolean delUserCourseStudying(Map param) { + if (studyingDao.deleteById(param.get("id").toString())>0){ + return true; + }else { + return false; + } + } + + @Override + public List getUserCourseStudying(Map param) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.distinct(); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getCourseId,CourseEntity::getId); + wrapper.leftJoin(CourseToMedicine.class,CourseToMedicine::getCourseId,CourseEntity::getId); + wrapper.leftJoin(UserCourseStudying.class,UserCourseStudying::getCatalogueId,CourseCatalogueEntity::getId); + wrapper.eq(UserCourseStudying::getUserId,param.get("userId")); + wrapper.selectAll(CourseEntity.class); + wrapper.selectAs(CourseCatalogueEntity::getId,"catalogueId"); + wrapper.selectAs(CourseCatalogueEntity::getTitle,"catalogueTitle"); + wrapper.orderByAsc(CourseEntity::getSort); + List courseEntities = this.getBaseMapper().selectMaps(wrapper); + return courseEntities; + } + + @Override + public List getUserCourseBuy(Map param) { + MyUserEntity user = userDao.selectById(param.get("userId").toString()); + List resultList = new ArrayList<>(); + List courseMedicineList = (List)param.get("courseMedicineList"); + for (CourseMedicine c : courseMedicineList){ + if (getCourseByMedicine(c,user)){ + resultList.add(c); + } + } + return resultList; + } + + @Override + public List getCourseExpire(Map param) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.distinct(); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getCourseId,CourseEntity::getId); + //关掉本次查询del_flg = 0的条件,查询过期课程 + wrapper.disableSubLogicDel().leftJoin(UserCourseBuyEntity.class,UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId); + wrapper.leftJoin(CourseToMedicine.class,CourseToMedicine::getCourseId,CourseEntity::getId); + wrapper.eq(UserCourseBuyEntity::getUserId,param.get("userId")); + wrapper.eq(UserCourseBuyEntity::getDelFlag,-1); + wrapper.selectAll(CourseEntity.class); + wrapper.selectAs(CourseCatalogueEntity::getId,"catalogueId"); + wrapper.selectAs(CourseCatalogueEntity::getTitle,"catalogueTitle"); + wrapper.orderByAsc(CourseEntity::getSort); + wrapper.orderByAsc(CourseCatalogueEntity::getSort); + List courseEntities = this.getBaseMapper().selectMaps(wrapper); + return courseEntities; + } + + + private boolean getCourseByMedicine(CourseMedicine c,MyUserEntity user){ + if (c.getChildren()!=null&&c.getChildren().size() > 0){ + for (CourseMedicine child : c.getChildren()){ + return getCourseByMedicine(child,user); + } + } + List courseEntities = null; + //0-普通 1超级vip 2医学vip 3国学vip + if ("1".equals(user.getVip())||"2".equals(user.getVip())){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseToMedicine::getCourseId); + wrapper.selectAll(CourseEntity.class); + wrapper.eq(CourseToMedicine::getMedicalId,c.getId()); + wrapper.orderByAsc(CourseEntity::getSort); + courseEntities = toMedicineDao.selectJoinList(CourseEntity.class, wrapper); + if(courseEntities!=null&&courseEntities.size()>0){ + for (CourseEntity co:courseEntities){ + List courseCatalogueEntities = courseCatalogueDao.selectList(new LambdaQueryWrapper().eq(CourseCatalogueEntity::getCourseId, co.getId()).orderByAsc(CourseCatalogueEntity::getSort)); + co.setCourseCatalogueEntityList(courseCatalogueEntities); + } + c.setCourseList(courseEntities); + return true; + } + }else if ("0".equals(user.getVip())||"3".equals(user.getVip())){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getId,UserCourseBuyEntity::getCatalogueId); + wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseCatalogueEntity::getCourseId); + wrapper.leftJoin(CourseToMedicine.class,CourseToMedicine::getCourseId,UserCourseBuyEntity::getCourseId); + wrapper.selectAll(CourseEntity.class); + wrapper.eq(UserCourseBuyEntity::getUserId,user.getId()); + wrapper.eq(CourseToMedicine::getMedicalId,c.getId()); + wrapper.orderByAsc(CourseEntity::getSort); + courseEntities = courseBuyDao.selectJoinList(CourseEntity.class, wrapper); + if(courseEntities!=null&&courseEntities.size()>0){ + for (CourseEntity co:courseEntities){ + List courseCatalogueEntities = courseCatalogueDao.selectList( + new MPJLambdaWrapper() + .selectAll(CourseCatalogueEntity.class) + .leftJoin(UserCourseBuyEntity.class, UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId) + .eq(UserCourseBuyEntity::getUserId, user.getId()) + .orderByAsc(CourseCatalogueEntity::getSort)); + co.setCourseCatalogueEntityList(courseCatalogueEntities); + } + c.setCourseList(courseEntities); + return true; + } + } + return false; + } }