From f0378c832dc1ca645f6851ce4a400d2c20af3dd6 Mon Sep 17 00:00:00 2001 From: none Date: Mon, 8 May 2023 11:28:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E4=B8=8A=E8=AF=BE-=E5=AD=A6=E5=91=98a?= =?UTF-8?q?pi=E8=BF=94=E5=9B=9E=E5=AD=A6=E5=91=98=E7=9A=84=E7=BA=BF?= =?UTF-8?q?=E4=B8=8A=E8=AF=BE=E5=B7=B2=E5=AD=A6=E8=AF=BE=E6=97=B6=E6=95=B0?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../backend/CourseUserController.java | 17 +++++++++- .../controller/backend/UserController.java | 6 ++-- .../controller/frontend/UserController.java | 6 ++-- .../mapper/UserCourseHourRecordMapper.java | 8 +++-- .../service/UserCourseHourRecordService.java | 8 +++-- .../impl/UserCourseHourRecordServiceImpl.java | 14 ++++++-- ...serCourseHourRecordCourseCountMapper.java} | 2 +- .../UserCourseHourRecordUserCountMapper.java | 33 +++++++++++++++++++ .../mapper/UserCourseHourRecordMapper.xml | 15 ++++++++- 10 files changed, 95 insertions(+), 16 deletions(-) rename src/main/java/xyz/playedu/api/types/mapper/{UserCourseHourRecordCountMapper.java => UserCourseHourRecordCourseCountMapper.java} (94%) create mode 100644 src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordUserCountMapper.java diff --git a/pom.xml b/pom.xml index a4bd74b..50bf3a4 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ xyz.playedu playedu-api - 1.0-beta.4 + 1.0-beta.5 playedu-api playedu-api diff --git a/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java b/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java index 7ac92cc..e75bbe0 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/CourseUserController.java @@ -28,9 +28,11 @@ import xyz.playedu.api.event.UserCourseRecordDestroyEvent; import xyz.playedu.api.middleware.BackendPermissionMiddleware; import xyz.playedu.api.request.backend.CourseUserDestroyRequest; import xyz.playedu.api.service.CourseService; +import xyz.playedu.api.service.UserCourseHourRecordService; import xyz.playedu.api.service.UserCourseRecordService; import xyz.playedu.api.service.UserService; import xyz.playedu.api.types.JsonResponse; +import xyz.playedu.api.types.mapper.UserCourseHourRecordUserCountMapper; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserPaginateFilter; @@ -52,6 +54,8 @@ public class CourseUserController { @Autowired private UserCourseRecordService userCourseRecordService; + @Autowired private UserCourseHourRecordService userCourseHourRecordService; + @Autowired private UserService userService; @Autowired private ApplicationContext ctx; @@ -85,18 +89,29 @@ public class CourseUserController { PaginationResult result = userService.paginate(page, size, filter); + List userIds = result.getData().stream().map(User::getId).toList(); + HashMap data = new HashMap<>(); data.put("data", result.getData()); data.put("total", result.getTotal()); data.put( "user_course_records", userCourseRecordService.chunk( - result.getData().stream().map(User::getId).toList(), + userIds, new ArrayList<>() { { add(courseId); } })); + data.put( + "user_course_hour_user_count", + userCourseHourRecordService + .getUserCourseHourUserCount(courseId, userIds, null) + .stream() + .collect( + Collectors.toMap( + UserCourseHourRecordUserCountMapper::getUserId, + UserCourseHourRecordUserCountMapper::getTotal))); return JsonResponse.data(data); } 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 ee37175..5de663f 100644 --- a/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -43,7 +43,7 @@ import xyz.playedu.api.request.backend.UserRequest; import xyz.playedu.api.service.*; import xyz.playedu.api.service.internal.UserDepartmentService; import xyz.playedu.api.types.JsonResponse; -import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordCourseCountMapper; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter; import xyz.playedu.api.types.paginate.UserCourseRecordPaginateFilter; @@ -488,8 +488,8 @@ public class UserController { userCourseHourRecordService.getUserCourseHourCount(id, courseIds, null).stream() .collect( Collectors.toMap( - UserCourseHourRecordCountMapper::getCourseId, - UserCourseHourRecordCountMapper::getTotal)); + UserCourseHourRecordCourseCountMapper::getCourseId, + UserCourseHourRecordCourseCountMapper::getTotal)); HashMap data = new HashMap<>(); data.put("open_courses", openCourses); diff --git a/src/main/java/xyz/playedu/api/controller/frontend/UserController.java b/src/main/java/xyz/playedu/api/controller/frontend/UserController.java index 17f9c52..08ef0e5 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/UserController.java @@ -30,7 +30,7 @@ import xyz.playedu.api.exception.ServiceException; import xyz.playedu.api.request.frontend.ChangePasswordRequest; import xyz.playedu.api.service.*; import xyz.playedu.api.types.JsonResponse; -import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordCourseCountMapper; import xyz.playedu.api.types.response.UserLatestLearn; import xyz.playedu.api.util.PrivacyUtil; @@ -221,8 +221,8 @@ public class UserController { .stream() .collect( Collectors.toMap( - UserCourseHourRecordCountMapper::getCourseId, - UserCourseHourRecordCountMapper::getTotal))); + UserCourseHourRecordCourseCountMapper::getCourseId, + UserCourseHourRecordCourseCountMapper::getTotal))); return JsonResponse.data(data); } diff --git a/src/main/java/xyz/playedu/api/mapper/UserCourseHourRecordMapper.java b/src/main/java/xyz/playedu/api/mapper/UserCourseHourRecordMapper.java index e3072cd..e0258a2 100644 --- a/src/main/java/xyz/playedu/api/mapper/UserCourseHourRecordMapper.java +++ b/src/main/java/xyz/playedu/api/mapper/UserCourseHourRecordMapper.java @@ -20,7 +20,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import xyz.playedu.api.domain.UserCourseHourRecord; -import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordCourseCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordUserCountMapper; import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter; import java.util.List; @@ -34,9 +35,12 @@ import java.util.List; public interface UserCourseHourRecordMapper extends BaseMapper { List getUserLatestRecords(Integer userId, Integer size); - List getUserCourseHourCount( + List getUserCourseHourCount( Integer userId, List courseIds, Integer isFinished); + List getUserCourseHourUserCount( + Integer courseId, List userIds, Integer isFinished); + List paginate(UserCourseHourRecordPaginateFilter filter); Long paginateCount(UserCourseHourRecordPaginateFilter filter); diff --git a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java index 1a61e59..406459b 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java @@ -18,7 +18,8 @@ package xyz.playedu.api.service; import com.baomidou.mybatisplus.extension.service.IService; import xyz.playedu.api.domain.UserCourseHourRecord; -import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordCourseCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordUserCountMapper; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter; @@ -51,9 +52,12 @@ public interface UserCourseHourRecordService extends IService getUserCourseHourCount( + List getUserCourseHourCount( Integer userId, List courseIds, Integer isFinished); + List getUserCourseHourUserCount( + Integer courseId, List userIds, Integer isFinished); + PaginationResult paginate( int page, int size, UserCourseHourRecordPaginateFilter filter); } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java index 1743325..19f18ef 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java @@ -25,7 +25,8 @@ import xyz.playedu.api.domain.UserCourseHourRecord; import xyz.playedu.api.event.UserCourseHourFinishedEvent; import xyz.playedu.api.mapper.UserCourseHourRecordMapper; import xyz.playedu.api.service.UserCourseHourRecordService; -import xyz.playedu.api.types.mapper.UserCourseHourRecordCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordCourseCountMapper; +import xyz.playedu.api.types.mapper.UserCourseHourRecordUserCountMapper; import xyz.playedu.api.types.paginate.PaginationResult; import xyz.playedu.api.types.paginate.UserCourseHourRecordPaginateFilter; @@ -127,7 +128,7 @@ public class UserCourseHourRecordServiceImpl } @Override - public List getUserCourseHourCount( + public List getUserCourseHourCount( Integer userId, List courseIds, Integer isFinished) { if (courseIds == null || courseIds.size() == 0) { return new ArrayList<>(); @@ -135,6 +136,15 @@ public class UserCourseHourRecordServiceImpl return getBaseMapper().getUserCourseHourCount(userId, courseIds, isFinished); } + @Override + public List getUserCourseHourUserCount( + Integer courseId, List userIds, Integer isFinished) { + if (userIds == null || userIds.size() == 0) { + return new ArrayList<>(); + } + return getBaseMapper().getUserCourseHourUserCount(courseId, userIds, isFinished); + } + @Override public void remove(Integer userId, Integer courseId) { remove(query().getWrapper().eq("user_id", userId).eq("course_id", courseId)); diff --git a/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordCountMapper.java b/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordCourseCountMapper.java similarity index 94% rename from src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordCountMapper.java rename to src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordCourseCountMapper.java index a855b48..0130f2d 100644 --- a/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordCountMapper.java +++ b/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordCourseCountMapper.java @@ -25,7 +25,7 @@ import lombok.Data; * @create 2023/3/29 10:01 */ @Data -public class UserCourseHourRecordCountMapper { +public class UserCourseHourRecordCourseCountMapper { @JsonProperty("course_id") private Integer courseId; diff --git a/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordUserCountMapper.java b/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordUserCountMapper.java new file mode 100644 index 0000000..a218219 --- /dev/null +++ b/src/main/java/xyz/playedu/api/types/mapper/UserCourseHourRecordUserCountMapper.java @@ -0,0 +1,33 @@ +/* + * Copyright 2023 杭州白书科技有限公司 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package xyz.playedu.api.types.mapper; + +import com.fasterxml.jackson.annotation.JsonProperty; + +import lombok.Data; + +/** + * @Author 杭州白书科技有限公司 + * + * @create 2023/5/8 11:22 + */ +@Data +public class UserCourseHourRecordUserCountMapper { + @JsonProperty("user_id") + private Integer userId; + + private Integer total; +} diff --git a/src/main/resources/mapper/UserCourseHourRecordMapper.xml b/src/main/resources/mapper/UserCourseHourRecordMapper.xml index 106ec63..6d04cc9 100644 --- a/src/main/resources/mapper/UserCourseHourRecordMapper.xml +++ b/src/main/resources/mapper/UserCourseHourRecordMapper.xml @@ -38,7 +38,7 @@ limit #{size}; +