From abf6a36c4f3596a37d4d8611cb3f122cd9aadc57 Mon Sep 17 00:00:00 2001 From: none Date: Mon, 24 Apr 2023 10:49:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=8E=E5=8F=B0=E5=AD=A6?= =?UTF-8?q?=E5=91=98=E7=9A=84=E5=85=A8=E9=83=A8=E7=BA=BF=E4=B8=8A=E8=AF=BE?= =?UTF-8?q?=E8=BF=9B=E5=BA=A6api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/backend/UserController.java | 54 ++++++++++++++++++- .../api/service/DepartmentService.java | 2 + .../api/service/impl/CourseServiceImpl.java | 3 ++ .../service/impl/DepartmentServiceImpl.java | 8 +++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/src/main/java/xyz/playedu/api/controller/backend/UserController.java b/src/main/java/xyz/playedu/api/controller/backend/UserController.java index e6ad7b3..6ad3556 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -409,7 +409,7 @@ public class UserController { @BackendPermissionMiddleware(slug = BPermissionConstant.USER_LEARN) @GetMapping("/{id}/learn-courses") - public JsonResponse learnCourses( + public JsonResponse latestLearnCourses( @PathVariable(name = "id") Integer id, @RequestParam HashMap params) { Integer page = MapUtils.getInteger(params, "page", 1); Integer size = MapUtils.getInteger(params, "size", 10); @@ -442,6 +442,58 @@ public class UserController { return JsonResponse.data(data); } + @BackendPermissionMiddleware(slug = BPermissionConstant.USER_LEARN) + @GetMapping("/{id}/all-courses") + public JsonResponse allCourses(@PathVariable(name = "id") Integer id) { + // 读取学员关联的部门 + List depIds = userService.getDepIdsByUserId(id); + List departments = new ArrayList<>(); + HashMap> depCourses = new HashMap<>(); + List courseIds = new ArrayList<>(); + + if (depIds != null && depIds.size() > 0) { + departments = departmentService.chunk(depIds); + depIds.forEach( + (depId) -> { + List tmpCourses = + courseService.getDepCoursesAndShow( + new ArrayList<>() { + { + add(depId); + } + }); + depCourses.put(depId, tmpCourses); + + if (tmpCourses != null && tmpCourses.size() > 0) { + courseIds.addAll(tmpCourses.stream().map(Course::getId).toList()); + } + }); + } + + // 未关联部门课程 + List openCourses = courseService.getOpenCoursesAndShow(1000); + if (openCourses != null && openCourses.size() > 0) { + courseIds.addAll(openCourses.stream().map(Course::getId).toList()); + } + + // 读取学员的线上课学习记录 + List userCourseRecords = new ArrayList<>(); + if (courseIds.size() > 0) { + userCourseRecords = userCourseRecordService.chunk(id, courseIds); + } + + HashMap data = new HashMap<>(); + data.put("open_courses", openCourses); + data.put("departments", departments); + data.put("dep_courses", depCourses); + data.put( + "user_course_records", + userCourseRecords.stream() + .collect(Collectors.toMap(UserCourseRecord::getCourseId, e -> e))); + + return JsonResponse.data(data); + } + @BackendPermissionMiddleware(slug = BPermissionConstant.USER_LEARN) @GetMapping("/{id}/learn-course/{courseId}") @SneakyThrows diff --git a/src/main/java/xyz/playedu/api/service/DepartmentService.java b/src/main/java/xyz/playedu/api/service/DepartmentService.java index be0b71d..d6ce589 100644 --- a/src/main/java/xyz/playedu/api/service/DepartmentService.java +++ b/src/main/java/xyz/playedu/api/service/DepartmentService.java @@ -64,4 +64,6 @@ public interface DepartmentService extends IService { Long total(); Map getDepartmentsUserCount(); + + List chunk(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 38faa5c..23225fc 100644 --- a/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/CourseServiceImpl.java @@ -214,6 +214,9 @@ public class CourseServiceImpl extends ServiceImpl impleme @Override public List getDepCoursesAndShow(List depIds) { + if (depIds == null || depIds.size() == 0) { + return new ArrayList<>(); + } List courseIds = courseDepartmentService.getCourseIdsByDepIds(depIds); if (courseIds == null || courseIds.size() == 0) { return new ArrayList<>(); diff --git a/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java index ff74f3e..8b62a39 100644 --- a/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/DepartmentServiceImpl.java @@ -268,4 +268,12 @@ public class DepartmentServiceImpl extends ServiceImpl chunk(List ids) { + if (ids == null || ids.size() == 0) { + return new ArrayList<>(); + } + return list(query().getWrapper().in("id", ids)); + } }