forked from RyanGoodwill/backend
基本完成
This commit is contained in:
parent
c42a3a55ec
commit
05f3af0c77
@ -114,4 +114,25 @@ public class CourseController {
|
|||||||
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
|
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@GetMapping("/sort")
|
||||||
|
public ResponseEntity<GetCourseListResponse> sortCourses(@RequestParam String token,
|
||||||
|
@RequestParam String sortField,
|
||||||
|
@RequestParam String sortDirection,
|
||||||
|
@RequestParam Integer start,
|
||||||
|
@RequestParam Integer end) {
|
||||||
|
if (start >= end) {
|
||||||
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
long courseCount = courseService.getCourseCount();
|
||||||
|
List<Course> sortedCourses = courseService.sortCourses(sortField, sortDirection, start, end);
|
||||||
|
|
||||||
|
return new ResponseEntity<>(new GetCourseListResponse(courseCount, sortedCourses), HttpStatus.OK);
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("Sort courses failed with parameters: sortField={}, sortDirection={}, start={}, end={}",
|
||||||
|
sortField, sortDirection, start, end, e);
|
||||||
|
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -37,6 +37,8 @@ public class CourseService {
|
|||||||
course.setAuthor(request.getAuthor());
|
course.setAuthor(request.getAuthor());
|
||||||
course.setDescription(request.getDescription());
|
course.setDescription(request.getDescription());
|
||||||
course.setOrderNo(request.getOrderNo());
|
course.setOrderNo(request.getOrderNo());
|
||||||
|
course.setVideoPath(request.getVideoPath()); // 确保保存视频路径
|
||||||
|
course.setImagePath(request.getImagePath()); // 确保保存图片路径
|
||||||
courseRepository.save(course);
|
courseRepository.save(course);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,6 +48,8 @@ public class CourseService {
|
|||||||
course.setAuthor(request.getAuthor());
|
course.setAuthor(request.getAuthor());
|
||||||
course.setDescription(request.getDescription());
|
course.setDescription(request.getDescription());
|
||||||
course.setOrderNo(request.getOrderNo());
|
course.setOrderNo(request.getOrderNo());
|
||||||
|
course.setVideoPath(request.getVideoPath()); // 确保更新视频路径
|
||||||
|
course.setImagePath(request.getImagePath()); // 确保更新图片路径
|
||||||
courseRepository.save(course);
|
courseRepository.save(course);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,4 +73,11 @@ public class CourseService {
|
|||||||
public long getCourseCountByCriteria(String title, String author, String description, String sortOrder) {
|
public long getCourseCountByCriteria(String title, String author, String description, String sortOrder) {
|
||||||
return courseRepository.count(CourseSpecification.searchCourses(title, author, description, sortOrder));
|
return courseRepository.count(CourseSpecification.searchCourses(title, author, description, sortOrder));
|
||||||
}
|
}
|
||||||
|
public List<Course> sortCourses(String sortField, String sortDirection, int start, int end) {
|
||||||
|
Pageable pageable = PageRequest.of(start, end - start);
|
||||||
|
return courseRepository.findAll(
|
||||||
|
CourseSpecification.sortCourses(sortField, sortDirection),
|
||||||
|
pageable
|
||||||
|
).getContent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -31,4 +31,14 @@ public class CourseSpecification {
|
|||||||
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
public static Specification<Course> sortCourses(String sortField, String sortDirection) {
|
||||||
|
return (root, query, cb) -> {
|
||||||
|
if ("asc".equalsIgnoreCase(sortDirection)) {
|
||||||
|
query.orderBy(cb.asc(root.get(sortField)));
|
||||||
|
} else if ("desc".equalsIgnoreCase(sortDirection)) {
|
||||||
|
query.orderBy(cb.desc(root.get(sortField)));
|
||||||
|
}
|
||||||
|
return cb.conjunction();
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user