mirror of
https://github.com/PlayEdu/PlayEdu
synced 2025-06-27 15:42:41 +08:00
完善/user/courses接口 && fixed: 后台学员top10
This commit is contained in:
parent
6c57a5f917
commit
83717baafe
@ -37,7 +37,7 @@ public class UserBus {
|
||||
public boolean canSeeCourse(User user, Course course) {
|
||||
List<Integer> courseDepIds = courseService.getDepIdsByCourseId(course.getId());
|
||||
if (courseDepIds == null || courseDepIds.size() == 0) {
|
||||
//线上课无所属部门=>公开课=>任何学员都可以学习
|
||||
//线上课无所属部门=>任何学员都可以学习
|
||||
return true;
|
||||
}
|
||||
List<Integer> userDepIds = userService.getDepIdsByUserId(user.getId());
|
||||
|
@ -68,7 +68,7 @@ public class DashboardController {
|
||||
data.put("user_learn_yesterday", userLearnDurationStatsService.yesterdayTotal());
|
||||
|
||||
List<UserLearnDurationStats> userLearnTop10 = userLearnDurationStatsService.top10();
|
||||
Map<Integer, User> top10Users = userService.chunks(userLearnTop10.stream().map(UserLearnDurationStats::getUserId).toList(), new ArrayList<String>() {{
|
||||
Map<Integer, User> top10Users = userService.chunks(userLearnTop10.stream().map(UserLearnDurationStats::getUserId).toList(), new ArrayList<>() {{
|
||||
add("id");
|
||||
add("name");
|
||||
add("avatar");
|
||||
|
@ -9,16 +9,16 @@ import xyz.playedu.api.FCtx;
|
||||
import xyz.playedu.api.domain.Course;
|
||||
import xyz.playedu.api.domain.Department;
|
||||
import xyz.playedu.api.domain.User;
|
||||
import xyz.playedu.api.domain.UserCourseRecord;
|
||||
import xyz.playedu.api.exception.ServiceException;
|
||||
import xyz.playedu.api.request.frontend.ChangePasswordRequest;
|
||||
import xyz.playedu.api.service.CourseService;
|
||||
import xyz.playedu.api.service.DepartmentService;
|
||||
import xyz.playedu.api.service.UserCourseRecordService;
|
||||
import xyz.playedu.api.service.UserService;
|
||||
import xyz.playedu.api.types.JsonResponse;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -39,6 +39,9 @@ public class UserController {
|
||||
@Autowired
|
||||
private CourseService courseService;
|
||||
|
||||
@Autowired
|
||||
private UserCourseRecordService userCourseRecordService;
|
||||
|
||||
@GetMapping("/detail")
|
||||
public JsonResponse detail() {
|
||||
User user = FCtx.getUser();
|
||||
@ -77,20 +80,41 @@ public class UserController {
|
||||
return JsonResponse.error("当前学员未加入所选择部门");
|
||||
}
|
||||
|
||||
HashMap<String, Object> data = new HashMap<>();
|
||||
data.put("learn_course_records", new HashMap<>());
|
||||
|
||||
// -------- 读取当前学员可以参加的课程 ----------
|
||||
List<Course> courses = new ArrayList<>();
|
||||
// 读取部门课
|
||||
List<Course> depCourses = courseService.getDepCoursesAndShow(new ArrayList<>() {{
|
||||
add(depId);
|
||||
}});
|
||||
// 全部部门课
|
||||
List<Course> openCourses = courseService.getOpenCoursesAndShow(500);
|
||||
if (depCourses != null && depCourses.size() > 0) {
|
||||
courses.addAll(depCourses);
|
||||
}
|
||||
if (openCourses != null && openCourses.size() > 0) {
|
||||
courses.addAll(openCourses);
|
||||
}
|
||||
|
||||
// 公开课
|
||||
List<Course> openCourses = courseService.getOpenCoursesAndShow(200);
|
||||
if (courses.size() > 0) {
|
||||
courses = courses.stream().sorted(Comparator.comparing(Course::getId).reversed()).toList();
|
||||
}
|
||||
|
||||
HashMap<String, Object> data = new HashMap<>();
|
||||
data.put("open", openCourses.stream().collect(Collectors.groupingBy(Course::getIsRequired)));
|
||||
data.put("department", depCourses.stream().collect(Collectors.groupingBy(Course::getIsRequired)));
|
||||
data.put("courses", courses);
|
||||
|
||||
// -------- 读取学习进度 ----------
|
||||
Map<Integer, UserCourseRecord> learnCourseRecords = new HashMap<>();
|
||||
if (courses.size() > 0) {
|
||||
learnCourseRecords = userCourseRecordService
|
||||
.chunk(FCtx.getUserId(), courses.stream().map(Course::getId).toList())
|
||||
.stream()
|
||||
.collect(Collectors.toMap(UserCourseRecord::getCourseId, e -> e));
|
||||
}
|
||||
data.put("learn_course_records", learnCourseRecords);
|
||||
|
||||
return JsonResponse.data(data);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -3,6 +3,8 @@ package xyz.playedu.api.service;
|
||||
import xyz.playedu.api.domain.UserCourseRecord;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author tengteng
|
||||
* @description 针对表【user_course_records】的数据库操作Service
|
||||
@ -13,4 +15,6 @@ public interface UserCourseRecordService extends IService<UserCourseRecord> {
|
||||
UserCourseRecord find(Integer userId, Integer courseId);
|
||||
|
||||
void storeOrUpdate(Integer userId, Integer courseId, Integer hourCount, Integer finishedCount);
|
||||
|
||||
List<UserCourseRecord> chunk(Integer userId, List<Integer> courseIds);
|
||||
}
|
||||
|
@ -6,7 +6,9 @@ import xyz.playedu.api.service.UserCourseRecordService;
|
||||
import xyz.playedu.api.mapper.UserCourseRecordMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author tengteng
|
||||
@ -64,6 +66,14 @@ public class UserCourseRecordServiceImpl extends ServiceImpl<UserCourseRecordMap
|
||||
updateById(updateRecord);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserCourseRecord> chunk(Integer userId, List<Integer> courseIds) {
|
||||
if (courseIds == null || courseIds.size() == 0) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return list(query().getWrapper().eq("user_id", userId).in("course_id", courseIds));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -18,10 +18,7 @@ import xyz.playedu.api.types.paginate.UserPaginateFilter;
|
||||
import xyz.playedu.api.util.HelperUtil;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@ -163,6 +160,9 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
|
||||
@Override
|
||||
public List<User> chunks(List<Integer> ids, List<String> fields) {
|
||||
if (ids == null || ids.size() == 0) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return list(query().getWrapper().in("id", ids).select(fields));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user