From 353cf91d3679e68d9b8c07652e4f7791d606dbd4 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 15 十一月 2024 15:14:39 +0800 Subject: [PATCH] 代码提交 --- xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java | 401 ++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 314 insertions(+), 87 deletions(-) diff --git a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java index 685d5ac..2925f85 100644 --- a/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java +++ b/xinquan-modules/xinquan-course/src/main/java/com/xinquan/course/controller/client/ClientCourseController.java @@ -45,6 +45,7 @@ import io.swagger.annotations.ApiOperation; import java.io.IOException; +import java.math.BigDecimal; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -142,11 +143,16 @@ @PathVariable("pageSize") Integer pageSize, @PathVariable("ids")String ids) { - + List<Long> collect = courseChapterService.lambdaQuery().in(CourseChapter::getId, Arrays.asList(ids.split(","))) + .list().stream().map(CourseChapter::getCourseId).collect(Collectors.toList()); + if(collect.isEmpty()){ + collect.add(-1L); + } Page<Course> page = courseService .lambdaQuery() - .in(Course::getId,Arrays.asList(ids.split(","))) + .in(Course::getId,collect) .page(new Page<>(pageCurr, pageSize)); + if (page.getRecords().isEmpty()){ return R.ok(page); } @@ -307,7 +313,7 @@ .eq(Objects.nonNull(courseDTO.getCourseType()), Course::getCourseType, courseDTO.getCourseType()) .eq(Objects.nonNull(courseDTO.getChargeType()), Course::getChargeType, courseDTO.getChargeType()) .eq(Objects.nonNull(courseDTO.getListingStatus()), Course::getListingStatus, courseDTO.getListingStatus()) - .orderByDesc(Course::getSortNum); + .orderByDesc(Course::getCreateTime); if (org.springframework.util.StringUtils.hasLength(courseDTO.getCourseTitle())){ List<Long> collect = courseService.lambdaQuery().like(Course::getCourseTitle, courseDTO.getCourseTitle()).list() .stream().map(Course::getId).collect(Collectors.toList()); @@ -478,6 +484,7 @@ orderCourseVO.setGeneralPrice(meditation.getGeneralPrice()); orderCourseVO.setIosPrice(meditation.getIosPrice()); orderCourseVO.setCoverUrl(meditation.getCoverUrl()); + orderCourseVO.setCoverDescription(meditation.getCoverDescription()); orderCourseVO.setCount(meditation.getRealLearnedNum()+meditation.getVirtualLearnedNum()); orderCourseVOS.add(orderCourseVO); } @@ -500,16 +507,15 @@ orderCourseVO.setGeneralPrice(record.getGeneralPrice()); orderCourseVO.setIosPrice(record.getIosPrice()); orderCourseVO.setCoverUrl(record.getCoverUrl()); - List<AppUser> data1 = remoteAppUserService.getUserByCourseId(record.getId()).getData(); - List<CourseChapter> list = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, record.getId()).list(); int temp = 0 ; + int temp1 = 0 ; for (CourseChapter courseChapter : list) { temp+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + temp1+=data2; } - int size = courseLearningRecordService.lambdaQuery().eq(CourseLearningRecord::getCourseId, record.getId()) - .groupBy(CourseLearningRecord::getAppUserId).list().size(); - orderCourseVO.setCount(temp+size); + orderCourseVO.setCount(temp+temp1); orderCourseVOS.add(orderCourseVO); } break; @@ -612,21 +618,85 @@ @ApiImplicitParam(value = "课程id", name = "id", required = true, dataType = "String"), }) public R<ClientCourseVO> getPayCourseInfoById(@RequestParam(value = "id")Long id) { - LoginUser loginUser = tokenService.getLoginUser(); - if (loginUser==null){ - return R.tokenError("登录失效"); - } - Long userId = loginUser.getUserid(); - AppUserVO data1 = remoteAppUserService.getCurrentUser().getData(); Course byId = courseService.getById(id); ClientCourseVO clientCourseVO = new ClientCourseVO(); BeanUtils.copyProperties(byId, clientCourseVO); - if (data1.getVipExpireTime()!=null && data1.getVipExpireTime().isAfter(LocalDateTime.now())){ - clientCourseVO.setIsVip(1); + clientCourseVO.setIsBuy(2); + List<AppUser> data = remoteAppUserService.getUserByCourseId(id).getData(); + if (byId.getChargeType()==1 && tokenService.getLoginUser()==null){ + if (data!=null){ + clientCourseVO.setCount(data.size()); + if (data.size()>=5){ + clientCourseVO.setHeaders(data.stream().limit(5).map(AppUser::getAvatar).collect(Collectors.toList())); + }else{ + clientCourseVO.setHeaders(data.stream().map(AppUser::getAvatar).collect(Collectors.toList())); + } + } }else{ - clientCourseVO.setIsVip(0); + LoginUser loginUser = tokenService.getLoginUser(); + if (loginUser==null){ + return R.tokenError("登录失效"); + } + Long userId = loginUser.getUserid(); + AppUser data1 = remoteAppUserService.getAppUserById(userId + "").getData(); + if (data1.getVipExpireTime()!=null && data1.getVipExpireTime().isAfter(LocalDateTime.now())){ + clientCourseVO.setIsVip(1); + }else{ + clientCourseVO.setIsVip(0); + } + List<Long> collect9 = data.stream().map(AppUser::getId).collect(Collectors.toList()); + if (!collect9.isEmpty()){ + if (collect9.contains(userId)){ + clientCourseVO.setIsBuy(1); + } + } + if(byId.getChargeType() != 1){ + List<CourseChapter> list = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId.getId()) + .list(); + // 累加实际学习人数 + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list) { + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + a+=data2; + b+=courseChapter.getVirtualLearnedNum(); + } + clientCourseVO.setCount(a+b); + }else if (data!=null){ + // 查询学习人数和头像列表 + clientCourseVO.setCount(data.size()); + List<CourseChapter> list = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId.getId()) + .list(); + // 累加实际学习人数 + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list) { + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + a+=data2; + b+=courseChapter.getVirtualLearnedNum(); + } + clientCourseVO.setCount(a+b); + if (data.size()>=5){ + clientCourseVO.setHeaders(data.stream().limit(5).map(AppUser::getAvatar).collect(Collectors.toList())); + }else{ + clientCourseVO.setHeaders(data.stream().map(AppUser::getAvatar).collect(Collectors.toList())); + } + List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); + if (!collect.isEmpty()){ + if (collect.contains(userId)){ + clientCourseVO.setIsBuy(1); + } + } + + } + // 查询是否已收藏课程 + clientCourseVO.setIsCollect(courseUserFavoriteService.lambdaQuery() + .eq(CourseUserFavorite::getAppUserId, userId) + .eq(CourseUserFavorite::getCourseId, id).one() == null ? 2 : 1); } + + // 查询用户是否已购买该课程 // 查询章节 List<CourseChapter> page = courseChapterService.lambdaQuery() @@ -634,33 +704,29 @@ .orderByDesc(CourseChapter::getSortNum) .list(); for (CourseChapter courseChapter : page) { - int size = courseLearningRecordService.lambdaQuery() - .eq(CourseLearningRecord::getChapterId, courseChapter.getId()) - .list().size(); - courseChapter.setRealLearnedNum(size+courseChapter.getVirtualLearnedNum()); + // 累加实际学习人数 + int a = 0; + int b = 0; + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + a+=data2; + b+=courseChapter.getVirtualLearnedNum(); + courseChapter.setRealLearnedNum(a); + courseChapter.setVirtualLearnedNum(b); + LoginUser loginUser = tokenService.getLoginUser(); + if (loginUser!=null){ + Integer data1 = remoteAppUserService.getCourseChapterHistoryState(loginUser.getUserid(), courseChapter.getId()).getData(); + courseChapter.setIsOver(data1); + }else{ + courseChapter.setIsOver(2); + } } clientCourseVO.setList(page); - clientCourseVO.setIsBuy(0); - // 查询学习人数和头像列表 - List<AppUser> data = remoteAppUserService.getUserByCourseId(id).getData(); - if (data!=null){ - clientCourseVO.setCount(data.size()); - if (data.size()>=5){ - clientCourseVO.setHeaders(data.stream().limit(5).map(AppUser::getAvatar).collect(Collectors.toList())); - }else{ - clientCourseVO.setHeaders(data.stream().map(AppUser::getAvatar).collect(Collectors.toList())); - } - List<Long> collect = data.stream().map(AppUser::getId).collect(Collectors.toList()); - if (!collect.isEmpty()){ - if (collect.contains(userId)){ - clientCourseVO.setIsBuy(1); - } - } - } // 查询推荐课程 List<Course> list = courseService.lambdaQuery().eq(Course::getCateId, byId.getCateId()) .eq(Course::getCourseType,1) + .eq(Course::getListingStatus,1) + .ne(Course::getId,id) .eq(Course::getRecommend, 1).list(); List<Course> courses = new ArrayList<>(); // 随机获取两个课程 @@ -669,21 +735,21 @@ int index = (int) (Math.random() * size); if (size >= 2){ for (int i = 0; i < 2; i++) { - courses.add(list.get(index)); + courses.add(list.get(i)); } }else{ - courses.add(list.get(index)); + courses.addAll(list); } } for (Course cours : courses) { List<AppUser> data3 = remoteAppUserService.getUserByCourseId(id).getData(); cours.setCount(data3.size()); } + clientCourseVO.setList2(courses); - // 查询是否已收藏课程 - clientCourseVO.setIsCollect(courseUserFavoriteService.lambdaQuery() - .eq(CourseUserFavorite::getAppUserId, userId) - .eq(CourseUserFavorite::getCourseId, id).one() == null ? 2 : 1); + if (byId.getChargeType() == 1){ + byId.setGeneralPrice(new BigDecimal("0")); + } return R.ok(clientCourseVO); } /** @@ -728,6 +794,8 @@ // 查询推荐课程 List<Course> list = courseService.lambdaQuery().eq(Course::getCateId, byId.getCateId()) .eq(Course::getCourseType,1) + .eq(Course::getListingStatus,1) + .ne(Course::getId,id) .eq(Course::getRecommend, 1).list(); List<Course> courses = new ArrayList<>(); // 随机获取两个课程 @@ -747,6 +815,9 @@ cours.setCount(data1.size()); } clientCourseVO.setList2(courses); + if (byId.getChargeType() == 1){ + byId.setGeneralPrice(new BigDecimal("0")); + } return R.ok(clientCourseVO); } @@ -781,10 +852,13 @@ .eq(CourseChapter::getCourseId, record.getId()).list(); // 章节列表累加虚拟学习人数 int temp = 0; + int temp1 = 0; for (CourseChapter courseChapter : list) { temp+=courseChapter.getVirtualLearnedNum(); + Long data1 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + temp1+=data1; } - record.setCount(size1+temp); + record.setCount(temp1+temp); } return R.ok(coursePageList); } @@ -792,28 +866,11 @@ @ApiOperation(value = "课程学习页面") @ApiImplicitParams({ @ApiImplicitParam(value = "章节id", name = "chapterId", required = true, dataType = "Long"), - }) public R<List<CourseChapter>> studyPageByChapterId(@RequestParam(value = "chapterId")Long chapterId) { - LoginUser loginUser = tokenService.getLoginUser(); - if (loginUser==null){ - return R.tokenError("登录失效"); - } - Long userid = loginUser.getUserid(); + CourseChapter byId1 = courseChapterService.getById(chapterId); Course byId = courseService.getById(byId1.getCourseId()); - // 新增学习记录 - CourseLearningRecord one = courseLearningRecordService.lambdaQuery().eq(CourseLearningRecord::getAppUserId, userid) - .eq(CourseLearningRecord::getChapterId, chapterId).one(); - if (one==null){ - CourseLearningRecord courseLearningRecord = new CourseLearningRecord(); - courseLearningRecord.setAppUserId(userid); - if (byId!=null){ - courseLearningRecord.setCourseId(byId.getId()); - } - courseLearningRecord.setChapterId(chapterId); - courseLearningRecordService.save(courseLearningRecord); - } Long id = byId1.getCourseId(); // 查询章节 List<CourseChapter> page = courseChapterService.lambdaQuery() @@ -821,19 +878,43 @@ .orderByDesc(CourseChapter::getSortNum) .list(); - for (CourseChapter courseChapter : page) { - AppUserViewingHistory data = remoteAppUserService.getCourseStudyHistory(courseChapter.getId()).getData(); - if (data!=null){ - courseChapter.setMinuteLook(data.getMinuteLook()); - courseChapter.setSecondLook(data.getSecondLook()); - courseChapter.setIsOver(data.getIsOver()); - } - int size = courseLearningRecordService - .lambdaQuery().eq(CourseLearningRecord::getChapterId, courseChapter.getId()) - .list().size(); - courseChapter.setRealLearnedNum(size+courseChapter.getVirtualLearnedNum()); + for (CourseChapter courseChapter : page) { + AppUserViewingHistory data = remoteAppUserService.getCourseStudyHistory(courseChapter.getId()).getData(); + if (data!=null){ + courseChapter.setMinuteLook(data.getMinuteLook()); + courseChapter.setSecondLook(data.getSecondLook()); + courseChapter.setIsOver(data.getIsOver()); } - return R.ok(page); + int size = courseLearningRecordService + .lambdaQuery().eq(CourseLearningRecord::getChapterId, courseChapter.getId()) + .list().size(); + courseChapter.setRealLearnedNum(size+courseChapter.getVirtualLearnedNum()); + } + if (byId.getChargeType() == 1&&tokenService.getLoginUser()==null){ + return R.ok(page); + }else{ + LoginUser loginUser = tokenService.getLoginUser(); + if (loginUser==null){ + return R.tokenError("登录失效"); + } + Long userid = loginUser.getUserid(); + // 新增学习记录 + CourseLearningRecord one = courseLearningRecordService.lambdaQuery().eq(CourseLearningRecord::getAppUserId, userid) + .eq(CourseLearningRecord::getChapterId, chapterId).one(); + if (one==null){ + CourseLearningRecord courseLearningRecord = new CourseLearningRecord(); + courseLearningRecord.setAppUserId(userid); + if (byId!=null){ + courseLearningRecord.setCourseId(byId.getId()); + } + courseLearningRecord.setChapterId(chapterId); + courseLearningRecordService.save(courseLearningRecord); + } + + return R.ok(page); + + } + } @PostMapping("/confirmOrder") @ApiOperation(value = "确认订单页面") @@ -850,6 +931,11 @@ Course byId = courseService.getById(courseId); AppUser data = remoteAppUserService.getAppUserById(userId + "").getData(); byId.setBalance(data.getBalance()); + System.err.println("课程类型"+byId.getChargeType()); + if (byId.getChargeType() == 1){ + byId.setGeneralPrice(new BigDecimal("0")); + } + System.err.println("返回数据"+byId); return R.ok(byId); } @PostMapping("/successOrder") @@ -865,10 +951,21 @@ Long userId = loginUser.getUserid(); Course byId = courseService.getById(courseId); List<Course> list = courseService.lambdaQuery().eq(Course::getCateId, byId.getCateId()) + .eq(Course::getListingStatus,1) + .ne(Course::getId,courseId) .eq(Course::getCourseType, 1).list(); for (Course course : list) { List<AppUser> data = remoteAppUserService.getUserByCourseId(courseId).getData(); - course.setCount(data.size()); + List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, course).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list1) { + a+= courseChapter.getVirtualLearnedNum(); + Long data1 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data1; + } + course.setCount(a+b); + course.setRealLearnedNum(a+b); } List<Course> courses = new ArrayList<>(); @@ -905,9 +1002,42 @@ .list(); for (Course course : page) { CourseVO courseVO = new CourseVO(); + List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, course.getId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list1) { + a+= courseChapter.getVirtualLearnedNum(); + Long data1 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data1; + } + course.setCount(a+b); + course.setRealLearnedNum(a+b); + course.setVirtualLearnedNum(0); BeanUtils.copyProperties(course, courseVO); courseVOS.add(courseVO); - studyPageVO.setCourseList(courseVOS); + } + } + List<Long> data1 = remoteAppUserService.getCourseHistoryByUserId(userId).getData(); + for (Long l : data1) { + CourseChapter byId1 = courseChapterService.getById(l); + Course byId = courseService.getById(byId1.getCourseId()); + if (byId!=null){ + CourseVO courseVO = new CourseVO(); + BeanUtils.copyProperties(byId, courseVO); + List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId1.getCourseId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list1) { + a+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data2; + } + courseVO.setCount(a+b); + courseVO.setRealLearnedNum(a+b); + courseVO.setVirtualLearnedNum(0); + courseVO.setId(byId.getId()); + courseVO.setCoverUrl(byId.getCoverUrl()); + courseVOS.add(courseVO); } } // 查询两个相同类型的线上免费课程 @@ -915,19 +1045,116 @@ .eq(Course::getCourseType, 1) .eq(Course::getChargeType, 1) .list(); - // 随机获取两个 - if (CollUtils.isNotEmpty(freeCourseList) && freeCourseList.size() > 2) { - int size = freeCourseList.size(); - int index = (int) (Math.random() * size); - List<Course> courses = new ArrayList<>(); - for (int i = 0; i < 2; i++) { - courses.add(freeCourseList.get(index)); + // 远程查询用户观看历史 + if (!data1.isEmpty()){ + // 随机获取两个 + if (CollUtils.isNotEmpty(freeCourseList) && freeCourseList.size() > 2) { + List<Course> courses = new ArrayList<>(); + for (Course cours : freeCourseList) { + List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, cours.getId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list1) { + a+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data2; + } + cours.setCount(a+b); + cours.setRealLearnedNum(a+b); + cours.setVirtualLearnedNum(0); + } + for (int i = 0; i < 2; i++) { + courses.add(freeCourseList.get(i)); + } + studyPageVO.setFreeCourseList(courses); + }else{ + for (Course cours : freeCourseList) { + List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, cours.getId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list1) { + a+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data2; + } + cours.setCount(a+b); + cours.setRealLearnedNum(a+b); + } + studyPageVO.setFreeCourseList(freeCourseList); } - studyPageVO.setFreeCourseList(courses); + for (Long l : data1) { + CourseChapter byId1 = courseChapterService.getById(l); + Course byId = courseService.getById(byId1.getCourseId()); + if (byId!=null){ + CourseVO courseVO = new CourseVO(); + BeanUtils.copyProperties(byId, courseVO); + List<CourseChapter> list1 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, byId1.getCourseId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list1) { + a+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data2; + } + courseVO.setCount(a+b); + courseVO.setRealLearnedNum(a+b); + courseVO.setVirtualLearnedNum(0); + courseVO.setId(byId.getId()); + courseVO.setCoverUrl(byId.getCoverUrl()); + courseVOS.add(courseVO); + } + } + studyPageVO.setCourseList(courseVOS); + return R.ok(studyPageVO); }else{ - studyPageVO.setFreeCourseList(freeCourseList); + List<Course> list1 = courseService.lambdaQuery() + .eq(Course::getChargeType, 1) + .eq(Course::getListingStatus, 1) + .list(); + if (list1.size()>=2){ + List<Course> courses = new ArrayList<>(); + courses.add(list1.get(0)); + courses.add(list1.get(1)); + for (Course cours : courses) { + List<CourseChapter> list3 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, cours.getId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list3) { + a+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data2; + } + cours.setCount(a+b); + cours.setRealLearnedNum(a+b); + } + studyPageVO.setFreeCourseList(courses); + }else if (list1.size()==1){ + List<Course> courses = new ArrayList<>(); + courses.add(list1.get(0)); + for (Course course : freeCourseList) { + if (!course.getId().equals(list1.get(0).getId())){ + courses.add(course); + break; + } + } + for (Course cours : courses) { + List<CourseChapter> list3 = courseChapterService.lambdaQuery().eq(CourseChapter::getCourseId, cours.getId()).list(); + int a = 0; + int b = 0; + for (CourseChapter courseChapter : list3) { + a+= courseChapter.getVirtualLearnedNum(); + Long data2 = remoteAppUserService.getCourseChapterHistoryCount(courseChapter.getId()).getData(); + b+=data2; + } + cours.setCount(a+b); + cours.setRealLearnedNum(a+b); + } + studyPageVO.setFreeCourseList(courses); + } + studyPageVO.setCourseList(courseVOS); + return R.ok(studyPageVO); } - return R.ok(studyPageVO); + } } -- Gitblit v1.7.1