diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java index 09d29ce2..9f873908 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/ICourseService.java @@ -105,7 +105,16 @@ public interface ICourseService { * @return */ PageList findSimplePage(int pageIndex, int pageSize, CourseQueryDto dto); - + + /** + * 只是查询少量字段 + * @param pageIndex + * @param pageSize + * @param dto + * @return + */ + List findSimpleList(int pageSize,CourseQueryDto dto); + /** * 添加课程 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java index 2592059c..2b67a90e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/CourseServiceImpl.java @@ -6,6 +6,7 @@ import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.annotation.Resource; @@ -319,7 +320,57 @@ public class CourseServiceImpl implements ICourseService { return rs; } - + + @Override + public List findSimpleList(int pageSize, CourseQueryDto dto) { + List filters = createFilters(dto); + //自动添加过滤已删除 + filters.add(FieldFilters.eq("deleted",false)); + filters.add(FieldFilters.eq("enabled",true)); + //返回的结果 + + + QueryBuilder query=QueryBuilder.from(Course.class).addFilters(filters); + + if(dto.getTopOrder()!=null) { + if(dto.getTopOrder()){ + query.addOrder(OrderCondition.desc("isTop")); + query.addOrder(OrderCondition.desc("topTime")); + } + } + OrderCondition oc=null; + if(StringUtils.isNotBlank(dto.getOrderField())) { + if(dto.getOrderAsc()==null || dto.getOrderAsc()) { + oc=OrderCondition.asc(dto.getOrderField()); + }else { + oc=OrderCondition.desc(dto.getOrderField()); + } + }else { + //oc=OrderCondition.desc("id"); + //默认按发布时间排序 + oc=OrderCondition.desc("publishTime"); + } + query.addOrder(oc); + +// if(dto.getTopOrder()!=null && dto.getTopOrder()){ +// query.addOrder(OrderCondition.desc("topTime")); +// } + + int num=6; + List courses = this.userHobbyList(dto.getAid(), dto.getOrderField(), dto.getOrderAsc()); + if(courses!=null && !courses.isEmpty()){ + num=6-courses.size(); + //重复的不包括 + List courseIds = courses.stream().map(Course::getId).collect(Collectors.toList()); + query.addFilter(FieldFilters.notIn("id",courseIds)); + } + query.setPageSize(num); + query.addFields("new Course(id,type,name,coverImg,score,studys,comments,shares,praises,favorites,forUsers,value,summary,publishTime,isTop)"); + List rs=courseDao.findList(query.builder()); + courses.addAll(rs); + return courses; + } + @Override public void save(Course course) { course.setComments(0); @@ -980,6 +1031,9 @@ public class CourseServiceImpl implements ICourseService { for (Object o:list) { strings.add((String) o); } + if(list.isEmpty()){ + return courses; + } QueryBuilder builder = QueryBuilder.from(Course.class); builder.addFilter(FieldFilters.eq("deleted",false)); builder.addFilter(FieldFilters.eq("enabled",true)); diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/api/PortalIndexApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/api/PortalIndexApi.java index a55dff47..f983c85d 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/api/PortalIndexApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/api/PortalIndexApi.java @@ -2,6 +2,7 @@ package com.xboe.school.api; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import javax.annotation.Resource; @@ -125,34 +126,78 @@ public class PortalIndexApi extends ApiBaseController{ *推荐课程 * */ @PostMapping("/courselist") - public JsonResponse> courseList(Pagination pager, CourseQueryDto dto){ - + public JsonResponse> courseList(Pagination pager, CourseQueryDto dto){ + String aid = this.getCurrent().getAccountId(); dto.setPublish(true); dto.setYearFilter(true); - PageList coursePageList = courseService.findSimplePage(pager.getPageIndex(), pager.getPageSize(),dto); + dto.setAid(aid); + List coursePageList = courseService.findSimpleList( pager.getPageSize(),dto); - String aid = this.getCurrent().getAccountId(); - List courses = courseService.userHobbyList(aid,dto.getOrderField(),dto.getOrderAsc()); - //计算下标, - int i=0; - if(!courses.isEmpty()){ - for (Course c:courses) { - coursePageList.getList().add(i,c); - i++; - } - } +// List courses = courseService.userHobbyList(aid,dto.getOrderField(),dto.getOrderAsc()); +// +// PageList pageList = new PageList<>(); +// pageList.setList(new ArrayList()); +// pageList.setPageSize(6); +// pageList.setCount(coursePageList.getCount()); +// +// int i=0; +// if(!courses.isEmpty()){ +// for (Course c:courses) { +// pageList.getList().add(i,c); +// i++; +//// coursePageList.getList().remove(coursePageList.getList().size()-i); +// } +// } +//// if(!courses.isEmpty()){ +//// for (Course c:courses) { +//// for (Course c1:coursePageList.getList()) { +//// if(c.getId().equals(c1.getId())){ +//// coursePageList.getList().remove(c1); +//// } +//// } +//// } +//// } +// +// +// //并添加 +// +// for (Course c:coursePageList.getList()) { +// if(pageList.getList().size()<6){ +// pageList.getList().add(c); +// } +// if(pageList.getList().size()>=6){ +// break; +// } +// } +// +// //去重, +// List collect = pageList.getList().stream().distinct().collect(Collectors.toList()); +// if(collect.size()=6){ +// break; +// } +// } +// break; +// } +// } + //提取教师信息 List ids=new ArrayList(); - for(Course c :coursePageList.getList()) { + for(Course c :coursePageList) { ids.add(c.getId()); } List teachers = courseService.findTeachersByCourseIds(ids); //注意对于多个教师的情况,这里只是设置第一个教师 - for(Course c :coursePageList.getList()) { + for(Course c :coursePageList) { for(CourseTeacher ct : teachers) { if(ct.getCourseId().equals(c.getId())) { c.setSysCreateAid(ct.getTeacherId());