diff --git a/src/main/java/xyz/playedu/api/controller/frontend/CourseController.java b/src/main/java/xyz/playedu/api/controller/frontend/CourseController.java index 2f41aac..550672b 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/CourseController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/CourseController.java @@ -1,14 +1,14 @@ package xyz.playedu.api.controller.frontend; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import xyz.playedu.api.domain.Course; import xyz.playedu.api.exception.NotFoundException; import xyz.playedu.api.service.CourseService; import xyz.playedu.api.types.JsonResponse; +import xyz.playedu.api.types.paginate.CoursePaginateFiler; +import xyz.playedu.api.types.paginate.PaginationResult; import java.util.HashMap; @@ -24,8 +24,16 @@ public class CourseController { private CourseService courseService; @GetMapping("/index") - public JsonResponse index() { - return JsonResponse.data(null); + public JsonResponse index(@RequestParam HashMap params) { + Integer page = MapUtils.getInteger(params, "page", 1); + Integer size = MapUtils.getInteger(params, "size", 10); + + CoursePaginateFiler filer = new CoursePaginateFiler(); + filer.setIsShow(1); + + PaginationResult result = courseService.paginate(page, size, filer); + + return JsonResponse.data(result); } @GetMapping("/{id}") @@ -38,7 +46,7 @@ public class CourseController { HashMap data = new HashMap<>(); data.put("course", course); - return JsonResponse.data(course); + return JsonResponse.data(data); } } diff --git a/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java b/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java index 1e4ae80..85ed738 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/DepartmentController.java @@ -1,13 +1,18 @@ package xyz.playedu.api.controller.frontend; +import org.apache.commons.collections4.MapUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.api.domain.Course; import xyz.playedu.api.domain.Department; +import xyz.playedu.api.exception.NotFoundException; +import xyz.playedu.api.service.CourseService; import xyz.playedu.api.service.DepartmentService; import xyz.playedu.api.types.JsonResponse; +import xyz.playedu.api.types.paginate.CoursePaginateFiler; +import xyz.playedu.api.types.paginate.PaginationResult; +import java.util.HashMap; import java.util.stream.Collectors; /** @@ -21,9 +26,32 @@ public class DepartmentController { @Autowired private DepartmentService departmentService; + @Autowired + private CourseService courseService; + @GetMapping("/index") public JsonResponse index() { return JsonResponse.data(departmentService.all().stream().collect(Collectors.groupingBy(Department::getParentId))); } + @GetMapping("/{id}/courses") + public JsonResponse courses(@PathVariable(name = "id") Integer id, @RequestParam HashMap params) throws NotFoundException { + Integer page = MapUtils.getInteger(params, "page", 1); + Integer size = MapUtils.getInteger(params, "size", 10); + + Department department = departmentService.findOrFail(id); + + CoursePaginateFiler filer = new CoursePaginateFiler(); + filer.setIsShow(1); + filer.setDepIds(department.getId() + ""); + + PaginationResult result = courseService.paginate(page, size, filer); + + HashMap data = new HashMap<>(); + data.put("data", result.getData()); + data.put("total", result.getTotal()); + + return JsonResponse.data(data); + } + } diff --git a/src/main/java/xyz/playedu/api/service/CourseService.java b/src/main/java/xyz/playedu/api/service/CourseService.java index 9f67cf1..45cb47c 100644 --- a/src/main/java/xyz/playedu/api/service/CourseService.java +++ b/src/main/java/xyz/playedu/api/service/CourseService.java @@ -40,4 +40,6 @@ public interface CourseService extends IService { void removeCategoryIdRelate(Integer categoryId); List chunks(List ids, List fields); + + List chunks(List ids); } diff --git a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java index 0c65de1..c3f60e2 100644 --- a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java @@ -61,6 +61,9 @@ public class CourseServiceImpl extends ServiceImpl impleme } wrapper.in("id", courseIds); } + if (filter.getIsShow() != null) { + wrapper.eq("is_show", filter.getIsShow()); + } String sortFiled = filter.getSortField(); if (sortFiled == null || sortFiled.trim().length() == 0) { @@ -198,6 +201,11 @@ public class CourseServiceImpl extends ServiceImpl impleme public List chunks(List ids, List fields) { return list(query().getWrapper().in("id", ids).select(fields)); } + + @Override + public List chunks(List ids) { + return list(query().getWrapper().in("id", ids)); + } } diff --git a/src/main/java/xyz/playedu/api/types/paginate/CoursePaginateFiler.java b/src/main/java/xyz/playedu/api/types/paginate/CoursePaginateFiler.java index 805204e..5c387a7 100644 --- a/src/main/java/xyz/playedu/api/types/paginate/CoursePaginateFiler.java +++ b/src/main/java/xyz/playedu/api/types/paginate/CoursePaginateFiler.java @@ -19,4 +19,6 @@ public class CoursePaginateFiler { private String sortAlgo; + private Integer isShow; + }