serv-学习任务

This commit is contained in:
2025-10-23 18:57:25 +08:00
parent 5449e5b5ff
commit 042209b98d
13 changed files with 122 additions and 23 deletions

View File

@@ -71,7 +71,9 @@ INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, o
('300', 'menu_study_plan', '学习计划', NULL, '/study-plan', 'study-plan/StudyPlanView', 'el-icon-reading', 3, 1, 'NavigationLayout', '1', now()),
('301', 'menu_study_tasks', '学习任务', 'menu_study_plan', '/study-plan/tasks', 'study-plan/StudyTasksView', 'el-icon-s-order', 1, 1, 'NavigationLayout', '1', now()),
('302', 'menu_course_center', '课程中心', 'menu_study_plan', '/study-plan/course', 'study-plan/CourseCenterView', 'el-icon-video-play', 2, 1, 'NavigationLayout', '1', now()),
('303', 'menu_task_detail', '任务详情', 'menu_study_plan', '/study-plan/task-detail', 'study-plan/LearningTaskDetailView', 'el-icon-document', 3, 3, 'BlankLayout', '1', now()),
('304', 'menu_course_detail', '课程详情', 'menu_study_plan', '/study-plan/course-detail', 'study-plan/CourseDetailView', 'el-icon-video-play', 4, 3, 'BlankLayout', '1', now()),
('305', 'menu_course_study', '课程学习', 'menu_study_plan', '/study-plan/course-study', 'study-plan/CourseStudyView', 'el-icon-video-play', 5, 3, 'BlankLayout', '1', now()),
('400', 'menu_user_dropdown', '用户下拉菜单', NULL, '', '', 'el-icon-user', 4, 0, 'NavigationLayout', '1', now()),
-- 个人中心
('401', 'menu_user_center', '个人中心', 'menu_user_dropdown', '/user-center', 'user-center/UserCenterView', 'el-icon-user', 4, 1, 'NavigationLayout', '1', now()),
@@ -107,9 +109,10 @@ INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, o
('3002', 'menu_admin_article', '文章管理', 'menu_admin_resource_manage', '/admin/manage/resource/article', 'admin/manage/resource/ArticleManagementView', 'el-icon-document', 2, 1, 'NavigationLayout', '1', now()),
('3003', 'menu_admin_data_records', '数据记录', 'menu_admin_resource_manage', '/admin/manage/resource/data-records', 'admin/manage/resource/DataRecordsView', 'el-icon-data-line', 3, 1, 'NavigationLayout', '1', now()),
-- 文章相关
('3010', 'menu_article_add', '文章添加', 'menu_admin_article', '/article/add', 'article/ArticleAddView', 'el-icon-plus', 1, 3, 'NavigationLayout', '1', now()),
('3011', 'menu_article_show', '文章展示', 'menu_admin_article', '/article/show', 'article/ArticleShowView', 'el-icon-document', 2, 3, 'NavigationLayout', '1', now()),
-- 运营管理
('4000', 'menu_admin_content_manage', '运营管理', NULL, '', '', 'el-icon-s-operation', 4, 1, '', '1', now()),
('4001', 'menu_admin_banner', 'Banner管理', 'menu_admin_content_manage', '/admin/manage/content/banner', 'admin/manage/content/BannerManagementView', 'el-icon-picture', 1, 1, 'NavigationLayout', '1', now()),
@@ -153,6 +156,10 @@ INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id, creator, creat
('118', 'perm_ai_manage', 'menu_ai_assistant', '1', now()),
('119', 'perm_default', 'menu_user_dropdown', '1', now()),
('120', 'perm_news_article_add', 'menu_article_add', '1', now()),
('121', 'perm_default', 'menu_task_detail', '1', now()),
('122', 'perm_default', 'menu_course_detail', '1', now()),
('123', 'perm_default', 'menu_course_study', '1', now()),
('124', 'perm_default', 'menu_article_show', '1', now()),
-- 后端管理菜单权限关联

View File

