From 02ca78c657356e947334574f4b70284d35591f97 Mon Sep 17 00:00:00 2001 From: 86182 Date: Tue, 1 Nov 2022 20:53:14 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E8=AF=BE=E7=A8=8B=E6=8E=92?= =?UTF-8?q?=E8=A1=8C=E6=A6=9C=E6=8E=92=E5=BA=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/course/service/ICourseService.java | 11 +- .../service/impl/CourseServiceImpl.java | 57 +++++++++- .../com/xboe/school/api/PortalIndexApi.java | 104 ++++++++++-------- 3 files changed, 125 insertions(+), 47 deletions(-) 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 3b720ecd..f05ab9e8 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,61 @@ 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")); +// } + + List courses = this.userHobbyList(dto.getAid(), dto.getOrderField(), dto.getOrderAsc()); + if(courses!=null && courses.isEmpty()){ + System.out.println(courses.size()); + query.setPageSize(pageSize); + } + else{ + System.out.println(courses.size()); + query.setPageSize(pageSize-courses.size()); + //重复的不包括 + List courseIds = courses.stream().map(Course::getId).collect(Collectors.toList()); + query.addFilter(FieldFilters.notIn("id",courseIds)); + } + + 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()); + System.out.println(rs.size()+"asdasd"); + courses.addAll(rs); + return courses; + } + @Override public void save(Course course) { course.setComments(0); 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 48f6bf4b..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 @@ -126,64 +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); - - String aid = this.getCurrent().getAccountId(); - 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); - } - } - } - } + dto.setAid(aid); + List coursePageList = courseService.findSimpleList( pager.getPageSize(),dto); - //并添加 - - for (Course c:coursePageList.getList()) { - if(pageList.getList().size()<6){ - pageList.getList().add(c); - } - if(pageList.getList().size()>=6){ - break; - } - } - - //去重, - +// 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 :pageList.getList()) { + for(Course c :coursePageList) { ids.add(c.getId()); } List teachers = courseService.findTeachersByCourseIds(ids); //注意对于多个教师的情况,这里只是设置第一个教师 - for(Course c :pageList.getList()) { + for(Course c :coursePageList) { for(CourseTeacher ct : teachers) { if(ct.getCourseId().equals(c.getId())) { c.setSysCreateAid(ct.getTeacherId()); @@ -192,7 +206,7 @@ public class PortalIndexApi extends ApiBaseController{ } } - return success(pageList); + return success(coursePageList); }