样式修改

This commit is contained in:
2025-10-31 13:17:57 +08:00
parent a881f57e30
commit 9ad9507a72
19 changed files with 693 additions and 971 deletions

View File

@@ -37,7 +37,7 @@ public class CourseTagController {
* 根据ID获取标签详情
*/
@GetMapping("/{tagID}")
public ResultDomain<TbCourseTag> getTagById(@PathVariable String tagID) {
public ResultDomain<TbCourseTag> getTagById(@PathVariable("tagID") String tagID) {
return courseTagService.getTagById(tagID);
}
@@ -45,7 +45,7 @@ public class CourseTagController {
* 根据标签获取课程列表
*/
@GetMapping("/{tagID}/courses")
public ResultDomain<TbCourse> getCoursesByTag(@PathVariable String tagID) {
public ResultDomain<TbCourse> getCoursesByTag(@PathVariable("tagID") String tagID) {
return null;
// return courseTagService.getCoursesByTag(tagID);
}
@@ -55,8 +55,8 @@ public class CourseTagController {
*/
@PostMapping("/course/{courseID}/tag")
public ResultDomain<TbCourseTag> addTagToCourse(
@PathVariable String courseID,
@RequestParam String tagID) {
@PathVariable("courseID") String courseID,
@RequestParam("tagID") String tagID) {
return null;
// return courseTagService.addTagToCourse(courseID, tagID);
}
@@ -66,8 +66,8 @@ public class CourseTagController {
*/
@DeleteMapping("/course/{courseID}/tag/{tagID}")
public ResultDomain<Boolean> removeTagFromCourse(
@PathVariable String courseID,
@PathVariable String tagID) {
@PathVariable("courseID") String courseID,
@PathVariable("tagID") String tagID) {
return null;
// return courseTagService.removeTagFromCourse(courseID, tagID);
}
@@ -76,7 +76,7 @@ public class CourseTagController {
* 获取课程标签列表
*/
@GetMapping("/course/{courseID}/tags")
public ResultDomain<TbCourseTag> getCourseTags(@PathVariable String courseID) {
public ResultDomain<TbCourseTag> getCourseTags(@PathVariable("courseID") String courseID) {
return courseTagService.getCourseTags(courseID);
}
}

View File

@@ -1,192 +0,0 @@
package org.xyzh.study.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.study.TbLearningTask;
import org.xyzh.common.dto.study.TbTaskUser;
import java.util.List;
import java.util.Map;
/**
* @description 学习管理控制器
* @filename LearningManagementController.java
* @author yslg
* @copyright xyzh
* @since 2025-10-15
*/
@RestController
@RequestMapping("/study/management")
public class LearningManagementController {
private static final Logger logger = LoggerFactory.getLogger(LearningManagementController.class);
// ==================== 任务发布管理 ====================
/**
* 发布学习任务
*/
@PostMapping("/task/publish")
public ResultDomain<TbLearningTask> publishLearningTask(@RequestBody Map<String, Object> taskData) {
// TODO: 实现发布学习任务(编辑任务名称、任务描述、任务周期、关联资源/课程)
return null;
}
/**
* 编辑学习任务
*/
@PutMapping("/task/edit")
public ResultDomain<TbLearningTask> editLearningTask(@RequestBody TbLearningTask task) {
// TODO: 实现编辑学习任务
return null;
}
/**
* 获取任务发布列表
*/
@GetMapping("/task/published-list")
public ResultDomain<TbLearningTask> getPublishedTaskList(
@RequestParam(required = false) String taskName,
@RequestParam(required = false) Integer status) {
// TODO: 实现获取任务发布列表
return null;
}
/**
* 关联资源到任务
*/
@PostMapping("/task/link-resource")
public ResultDomain<Boolean> linkResourceToTask(@RequestBody Map<String, Object> params) {
// TODO: 实现关联资源/课程到任务
return null;
}
/**
* 关联课程到任务
*/
@PostMapping("/task/link-course")
public ResultDomain<Boolean> linkCourseToTask(@RequestBody Map<String, Object> params) {
// TODO: 实现关联课程到任务
return null;
}
// ==================== 人员选定管理 ====================
/**
* 按部门筛选人员
*/
@GetMapping("/personnel/dept-filter")
public ResultDomain<Map<String, Object>> filterPersonnelByDept(@RequestParam String deptID) {
// TODO: 实现按部门层级筛选人员
return null;
}
/**
* 手动勾选人员
*/
@PostMapping("/personnel/select")
public ResultDomain<List<Map<String, Object>>> selectPersonnel(@RequestBody List<String> userIDs) {
// TODO: 实现手动勾选人员
return null;
}
/**
* 生成任务接收名单
*/
@PostMapping("/personnel/generate-list")
public ResultDomain<List<TbTaskUser>> generateTaskReceiverList(@RequestBody Map<String, Object> params) {
// TODO: 实现生成任务接收名单
return null;
}
/**
* 批量分配任务给用户
*/
@PostMapping("/personnel/batch-assign")
public ResultDomain<Boolean> batchAssignTaskToUsers(@RequestBody Map<String, Object> params) {
// TODO: 实现批量分配任务给用户
return null;
}
/**
* 获取部门人员树形结构
*/
@GetMapping("/personnel/dept-tree")
public ResultDomain<Map<String, Object>> getDeptPersonnelTree() {
// TODO: 实现获取部门人员树形结构
return null;
}
// ==================== 学习记录统计 ====================
/**
* 获取学习记录统计
*/
@GetMapping("/record/statistics")
public ResultDomain<Map<String, Object>> getLearningRecordStatistics(
@RequestParam(required = false) String deptID,
@RequestParam(required = false) String userID,
@RequestParam(required = false) String startDate,
@RequestParam(required = false) String endDate) {
// TODO: 实现获取学习记录统计(支持按部门/个人/时间筛选查询)
return null;
}
/**
* 获取用户学习时长统计
*/
@GetMapping("/record/learning-duration")
public ResultDomain<Map<String, Object>> getLearningDurationStatistics(@RequestParam String userID) {
// TODO: 实现统计用户学习时长
return null;
}
/**
* 获取学习资源数量统计
*/
@GetMapping("/record/resource-count")
public ResultDomain<Map<String, Object>> getResourceCountStatistics(@RequestParam String userID) {
// TODO: 实现统计学习资源数量
return null;
}
/**
* 获取任务完成情况统计
*/
@GetMapping("/record/task-completion")
public ResultDomain<Map<String, Object>> getTaskCompletionStatistics(@RequestParam String userID) {
// TODO: 实现统计任务完成情况
return null;
}
/**
* 生成可视化数据图表
*/
@GetMapping("/record/chart-data")
public ResultDomain<Map<String, Object>> getChartData(
@RequestParam String chartType,
@RequestParam(required = false) String userID,
@RequestParam(required = false) String deptID) {
// TODO: 实现生成可视化数据(图表接口)
return null;
}
/**
* 获取部门学习统计
*/
@GetMapping("/record/dept-statistics")
public ResultDomain<Map<String, Object>> getDeptLearningStatistics(@RequestParam String deptID) {
// TODO: 实现获取部门学习统计
return null;
}
/**
* 导出学习记录报告
*/
@PostMapping("/record/export-report")
public ResultDomain<String> exportLearningReport(@RequestBody Map<String, Object> params) {
// TODO: 实现导出学习记录报告
return null;
}
}

View File

@@ -1,204 +0,0 @@
package org.xyzh.study.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.dto.study.TbLearningTask;
import org.xyzh.common.dto.study.TbTaskUser;
import java.util.Map;
/**
* @description 学习计划控制器
* @filename LearningPlanController.java
* @author yslg
* @copyright xyzh
* @since 2025-10-15
*/
@RestController
@RequestMapping("/study/plan")
public class LearningPlanController {
private static final Logger logger = LoggerFactory.getLogger(LearningPlanController.class);
// ==================== 计划列表管理 ====================
/**
* 获取学习计划列表
*/
@GetMapping("/list")
public ResultDomain<TbLearningTask> getLearningPlanList(
@RequestParam(required = false) String planName,
@RequestParam(required = false) Integer status,
@RequestParam(required = false) Integer pageNum,
@RequestParam(required = false) Integer pageSize) {
// TODO: 实现展示校方统一发布的学习计划(名称、起止时间、任务描述)
return null;
}
/**
* 获取计划详情
*/
@GetMapping("/{planID}")
public ResultDomain<TbLearningTask> getPlanDetail(@PathVariable String planID) {
// TODO: 实现获取计划详情
return null;
}
/**
* 获取进行中的计划
*/
@GetMapping("/active")
public ResultDomain<TbLearningTask> getActivePlans() {
// TODO: 实现获取进行中的计划
return null;
}
/**
* 获取已完成的计划
*/
@GetMapping("/completed")
public ResultDomain<TbLearningTask> getCompletedPlans() {
// TODO: 实现获取已完成的计划
return null;
}
/**
* 获取即将开始的计划
*/
@GetMapping("/upcoming")
public ResultDomain<TbLearningTask> getUpcomingPlans() {
// TODO: 实现获取即将开始的计划
return null;
}
/**
* 按时间范围筛选计划
*/
@GetMapping("/filter/date-range")
public ResultDomain<TbLearningTask> filterPlansByDateRange(
@RequestParam String startDate,
@RequestParam String endDate) {
// TODO: 实现按时间范围筛选计划
return null;
}
// ==================== 任务进度管理 ====================
/**
* 获取当前用户的学习任务
*/
@GetMapping("/user/{userID}/tasks")
public ResultDomain<TbTaskUser> getUserLearningTasks(@PathVariable String userID) {
// TODO: 实现展示当前用户的学习任务(已完成/未完成)
return null;
}
/**
* 获取任务进度详情
*/
@GetMapping("/task/{taskID}/progress")
public ResultDomain<Map<String, Object>> getTaskProgress(@PathVariable String taskID) {
// TODO: 实现获取任务进度详情
return null;
}
/**
* 获取用户任务进度
*/
@GetMapping("/user/{userID}/task/{taskID}/progress")
public ResultDomain<Map<String, Object>> getUserTaskProgress(
@PathVariable String userID,
@PathVariable String taskID) {
// TODO: 实现获取用户任务进度
return null;
}
/**
* 更新任务进度
*/
@PutMapping("/task/{taskID}/progress")
public ResultDomain<Boolean> updateTaskProgress(
@PathVariable String taskID,
@RequestParam String userID,
@RequestParam Integer progress) {
// TODO: 实现更新任务进度
return null;
}
/**
* 完成任务
*/
@PostMapping("/task/{taskID}/complete")
public ResultDomain<Boolean> completeTask(
@PathVariable String taskID,
@RequestParam String userID) {
// TODO: 实现完成任务
return null;
}
/**
* 获取进度条数据
*/
@GetMapping("/user/{userID}/progress-bar")
public ResultDomain<Map<String, Object>> getProgressBarData(@PathVariable String userID) {
// TODO: 实现用进度条显示完成百分比
return null;
}
/**
* 获取已完成任务列表
*/
@GetMapping("/user/{userID}/completed-tasks")
public ResultDomain<TbTaskUser> getCompletedTasks(@PathVariable String userID) {
// TODO: 实现获取已完成任务列表
return null;
}
/**
* 获取未完成任务列表
*/
@GetMapping("/user/{userID}/pending-tasks")
public ResultDomain<TbTaskUser> getPendingTasks(@PathVariable String userID) {
// TODO: 实现获取未完成任务列表
return null;
}
/**
* 获取任务统计信息
*/
@GetMapping("/user/{userID}/task-statistics")
public ResultDomain<Map<String, Object>> getTaskStatistics(@PathVariable String userID) {
// TODO: 实现获取任务统计信息
return null;
}
/**
* 获取学习计划统计
*/
@GetMapping("/statistics")
public ResultDomain<Map<String, Object>> getLearningPlanStatistics() {
// TODO: 实现获取学习计划统计
return null;
}
/**
* 获取用户学习计划参与情况
*/
@GetMapping("/user/{userID}/participation")
public ResultDomain<Map<String, Object>> getUserParticipation(@PathVariable String userID) {
// TODO: 实现获取用户学习计划参与情况
return null;
}
/**
* 获取计划排行榜
*/
@GetMapping("/ranking")
public ResultDomain<Map<String, Object>> getPlanRanking(
@RequestParam(required = false) String planID,
@RequestParam(required = false) Integer limit) {
// TODO: 实现获取计划排行榜
return null;
}
}

View File

@@ -145,7 +145,7 @@ public class LearningTaskController {
* 用户获取个人任务列表(用户视角)
*/
@PostMapping("/users/page")
public ResultDomain<TbLearningTask> getUserTaskPage(@RequestBody PageRequest<TaskItemVO> pageRequest) {
public ResultDomain<TaskItemVO> getUserTaskPage(@RequestBody PageRequest<TaskItemVO> pageRequest) {
TaskItemVO filter = pageRequest.getFilter();
PageParam pageParam = pageRequest.getPageParam();
return learningTaskService.getUserTaskPage(filter, pageParam);

View File

@@ -162,7 +162,16 @@ public interface LearningTaskMapper extends BaseMapper<TbLearningTask> {
*/
List<TbLearningTask> selectLearningTasksPage(@Param("filter") TbLearningTask filter, @Param("pageParam") PageParam pageParam, @Param("userDeptRoles") List<UserDeptRoleVO> userDeptRoles);
List<TbLearningTask> selectUserLearningTasksPage(@Param("filter") TaskItemVO filter, @Param("pageParam") PageParam pageParam, @Param("userDeptRoles") List<UserDeptRoleVO> userDeptRoles);
/**
* @description 查询用户学习任务分页(包含权限过滤)
* @param filter 过滤条件
* @param pageParam 分页参数
* @param userDeptRoles 用户部门角色列表
* @return List<TaskItemVO> 学习任务列表(包含用户状态信息)
* @author yslg
* @since 2025-10-15
*/
List<TaskItemVO> selectUserLearningTasksPage(@Param("filter") TaskItemVO filter, @Param("pageParam") PageParam pageParam, @Param("userDeptRoles") List<UserDeptRoleVO> userDeptRoles);
/**
* @description 统计学习任务总数

View File

@@ -162,8 +162,8 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
}
@Override
public ResultDomain<TbLearningTask> getUserTaskPage(TaskItemVO filter, PageParam pageParam) {
ResultDomain<TbLearningTask> resultDomain = new ResultDomain<>();
public ResultDomain<TaskItemVO> getUserTaskPage(TaskItemVO filter, PageParam pageParam) {
ResultDomain<TaskItemVO> resultDomain = new ResultDomain<>();
TbSysUser user = LoginUtil.getCurrentUser();
if (user == null) {
resultDomain.fail("请先登录");
@@ -172,14 +172,14 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
filter.setUserID(user.getID());
// 获取当前用户的部门角色
List<UserDeptRoleVO> userDeptRoles = LoginUtil.getCurrentDeptRole();
List<TbLearningTask> taskList = learningTaskMapper.selectUserLearningTasksPage(filter, pageParam, userDeptRoles);
List<TaskItemVO> taskList = learningTaskMapper.selectUserLearningTasksPage(filter, pageParam, userDeptRoles);
long total = learningTaskMapper.countLearningTasks(filter, userDeptRoles);
pageParam.setTotalElements(total);
pageParam.setTotalPages((int) Math.ceil((double) total / pageParam.getPageSize()));
PageDomain<TbLearningTask> pageDomain = new PageDomain<>();
PageDomain<TaskItemVO> pageDomain = new PageDomain<>();
pageDomain.setDataList(taskList);
pageDomain.setPageParam(pageParam);
resultDomain.success("获取任务列表分页成功", pageDomain);
resultDomain.success("获取用户任务列表分页成功", pageDomain);
return resultDomain;
}

View File

@@ -19,6 +19,18 @@
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
</resultMap>
<!-- TaskItemVO 结果映射 -->
<resultMap id="TaskItemResultMap" type="org.xyzh.common.vo.TaskItemVO" extends="BaseResultMap">
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
<result column="username" property="username" jdbcType="VARCHAR"/>
<result column="dept_id" property="deptID" jdbcType="VARCHAR"/>
<result column="dept_name" property="deptName" jdbcType="VARCHAR"/>
<result column="parent_id" property="parentID" jdbcType="VARCHAR"/>
<result column="user_status" property="status" jdbcType="INTEGER"/>
<result column="progress" property="progress" jdbcType="DECIMAL"/>
<result column="complete_time" property="completeTime" jdbcType="TIMESTAMP"/>
</resultMap>
<!-- 基础字段 -->
<sql id="Base_Column_List">
id, task_id, name, description, start_time, end_time, status,
@@ -282,12 +294,15 @@
</select>
<!-- selectUserLearningTasksPage - 添加权限过滤 -->
<select id="selectUserLearningTasksPage" resultMap="BaseResultMap">
<select id="selectUserLearningTasksPage" resultMap="TaskItemResultMap">
SELECT DISTINCT
tlt.id, tlt.task_id, tlt.name, tlt.description, tlt.start_time, tlt.end_time, ttu.status,
tlt.creator, tlt.updater, tlt.create_time, tlt.update_time
tlt.id, tlt.task_id, tlt.name, tlt.description, tlt.start_time, tlt.end_time,
tlt.creator, tlt.updater, tlt.create_time, tlt.update_time,
ttu.user_id, ttu.status AS user_status, ttu.progress, ttu.complete_time,
ttu.dept_id, d.name AS dept_name, d.parent_id
FROM tb_task_user ttu
INNER JOIN tb_learning_task tlt ON ttu.task_id = tlt.task_id
LEFT JOIN tb_sys_dept d ON ttu.dept_id = d.dept_id AND d.deleted = 0
INNER JOIN tb_resource_permission rp ON tlt.task_id = rp.resource_id
AND rp.resource_type = 3
AND rp.deleted = 0
@@ -311,6 +326,9 @@
WHERE ttu.user_id = #{filter.userID}
AND tlt.deleted = 0
AND ttu.deleted = 0
<if test="filter.status != null">
AND ttu.status = #{filter.status}
</if>
ORDER BY tlt.create_time DESC
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
</select>