首页课程排行榜排序问题

This commit is contained in:
86182
2022-11-01 20:53:14 +08:00
parent 4e3a94bc48
commit 02ca78c657
3 changed files with 125 additions and 47 deletions

View File

@@ -105,7 +105,16 @@ public interface ICourseService {
* @return
*/
PageList<Course> findSimplePage(int pageIndex, int pageSize, CourseQueryDto dto);
/**
* 只是查询少量字段
* @param pageIndex
* @param pageSize
* @param dto
* @return
*/
List<Course> findSimpleList(int pageSize,CourseQueryDto dto);
/**
* 添加课程

View File

@@ -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<Course> findSimpleList(int pageSize, CourseQueryDto dto) {
List<IFieldFilter> 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<Course> 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<String> 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<Course> 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);

View File

@@ -126,64 +126,78 @@ public class PortalIndexApi extends ApiBaseController{
*推荐课程
* */
@PostMapping("/courselist")
public JsonResponse<PageList<Course>> courseList(Pagination pager, CourseQueryDto dto){
public JsonResponse<List<Course>> courseList(Pagination pager, CourseQueryDto dto){
String aid = this.getCurrent().getAccountId();
dto.setPublish(true);
dto.setYearFilter(true);
PageList<Course> coursePageList = courseService.findSimplePage(pager.getPageIndex(), pager.getPageSize(),dto);
String aid = this.getCurrent().getAccountId();
List<Course> courses = courseService.userHobbyList(aid,dto.getOrderField(),dto.getOrderAsc());
PageList<Course> pageList = new PageList<>();
pageList.setList(new ArrayList<Course>());
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<Course> 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<Course> courses = courseService.userHobbyList(aid,dto.getOrderField(),dto.getOrderAsc());
//
// PageList<Course> pageList = new PageList<>();
// pageList.setList(new ArrayList<Course>());
// 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<Course> collect = pageList.getList().stream().distinct().collect(Collectors.toList());
// if(collect.size()<pageList.getList().size()){
// for (Course c:collect) {
// for (Course c1:coursePageList.getList()) {
// if(!c.getId().equals(c1.getId())){
// collect.add(c1);
// }
// if(collect.size()>=6){
// break;
// }
// }
// break;
// }
// }
//提取教师信息
List<String> ids=new ArrayList<String>();
for(Course c :pageList.getList()) {
for(Course c :coursePageList) {
ids.add(c.getId());
}
List<CourseTeacher> 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);
}