diff --git a/src/main/java/xyz/playedu/api/FCtx.java b/src/main/java/xyz/playedu/api/FCtx.java index b8aaeb9..db6f615 100644 --- a/src/main/java/xyz/playedu/api/FCtx.java +++ b/src/main/java/xyz/playedu/api/FCtx.java @@ -35,11 +35,11 @@ public class FCtx { THREAD_LOCAL.remove(); } - public static void setUserId(Integer id) { + public static void setId(Integer id) { put(KEY_USER_ID, id); } - public static Integer getUserId() { + public static Integer getId() { return (Integer) get(KEY_USER_ID); } diff --git a/src/main/java/xyz/playedu/api/bus/UserBus.java b/src/main/java/xyz/playedu/api/bus/UserBus.java index d2487b5..be65613 100644 --- a/src/main/java/xyz/playedu/api/bus/UserBus.java +++ b/src/main/java/xyz/playedu/api/bus/UserBus.java @@ -51,7 +51,7 @@ public class UserBus { Long curTime = System.currentTimeMillis(); // 最近一次学习时间 - Long lastTime = userLastLearnTimeCache.get(FCtx.getUserId()); + Long lastTime = userLastLearnTimeCache.get(FCtx.getId()); // 最大周期为10s if (lastTime == null || curTime - lastTime > 10000) { lastTime = curTime - 10000; 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 386e413..9444497 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/CourseController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/CourseController.java @@ -7,11 +7,9 @@ import org.springframework.web.bind.annotation.*; import xyz.playedu.api.FCtx; import xyz.playedu.api.domain.Course; import xyz.playedu.api.domain.CourseHour; +import xyz.playedu.api.domain.UserCourseHourRecord; import xyz.playedu.api.exception.NotFoundException; -import xyz.playedu.api.service.CourseChapterService; -import xyz.playedu.api.service.CourseHourService; -import xyz.playedu.api.service.CourseService; -import xyz.playedu.api.service.UserCourseRecordService; +import xyz.playedu.api.service.*; import xyz.playedu.api.types.JsonResponse; import xyz.playedu.api.types.paginate.CoursePaginateFiler; import xyz.playedu.api.types.paginate.PaginationResult; @@ -39,6 +37,9 @@ public class CourseController { @Autowired private UserCourseRecordService userCourseRecordService; + @Autowired + private UserCourseHourRecordService userCourseHourRecordService; + @GetMapping("/index") public JsonResponse index(@RequestParam HashMap params) { Integer page = MapUtils.getInteger(params, "page", 1); @@ -63,7 +64,8 @@ public class CourseController { data.put("course", course); data.put("chapters", chapterService.getChaptersByCourseId(course.getId())); data.put("hours", hourService.getHoursByCourseId(course.getId()).stream().collect(Collectors.groupingBy(CourseHour::getChapterId))); - data.put("learn_record", userCourseRecordService.find(FCtx.getUserId(), course.getId())); + data.put("learn_record", userCourseRecordService.find(FCtx.getId(), course.getId())); + data.put("learn_hour_records", userCourseHourRecordService.getRecords(FCtx.getId(), course.getId()).stream().collect(Collectors.toMap(UserCourseHourRecord::getHourId, e -> e))); return JsonResponse.data(data); } diff --git a/src/main/java/xyz/playedu/api/controller/frontend/LoginController.java b/src/main/java/xyz/playedu/api/controller/frontend/LoginController.java index 8a9f27f..b434f1f 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/LoginController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/LoginController.java @@ -71,7 +71,7 @@ public class LoginController { @PostMapping("/logout") public JsonResponse logout() throws JwtLogoutException { jwtService.userLogout(RequestUtil.token()); - ctx.publishEvent(new UserLogoutEvent(this, FCtx.getUserId(), FCtx.getJwtJti())); + ctx.publishEvent(new UserLogoutEvent(this, FCtx.getId(), FCtx.getJwtJti())); return JsonResponse.success(); } 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 4f202fa..6ff3b9b 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/UserController.java @@ -58,8 +58,8 @@ public class UserController { @PutMapping("/avatar") public JsonResponse changeAvatar(MultipartFile file) { - UserUploadImageLog log = uploadService.userAvatar(FCtx.getUserId(), file, FrontendConstant.USER_UPLOAD_IMAGE_TYPE_AVATAR, FrontendConstant.USER_UPLOAD_IMAGE_SCENE_AVATAR); - userService.changeAvatar(FCtx.getUserId(), log.getUrl()); + UserUploadImageLog log = uploadService.userAvatar(FCtx.getId(), file, FrontendConstant.USER_UPLOAD_IMAGE_TYPE_AVATAR, FrontendConstant.USER_UPLOAD_IMAGE_SCENE_AVATAR); + userService.changeAvatar(FCtx.getId(), log.getUrl()); return JsonResponse.success(); } @@ -76,7 +76,7 @@ public class UserController { return JsonResponse.error("请选择部门"); } - List userJoinDepIds = userService.getDepIdsByUserId(FCtx.getUserId()); + List userJoinDepIds = userService.getDepIdsByUserId(FCtx.getId()); if (userJoinDepIds == null) { return JsonResponse.error("当前学员未加入任何部门"); } @@ -112,7 +112,7 @@ public class UserController { // -------- 读取学习进度 ---------- Map 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)); + learnCourseRecords = userCourseRecordService.chunk(FCtx.getId(), courses.stream().map(Course::getId).toList()).stream().collect(Collectors.toMap(UserCourseRecord::getCourseId, e -> e)); } data.put("learn_course_records", learnCourseRecords); @@ -120,8 +120,8 @@ public class UserController { Integer nunRequiredHourCount = 0;//选修课时 Integer requiredFinishedHourCount = 0;//已完成必修课时 Integer nunRequiredFinishedHourCount = 0;//已完成选修课时 - Integer todayLearnDuration = userLearnDurationStatsService.todayUserDuration(FCtx.getUserId());//今日学习时长 - Integer learnDuration = userLearnDurationStatsService.userDuration(FCtx.getUserId());//学习总时长 + Integer todayLearnDuration = userLearnDurationStatsService.todayUserDuration(FCtx.getId());//今日学习时长 + Integer learnDuration = userLearnDurationStatsService.userDuration(FCtx.getId());//学习总时长 // -------- 学习数据统计 ---------- if (courses.size() > 0) { diff --git a/src/main/java/xyz/playedu/api/middleware/FrontMiddleware.java b/src/main/java/xyz/playedu/api/middleware/FrontMiddleware.java index 22918dd..2930ea7 100644 --- a/src/main/java/xyz/playedu/api/middleware/FrontMiddleware.java +++ b/src/main/java/xyz/playedu/api/middleware/FrontMiddleware.java @@ -60,7 +60,7 @@ public class FrontMiddleware implements HandlerInterceptor { } FCtx.setUser(user); - FCtx.setUserId(user.getId()); + FCtx.setId(user.getId()); FCtx.setJWtJti(payload.getJti()); return HandlerInterceptor.super.preHandle(request, response, handler); diff --git a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java index 6203315..7548b1a 100644 --- a/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java +++ b/src/main/java/xyz/playedu/api/service/UserCourseHourRecordService.java @@ -3,6 +3,8 @@ package xyz.playedu.api.service; import xyz.playedu.api.domain.UserCourseHourRecord; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @author tengteng * @description 针对表【user_course_hour_records】的数据库操作Service @@ -14,4 +16,6 @@ public interface UserCourseHourRecordService extends IService getRecords(Integer userId, Integer courseId); } 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 be51a20..cca2d39 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserCourseHourRecordServiceImpl.java @@ -10,6 +10,7 @@ import xyz.playedu.api.mapper.UserCourseHourRecordMapper; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.List; /** * @author tengteng @@ -81,6 +82,11 @@ public class UserCourseHourRecordServiceImpl extends ServiceImpl getRecords(Integer userId, Integer courseId) { + return list(query().getWrapper().eq("user_id", userId).eq("course_id", courseId)); + } }