/** * @description 学习任务相关API * @author yslg * @since 2025-10-15 */ import { api } from '@/apis/index'; import type { LearningTask, LearningProgress, ResultDomain, PageParam, TaskVO, TaskUser, TaskItemVO } from '@/types'; /** * 学习任务API服务 */ export const learningTaskApi = { learningTaskPrefix: '/study/tasks', /** * 获取学习任务列表 * @param filter 过滤条件 * @returns Promise> */ async getTaskList(filter?: Partial): Promise> { const response = await api.get(`${this.learningTaskPrefix}/list`, filter); return response.data; }, /** * 根据ID获取任务详情 * @param taskID 任务ID * @returns Promise> */ async getTaskById(taskID: string): Promise> { const response = await api.get(`${this.learningTaskPrefix}/${taskID}`); return response.data; }, /** * 根据ID获取用户任务详情 * @param taskID 任务ID * @returns Promise> */ async getUserTask(taskID: string): Promise> { const response = await api.get(`${this.learningTaskPrefix}/${taskID}/user`); return response.data; }, /** * 获取任务分页列表 * @param pageParam 分页参数 * @param filter 过滤条件 * @returns Promise> */ async getTaskPage(pageParam: PageParam, filter: LearningTask): Promise> { const response = await api.post(`${this.learningTaskPrefix}/page`, {pageParam, filter}); return response.data; }, /** * 创建学习任务 * @param task 任务数据 * @returns Promise> */ async createTask(task: TaskVO): Promise> { const response = await api.post(`${this.learningTaskPrefix}/task`, task); return response.data; }, /** * 更新学习任务 * @param task 任务数据 * @returns Promise> */ async updateTask(task: TaskVO): Promise> { const response = await api.put(`${this.learningTaskPrefix}/task`, task); return response.data; }, /** * 删除学习任务 * @param taskID 任务ID * @returns Promise> */ async deleteTask(taskID: string): Promise> { const response = await api.delete(`${this.learningTaskPrefix}/task`, {taskID}); return response.data; }, /** * 发布学习任务 * @param taskID 任务ID * @returns Promise> */ async publishTask(task: LearningTask): Promise> { const response = await api.put(`${this.learningTaskPrefix}/status`, task); return response.data; }, /** * 获取用户任务进度 * @param userID 用户ID * @param taskID 任务ID * @returns Promise> */ async getUserTaskProgress(userID: string, taskID: string): Promise> { const response = await api.get(`${this.learningTaskPrefix}/task/${taskID}/progress`, { userID }); return response.data; }, /** * 分配任务给用户 * @param taskID 任务ID * @param userID 用户ID * @returns Promise> */ async assignTaskToUser(taskID: string, userID: string): Promise> { const response = await api.post(`${this.learningTaskPrefix}/${taskID}/assign`, null, { params: { userID } }); return response.data; }, /** * 从用户移除任务 * @param taskID 任务ID * @param userID 用户ID * @returns Promise> */ async removeTaskFromUser(taskID: string, userID: string): Promise> { const response = await api.delete(`${this.learningTaskPrefix}/${taskID}/user/${userID}`); return response.data; }, /** * 用户获取个人任务列表(用户视角) * @param pageParam 分页参数 * @param filter 过滤条件 * @returns Promise> */ async getUserTaskPage(pageParam: PageParam, filter?: TaskItemVO): Promise> { const response = await api.post(`${this.learningTaskPrefix}/users/page`, { pageParam, filter }); return response.data; }, async getUserProgress(userID: string): Promise> { const response = await api.post(`${this.learningTaskPrefix}/user/progress/${userID}`); return response.data; }, };