diff --git a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java index b99edaad..eb256ae2 100644 --- a/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java +++ b/src/main/java/com/sqx/modules/course/service/impl/CourseDetailsServiceImpl.java @@ -154,85 +154,91 @@ public class CourseDetailsServiceImpl extends ServiceImpl() - .eq("course_id", courseId).eq("user_id", userId) - .eq("classify", 3).last("limit 1")); - //是否追剧 - Integer collect = courseCollectDao.selectCount(new QueryWrapper() - .eq("user_id", userId).eq("course_id", courseId) - .eq("classify", 1).last("limit 1")); - Course bean = courseDao.selectById(courseId); - if(bean==null){ - log.error("未找到该剧集 用户id:{} 剧集:{}",userId,courseId); - return Result.error("未找到该剧集"); - } - //查询用户是否购买了整集 - CourseUser courseUser = courseUserDao.selectCourseUser(courseId, userId); - // 每天购买超过上限,获得免费时间段资格 - boolean freeWatch = checkFreeWatchPayCount(userId); - int startSort = 0; - int endSort = 5; - if (sort == null) { - if (courseCollect != null) { - CourseDetails courseDetails = baseMapper.selectOne(new QueryWrapper() - .eq("course_details_id", courseCollect.getCourseDetailsId()).eq("course_id", courseCollect.getCourseId()).last("limit 1")); - sort = courseDetails.getSort(); + try{ + //观看记录 + CourseCollect courseCollect = courseCollectDao.selectOne(new QueryWrapper() + .eq("course_id", courseId).eq("user_id", userId) + .eq("classify", 3).last("limit 1")); + //是否追剧 + Integer collect = courseCollectDao.selectCount(new QueryWrapper() + .eq("user_id", userId).eq("course_id", courseId) + .eq("classify", 1).last("limit 1")); + Course bean = courseDao.selectById(courseId); + if(bean==null){ + log.error("未找到该剧集 用户id:{} 剧集:{}",userId,courseId); + return Result.error("未找到该剧集"); } - } - List courseDetailsSetVos; - if (freeWatch || courseUser != null) { - courseDetailsSetVos = baseMapper.courseSets(courseId, 2, null); - } else { - courseDetailsSetVos = baseMapper.courseSets(courseId, 1, bean.getWholesalePrice()); - } - if (sort != null && sort > 2) { - startSort = sort - 3; - endSort = sort + 3; - if (courseDetailsSetVos.size() < endSort) { - startSort = courseDetailsSetVos.size() - 5; - endSort = courseDetailsSetVos.size() + 1; + //查询用户是否购买了整集 + CourseUser courseUser = courseUserDao.selectCourseUser(courseId, userId); + // 每天购买超过上限,获得免费时间段资格 + boolean freeWatch = checkFreeWatchPayCount(userId); + int startSort = 0; + int endSort = 5; + if (sort == null) { + if (courseCollect != null) { + CourseDetails courseDetails = baseMapper.selectOne(new QueryWrapper() + .eq("course_details_id", courseCollect.getCourseDetailsId()).eq("course_id", courseCollect.getCourseId()).last("limit 1")); + sort = courseDetails.getSort(); + } } - } - //已购买剧集 - Set detailsId = new HashSet<>(); - if ((!freeWatch)) { - detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); - } - AtomicReference current = new AtomicReference<>(new CourseDetailsSetVo()); - Set finalDetailsId = detailsId; - int finalStartSort = startSort; - int finalEndSort = endSort; - courseDetailsSetVos.parallelStream().forEach(s -> { - //当前 - if (courseCollect != null && s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) { - s.setCurrent(1); - current.set(s); + List courseDetailsSetVos; + if (freeWatch || courseUser != null) { + courseDetailsSetVos = baseMapper.courseSets(courseId, 2, null); + } else { + courseDetailsSetVos = baseMapper.courseSets(courseId, 1, bean.getWholesalePrice()); } - // 不免费 3集以后 (已买的不为空 并不在已买的包含) - if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { - s.setVideoUrl(null); + if (sort != null && sort > 2) { + startSort = sort - 3; + endSort = sort + 3; + if (courseDetailsSetVos.size() < endSort) { + startSort = courseDetailsSetVos.size() - 5; + endSort = courseDetailsSetVos.size() + 1; + } } - if (s.getSort() > finalStartSort && s.getSort() < finalEndSort) { - CourseCollect isGood = courseCollectDao.selectOne(new QueryWrapper() - .eq("user_id", userId).eq("course_details_id", s.getCourseDetailsId()).eq("classify", 2).last("limit 1")); - s.setIsGood(isGood == null ? 0 : 1); + //已购买剧集 + Set detailsId = new HashSet<>(); + if ((!freeWatch)) { + detailsId = courseUserDao.selectUserCourseDetailsId(courseId, userId); } - }); - if (courseCollect == null) { - courseDetailsSetVos.get(0).setCurrent(1); - current.set(courseDetailsSetVos.get(0)); + AtomicReference current = new AtomicReference<>(new CourseDetailsSetVo()); + Set finalDetailsId = detailsId; + int finalStartSort = startSort; + int finalEndSort = endSort; + courseDetailsSetVos.parallelStream().forEach(s -> { + //当前 + if (courseCollect != null && s.getCourseDetailsId().equals(courseCollect.getCourseDetailsId())) { + s.setCurrent(1); + current.set(s); + } + // 不免费 3集以后 (已买的不为空 并不在已买的包含) + if (!freeWatch && s.getSort() > 3 && (CollectionUtil.isEmpty(finalDetailsId) || !finalDetailsId.contains(s.getCourseDetailsId()))) { + s.setVideoUrl(null); + } + if (s.getSort() > finalStartSort && s.getSort() < finalEndSort) { + CourseCollect isGood = courseCollectDao.selectOne(new QueryWrapper() + .eq("user_id", userId).eq("course_details_id", s.getCourseDetailsId()).eq("classify", 2).last("limit 1")); + s.setIsGood(isGood == null ? 0 : 1); + } + }); + if (courseCollect == null) { + courseDetailsSetVos.get(0).setCurrent(1); + current.set(courseDetailsSetVos.get(0)); + } + ThreadUtil.execAsync(() -> { + setCourseView(bean); + }); + Map map = new HashMap<>(); + map.put("current", current.get()); + map.put("price", freeWatch ? 0 : bean.getPrice()); + map.put("title", bean.getTitle()); + map.put("collect", collect == null || collect.equals(0) ? 0L : 1L); + map.put("list", courseDetailsSetVos); + return new Result().put("data", map); + }catch (Exception e){ + log.error("请求剧集异常打印:"); + e.printStackTrace(); + return Result.error("请求剧集失败"); } - ThreadUtil.execAsync(() -> { - setCourseView(bean); - }); - Map map = new HashMap<>(); - map.put("current", current.get()); - map.put("price", freeWatch ? 0 : bean.getPrice()); - map.put("title", bean.getTitle()); - map.put("collect", collect == null || collect.equals(0) ? 0L : 1L); - map.put("list", courseDetailsSetVos); - return new Result().put("data", map); } @Override