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};
+