From 761458c370da04f2bb69fab2690af25b649babe3 Mon Sep 17 00:00:00 2001 From: none Date: Fri, 24 Mar 2023 11:50:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AD=A6=E4=B9=A0=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/frontend/UserController.java | 52 +++++++++++++++---- .../mapper/UserLearnDurationStatsMapper.java | 14 +++-- .../UserLearnDurationStatsService.java | 4 ++ .../UserLearnDurationStatsServiceImpl.java | 11 ++++ .../mapper/UserLearnDurationStatsMapper.xml | 13 ++++- 5 files changed, 79 insertions(+), 15 deletions(-) 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 dcfd39c..851966d 100644 --- a/src/main/java/xyz/playedu/api/controller/frontend/UserController.java +++ b/src/main/java/xyz/playedu/api/controller/frontend/UserController.java @@ -12,10 +12,7 @@ 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.service.*; import xyz.playedu.api.types.JsonResponse; import java.util.*; @@ -42,6 +39,9 @@ public class UserController { @Autowired private UserCourseRecordService userCourseRecordService; + @Autowired + private UserLearnDurationStatsService userLearnDurationStatsService; + @GetMapping("/detail") public JsonResponse detail() { User user = FCtx.getUser(); @@ -67,6 +67,7 @@ public class UserController { @GetMapping("/courses") public JsonResponse courses(@RequestParam HashMap params) { + Integer isRequired = MapUtils.getInteger(params, "is_required"); Integer depId = MapUtils.getInteger(params, "dep_id"); if (depId == null || depId == 0) { return JsonResponse.error("请选择部门"); @@ -91,13 +92,14 @@ public class UserController { }}); // 全部部门课 List openCourses = courseService.getOpenCoursesAndShow(500); + // 汇总到一个list中 if (depCourses != null && depCourses.size() > 0) { courses.addAll(depCourses); } if (openCourses != null && openCourses.size() > 0) { courses.addAll(openCourses); } - + // 对结果进行排序->按照课程id倒序 if (courses.size() > 0) { courses = courses.stream().sorted(Comparator.comparing(Course::getId).reversed()).toList(); } @@ -107,13 +109,45 @@ 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.getUserId(), courses.stream().map(Course::getId).toList()).stream().collect(Collectors.toMap(UserCourseRecord::getCourseId, e -> e)); } data.put("learn_course_records", learnCourseRecords); + Integer requiredHourCount = 0;//必修课时 + Integer nunRequiredHourCount = 0;//选修课时 + Integer requiredFinishedHourCount = 0;//已完成必修课时 + Integer nunRequiredFinishedHourCount = 0;//已完成选修课时 + Integer todayLearnDuration = userLearnDurationStatsService.todayUserDuration(FCtx.getUserId());//今日学习时长 + Integer learnDuration = userLearnDurationStatsService.userDuration(FCtx.getUserId());//学习总时长 + + // -------- 学习数据统计 ---------- + if (courses.size() > 0) { + for (Course courseItem : courses) { + if (courseItem.getIsRequired() == 1) { + requiredHourCount += courseItem.getClassHour(); + } else { + nunRequiredHourCount += courseItem.getClassHour(); + } + UserCourseRecord learnRecord = learnCourseRecords.get(courseItem.getId()); + if (learnRecord == null) { + continue; + } + if (courseItem.getIsRequired() == 1) { + requiredFinishedHourCount += learnRecord.getFinishedCount(); + } else { + nunRequiredFinishedHourCount += learnRecord.getFinishedCount(); + } + } + } + HashMap stats = new HashMap<>(); + stats.put("required_hour_count", requiredHourCount); + stats.put("nun_required_hour_count", nunRequiredHourCount); + stats.put("required_finished_hour_count", requiredFinishedHourCount); + stats.put("nun_required_finished_hour_count", nunRequiredFinishedHourCount); + stats.put("today_learn_duration", todayLearnDuration); + stats.put("learn_duration", learnDuration); + data.put("stats", stats); + return JsonResponse.data(data); } diff --git a/src/main/java/xyz/playedu/api/mapper/UserLearnDurationStatsMapper.java b/src/main/java/xyz/playedu/api/mapper/UserLearnDurationStatsMapper.java index 4fbb241..84d08e4 100644 --- a/src/main/java/xyz/playedu/api/mapper/UserLearnDurationStatsMapper.java +++ b/src/main/java/xyz/playedu/api/mapper/UserLearnDurationStatsMapper.java @@ -5,14 +5,18 @@ import xyz.playedu.api.domain.UserLearnDurationStats; import com.baomidou.mybatisplus.core.mapper.BaseMapper; /** -* @author tengteng -* @description 针对表【user_learn_duration_stats】的数据库操作Mapper -* @createDate 2023-03-22 13:55:29 -* @Entity xyz.playedu.api.domain.UserLearnDurationStats -*/ + * @author tengteng + * @description 针对表【user_learn_duration_stats】的数据库操作Mapper + * @createDate 2023-03-22 13:55:29 + * @Entity xyz.playedu.api.domain.UserLearnDurationStats + */ @Mapper public interface UserLearnDurationStatsMapper extends BaseMapper { + Integer getUserDateDuration(Integer userId, String createdDate); + + Integer getUserDuration(Integer userId); + } diff --git a/src/main/java/xyz/playedu/api/service/UserLearnDurationStatsService.java b/src/main/java/xyz/playedu/api/service/UserLearnDurationStatsService.java index e7a27d1..f5f6afa 100644 --- a/src/main/java/xyz/playedu/api/service/UserLearnDurationStatsService.java +++ b/src/main/java/xyz/playedu/api/service/UserLearnDurationStatsService.java @@ -18,4 +18,8 @@ public interface UserLearnDurationStatsService extends IService top10(); + + Integer todayUserDuration(Integer userId); + + Integer userDuration(Integer userId); } diff --git a/src/main/java/xyz/playedu/api/service/impl/UserLearnDurationStatsServiceImpl.java b/src/main/java/xyz/playedu/api/service/impl/UserLearnDurationStatsServiceImpl.java index 5658978..feaec4b 100644 --- a/src/main/java/xyz/playedu/api/service/impl/UserLearnDurationStatsServiceImpl.java +++ b/src/main/java/xyz/playedu/api/service/impl/UserLearnDurationStatsServiceImpl.java @@ -66,6 +66,17 @@ public class UserLearnDurationStatsServiceImpl extends ServiceImpl - id,user_id,duration, + id,user_id,duration, created_date + +