@@ -90,7 +90,7 @@ public interface CourseService {
* @author yslg
* @since 2025-10-15
*/
ResultDomain<TbCourse> incrementViewCount(String courseID);
ResultDomain<Boolean> incrementViewCount(String courseID);
/**
* @description 增加课程学习人数

View File

@@ -140,6 +140,15 @@ public interface LearningTaskService {
*/
ResultDomain<TbTaskUser> updateTaskUserStatus(String taskID, String userID, Integer status, java.math.BigDecimal progress);
/**
* @description 获取用户整体学习进度
* @param userID 用户ID
* @return ResultDomain<TaskVO> 学习进度
* @author yslg
* @since 2025-10-15
*/
ResultDomain<TaskVO> getUserProgress(String userID);
// ----------------任务课程相关--------------------------------
/**

View File

@@ -16,6 +16,11 @@ public class TaskVO extends BaseDTO{
private List<TaskItemVO> taskCourses;
private List<TaskItemVO> taskResources;
private List<TaskItemVO> taskUsers;
private Integer totalTaskNum;
private Integer completedTaskNum;
private Integer learningTaskNum;
private Integer notStartTaskNum;
private Integer taskStatus;
public TbLearningTask getLearningTask() {
return learningTask;
@@ -42,6 +47,36 @@ public class TaskVO extends BaseDTO{
this.taskUsers = taskUsers;
}
public Integer getTotalTaskNum() {
return totalTaskNum;
}
public void setTotalTaskNum(Integer totalTaskNum) {
this.totalTaskNum = totalTaskNum;
}
public Integer getCompletedTaskNum() {
return completedTaskNum;
}
public void setCompletedTaskNum(Integer completedTaskNum) {
this.completedTaskNum = completedTaskNum;
}
public Integer getLearningTaskNum() {
return learningTaskNum;
}
public void setLearningTaskNum(Integer learningTaskNum) {
this.learningTaskNum = learningTaskNum;
}
public Integer getNotStartTaskNum() {
return notStartTaskNum;
}
public void setNotStartTaskNum(Integer notStartTaskNum) {
this.notStartTaskNum = notStartTaskNum;
}
public Integer getTaskStatus() {
return taskStatus;
}
public void setTaskStatus(Integer taskStatus) {
this.taskStatus = taskStatus;
}
public List<TbTaskCourse> toTaskCourses() {
return getTaskCourses().stream().map(TaskItemVO::toTaskCourse).collect(Collectors.toList());
}

View File

@@ -75,7 +75,7 @@ public class CourseController {
* 删除课程
*/
@DeleteMapping("/course")
public ResultDomain<Boolean> deleteCourse(@PathVariable String courseID) {
public ResultDomain<Boolean> deleteCourse(@PathVariable("courseID") String courseID) {
return courseService.deleteCourse(courseID);
}
@@ -103,7 +103,7 @@ public class CourseController {
* 删除课程章节
*/
@DeleteMapping("/course/chapter/{chapterID}")
public ResultDomain<Boolean> deleteChapter(@PathVariable String chapterID) {
public ResultDomain<Boolean> deleteChapter(@PathVariable("chapterID") String chapterID) {
return courseService.deleteChapter(chapterID);
}
@@ -131,7 +131,7 @@ public class CourseController {
* 删除课程章节节点
*/
@DeleteMapping("/course/chapter/node/{nodeID}")
public ResultDomain<Boolean> deleteChapterNode(@PathVariable String nodeID) {
public ResultDomain<Boolean> deleteChapterNode(@PathVariable("nodeID") String nodeID) {
return courseService.deleteChapterNode(nodeID);
}
@@ -147,7 +147,7 @@ public class CourseController {
* 增加课程浏览次数
*/
@PostMapping("/{courseID}/view")
public ResultDomain<TbCourse> incrementViewCount(@PathVariable String courseID) {
public ResultDomain<Boolean> incrementViewCount(@PathVariable("courseID") String courseID) {
return courseService.incrementViewCount(courseID);
}
@@ -155,7 +155,7 @@ public class CourseController {
* 增加课程学习人数
*/
@PostMapping("/{courseID}/learn")
public ResultDomain<TbCourse> incrementLearnCount(@PathVariable String courseID) {
public ResultDomain<TbCourse> incrementLearnCount(@PathVariable("courseID") String courseID) {
return courseService.incrementLearnCount(courseID);
}

View File

@@ -29,8 +29,8 @@ public class LearningRecordController {
@GetMapping("/list")
public ResultDomain<TbLearningRecord> getLearningRecords(
@RequestParam(required = false) String userID,
@RequestParam(required = false) String courseID,
@RequestParam(required = false) String taskID) {
@RequestParam(required = false) String resourceType,
@RequestParam(required = false) String resourceID) {
return null;
// return learningRecordService.getLearningRecords(userID, courseID, taskID);
}
@@ -57,7 +57,7 @@ public class LearningRecordController {
* 删除学习记录
*/
@DeleteMapping("/{recordID}")
public ResultDomain<Boolean> deleteLearningRecord(@PathVariable String recordID) {
public ResultDomain<Boolean> deleteLearningRecord(@PathVariable("recordID") String recordID) {
return null;
// return learningRecordService.deleteLearningRecord(recordID);
}
@@ -66,7 +66,7 @@ public class LearningRecordController {
* 根据ID获取学习记录
*/
@GetMapping("/{recordID}")
public ResultDomain<TbLearningRecord> getRecordById(@PathVariable String recordID) {
public ResultDomain<TbLearningRecord> getRecordById(@PathVariable("recordID") String recordID) {
return null;
// return learningRecordService.getRecordById(recordID);
}
@@ -76,7 +76,7 @@ public class LearningRecordController {
*/
@PutMapping("/{recordID}/progress")
public ResultDomain<TbLearningRecord> updateLearningProgress(
@PathVariable String recordID,
@PathVariable("recordID") String recordID,
@RequestParam Integer progress) {
return null;
// return learningRecordService.updateLearningProgress(recordID, progress);
@@ -86,7 +86,7 @@ public class LearningRecordController {
* 完成学习
*/
@PostMapping("/{recordID}/complete")
public ResultDomain<TbLearningRecord> completeLearning(@PathVariable String recordID) {
public ResultDomain<TbLearningRecord> completeLearning(@PathVariable("recordID") String recordID) {
return null;
// return learningRecordService.completeLearning(recordID);
}

View File

@@ -19,6 +19,9 @@ import org.xyzh.common.dto.study.TbTaskCourse;
import org.xyzh.common.dto.study.TbTaskResource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
@@ -145,4 +148,13 @@ public class LearningTaskController {
return learningTaskService.getUserTaskPage(filter, pageParam);
}
/**
* 用户整体学习进度
*/
@PostMapping("/user/progress/{userID}")
public ResultDomain<TaskVO> getUserProgress(@PathVariable("userID") String userID) {
return learningTaskService.getUserProgress(userID);
}
}

View File

@@ -172,4 +172,13 @@ public interface CourseMapper extends BaseMapper<TbCourse> {
* @since 2025-10-15
*/
long countCourses(@Param("filter") TbCourse filter);
/**
* @description 增加课程浏览次数
* @param courseID 课程ID
* @return int 影响行数
* @author yslg
* @since 2025-10-15
*/
int incrementViewCount(@Param("courseID") String courseID);
}

View File

@@ -424,9 +424,16 @@ public class SCCourseServiceImpl implements SCCourseService {
}
@Override
public ResultDomain<TbCourse> incrementViewCount(String courseID) {
// TODO: 实现增加课程浏览次数
return null;
public ResultDomain<Boolean> incrementViewCount(String courseID) {
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
int result = courseMapper.incrementViewCount(courseID);
if (result > 0) {
resultDomain.success("增加课程浏览次数成功", true);
return resultDomain;
} else {
resultDomain.fail("增加课程浏览次数失败");
return resultDomain;
}
}
@Override

View File

@@ -466,5 +466,20 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
return null;
}
@Override
public ResultDomain<TaskVO> getUserProgress(String userID) {
ResultDomain<TaskVO> resultDomain = new ResultDomain<>();
TaskVO taskVO = new TaskVO();
TbTaskUser fliter = new TbTaskUser();
fliter.setUserID(userID);
// 获取用户所有任务关联
List<TbTaskUser> taskUsers = taskUserMapper.selectTaskUsers(fliter);
taskVO.setCompletedTaskNum((int) taskUsers.stream().filter(item -> item.getStatus() == 2).count());
taskVO.setLearningTaskNum((int) taskUsers.stream().filter(item -> item.getStatus() == 1).count());
taskVO.setNotStartTaskNum((int) taskUsers.stream().filter(item -> item.getStatus() == 0).count());
taskVO.setTotalTaskNum(taskUsers.size());
resultDomain.success("获取用户整体学习进度成功", taskVO);
return resultDomain;
}
}

View File

@@ -287,4 +287,9 @@
<include refid="Filter_Clause" />
</select>
<update id="incrementViewCount">
UPDATE tb_course
SET view_count = view_count + 1
WHERE course_id = #{courseID} AND deleted = 0
</update>
</mapper>

View File

@@ -180,7 +180,7 @@
SELECT
<include refid="Base_Column_List"/>
FROM tb_sys_user
<include refid="Where_Clause"/>
<include refid="Filter_Clause"/>
ORDER BY create_time DESC
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
</select>

View File

@@ -28,7 +28,7 @@ public class UserCollectionController {
*/
@GetMapping("/user/{userID}")
public ResultDomain<TbUserCollection> getUserCollections(
@PathVariable String userID,
@PathVariable("userID") String userID,
@RequestParam(required = false) Integer resourceType,
@RequestParam(required = false) String resourceID) {
return userCollectionService.getUserCollections(userID, resourceType);
@@ -69,7 +69,7 @@ public class UserCollectionController {
*/
@GetMapping("/count/{userID}")
public ResultDomain<Integer> getCollectionCount(
@PathVariable String userID,
@PathVariable("userID") String userID,
@RequestParam(required = false) Integer resourceType,
@RequestParam(required = false) String resourceID) {
return userCollectionService.getCollectionCount(userID, resourceType, resourceID);