serv-课程任务
This commit is contained in:
@@ -60,6 +60,10 @@ CREATE TABLE `tb_course_tag` (
|
||||
`tag_id` VARCHAR(50) NOT NULL COMMENT '标签ID',
|
||||
`creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
|
||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_course_tag` (`course_id`, `tag_id`),
|
||||
KEY `idx_course` (`course_id`),
|
||||
|
||||
@@ -31,6 +31,10 @@ CREATE TABLE `tb_task_resource` (
|
||||
`order_num` INT(4) DEFAULT 0 COMMENT '排序号',
|
||||
`creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
|
||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_task_resource` (`task_id`, `resource_id`),
|
||||
KEY `idx_task` (`task_id`),
|
||||
@@ -47,6 +51,10 @@ CREATE TABLE `tb_task_course` (
|
||||
`order_num` INT(4) DEFAULT 0 COMMENT '排序号',
|
||||
`creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
|
||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_task_course` (`task_id`, `course_id`),
|
||||
KEY `idx_task` (`task_id`),
|
||||
@@ -65,7 +73,10 @@ CREATE TABLE `tb_task_user` (
|
||||
`complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间',
|
||||
`creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
|
||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_task_user` (`task_id`, `user_id`),
|
||||
KEY `idx_task` (`task_id`),
|
||||
@@ -86,8 +97,12 @@ CREATE TABLE `tb_learning_record` (
|
||||
`is_complete` TINYINT(1) DEFAULT 0 COMMENT '是否完成',
|
||||
`complete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '完成时间',
|
||||
`last_learn_time` TIMESTAMP NULL DEFAULT NULL COMMENT '最后学习时间',
|
||||
`creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
|
||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_user` (`user_id`),
|
||||
KEY `idx_resource` (`resource_type`, `resource_id`),
|
||||
@@ -105,8 +120,12 @@ CREATE TABLE `tb_learning_statistics` (
|
||||
`resource_count` INT(11) DEFAULT 0 COMMENT '学习资源数量',
|
||||
`course_count` INT(11) DEFAULT 0 COMMENT '学习课程数量',
|
||||
`complete_count` INT(11) DEFAULT 0 COMMENT '完成数量',
|
||||
`creator` VARCHAR(50) DEFAULT NULL COMMENT '创建者',
|
||||
`updater` VARCHAR(50) DEFAULT NULL COMMENT '更新者',
|
||||
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`delete_time` TIMESTAMP NULL DEFAULT NULL COMMENT '删除时间',
|
||||
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_user_date` (`user_id`, `stat_date`),
|
||||
KEY `idx_user` (`user_id`),
|
||||
|
||||
@@ -119,7 +119,7 @@ INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, o
|
||||
|
||||
-- 学习管理
|
||||
('5000', 'menu_admin_study_manage', '学习管理', NULL, '', '', 'el-icon-reading', 5, 1, '', '1', now()),
|
||||
('5002', 'menu_admin_task_publish', '任务发布', 'menu_admin_study_manage', '/admin/manage/study/task-publish', 'admin/manage/study/TaskPublishView', 'el-icon-s-order', 2, 1, 'NavigationLayout', '1', now()),
|
||||
('5002', 'menu_admin_task_manage', '任务管理', 'menu_admin_study_manage', '/admin/manage/study/task-manage', 'admin/manage/study/TaskManageView', 'el-icon-s-order', 2, 1, 'NavigationLayout', '1', now()),
|
||||
('5003', 'menu_admin_study_records', '学习记录', 'menu_admin_study_manage', '/admin/manage/study/study-records', 'admin/manage/study/StudyRecordsView', 'el-icon-document', 3, 1, 'NavigationLayout', '1', now()),
|
||||
('5004', 'menu_admin_course_manage', '课程管理', 'menu_admin_study_manage', '/admin/manage/study/course', 'admin/manage/study/CourseManagementView', 'el-icon-video-play', 4, 1, 'NavigationLayout', '1', now()),
|
||||
-- 智能体管理
|
||||
@@ -174,7 +174,7 @@ INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id, creator, creat
|
||||
('216', 'perm_news_manage', 'menu_admin_column', '1', now()),
|
||||
('217', 'perm_news_manage', 'menu_admin_content', '1', now()),
|
||||
('218', 'perm_study_manage', 'menu_admin_study_manage', '1', now()),
|
||||
('220', 'perm_study_manage', 'menu_admin_task_publish', '1', now()),
|
||||
('220', 'perm_study_manage', 'menu_admin_task_manage', '1', now()),
|
||||
('221', 'perm_study_manage', 'menu_admin_study_records', '1', now()),
|
||||
('222', 'perm_study_manage', 'menu_admin_course_manage', '1', now()),
|
||||
('223', 'perm_ai_manage', 'menu_admin_ai_manage', '1', now()),
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.core.page.PageRequest;
|
||||
import org.xyzh.common.dto.study.TbCourse;
|
||||
import org.xyzh.common.dto.study.TbCourseChapter;
|
||||
import org.xyzh.common.dto.study.TbCourseNode;
|
||||
import org.xyzh.common.vo.CourseVO;
|
||||
|
||||
import java.util.List;
|
||||
@@ -56,12 +57,12 @@ public interface CourseService {
|
||||
|
||||
/**
|
||||
* @description 更新课程
|
||||
* @param course 课程信息
|
||||
* @return ResultDomain<TbCourse> 更新结果
|
||||
* @param courseVO 课程信息
|
||||
* @return ResultDomain<CourseVO> 更新结果
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbCourse> updateCourse(TbCourse course);
|
||||
ResultDomain<CourseVO> updateCourse(CourseVO courseVO);
|
||||
|
||||
/**
|
||||
* @description 删除课程
|
||||
@@ -80,7 +81,7 @@ public interface CourseService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbCourse> updateCourseStatus(String courseID, Integer status);
|
||||
ResultDomain<TbCourse> updateCourseStatus(TbCourse course);
|
||||
|
||||
/**
|
||||
* @description 增加课程浏览次数
|
||||
@@ -156,4 +157,31 @@ public interface CourseService {
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbCourseChapter> updateChapterOrder(String chapterID, Integer orderNum);
|
||||
|
||||
/**
|
||||
* @description 创建课程章节节点
|
||||
* @param node 课程章节节点
|
||||
* @return ResultDomain<TbCourseNode> 创建结果
|
||||
* @author yslg
|
||||
* @since 2025-10-22
|
||||
*/
|
||||
ResultDomain<TbCourseNode> createChapterNode(TbCourseNode node);
|
||||
|
||||
/**
|
||||
* @description 更新课程章节节点
|
||||
* @param node 课程章节节点
|
||||
* @return ResultDomain<TbCourseNode> 更新结果
|
||||
* @author yslg
|
||||
* @since 2025-10-22
|
||||
*/
|
||||
ResultDomain<TbCourseNode> updateChapterNode(TbCourseNode node);
|
||||
|
||||
/**
|
||||
* @description 删除课程章节节点
|
||||
* @param nodeID 节点ID
|
||||
* @return ResultDomain<Boolean> 删除结果
|
||||
* @author yslg
|
||||
* @since 2025-10-22
|
||||
*/
|
||||
ResultDomain<Boolean> deleteChapterNode(String nodeID);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package org.xyzh.api.study.task;
|
||||
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.study.TbLearningTask;
|
||||
import org.xyzh.common.dto.study.TbTaskUser;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
import org.xyzh.common.vo.TaskVO;
|
||||
import org.xyzh.common.dto.study.TbTaskCourse;
|
||||
import org.xyzh.common.dto.study.TbTaskResource;
|
||||
|
||||
@@ -26,6 +29,16 @@ public interface LearningTaskService {
|
||||
*/
|
||||
ResultDomain<TbLearningTask> getTaskList(TbLearningTask filter);
|
||||
|
||||
/**
|
||||
* @description 获取学习任务列表分页
|
||||
* @param filter 过滤条件
|
||||
* @param pageParam 分页参数
|
||||
* @return ResultDomain<TbLearningTask> 任务列表
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbLearningTask> getTaskPage(TbLearningTask filter, PageParam pageParam);
|
||||
|
||||
/**
|
||||
* @description 根据ID获取任务详情
|
||||
* @param taskID 任务ID
|
||||
@@ -33,7 +46,7 @@ public interface LearningTaskService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbLearningTask> getTaskById(String taskID);
|
||||
ResultDomain<TaskVO> getTaskById(String taskID);
|
||||
|
||||
/**
|
||||
* @description 创建学习任务
|
||||
@@ -42,7 +55,7 @@ public interface LearningTaskService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbLearningTask> createTask(TbLearningTask task);
|
||||
ResultDomain<TaskVO> createTask(TaskVO taskVO);
|
||||
|
||||
/**
|
||||
* @description 更新学习任务
|
||||
@@ -51,7 +64,7 @@ public interface LearningTaskService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbLearningTask> updateTask(TbLearningTask task);
|
||||
ResultDomain<TaskVO> updateTask(TaskVO taskVO);
|
||||
|
||||
/**
|
||||
* @description 删除学习任务
|
||||
@@ -74,6 +87,8 @@ public interface LearningTaskService {
|
||||
|
||||
// ----------------任务用户相关--------------------------------
|
||||
|
||||
ResultDomain<TbLearningTask> getUserTaskPage(TaskItemVO filter, PageParam pageParam);
|
||||
|
||||
/**
|
||||
* @description 获取任务用户列表
|
||||
* @param taskID 任务ID
|
||||
@@ -81,7 +96,7 @@ public interface LearningTaskService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbTaskUser> getTaskUsers(String taskID);
|
||||
ResultDomain<TaskItemVO> getTaskUsers(String taskID);
|
||||
|
||||
/**
|
||||
* @description 添加任务用户
|
||||
@@ -90,7 +105,7 @@ public interface LearningTaskService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<TbTaskUser> addTaskUser(TbTaskUser taskUser);
|
||||
ResultDomain<TbTaskUser> addTaskUser(String taskID, List<String> userIDs);
|
||||
|
||||
/**
|
||||
* @description 批量添加任务用户
|
||||
@@ -111,7 +126,7 @@ public interface LearningTaskService {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
ResultDomain<Boolean> removeTaskUser(String taskID, String userID);
|
||||
ResultDomain<Boolean> removeTaskUser(String taskID, List<String> userIDs);
|
||||
|
||||
/**
|
||||
* @description 更新任务用户状态
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.xyzh.common.dto.user.TbSysUserDeptRole;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
import org.xyzh.common.vo.UserDeptRoleVO;
|
||||
import org.xyzh.common.vo.UserVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description UserRemoteService.java文件描述 用户远程服务接口
|
||||
@@ -73,6 +74,16 @@ public interface UserService {
|
||||
*/
|
||||
ResultDomain<TbSysUser> getUserByFilter(TbSysUser filter);
|
||||
|
||||
/**
|
||||
* @description 获取用户列表分页
|
||||
* @param filter 过滤条件
|
||||
* @param pageParam 分页参数
|
||||
* @return ResultDomain<TbSysUser> 用户列表
|
||||
* @author yslg
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
ResultDomain<TbSysUser> getUserPage(TbSysUser filter, PageParam pageParam);
|
||||
|
||||
/**
|
||||
* @description 创建用户
|
||||
* @param user 用户对象
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.xyzh.common.dto.study;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @description 课程表
|
||||
@@ -78,6 +79,21 @@ public class TbCourse extends BaseDTO {
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getCourseID() {
|
||||
return courseID;
|
||||
}
|
||||
@@ -182,6 +198,22 @@ public class TbCourse extends BaseDTO {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbCourse{" +
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.xyzh.common.dto.study;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @description 课程章节表
|
||||
@@ -70,6 +71,21 @@ public class TbCourseChapter extends BaseDTO {
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getChapterID() {
|
||||
return chapterID;
|
||||
}
|
||||
@@ -166,6 +182,22 @@ public class TbCourseChapter extends BaseDTO {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbCourseChapter{" +
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.xyzh.common.dto.study;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @description 学习节点表
|
||||
@@ -70,6 +71,21 @@ public class TbCourseNode extends BaseDTO {
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getNodeID() {
|
||||
return nodeID;
|
||||
}
|
||||
@@ -166,6 +182,22 @@ public class TbCourseNode extends BaseDTO {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbCourseNode{" +
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package org.xyzh.common.dto.study;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
|
||||
/**
|
||||
@@ -28,6 +30,14 @@ public class TbCourseTag extends BaseDTO {
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
private String updater;
|
||||
|
||||
private Date updateTime;
|
||||
|
||||
private Date deleteTime;
|
||||
|
||||
private boolean deleted;
|
||||
|
||||
public String getCourseID() {
|
||||
return courseID;
|
||||
}
|
||||
@@ -52,6 +62,40 @@ public class TbCourseTag extends BaseDTO {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public String getUpdater() {
|
||||
return updater;
|
||||
}
|
||||
|
||||
public void setUpdater(String updater) {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
public boolean isDeleted() {
|
||||
return deleted;
|
||||
}
|
||||
|
||||
public void setDeleted(boolean deleted) {
|
||||
this.deleted = deleted;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbCourseTag{" +
|
||||
|
||||
@@ -60,6 +60,31 @@ public class TbLearningRecord extends BaseDTO {
|
||||
*/
|
||||
private Date lastLearnTime;
|
||||
|
||||
/**
|
||||
* @description 创建者
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* @description 更新者
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getUserID() {
|
||||
return userID;
|
||||
}
|
||||
@@ -132,6 +157,38 @@ public class TbLearningRecord extends BaseDTO {
|
||||
this.lastLearnTime = lastLearnTime;
|
||||
}
|
||||
|
||||
public String getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public void setCreator(String creator) {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
public String getUpdater() {
|
||||
return updater;
|
||||
}
|
||||
|
||||
public void setUpdater(String updater) {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbLearningRecord{" +
|
||||
|
||||
@@ -44,6 +44,36 @@ public class TbLearningStatistics extends BaseDTO {
|
||||
*/
|
||||
private Integer completeCount;
|
||||
|
||||
/**
|
||||
* @description 创建者
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* @description 更新者
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getUserID() {
|
||||
return userID;
|
||||
}
|
||||
@@ -92,6 +122,47 @@ public class TbLearningStatistics extends BaseDTO {
|
||||
this.completeCount = completeCount;
|
||||
}
|
||||
|
||||
public String getCreator() {
|
||||
return creator;
|
||||
}
|
||||
|
||||
public void setCreator(String creator) {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
public String getUpdater() {
|
||||
return updater;
|
||||
}
|
||||
|
||||
public void setUpdater(String updater) {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
return createTime;
|
||||
}
|
||||
|
||||
public void setCreateTime(Date createTime) {
|
||||
this.createTime = createTime;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbLearningStatistics{" +
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.xyzh.common.dto.study;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import java.util.Date;
|
||||
import java.lang.Boolean;
|
||||
|
||||
/**
|
||||
* @description 学习任务表
|
||||
@@ -54,6 +55,21 @@ public class TbLearningTask extends BaseDTO {
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getTaskID() {
|
||||
return taskID;
|
||||
}
|
||||
@@ -118,6 +134,23 @@ public class TbLearningTask extends BaseDTO {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbLearningTask{" +
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.xyzh.common.dto.study;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @description 任务课程关联表
|
||||
@@ -38,6 +39,26 @@ public class TbTaskCourse extends BaseDTO {
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* @description 更新者
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getTaskID() {
|
||||
return taskID;
|
||||
}
|
||||
@@ -78,6 +99,30 @@ public class TbTaskCourse extends BaseDTO {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
public String getUpdater() {
|
||||
return updater;
|
||||
}
|
||||
|
||||
public void setUpdater(String updater) {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbTaskCourse{" +
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.xyzh.common.dto.study;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @description 任务资源关联表
|
||||
@@ -38,6 +39,26 @@ public class TbTaskResource extends BaseDTO {
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* @description 更新者
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getTaskID() {
|
||||
return taskID;
|
||||
}
|
||||
@@ -78,6 +99,32 @@ public class TbTaskResource extends BaseDTO {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
public String getUpdater() {
|
||||
return updater;
|
||||
}
|
||||
|
||||
public void setUpdater(String updater) {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbTaskResource{" +
|
||||
|
||||
@@ -50,6 +50,26 @@ public class TbTaskUser extends BaseDTO {
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* @description 更新者
|
||||
*/
|
||||
private String updater;
|
||||
|
||||
/**
|
||||
* @description 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* @description 删除时间
|
||||
*/
|
||||
private Date deleteTime;
|
||||
|
||||
/**
|
||||
* @description 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
|
||||
public String getTaskID() {
|
||||
return taskID;
|
||||
}
|
||||
@@ -106,6 +126,31 @@ public class TbTaskUser extends BaseDTO {
|
||||
this.creator = creator;
|
||||
}
|
||||
|
||||
public String getUpdater() {
|
||||
return updater;
|
||||
}
|
||||
|
||||
public void setUpdater(String updater) {
|
||||
this.updater = updater;
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
return updateTime;
|
||||
}
|
||||
|
||||
public void setUpdateTime(Date updateTime) {
|
||||
this.updateTime = updateTime;
|
||||
}
|
||||
|
||||
public Date getDeleteTime() {
|
||||
return deleteTime;
|
||||
}
|
||||
|
||||
public void setDeleteTime(Date deleteTime) {
|
||||
this.deleteTime = deleteTime;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TbTaskUser{" +
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
package org.xyzh.common.vo;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.xyzh.common.dto.study.TbLearningTask;
|
||||
import org.xyzh.common.dto.study.TbTaskCourse;
|
||||
import org.xyzh.common.dto.study.TbTaskResource;
|
||||
import org.xyzh.common.dto.study.TbTaskUser;
|
||||
|
||||
public class TaskItemVO extends TbLearningTask {
|
||||
|
||||
private String courseID;
|
||||
private String courseName;
|
||||
private String resourceID;
|
||||
private String resourceName;
|
||||
private String userID;
|
||||
private String username;
|
||||
private Boolean required;
|
||||
private Integer orderNum;
|
||||
private Integer status;
|
||||
private BigDecimal progress;
|
||||
private Date completeTime;
|
||||
|
||||
|
||||
|
||||
public TaskItemVO() {
|
||||
}
|
||||
|
||||
public TaskItemVO(TbTaskCourse taskCourse) {
|
||||
this.courseID = taskCourse.getCourseID();
|
||||
this.setTaskID(taskCourse.getTaskID());
|
||||
this.orderNum = taskCourse.getOrderNum();
|
||||
this.required = taskCourse.getRequired();
|
||||
}
|
||||
public TaskItemVO(TbTaskResource taskResource) {
|
||||
this.resourceID = taskResource.getResourceID();
|
||||
this.setTaskID(taskResource.getTaskID());
|
||||
this.required = taskResource.getRequired();
|
||||
this.orderNum = taskResource.getOrderNum();
|
||||
|
||||
}
|
||||
public TaskItemVO(TbTaskUser taskUser) {
|
||||
this.userID = taskUser.getUserID();
|
||||
this.setTaskID(taskUser.getTaskID());
|
||||
this.status = taskUser.getStatus();
|
||||
this.progress = taskUser.getProgress();
|
||||
this.completeTime = taskUser.getCompleteTime();
|
||||
}
|
||||
|
||||
public String getCourseID() {
|
||||
return courseID;
|
||||
}
|
||||
public void setCourseID(String courseID) {
|
||||
this.courseID = courseID;
|
||||
}
|
||||
public String getCourseName() {
|
||||
return courseName;
|
||||
}
|
||||
public void setCourseName(String courseName) {
|
||||
this.courseName = courseName;
|
||||
}
|
||||
public String getResourceID() {
|
||||
return resourceID;
|
||||
}
|
||||
public void setResourceID(String resourceID) {
|
||||
this.resourceID = resourceID;
|
||||
}
|
||||
public String getResourceName() {
|
||||
return resourceName;
|
||||
}
|
||||
public void setResourceName(String resourceName) {
|
||||
this.resourceName = resourceName;
|
||||
}
|
||||
public String getUserID() {
|
||||
return userID;
|
||||
}
|
||||
public void setUserID(String userID) {
|
||||
this.userID = userID;
|
||||
}
|
||||
public String getUsername() {
|
||||
return username;
|
||||
}
|
||||
public void setUsername(String userName) {
|
||||
this.username = userName;
|
||||
}
|
||||
|
||||
public Boolean getRequired() {
|
||||
return required;
|
||||
}
|
||||
public void setRequired(Boolean required) {
|
||||
this.required = required;
|
||||
}
|
||||
public Integer getOrderNum() {
|
||||
return orderNum;
|
||||
}
|
||||
public void setOrderNum(Integer orderNum) {
|
||||
this.orderNum = orderNum;
|
||||
}
|
||||
|
||||
public TbTaskCourse toTaskCourse() {
|
||||
TbTaskCourse taskCourse = new TbTaskCourse();
|
||||
taskCourse.setCourseID(courseID);
|
||||
taskCourse.setTaskID(getTaskID());
|
||||
taskCourse.setCreateTime(getCreateTime());
|
||||
taskCourse.setCreator(getCreator());
|
||||
return taskCourse;
|
||||
}
|
||||
public TbTaskResource toTaskResource() {
|
||||
TbTaskResource taskResource = new TbTaskResource();
|
||||
taskResource.setResourceID(resourceID);
|
||||
taskResource.setTaskID(getTaskID());
|
||||
taskResource.setCreateTime(getCreateTime());
|
||||
taskResource.setCreator(getCreator());
|
||||
return taskResource;
|
||||
}
|
||||
public TbTaskUser toTaskUser() {
|
||||
TbTaskUser taskUser = new TbTaskUser();
|
||||
taskUser.setUserID(userID);
|
||||
taskUser.setTaskID(getTaskID());
|
||||
taskUser.setCreateTime(getCreateTime());
|
||||
taskUser.setCreator(getCreator());
|
||||
return taskUser;
|
||||
}
|
||||
public Integer getStatus() {
|
||||
return status;
|
||||
}
|
||||
public void setStatus(Integer status) {
|
||||
this.status = status;
|
||||
}
|
||||
public BigDecimal getProgress() {
|
||||
return progress;
|
||||
}
|
||||
public void setProgress(BigDecimal progress) {
|
||||
this.progress = progress;
|
||||
}
|
||||
public Date getCompleteTime() {
|
||||
return completeTime;
|
||||
}
|
||||
public void setCompleteTime(Date completeTime) {
|
||||
this.completeTime = completeTime;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package org.xyzh.common.vo;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import org.xyzh.common.dto.study.TbLearningTask;
|
||||
import org.xyzh.common.dto.study.TbTaskCourse;
|
||||
import org.xyzh.common.dto.study.TbTaskResource;
|
||||
import org.xyzh.common.dto.study.TbTaskUser;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class TaskVO extends BaseDTO{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private TbLearningTask learningTask;
|
||||
private List<TaskItemVO> taskCourses;
|
||||
private List<TaskItemVO> taskResources;
|
||||
private List<TaskItemVO> taskUsers;
|
||||
|
||||
public TbLearningTask getLearningTask() {
|
||||
return learningTask;
|
||||
}
|
||||
public void setLearningTask(TbLearningTask learningTask) {
|
||||
this.learningTask = learningTask;
|
||||
}
|
||||
public List<TaskItemVO> getTaskCourses() {
|
||||
return taskCourses;
|
||||
}
|
||||
public void setTaskCourses(List<TaskItemVO> taskCourses) {
|
||||
this.taskCourses = taskCourses;
|
||||
}
|
||||
public List<TaskItemVO> getTaskResources() {
|
||||
return taskResources;
|
||||
}
|
||||
public void setTaskResources(List<TaskItemVO> taskResources) {
|
||||
this.taskResources = taskResources;
|
||||
}
|
||||
public List<TaskItemVO> getTaskUsers() {
|
||||
return taskUsers;
|
||||
}
|
||||
public void setTaskUsers(List<TaskItemVO> taskUsers) {
|
||||
this.taskUsers = taskUsers;
|
||||
}
|
||||
|
||||
public List<TbTaskCourse> toTaskCourses() {
|
||||
return getTaskCourses().stream().map(TaskItemVO::toTaskCourse).collect(Collectors.toList());
|
||||
}
|
||||
public List<TbTaskResource> toTaskResources() {
|
||||
return getTaskResources().stream().map(TaskItemVO::toTaskResource).collect(Collectors.toList());
|
||||
}
|
||||
public List<TbTaskUser> toTaskUsers() {
|
||||
return getTaskUsers().stream().map(TaskItemVO::toTaskUser).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public void setTaskCourseList(List<TbTaskCourse> taskCourses) {
|
||||
if (taskCourses == null) {
|
||||
return;
|
||||
}
|
||||
this.taskCourses = taskCourses.stream().map(item -> {
|
||||
return new TaskItemVO(item);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
public void setTaskResourceList(List<TbTaskResource> taskResources) {
|
||||
if (taskResources == null) {
|
||||
return;
|
||||
}
|
||||
this.taskResources = taskResources.stream().map(item -> {
|
||||
return new TaskItemVO(item);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
public void setTaskUserList(List<TbTaskUser> taskUsers) {
|
||||
if (taskUsers == null) {
|
||||
return;
|
||||
}
|
||||
this.taskUsers = taskUsers.stream().map(item -> {
|
||||
return new TaskItemVO(item);
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -37,7 +37,7 @@ public class ResourceController {
|
||||
* 获取资源列表
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
public ResultDomain<TbResource> getResourceList(@RequestParam("filter") TbResource filter) {
|
||||
public ResultDomain<TbResource> getResourceList(TbResource filter) {
|
||||
return resourceService.getResourceList(filter);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageRequest;
|
||||
import org.xyzh.common.dto.study.TbCourse;
|
||||
import org.xyzh.common.dto.study.TbCourseChapter;
|
||||
import org.xyzh.common.dto.study.TbCourseNode;
|
||||
import org.xyzh.common.vo.ChapterVO;
|
||||
import org.xyzh.common.vo.CourseVO;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@@ -63,11 +64,11 @@ public class CourseController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新课程
|
||||
* 更新课程基本信息
|
||||
*/
|
||||
@PutMapping("/course")
|
||||
public ResultDomain<TbCourse> updateCourse(@RequestBody TbCourse course) {
|
||||
return courseService.updateCourse(course);
|
||||
public ResultDomain<CourseVO> updateCourse(@RequestBody CourseVO courseVO) {
|
||||
return courseService.updateCourse(courseVO);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,14 +79,68 @@ public class CourseController {
|
||||
return courseService.deleteCourse(courseID);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 创建课程章节
|
||||
* @param chapter 课程章节
|
||||
* @return ResultDomain<TbCourseChapter> 创建结果
|
||||
* @author yslg
|
||||
* @since 2025-10-22
|
||||
*/
|
||||
@PostMapping("/course/chapter")
|
||||
public ResultDomain<TbCourseChapter> createChapter(@RequestBody TbCourseChapter chapter) {
|
||||
return courseService.createChapter(chapter);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新课程章节
|
||||
*/
|
||||
@PutMapping("/course/chapter")
|
||||
public ResultDomain<TbCourseChapter> updateChapter(@RequestBody TbCourseChapter chapter) {
|
||||
return courseService.updateChapter(chapter);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除课程章节
|
||||
*/
|
||||
@DeleteMapping("/course/chapter/{chapterID}")
|
||||
public ResultDomain<Boolean> deleteChapter(@PathVariable String chapterID) {
|
||||
return courseService.deleteChapter(chapterID);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 创建课程章节节点
|
||||
* @param node 课程章节节点
|
||||
* @return ResultDomain<TbCourseNode> 创建结果
|
||||
* @author yslg
|
||||
* @since 2025-10-22
|
||||
*/
|
||||
@PostMapping("/course/chapter/node")
|
||||
public ResultDomain<TbCourseNode> createChapterNode(@RequestBody TbCourseNode node) {
|
||||
return courseService.createChapterNode(node);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新课程章节节点
|
||||
*/
|
||||
@PutMapping("/course/chapter/node")
|
||||
public ResultDomain<TbCourseNode> updateChapterNode(@RequestBody TbCourseNode node) {
|
||||
return courseService.updateChapterNode(node);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除课程章节节点
|
||||
*/
|
||||
@DeleteMapping("/course/chapter/node/{nodeID}")
|
||||
public ResultDomain<Boolean> deleteChapterNode(@PathVariable String nodeID) {
|
||||
return courseService.deleteChapterNode(nodeID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新课程状态
|
||||
*/
|
||||
@PutMapping("/{courseID}/status")
|
||||
public ResultDomain<TbCourse> updateCourseStatus(
|
||||
@PathVariable String courseID,
|
||||
@RequestParam Integer status) {
|
||||
return courseService.updateCourseStatus(courseID, status);
|
||||
@PutMapping("/course/status")
|
||||
public ResultDomain<TbCourse> updateCourseStatus(@RequestBody TbCourse course) {
|
||||
return courseService.updateCourseStatus(course);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,15 +1,25 @@
|
||||
package org.xyzh.study.controller;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.xyzh.api.study.task.LearningTaskService;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.core.page.PageRequest;
|
||||
import org.xyzh.common.dto.study.TbLearningTask;
|
||||
import org.xyzh.common.dto.study.TbTaskUser;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
import org.xyzh.common.vo.TaskVO;
|
||||
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;
|
||||
|
||||
|
||||
/**
|
||||
* @description 学习任务控制器
|
||||
@@ -19,7 +29,7 @@ import org.xyzh.common.dto.study.TbTaskResource;
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/study/task")
|
||||
@RequestMapping("/study/tasks")
|
||||
public class LearningTaskController {
|
||||
private static final Logger logger = LoggerFactory.getLogger(LearningTaskController.class);
|
||||
|
||||
@@ -34,63 +44,84 @@ public class LearningTaskController {
|
||||
return learningTaskService.getTaskList(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务列表分页
|
||||
*/
|
||||
@PostMapping("/page")
|
||||
public ResultDomain<TbLearningTask> getTaskPage(@RequestBody PageRequest<TbLearningTask> pageRequest) {
|
||||
TbLearningTask filter = pageRequest.getFilter();
|
||||
PageParam pageParam = pageRequest.getPageParam();
|
||||
return learningTaskService.getTaskPage(filter, pageParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据ID获取任务详情
|
||||
*/
|
||||
@GetMapping("/{taskID}")
|
||||
public ResultDomain<TbLearningTask> getTaskById(@PathVariable String taskID) {
|
||||
public ResultDomain<TaskVO> getTaskById(@PathVariable("taskID") String taskID) {
|
||||
return learningTaskService.getTaskById(taskID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建任务
|
||||
*/
|
||||
@PostMapping("/create")
|
||||
public ResultDomain<TbLearningTask> createTask(@RequestBody TbLearningTask task) {
|
||||
return learningTaskService.createTask(task);
|
||||
@PostMapping("/task")
|
||||
public ResultDomain<TaskVO> createTask(@RequestBody TaskVO taskVO) {
|
||||
return learningTaskService.createTask(taskVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
public ResultDomain<TbLearningTask> updateTask(@RequestBody TbLearningTask task) {
|
||||
return learningTaskService.updateTask(task);
|
||||
@PutMapping("/task")
|
||||
public ResultDomain<TaskVO> updateTask(@RequestBody TaskVO taskVO) {
|
||||
return learningTaskService.updateTask(taskVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除任务
|
||||
*/
|
||||
@DeleteMapping("/{taskID}")
|
||||
public ResultDomain<Boolean> deleteTask(@PathVariable String taskID) {
|
||||
@DeleteMapping("/task")
|
||||
public ResultDomain<Boolean> deleteTask(@PathVariable("taskID") String taskID) {
|
||||
return learningTaskService.deleteTask(taskID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新任务状态
|
||||
*/
|
||||
@PutMapping("/{taskID}/status")
|
||||
public ResultDomain<TbLearningTask> updateTaskStatus(
|
||||
@PathVariable String taskID,
|
||||
@RequestParam Integer status) {
|
||||
return learningTaskService.updateTaskStatus(taskID, status);
|
||||
@PutMapping("/status")
|
||||
public ResultDomain<TbLearningTask> updateTaskStatus(@RequestBody TbLearningTask task) {
|
||||
return learningTaskService.updateTaskStatus(task.getTaskID(), task.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务用户列表
|
||||
*/
|
||||
@GetMapping("/{taskID}/users")
|
||||
public ResultDomain<TbTaskUser> getTaskUsers(@PathVariable String taskID) {
|
||||
public ResultDomain<TaskItemVO> getTaskUsers(@PathVariable("taskID") String taskID) {
|
||||
return learningTaskService.getTaskUsers(taskID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量添加任务用户
|
||||
*/
|
||||
@PostMapping("/{taskID}/users")
|
||||
public ResultDomain<TbTaskUser> addTaskUser(@PathVariable("taskID") String taskID, @RequestBody Map<String, List<String>> map) {
|
||||
List<String> userIDs = map.get("userIDs");
|
||||
return learningTaskService.addTaskUser(taskID, userIDs);
|
||||
}
|
||||
|
||||
@DeleteMapping("/{taskID}/users")
|
||||
public ResultDomain<Boolean> removeTaskUser(@PathVariable("taskID") String taskID, @RequestBody Map<String, List<String>> map) {
|
||||
List<String> userIDs = map.get("userIDs");
|
||||
return learningTaskService.removeTaskUser(taskID, userIDs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分配任务给用户
|
||||
*/
|
||||
@PostMapping("/{taskID}/assign")
|
||||
public ResultDomain<TbTaskUser> assignTaskToUser(
|
||||
@PathVariable String taskID,
|
||||
@RequestParam String userID) {
|
||||
public ResultDomain<TbTaskUser> assignTaskToUser(@PathVariable("taskID") String taskID, @RequestParam String userID) {
|
||||
return null;
|
||||
// return learningTaskService.assignTaskToUser(taskID, userID);
|
||||
}
|
||||
@@ -99,70 +130,19 @@ public class LearningTaskController {
|
||||
* 从用户移除任务
|
||||
*/
|
||||
@DeleteMapping("/{taskID}/user/{userID}")
|
||||
public ResultDomain<Boolean> removeTaskFromUser(
|
||||
@PathVariable String taskID,
|
||||
@PathVariable String userID) {
|
||||
public ResultDomain<Boolean> removeTaskFromUser(@PathVariable("taskID") String taskID, @PathVariable("userID") String userID) {
|
||||
return null;
|
||||
// return learningTaskService.removeTaskFromUser(taskID, userID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务课程列表
|
||||
* 用户获取个人任务列表(用户视角)
|
||||
*/
|
||||
@GetMapping("/{taskID}/courses")
|
||||
public ResultDomain<TbTaskCourse> getTaskCourses(@PathVariable String taskID) {
|
||||
return learningTaskService.getTaskCourses(taskID);
|
||||
@PostMapping("/users/page")
|
||||
public ResultDomain<TbLearningTask> getUserTaskPage(@RequestBody PageRequest<TaskItemVO> pageRequest) {
|
||||
TaskItemVO filter = pageRequest.getFilter();
|
||||
PageParam pageParam = pageRequest.getPageParam();
|
||||
return learningTaskService.getUserTaskPage(filter, pageParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加课程到任务
|
||||
*/
|
||||
@PostMapping("/{taskID}/course")
|
||||
public ResultDomain<TbTaskCourse> addCourseToTask(
|
||||
@PathVariable String taskID,
|
||||
@RequestParam String courseID) {
|
||||
return null;
|
||||
// return learningTaskService.addCourseToTask(taskID, courseID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从任务移除课程
|
||||
*/
|
||||
@DeleteMapping("/{taskID}/course/{courseID}")
|
||||
public ResultDomain<Boolean> removeCourseFromTask(
|
||||
@PathVariable String taskID,
|
||||
@PathVariable String courseID) {
|
||||
return null;
|
||||
// return learningTaskService.removeCourseFromTask(taskID, courseID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务资源列表
|
||||
*/
|
||||
@GetMapping("/{taskID}/resources")
|
||||
public ResultDomain<TbTaskResource> getTaskResources(@PathVariable String taskID) {
|
||||
return learningTaskService.getTaskResources(taskID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加资源到任务
|
||||
*/
|
||||
@PostMapping("/{taskID}/resource")
|
||||
public ResultDomain<TbTaskResource> addResourceToTask(
|
||||
@PathVariable String taskID,
|
||||
@RequestParam String resourceID) {
|
||||
return null;
|
||||
// return learningTaskService.addResourceToTask(taskID, resourceID);
|
||||
}
|
||||
|
||||
/**
|
||||
* 从任务移除资源
|
||||
*/
|
||||
@DeleteMapping("/{taskID}/resource/{resourceID}")
|
||||
public ResultDomain<Boolean> removeResourceFromTask(
|
||||
@PathVariable String taskID,
|
||||
@PathVariable String resourceID) {
|
||||
return null;
|
||||
// return learningTaskService.removeResourceFromTask(taskID, resourceID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.study.TbLearningTask;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -155,6 +156,8 @@ public interface LearningTaskMapper extends BaseMapper<TbLearningTask> {
|
||||
*/
|
||||
List<TbLearningTask> selectLearningTasksPage(@Param("filter") TbLearningTask filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
List<TbLearningTask> selectUserLearningTasksPage(@Param("filter") TaskItemVO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* @description 统计学习任务总数
|
||||
* @param filter 过滤条件
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.study.TbTaskCourse;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -45,6 +46,8 @@ public interface TaskCourseMapper extends BaseMapper<TbTaskCourse> {
|
||||
*/
|
||||
List<TbTaskCourse> selectByTaskId(@Param("taskId") String taskId);
|
||||
|
||||
List<TaskItemVO> selectTaskItemByTaskId(@Param("taskId") String taskId);
|
||||
|
||||
/**
|
||||
* @description 根据课程ID查询任务关联列表
|
||||
* @param courseId 课程ID
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.study.TbTaskResource;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -45,6 +46,15 @@ public interface TaskResourceMapper extends BaseMapper<TbTaskResource> {
|
||||
*/
|
||||
List<TbTaskResource> selectByTaskId(@Param("taskId") String taskId);
|
||||
|
||||
/**
|
||||
* @description 根据任务ID查询任务资源关联列表
|
||||
* @param taskId 任务ID
|
||||
* @return List<TaskItemVO> 任务资源关联列表
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
List<TaskItemVO> selectTaskItemByTaskId(@Param("taskId") String taskId);
|
||||
|
||||
/**
|
||||
* @description 根据资源ID查询任务关联列表
|
||||
* @param resourceId 资源ID
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.study.TbTaskUser;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -45,6 +46,7 @@ public interface TaskUserMapper extends BaseMapper<TbTaskUser> {
|
||||
*/
|
||||
List<TbTaskUser> selectByTaskId(@Param("taskId") String taskId);
|
||||
|
||||
List<TaskItemVO> selectTaskItemByTaskId(@Param("taskId") String taskId);
|
||||
/**
|
||||
* @description 根据用户ID查询任务关联列表
|
||||
* @param userId 用户ID
|
||||
@@ -103,15 +105,6 @@ public interface TaskUserMapper extends BaseMapper<TbTaskUser> {
|
||||
*/
|
||||
int insertTaskUser(TbTaskUser taskUser);
|
||||
|
||||
/**
|
||||
* @description 更新任务用户关联
|
||||
* @param taskUser 任务用户关联
|
||||
* @return int 影响行数
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
int updateTaskUser(TbTaskUser taskUser);
|
||||
|
||||
/**
|
||||
* @description 删除任务用户关联
|
||||
* @param taskUser 任务用户关联
|
||||
@@ -137,7 +130,7 @@ public interface TaskUserMapper extends BaseMapper<TbTaskUser> {
|
||||
* @author yslg
|
||||
* @since 2025-10-15
|
||||
*/
|
||||
int batchDeleteTaskUsers(@Param("ids") List<String> ids);
|
||||
int batchDeleteTaskUsers(@Param("taskId") String taskId, @Param("userIds") List<String> userIds);
|
||||
|
||||
/**
|
||||
* @description 根据任务ID批量删除用户关联
|
||||
|
||||
@@ -2,8 +2,11 @@ package org.xyzh.study.service.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
@@ -55,8 +58,10 @@ public class SCCourseServiceImpl implements SCCourseService {
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourse> getCourseList(TbCourse filter) {
|
||||
// TODO: 实现获取课程列表
|
||||
return null;
|
||||
ResultDomain<TbCourse> resultDomain = new ResultDomain<>();
|
||||
List<TbCourse> courses = courseMapper.selectCourses(filter);
|
||||
resultDomain.success("获取课程列表成功", courses);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -174,21 +179,248 @@ public class SCCourseServiceImpl implements SCCourseService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourse> updateCourse(TbCourse course) {
|
||||
// TODO: 实现更新课程
|
||||
return null;
|
||||
public ResultDomain<CourseVO> updateCourse(CourseVO courseVO) {
|
||||
ResultDomain<CourseVO> resultDomain = new ResultDomain<>();
|
||||
|
||||
TbSysUser user = LoginUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
resultDomain.fail("请先登录");
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
TbCourse course = courseVO.getCourse();
|
||||
String courseID = course.getCourseID();
|
||||
|
||||
if (courseID == null || courseID.isEmpty()) {
|
||||
resultDomain.fail("课程ID不能为空");
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
// 1. 更新课程基本信息
|
||||
course.setUpdater(user.getID());
|
||||
course.setUpdateTime(new Date());
|
||||
courseMapper.updateCourse(course);
|
||||
|
||||
// 2. 处理章节和节点
|
||||
List<ChapterVO> newChapterVOs = courseVO.getCourseChapters();
|
||||
if (newChapterVOs == null) {
|
||||
newChapterVOs = new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取数据库中现有的章节
|
||||
TbCourseChapter filter = new TbCourseChapter();
|
||||
filter.setCourseID(courseID);
|
||||
List<TbCourseChapter> existingChapters = courseChapterMapper.selectCourseChapters(filter);
|
||||
Map<String, TbCourseChapter> existingChapterMap = existingChapters.stream()
|
||||
.collect(Collectors.toMap(TbCourseChapter::getChapterID, chapter -> chapter));
|
||||
|
||||
// 获取数据库中现有的节点
|
||||
List<String> existingChapterIDs = existingChapters.stream()
|
||||
.map(TbCourseChapter::getChapterID)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
Map<String, List<TbCourseNode>> existingNodesMap = new HashMap<>();
|
||||
if (!existingChapterIDs.isEmpty()) {
|
||||
List<TbCourseNode> existingNodes = courseNodeMapper.selectCourseNodesByChapterIDs(existingChapterIDs);
|
||||
existingNodesMap = existingNodes.stream()
|
||||
.collect(Collectors.groupingBy(TbCourseNode::getChapterID));
|
||||
}
|
||||
|
||||
// 收集新的章节ID和节点
|
||||
List<TbCourseChapter> chaptersToInsert = new ArrayList<>();
|
||||
List<TbCourseChapter> chaptersToUpdate = new ArrayList<>();
|
||||
List<TbCourseNode> nodesToInsert = new ArrayList<>();
|
||||
List<TbCourseNode> nodesToUpdate = new ArrayList<>();
|
||||
|
||||
Set<String> newChapterIDs = new HashSet<>();
|
||||
Date now = new Date();
|
||||
|
||||
// 遍历新的章节
|
||||
for (int i = 0; i < newChapterVOs.size(); i++) {
|
||||
ChapterVO chapterVO = newChapterVOs.get(i);
|
||||
TbCourseChapter chapter = chapterVO.getChapter();
|
||||
String chapterID = chapter.getChapterID();
|
||||
|
||||
chapter.setCourseID(courseID);
|
||||
chapter.setOrderNum(i);
|
||||
|
||||
// 判断是新增还是更新
|
||||
if (chapterID == null || chapterID.isEmpty() || !existingChapterMap.containsKey(chapterID)) {
|
||||
// 新增章节
|
||||
chapterID = IDUtils.generateID();
|
||||
chapter.setID(IDUtils.generateID());
|
||||
chapter.setChapterID(chapterID);
|
||||
chapter.setCreator(user.getID());
|
||||
chapter.setCreateTime(now);
|
||||
chaptersToInsert.add(chapter);
|
||||
} else {
|
||||
// 更新章节
|
||||
chapter.setID(existingChapterMap.get(chapterID).getID());
|
||||
chapter.setUpdater(user.getID());
|
||||
chapter.setUpdateTime(now);
|
||||
chaptersToUpdate.add(chapter);
|
||||
}
|
||||
|
||||
newChapterIDs.add(chapterID);
|
||||
|
||||
// 处理该章节的节点
|
||||
List<TbCourseNode> newNodes = chapterVO.getNodes();
|
||||
if (newNodes == null) {
|
||||
newNodes = new ArrayList<>();
|
||||
}
|
||||
|
||||
List<TbCourseNode> existingNodesForChapter = existingNodesMap.getOrDefault(chapterID, new ArrayList<>());
|
||||
Map<String, TbCourseNode> existingNodeMap = existingNodesForChapter.stream()
|
||||
.collect(Collectors.toMap(TbCourseNode::getNodeID, node -> node));
|
||||
|
||||
Set<String> newNodeIDs = new HashSet<>();
|
||||
|
||||
// 遍历新的节点
|
||||
for (int j = 0; j < newNodes.size(); j++) {
|
||||
TbCourseNode node = newNodes.get(j);
|
||||
String nodeID = node.getNodeID();
|
||||
|
||||
node.setChapterID(chapterID);
|
||||
node.setOrderNum(j);
|
||||
|
||||
// 判断是新增还是更新
|
||||
if (nodeID == null || nodeID.isEmpty() || !existingNodeMap.containsKey(nodeID)) {
|
||||
// 新增节点
|
||||
nodeID = IDUtils.generateID();
|
||||
node.setID(IDUtils.generateID());
|
||||
node.setNodeID(nodeID);
|
||||
node.setCreator(user.getID());
|
||||
node.setCreateTime(now);
|
||||
nodesToInsert.add(node);
|
||||
} else {
|
||||
// 更新节点
|
||||
node.setID(existingNodeMap.get(nodeID).getID());
|
||||
node.setUpdater(user.getID());
|
||||
node.setUpdateTime(now);
|
||||
nodesToUpdate.add(node);
|
||||
}
|
||||
|
||||
newNodeIDs.add(nodeID);
|
||||
}
|
||||
|
||||
// 找出要删除的节点
|
||||
List<String> nodeIDsToDelete = existingNodeMap.keySet().stream()
|
||||
.filter(id -> !newNodeIDs.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!nodeIDsToDelete.isEmpty()) {
|
||||
courseNodeMapper.batchDeleteCourseNodes(nodeIDsToDelete);
|
||||
}
|
||||
}
|
||||
|
||||
// 找出要删除的章节
|
||||
List<String> chapterIDsToDelete = existingChapterMap.keySet().stream()
|
||||
.filter(id -> !newChapterIDs.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 删除章节及其节点
|
||||
if (!chapterIDsToDelete.isEmpty()) {
|
||||
for (String chapterId : chapterIDsToDelete) {
|
||||
courseNodeMapper.deleteByChapterId(chapterId);
|
||||
}
|
||||
courseChapterMapper.batchDeleteCourseChapters(chapterIDsToDelete);
|
||||
}
|
||||
|
||||
// 执行批量插入和更新
|
||||
if (!chaptersToInsert.isEmpty()) {
|
||||
courseChapterMapper.batchInsertCourseChapters(chaptersToInsert);
|
||||
}
|
||||
|
||||
if (!chaptersToUpdate.isEmpty()) {
|
||||
for (TbCourseChapter chapter : chaptersToUpdate) {
|
||||
courseChapterMapper.updateCourseChapter(chapter);
|
||||
}
|
||||
}
|
||||
|
||||
if (!nodesToInsert.isEmpty()) {
|
||||
courseNodeMapper.batchInsertCourseNodes(nodesToInsert);
|
||||
}
|
||||
|
||||
if (!nodesToUpdate.isEmpty()) {
|
||||
for (TbCourseNode node : nodesToUpdate) {
|
||||
courseNodeMapper.updateCourseNode(node);
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 处理标签
|
||||
List<TbCourseTag> newTags = courseVO.getCourseTags();
|
||||
if (newTags == null) {
|
||||
newTags = new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取现有标签
|
||||
List<TbCourseTag> existingTags = courseTagMapper.selectByCourseId(courseID);
|
||||
Map<String, TbCourseTag> existingTagMap = existingTags.stream()
|
||||
.collect(Collectors.toMap(TbCourseTag::getTagID, tag -> tag));
|
||||
|
||||
Set<String> newTagIDs = new HashSet<>();
|
||||
List<TbCourseTag> tagsToInsert = new ArrayList<>();
|
||||
|
||||
// 处理新标签
|
||||
for (TbCourseTag tag : newTags) {
|
||||
String tagID = tag.getTagID();
|
||||
|
||||
if (tagID == null || tagID.isEmpty() || !existingTagMap.containsKey(tagID)) {
|
||||
// 新增标签
|
||||
tag.setID(IDUtils.generateID());
|
||||
tag.setCourseID(courseID);
|
||||
tag.setCreator(user.getID());
|
||||
tag.setCreateTime(now);
|
||||
tagsToInsert.add(tag);
|
||||
} else {
|
||||
newTagIDs.add(tagID);
|
||||
}
|
||||
}
|
||||
|
||||
// 找出要删除的标签
|
||||
List<String> tagIDsToDelete = existingTagMap.keySet().stream()
|
||||
.filter(id -> !newTagIDs.contains(id))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!tagIDsToDelete.isEmpty()) {
|
||||
courseTagMapper.batchDeleteCourseTags(tagIDsToDelete);
|
||||
}
|
||||
|
||||
if (!tagsToInsert.isEmpty()) {
|
||||
courseTagMapper.batchInsertCourseTags(tagsToInsert);
|
||||
}
|
||||
|
||||
resultDomain.success("更新课程成功", courseVO);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<Boolean> deleteCourse(String courseID) {
|
||||
// TODO: 实现删除课程
|
||||
return null;
|
||||
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
|
||||
TbCourse course = new TbCourse();
|
||||
course.setCourseID(courseID);
|
||||
int result = courseMapper.deleteCourse(course);
|
||||
if (result > 0) {
|
||||
resultDomain.success("删除课程成功", true);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("删除课程失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourse> updateCourseStatus(String courseID, Integer status) {
|
||||
// TODO: 实现更新课程状态
|
||||
return null;
|
||||
public ResultDomain<TbCourse> updateCourseStatus(TbCourse course) {
|
||||
ResultDomain<TbCourse> resultDomain = new ResultDomain<>();
|
||||
int result = courseMapper.updateCourse(course);
|
||||
if (result > 0) {
|
||||
resultDomain.success("更新课程状态成功", course);
|
||||
return resultDomain;
|
||||
}
|
||||
else {
|
||||
resultDomain.fail("更新课程状态失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -217,20 +449,43 @@ public class SCCourseServiceImpl implements SCCourseService {
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourseChapter> createChapter(TbCourseChapter chapter) {
|
||||
// TODO: 实现创建课程章节
|
||||
return null;
|
||||
ResultDomain<TbCourseChapter> resultDomain = new ResultDomain<>();
|
||||
int result = courseChapterMapper.insertCourseChapter(chapter);
|
||||
if (result > 0) {
|
||||
resultDomain.success("创建课程章节成功", chapter);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("创建课程章节失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourseChapter> updateChapter(TbCourseChapter chapter) {
|
||||
// TODO: 实现更新课程章节
|
||||
return null;
|
||||
ResultDomain<TbCourseChapter> resultDomain = new ResultDomain<>();
|
||||
int result = courseChapterMapper.updateCourseChapter(chapter);
|
||||
if (result > 0) {
|
||||
resultDomain.success("更新课程章节成功", chapter);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("更新课程章节失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<Boolean> deleteChapter(String chapterID) {
|
||||
// TODO: 实现删除课程章节
|
||||
return null;
|
||||
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
|
||||
TbCourseChapter chapter = new TbCourseChapter();
|
||||
chapter.setChapterID(chapterID);
|
||||
int result = courseChapterMapper.deleteCourseChapter(chapter);
|
||||
if (result > 0) {
|
||||
resultDomain.success("删除课程章节成功", true);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("删除课程章节失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -238,4 +493,46 @@ public class SCCourseServiceImpl implements SCCourseService {
|
||||
// TODO: 实现更新章节排序
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourseNode> createChapterNode(TbCourseNode node) {
|
||||
ResultDomain<TbCourseNode> resultDomain = new ResultDomain<>();
|
||||
int result = courseNodeMapper.insertCourseNode(node);
|
||||
if (result > 0) {
|
||||
resultDomain.success("创建课程章节节点成功", node);
|
||||
return resultDomain;
|
||||
}else{
|
||||
resultDomain.fail("创建课程章节节点失败");
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbCourseNode> updateChapterNode(TbCourseNode node) {
|
||||
ResultDomain<TbCourseNode> resultDomain = new ResultDomain<>();
|
||||
int result = courseNodeMapper.updateCourseNode(node);
|
||||
if (result > 0) {
|
||||
resultDomain.success("更新课程章节节点成功", node);
|
||||
return resultDomain;
|
||||
}else{
|
||||
resultDomain.fail("更新课程章节节点失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<Boolean> deleteChapterNode(String nodeID) {
|
||||
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
|
||||
TbCourseNode node = new TbCourseNode();
|
||||
node.setNodeID(nodeID);
|
||||
int result = courseNodeMapper.deleteCourseNode(node);
|
||||
if (result > 0) {
|
||||
resultDomain.success("删除课程章节节点成功", true);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("删除课程章节节点失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,32 @@
|
||||
package org.xyzh.study.service.impl;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageDomain;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.utils.IDUtils;
|
||||
import org.xyzh.common.dto.study.TbLearningTask;
|
||||
import org.xyzh.common.dto.study.TbTaskUser;
|
||||
import org.xyzh.common.dto.study.TbTaskCourse;
|
||||
import org.xyzh.common.dto.study.TbTaskResource;
|
||||
import org.xyzh.common.vo.TaskItemVO;
|
||||
import org.xyzh.common.vo.TaskVO;
|
||||
import org.xyzh.study.mapper.LearningTaskMapper;
|
||||
import org.xyzh.study.mapper.TaskUserMapper;
|
||||
import org.xyzh.system.utils.LoginUtil;
|
||||
import org.xyzh.study.mapper.TaskCourseMapper;
|
||||
import org.xyzh.study.mapper.TaskResourceMapper;
|
||||
import org.xyzh.api.study.task.LearningTaskService;
|
||||
@@ -55,9 +68,31 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbTaskUser> addTaskUser(TbTaskUser taskUser) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
public ResultDomain<TbTaskUser> addTaskUser(String taskID, List<String> userIDs) {
|
||||
ResultDomain<TbTaskUser> resultDomain = new ResultDomain<>();
|
||||
TbSysUser user = LoginUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
resultDomain.fail("请先登录");
|
||||
return resultDomain;
|
||||
}
|
||||
List<TbTaskUser> taskUsers = new ArrayList<>();
|
||||
for (String userID : userIDs) {
|
||||
TbTaskUser taskUser = new TbTaskUser();
|
||||
taskUser.setID(IDUtils.generateID());
|
||||
taskUser.setTaskID(taskID);
|
||||
taskUser.setUserID(userID);
|
||||
taskUser.setCreator(user.getID());
|
||||
taskUser.setCreateTime(new Date());
|
||||
taskUsers.add(taskUser);
|
||||
}
|
||||
int result = taskUserMapper.batchInsertTaskUsers(taskUsers);
|
||||
if (result > 0) {
|
||||
resultDomain.success("添加任务用户成功", taskUsers);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("添加任务用户失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -67,9 +102,255 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbLearningTask> createTask(TbLearningTask task) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
public ResultDomain<TbLearningTask> getTaskPage(TbLearningTask filter, PageParam pageParam) {
|
||||
ResultDomain<TbLearningTask> resultDomain = new ResultDomain<>();
|
||||
List<TbLearningTask> taskList = learningTaskMapper.selectLearningTasksPage(filter, pageParam);
|
||||
long total = learningTaskMapper.countLearningTasks(filter);
|
||||
pageParam.setTotalElements(total);
|
||||
pageParam.setTotalPages((int) Math.ceil((double) total / pageParam.getPageSize()));
|
||||
PageDomain<TbLearningTask> pageDomain = new PageDomain<>();
|
||||
pageDomain.setDataList(taskList);
|
||||
pageDomain.setPageParam(pageParam);
|
||||
resultDomain.success("获取任务列表分页成功", pageDomain);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbLearningTask> getUserTaskPage(TaskItemVO filter, PageParam pageParam) {
|
||||
ResultDomain<TbLearningTask> resultDomain = new ResultDomain<>();
|
||||
TbSysUser user = LoginUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
resultDomain.fail("请先登录");
|
||||
return resultDomain;
|
||||
}
|
||||
filter.setUserID(user.getID());
|
||||
List<TbLearningTask> taskList = learningTaskMapper.selectUserLearningTasksPage(filter, pageParam);
|
||||
long total = learningTaskMapper.countLearningTasks(filter);
|
||||
pageParam.setTotalElements(total);
|
||||
pageParam.setTotalPages((int) Math.ceil((double) total / pageParam.getPageSize()));
|
||||
PageDomain<TbLearningTask> pageDomain = new PageDomain<>();
|
||||
pageDomain.setDataList(taskList);
|
||||
pageDomain.setPageParam(pageParam);
|
||||
resultDomain.success("获取任务列表分页成功", pageDomain);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TaskVO> createTask(TaskVO taskVO) {
|
||||
ResultDomain<TaskVO> resultDomain = new ResultDomain<>();
|
||||
TbSysUser currentUser = LoginUtil.getCurrentUser();
|
||||
String taskID = IDUtils.generateID();
|
||||
Date now = new Date();
|
||||
// 创建任务
|
||||
TbLearningTask learningTask = taskVO.getLearningTask();
|
||||
learningTask.setCreator(currentUser.getID());
|
||||
learningTask.setID(IDUtils.generateID());
|
||||
learningTask.setTaskID(taskID);
|
||||
learningTask.setCreateTime(now);
|
||||
learningTaskMapper.insertLearningTask(learningTask);
|
||||
// 绑定课程
|
||||
List<TbTaskCourse> taskCourses = taskVO.toTaskCourses();
|
||||
taskCourses.forEach(item -> {
|
||||
item.setTaskID(taskID);
|
||||
item.setCreator(currentUser.getID());
|
||||
item.setCreateTime(now);
|
||||
});
|
||||
taskCourseMapper.batchInsertTaskCourses(taskCourses);
|
||||
// 绑定资源
|
||||
List<TbTaskResource> taskResources = taskVO.toTaskResources();
|
||||
taskResources.forEach(item -> {
|
||||
item.setTaskID(taskID);
|
||||
item.setCreator(currentUser.getID());
|
||||
item.setCreateTime(now);
|
||||
});
|
||||
taskResourceMapper.batchInsertTaskResources(taskResources);
|
||||
// 绑定用户
|
||||
List<TbTaskUser> taskUsers = taskVO.toTaskUsers();
|
||||
taskUsers.forEach(item -> {
|
||||
item.setTaskID(taskID);
|
||||
item.setCreator(currentUser.getID());
|
||||
item.setCreateTime(now);
|
||||
});
|
||||
taskUserMapper.batchInsertTaskUsers(taskUsers);
|
||||
|
||||
resultDomain.success("创建任务成功", taskVO);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TaskVO> updateTask(TaskVO taskVO) {
|
||||
ResultDomain<TaskVO> resultDomain = new ResultDomain<>();
|
||||
|
||||
TbSysUser user = LoginUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
resultDomain.fail("请先登录");
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
TbLearningTask task = taskVO.getLearningTask();
|
||||
String taskID = task.getTaskID();
|
||||
|
||||
if (taskID == null || taskID.isEmpty()) {
|
||||
resultDomain.fail("任务ID不能为空");
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
Date now = new Date();
|
||||
|
||||
// 1. 更新任务基本信息
|
||||
task.setUpdater(user.getID());
|
||||
task.setUpdateTime(now);
|
||||
learningTaskMapper.updateLearningTask(task);
|
||||
|
||||
// 2. 处理任务课程关联
|
||||
List<TaskItemVO> newCourseItems = taskVO.getTaskCourses();
|
||||
if (newCourseItems == null) {
|
||||
newCourseItems = new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取现有的课程关联
|
||||
List<TbTaskCourse> existingCourses = taskCourseMapper.selectByTaskId(taskID);
|
||||
Map<String, TbTaskCourse> existingCourseMap = existingCourses.stream()
|
||||
.collect(Collectors.toMap(TbTaskCourse::getCourseID, course -> course));
|
||||
|
||||
Set<String> newCourseIDs = new HashSet<>();
|
||||
List<TbTaskCourse> coursesToInsert = new ArrayList<>();
|
||||
|
||||
// 处理新的课程关联
|
||||
for (TaskItemVO item : newCourseItems) {
|
||||
String courseID = item.getCourseID();
|
||||
if (courseID == null || courseID.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
newCourseIDs.add(courseID);
|
||||
|
||||
// 如果不存在,则新增
|
||||
if (!existingCourseMap.containsKey(courseID)) {
|
||||
TbTaskCourse taskCourse = new TbTaskCourse();
|
||||
taskCourse.setID(IDUtils.generateID());
|
||||
taskCourse.setTaskID(taskID);
|
||||
taskCourse.setCourseID(courseID);
|
||||
taskCourse.setCreator(user.getID());
|
||||
taskCourse.setCreateTime(now);
|
||||
coursesToInsert.add(taskCourse);
|
||||
}
|
||||
}
|
||||
|
||||
// 找出要删除的课程关联
|
||||
List<String> courseIDsToDelete = existingCourseMap.values().stream()
|
||||
.filter(course -> !newCourseIDs.contains(course.getCourseID()))
|
||||
.map(TbTaskCourse::getID)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!courseIDsToDelete.isEmpty()) {
|
||||
taskCourseMapper.batchDeleteTaskCourses(courseIDsToDelete);
|
||||
}
|
||||
|
||||
if (!coursesToInsert.isEmpty()) {
|
||||
taskCourseMapper.batchInsertTaskCourses(coursesToInsert);
|
||||
}
|
||||
|
||||
// 3. 处理任务资源关联
|
||||
List<TaskItemVO> newResourceItems = taskVO.getTaskResources();
|
||||
if (newResourceItems == null) {
|
||||
newResourceItems = new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取现有的资源关联
|
||||
List<TbTaskResource> existingResources = taskResourceMapper.selectByTaskId(taskID);
|
||||
Map<String, TbTaskResource> existingResourceMap = existingResources.stream()
|
||||
.collect(Collectors.toMap(TbTaskResource::getResourceID, resource -> resource));
|
||||
|
||||
Set<String> newResourceIDs = new HashSet<>();
|
||||
List<TbTaskResource> resourcesToInsert = new ArrayList<>();
|
||||
|
||||
// 处理新的资源关联
|
||||
for (TaskItemVO item : newResourceItems) {
|
||||
String resourceID = item.getResourceID();
|
||||
if (resourceID == null || resourceID.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
newResourceIDs.add(resourceID);
|
||||
|
||||
// 如果不存在,则新增
|
||||
if (!existingResourceMap.containsKey(resourceID)) {
|
||||
TbTaskResource taskResource = new TbTaskResource();
|
||||
taskResource.setID(IDUtils.generateID());
|
||||
taskResource.setTaskID(taskID);
|
||||
taskResource.setResourceID(resourceID);
|
||||
taskResource.setCreator(user.getID());
|
||||
taskResource.setCreateTime(now);
|
||||
resourcesToInsert.add(taskResource);
|
||||
}
|
||||
}
|
||||
|
||||
// 找出要删除的资源关联
|
||||
List<String> resourceIDsToDelete = existingResourceMap.values().stream()
|
||||
.filter(resource -> !newResourceIDs.contains(resource.getResourceID()))
|
||||
.map(TbTaskResource::getID)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!resourceIDsToDelete.isEmpty()) {
|
||||
taskResourceMapper.batchDeleteTaskResources(resourceIDsToDelete);
|
||||
}
|
||||
|
||||
if (!resourcesToInsert.isEmpty()) {
|
||||
taskResourceMapper.batchInsertTaskResources(resourcesToInsert);
|
||||
}
|
||||
|
||||
// 4. 处理任务用户关联
|
||||
List<TaskItemVO> newUserItems = taskVO.getTaskUsers();
|
||||
if (newUserItems == null) {
|
||||
newUserItems = new ArrayList<>();
|
||||
}
|
||||
|
||||
// 获取现有的用户关联
|
||||
List<TbTaskUser> existingUsers = taskUserMapper.selectByTaskId(taskID);
|
||||
Map<String, TbTaskUser> existingUserMap = existingUsers.stream()
|
||||
.collect(Collectors.toMap(TbTaskUser::getUserID, taskUser -> taskUser));
|
||||
|
||||
Set<String> newUserIDs = new HashSet<>();
|
||||
List<TbTaskUser> usersToInsert = new ArrayList<>();
|
||||
|
||||
// 处理新的用户关联
|
||||
for (TaskItemVO item : newUserItems) {
|
||||
String userID = item.getUserID();
|
||||
if (userID == null || userID.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
newUserIDs.add(userID);
|
||||
|
||||
// 如果不存在,则新增
|
||||
if (!existingUserMap.containsKey(userID)) {
|
||||
TbTaskUser taskUser = new TbTaskUser();
|
||||
taskUser.setID(IDUtils.generateID());
|
||||
taskUser.setTaskID(taskID);
|
||||
taskUser.setUserID(userID);
|
||||
taskUser.setCreator(user.getID());
|
||||
taskUser.setCreateTime(now);
|
||||
usersToInsert.add(taskUser);
|
||||
}
|
||||
}
|
||||
|
||||
// 找出要删除的用户关联
|
||||
List<String> userIDsToDelete = existingUserMap.values().stream()
|
||||
.filter(taskUser -> !newUserIDs.contains(taskUser.getUserID()))
|
||||
.map(TbTaskUser::getID)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (!userIDsToDelete.isEmpty()) {
|
||||
taskUserMapper.batchDeleteTaskUsers(taskID, userIDsToDelete);
|
||||
}
|
||||
|
||||
if (!usersToInsert.isEmpty()) {
|
||||
taskUserMapper.batchInsertTaskUsers(usersToInsert);
|
||||
}
|
||||
|
||||
resultDomain.success("更新任务成功", taskVO);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,9 +360,23 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbLearningTask> getTaskById(String taskID) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
public ResultDomain<TaskVO> getTaskById(String taskID) {
|
||||
ResultDomain<TaskVO> resultDomain = new ResultDomain<>();
|
||||
TaskVO taskVO = new TaskVO();
|
||||
TbLearningTask task = learningTaskMapper.selectByTaskId(taskID);
|
||||
if (task == null) {
|
||||
resultDomain.fail("任务不存在");
|
||||
return resultDomain;
|
||||
}
|
||||
List<TaskItemVO> taskCourses = taskCourseMapper.selectTaskItemByTaskId(taskID);
|
||||
List<TaskItemVO> taskResources = taskResourceMapper.selectTaskItemByTaskId(taskID);
|
||||
List<TaskItemVO> taskUsers = taskUserMapper.selectTaskItemByTaskId(taskID);
|
||||
taskVO.setLearningTask(task);
|
||||
taskVO.setTaskCourses(taskCourses);
|
||||
taskVO.setTaskResources(taskResources);
|
||||
taskVO.setTaskUsers(taskUsers);
|
||||
resultDomain.success("获取任务详情成功", taskVO);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -103,9 +398,11 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbTaskUser> getTaskUsers(String taskID) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
public ResultDomain<TaskItemVO> getTaskUsers(String taskID) {
|
||||
ResultDomain<TaskItemVO> resultDomain = new ResultDomain<>();
|
||||
List<TaskItemVO> taskUsers = taskUserMapper.selectTaskItemByTaskId(taskID);
|
||||
resultDomain.success("获取任务用户列表成功", taskUsers);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -121,21 +418,45 @@ public class SCLearningTaskServiceImpl implements LearningTaskService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<Boolean> removeTaskUser(String taskID, String userID) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
public ResultDomain<Boolean> removeTaskUser(String taskID, List<String> userIDs) {
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbLearningTask> updateTask(TbLearningTask task) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
ResultDomain<Boolean> resultDomain = new ResultDomain<>();
|
||||
TbSysUser user = LoginUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
resultDomain.fail("请先登录");
|
||||
return resultDomain;
|
||||
}
|
||||
int result = taskUserMapper.batchDeleteTaskUsers(taskID, userIDs);
|
||||
if (result > 0) {
|
||||
resultDomain.success("移除任务用户成功", true);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("移除任务用户失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbLearningTask> updateTaskStatus(String taskID, Integer status) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
ResultDomain<TbLearningTask> resultDomain = new ResultDomain<>();
|
||||
TbSysUser user = LoginUtil.getCurrentUser();
|
||||
if (user == null) {
|
||||
resultDomain.fail("请先登录");
|
||||
return resultDomain;
|
||||
}
|
||||
TbLearningTask task = new TbLearningTask();
|
||||
task.setUpdater(user.getID());
|
||||
task.setUpdateTime(new Date());
|
||||
task.setTaskID(taskID);
|
||||
task.setStatus(status);
|
||||
int result = learningTaskMapper.updateLearningTask(task);
|
||||
if (result > 0) {
|
||||
resultDomain.success("更新任务状态成功", task);
|
||||
return resultDomain;
|
||||
} else {
|
||||
resultDomain.fail("更新任务状态失败");
|
||||
return resultDomain;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -50,6 +50,8 @@
|
||||
</where>
|
||||
</sql>
|
||||
<sql id="Filter_Clause">
|
||||
<where>
|
||||
deleted = 0
|
||||
<if test="filter != null">
|
||||
<if test="filter.courseID != null and filter.courseID != ''">
|
||||
AND course_id = #{filter.courseID}
|
||||
@@ -73,6 +75,7 @@
|
||||
<if test="filter.createTime != null">
|
||||
AND create_time = #{filter.createTime}
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!-- selectCourses -->
|
||||
@@ -189,9 +192,6 @@
|
||||
<update id="updateCourse" parameterType="org.xyzh.common.dto.study.TbCourse">
|
||||
UPDATE tb_course
|
||||
<set>
|
||||
<if test="courseID != null and courseID != ''">
|
||||
course_id = #{courseID},
|
||||
</if>
|
||||
<if test="name != null and name != ''">
|
||||
name = #{name},
|
||||
</if>
|
||||
@@ -235,13 +235,13 @@
|
||||
deleted = #{deleted},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
WHERE course_id = #{courseID}
|
||||
</update>
|
||||
|
||||
<!-- 删除课程 -->
|
||||
<delete id="deleteCourse" parameterType="org.xyzh.common.dto.study.TbCourse">
|
||||
DELETE FROM tb_course
|
||||
WHERE id = #{id}
|
||||
WHERE course_id = #{courseID}
|
||||
</delete>
|
||||
|
||||
<!-- 批量插入课程 -->
|
||||
|
||||
@@ -225,8 +225,7 @@
|
||||
</select>
|
||||
|
||||
<!-- selectCourseNodesByChapterIDs -->
|
||||
|
||||
<select id="selectCourseNodesByChapterIDs">
|
||||
<select id="selectCourseNodesByChapterIDs" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List" />
|
||||
FROM tb_course_node
|
||||
@@ -235,5 +234,6 @@
|
||||
#{chapterID}
|
||||
</foreach>
|
||||
AND deleted = 0
|
||||
ORDER BY order_num ASC, create_time ASC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -41,6 +41,21 @@
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<sql id="Filter_Clause">
|
||||
<where>
|
||||
deleted = 0
|
||||
<if test="filter.taskID != null and filter.taskID != ''">
|
||||
AND task_id = #{taskID}
|
||||
</if>
|
||||
<if test="filter.name != null and filter.name != ''">
|
||||
AND name LIKE CONCAT('%', #{filter.name}, '%')
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND status = #{filter.status}
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!-- selectLearningTasks -->
|
||||
<select id="selectLearningTasks" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
@@ -125,10 +140,10 @@
|
||||
<insert id="insertLearningTask" parameterType="org.xyzh.common.dto.study.TbLearningTask">
|
||||
INSERT INTO tb_learning_task (
|
||||
id, task_id, name, description, start_time, end_time, status,
|
||||
creator, updater, create_time, update_time, delete_time, deleted
|
||||
creator, create_time
|
||||
) VALUES (
|
||||
#{id}, #{taskID}, #{name}, #{description}, #{startTime}, #{endTime}, #{status},
|
||||
#{creator}, #{updater}, #{createTime}, #{updateTime}, #{deleteTime}, #{deleted}
|
||||
#{creator}, #{createTime}
|
||||
)
|
||||
</insert>
|
||||
|
||||
@@ -167,26 +182,25 @@
|
||||
deleted = #{deleted},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
WHERE task_id = #{taskID}
|
||||
</update>
|
||||
|
||||
<!-- 删除学习任务 -->
|
||||
<delete id="deleteLearningTask" parameterType="org.xyzh.common.dto.study.TbLearningTask">
|
||||
DELETE FROM tb_learning_task
|
||||
WHERE id = #{id}
|
||||
WHERE task_id = #{taskID}
|
||||
</delete>
|
||||
|
||||
<!-- 批量插入学习任务 -->
|
||||
<insert id="batchInsertLearningTasks" parameterType="java.util.List">
|
||||
INSERT INTO tb_learning_task (
|
||||
id, task_id, name, description, start_time, end_time, status,
|
||||
creator, updater, create_time, update_time, delete_time, deleted
|
||||
creator, create_time
|
||||
) VALUES
|
||||
<foreach collection="learningTaskList" item="item" separator=",">
|
||||
(
|
||||
#{item.id}, #{item.taskID}, #{item.name}, #{item.description}, #{item.startTime},
|
||||
#{item.endTime}, #{item.status}, #{item.creator}, #{item.updater},
|
||||
#{item.createTime}, #{item.updateTime}, #{item.deleteTime}, #{item.deleted}
|
||||
#{item.endTime}, #{item.status}, #{item.creator}, #{item.createTime}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
@@ -194,9 +208,9 @@
|
||||
<!-- 批量删除学习任务 -->
|
||||
<delete id="batchDeleteLearningTasks">
|
||||
DELETE FROM tb_learning_task
|
||||
WHERE id IN
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
WHERE task_id IN
|
||||
<foreach collection="ids" item="taskID" open="(" separator="," close=")">
|
||||
#{taskID}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
@@ -205,7 +219,20 @@
|
||||
SELECT
|
||||
<include refid="Base_Column_List" />
|
||||
FROM tb_learning_task
|
||||
<include refid="Where_Clause" />
|
||||
<include refid="Filter_Clause" />
|
||||
ORDER BY create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="selectUserLearningTasksPage" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
tlt.id, tlt.task_id, tlt.name, tlt.description, tlt.start_time, tlt.end_time, tlt.status,
|
||||
tlt.creator, tlt.updater, tlt.create_time, tlt.update_time
|
||||
FROM tb_task_user ttu
|
||||
INNER JOIN tb_learning_task tlt ON ttu.task_id = tlt.task_id
|
||||
WHERE ttu.user_id = #{filter.userID}
|
||||
AND tlt.deleted = 0
|
||||
AND ttu.deleted = 0
|
||||
ORDER BY create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
@@ -214,7 +241,7 @@
|
||||
<select id="countLearningTasks" resultType="long">
|
||||
SELECT COUNT(1)
|
||||
FROM tb_learning_task
|
||||
<include refid="Where_Clause" />
|
||||
<include refid="Filter_Clause" />
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -13,6 +13,24 @@
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="TaskItemResultMap" type="org.xyzh.common.vo.TaskItemVO">
|
||||
<id column="id" property="id" jdbcType="VARCHAR"/>
|
||||
<result column="task_id" property="taskID" jdbcType="VARCHAR"/>
|
||||
<result column="course_id" property="courseID" jdbcType="VARCHAR"/>
|
||||
<result column="course_name" property="courseName" jdbcType="VARCHAR"/>
|
||||
<result column="resource_id" property="resourceID" jdbcType="VARCHAR"/>
|
||||
<result column="resource_name" property="resourceName" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
|
||||
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="INTEGER"/>
|
||||
<result column="progress" property="progress" jdbcType="DECIMAL"/>
|
||||
<result column="complete_time" property="completeTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="required" property="required" jdbcType="BOOLEAN"/>
|
||||
<result column="order_num" property="orderNum" jdbcType="INTEGER"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 基础字段 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, task_id, course_id, required, order_num, creator, create_time
|
||||
@@ -50,7 +68,6 @@
|
||||
WHERE id = #{relationId}
|
||||
</select>
|
||||
|
||||
<!-- 根据任务ID查询课程关联列表 -->
|
||||
<select id="selectByTaskId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List" />
|
||||
@@ -59,6 +76,17 @@
|
||||
ORDER BY order_num ASC, create_time ASC
|
||||
</select>
|
||||
|
||||
<!-- 根据任务ID查询课程关联列表 -->
|
||||
<select id="selectTaskItemByTaskId" resultMap="TaskItemResultMap">
|
||||
SELECT
|
||||
ttc.*,
|
||||
tc.name as course_name
|
||||
FROM tb_task_course ttc
|
||||
INNER JOIN tb_course tc ON ttc.course_id = tc.course_id
|
||||
WHERE ttc.task_id = #{taskId} and ttc.deleted = 0 and tc.deleted = 0
|
||||
ORDER BY ttc.order_num ASC, ttc.create_time ASC
|
||||
</select>
|
||||
|
||||
<!-- 根据课程ID查询任务关联列表 -->
|
||||
<select id="selectByCourseId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
|
||||
@@ -13,6 +13,24 @@
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="TaskItemResultMap" type="org.xyzh.common.vo.TaskItemVO">
|
||||
<id column="id" property="id" jdbcType="VARCHAR"/>
|
||||
<result column="task_id" property="taskID" jdbcType="VARCHAR"/>
|
||||
<result column="course_id" property="courseID" jdbcType="VARCHAR"/>
|
||||
<result column="course_name" property="courseName" jdbcType="VARCHAR"/>
|
||||
<result column="resource_id" property="resourceID" jdbcType="VARCHAR"/>
|
||||
<result column="resource_name" property="resourceName" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
|
||||
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="INTEGER"/>
|
||||
<result column="progress" property="progress" jdbcType="DECIMAL"/>
|
||||
<result column="complete_time" property="completeTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="required" property="required" jdbcType="BOOLEAN"/>
|
||||
<result column="order_num" property="orderNum" jdbcType="INTEGER"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 基础字段 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, task_id, resource_id, required, order_num, creator, create_time
|
||||
@@ -59,6 +77,15 @@
|
||||
ORDER BY order_num ASC, create_time ASC
|
||||
</select>
|
||||
|
||||
<select id="selectTaskItemByTaskId" resultMap="TaskItemResultMap">
|
||||
SELECT
|
||||
ttr.*,
|
||||
tr.title as resource_name
|
||||
FROM tb_task_resource ttr
|
||||
INNER JOIN tb_resource tr ON ttr.resource_id = tr.resource_id
|
||||
WHERE ttr.task_id = #{taskId} and ttr.deleted = 0 and tr.deleted = 0
|
||||
ORDER BY ttr.order_num ASC, ttr.create_time ASC
|
||||
</select>
|
||||
<!-- 根据资源ID查询任务关联列表 -->
|
||||
<select id="selectByResourceId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
|
||||
@@ -16,6 +16,24 @@
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="TaskItemResultMap" type="org.xyzh.common.vo.TaskItemVO">
|
||||
<id column="id" property="id" jdbcType="VARCHAR"/>
|
||||
<result column="task_id" property="taskID" jdbcType="VARCHAR"/>
|
||||
<result column="course_id" property="courseID" jdbcType="VARCHAR"/>
|
||||
<result column="course_name" property="courseName" jdbcType="VARCHAR"/>
|
||||
<result column="resource_id" property="resourceID" jdbcType="VARCHAR"/>
|
||||
<result column="resource_name" property="resourceName" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userID" jdbcType="VARCHAR"/>
|
||||
<result column="username" property="username" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="INTEGER"/>
|
||||
<result column="progress" property="progress" jdbcType="DECIMAL"/>
|
||||
<result column="complete_time" property="completeTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="required" property="required" jdbcType="BOOLEAN"/>
|
||||
<result column="order_num" property="orderNum" jdbcType="INTEGER"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 基础字段 -->
|
||||
<sql id="Base_Column_List">
|
||||
id, task_id, user_id, dept_id, status, progress, complete_time,
|
||||
@@ -66,6 +84,16 @@
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectTaskItemByTaskId" resultMap="TaskItemResultMap">
|
||||
SELECT
|
||||
ttu.*,
|
||||
tu.username
|
||||
FROM tb_task_user ttu
|
||||
INNER JOIN tb_sys_user tu ON ttu.user_id = tu.id
|
||||
WHERE ttu.task_id = #{taskId} and ttu.deleted = 0 and tu.deleted = 0
|
||||
ORDER BY ttu.create_time ASC
|
||||
</select>
|
||||
|
||||
<!-- 根据用户ID查询任务关联列表 -->
|
||||
<select id="selectByUserId" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
@@ -115,64 +143,29 @@
|
||||
<insert id="insertTaskUser" parameterType="org.xyzh.common.dto.study.TbTaskUser">
|
||||
INSERT INTO tb_task_user (
|
||||
id, task_id, user_id, dept_id, status, progress, complete_time,
|
||||
creator, create_time, update_time
|
||||
creator, create_time
|
||||
) VALUES (
|
||||
#{id}, #{taskID}, #{userID}, #{deptID}, #{status}, #{progress}, #{completeTime},
|
||||
#{creator}, #{createTime}, #{updateTime}
|
||||
#{creator}, #{createTime}
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 更新任务用户关联 -->
|
||||
<update id="updateTaskUser" parameterType="org.xyzh.common.dto.study.TbTaskUser">
|
||||
UPDATE tb_task_user
|
||||
<set>
|
||||
<if test="taskID != null and taskID != ''">
|
||||
task_id = #{taskID},
|
||||
</if>
|
||||
<if test="userID != null and userID != ''">
|
||||
user_id = #{userID},
|
||||
</if>
|
||||
<if test="deptID != null and deptID != ''">
|
||||
dept_id = #{deptID},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
status = #{status},
|
||||
</if>
|
||||
<if test="progress != null">
|
||||
progress = #{progress},
|
||||
</if>
|
||||
<if test="completeTime != null">
|
||||
complete_time = #{completeTime},
|
||||
</if>
|
||||
<if test="creator != null and creator != ''">
|
||||
creator = #{creator},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time = #{createTime},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime},
|
||||
</if>
|
||||
</set>
|
||||
WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
<!-- 删除任务用户关联 -->
|
||||
<delete id="deleteTaskUser" parameterType="org.xyzh.common.dto.study.TbTaskUser">
|
||||
DELETE FROM tb_task_user
|
||||
WHERE id = #{id}
|
||||
WHERE task_id = #{taskID}
|
||||
</delete>
|
||||
|
||||
<!-- 批量插入任务用户关联 -->
|
||||
<insert id="batchInsertTaskUsers" parameterType="java.util.List">
|
||||
INSERT INTO tb_task_user (
|
||||
id, task_id, user_id, dept_id, status, progress, complete_time,
|
||||
creator, create_time, update_time
|
||||
creator, create_time
|
||||
) VALUES
|
||||
<foreach collection="taskUserList" item="item" separator=",">
|
||||
(
|
||||
#{item.id}, #{item.taskID}, #{item.userID}, #{item.deptID}, #{item.status},
|
||||
#{item.progress}, #{item.completeTime}, #{item.creator}, #{item.createTime}, #{item.updateTime}
|
||||
#{item.progress}, #{item.completeTime}, #{item.creator}, #{item.createTime}
|
||||
)
|
||||
</foreach>
|
||||
</insert>
|
||||
@@ -180,9 +173,9 @@
|
||||
<!-- 批量删除任务用户关联 -->
|
||||
<delete id="batchDeleteTaskUsers">
|
||||
DELETE FROM tb_task_user
|
||||
WHERE id IN
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
WHERE (task_id, user_id) IN
|
||||
<foreach collection="userIds" item="userID" open="(" separator="," close=")">
|
||||
(#{taskId}, #{userID})
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ import org.xyzh.api.system.user.UserService;
|
||||
import org.xyzh.common.annotation.HttpLogin;
|
||||
import org.xyzh.common.core.domain.LoginDomain;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.core.page.PageRequest;
|
||||
import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.dto.user.TbSysUserDeptRole;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
@@ -94,6 +96,19 @@ public class UserController {
|
||||
return userService.getUserByFilter(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 获取用户列表分页
|
||||
* @param filter
|
||||
* @author yslg
|
||||
* @since 2025-10-09
|
||||
*/
|
||||
@PostMapping("/page")
|
||||
public ResultDomain<TbSysUser> getUserPage(@RequestBody PageRequest<TbSysUser> pageRequest) {
|
||||
TbSysUser filter = pageRequest.getFilter();
|
||||
PageParam pageParam = pageRequest.getPageParam();
|
||||
return userService.getUserPage(filter, pageParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 绑定用户部门角色
|
||||
* @param filter
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.xyzh.system.mapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
import org.xyzh.common.vo.UserVO;
|
||||
@@ -95,6 +96,16 @@ public interface UserMapper extends BaseMapper<TbSysUser> {
|
||||
@Param("email") String email,
|
||||
@Param("status") String status);
|
||||
|
||||
/**
|
||||
* @description 查询用户列表(分页)
|
||||
* @param filter 过滤条件
|
||||
* @param pageParam 分页参数
|
||||
* @return List<TbSysUser> 用户列表
|
||||
* @author yslg
|
||||
* @since 2025-09-28
|
||||
*/
|
||||
List<TbSysUser> selectUserPage(@Param("filter") TbSysUser filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* @description 批量删除用户(逻辑删除)
|
||||
* @param userIds 用户ID列表
|
||||
|
||||
@@ -7,6 +7,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.xyzh.common.core.domain.ResultDomain;
|
||||
import org.xyzh.common.core.page.PageDomain;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
import org.xyzh.common.dto.user.TbSysUser;
|
||||
import org.xyzh.common.dto.user.TbSysUserDeptRole;
|
||||
import org.xyzh.common.dto.user.TbSysUserInfo;
|
||||
@@ -227,6 +229,17 @@ public class SysUserServiceImpl implements SysUserService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultDomain<TbSysUser> getUserPage(TbSysUser filter, PageParam pageParam) {
|
||||
ResultDomain<TbSysUser> resultDomain = new ResultDomain<>();
|
||||
List<TbSysUser> users = userMapper.selectUserPage(filter, pageParam);
|
||||
PageDomain<TbSysUser> pageDomain = new PageDomain<>();
|
||||
pageDomain.setDataList(users);
|
||||
pageDomain.setPageParam(pageParam);
|
||||
resultDomain.success("查询成功", pageDomain);
|
||||
return resultDomain;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public ResultDomain<TbSysUser> createUser(TbSysUser user) {
|
||||
|
||||
@@ -84,6 +84,30 @@
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<sql id="Filter_Clause">
|
||||
<where>
|
||||
deleted = 0
|
||||
<if test="filter.id != null and filter.id != ''">
|
||||
AND id = #{filter.id}
|
||||
</if>
|
||||
<if test="filter.username != null and filter.username != ''">
|
||||
AND username = #{filter.username}
|
||||
</if>
|
||||
<if test="filter.email != null and filter.email != ''">
|
||||
AND email = #{filter.email}
|
||||
</if>
|
||||
<if test="filter.phone != null and filter.phone != ''">
|
||||
AND phone = #{filter.phone}
|
||||
</if>
|
||||
<if test="filter.status != null">
|
||||
AND status = #{filter.status}
|
||||
</if>
|
||||
<if test="filter.wechatID != null and filter.wechatID != ''">
|
||||
AND wechat_id = #{filter.wechatID}
|
||||
</if>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<!-- 根据用户名查询用户 -->
|
||||
<select id="selectByUsername" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
@@ -151,6 +175,16 @@
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<!-- 查询用户列表(分页) -->
|
||||
<select id="selectUserPage" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"/>
|
||||
FROM tb_sys_user
|
||||
<include refid="Where_Clause"/>
|
||||
ORDER BY create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<!-- 批量删除用户(逻辑删除) -->
|
||||
<update id="batchDeleteByIds">
|
||||
UPDATE tb_sys_user
|
||||
|
||||
Reference in New Issue
Block a user