import type { ICourse, ICourseChapter, ICreateResource, IResource, } from "~/types"; import type { IResponse } from "."; export type IPerson = { id: number; courseId: number; createTime: Date; updateTime: Date; createBy: number; updateBy: number; remark: string | null; } & (T extends ITeacher ? { teacher: ITeacher; teacherId: number } : T extends IStudent ? { student: IStudent; studentId: number } : // eslint-disable-next-line @typescript-eslint/no-empty-object-type {}); export interface ITeacher { id: number; userName: string; employeeId: string; schoolId: number; collegeId: number; schoolName: string; collegeName: string; sex: number; email: string; phonenumber: string; avatar: string; status: number; delFlag: number; loginIp: string; loginDate: Date; createBy: number; createTime: Date; updateBy: number; updateTime: Date; remark: string | null; } export interface IStudent { id: number; userName: string; studentId: string; schoolId: number; collegeId: number; schoolName: string; collegeName: string; sex: number; email: string; phonenumber: string; avatar: null | string; status: number; delFlag: null; loginIp: null; loginDate: null; createBy: null; createTime: null; updateBy: null; updateTime: null; remark: null; } export interface ICourseClass { id: number; courseId: number; classId: number; className: string; createBy: number; createTime: Date; updateBy: number; updateTime: Date | null; remark: string | null; notes?: string | null; } export const listCourses = async () => { return await http< IResponse<{ rows: ICourse[]; }> >("/system/manage/list", { method: "GET", }); }; export const listUserCourses = async (userId: number) => { return await http< IResponse<{ rows: ICourse[]; }> >(`/system/manage/leader/${userId}`, { method: "GET", }); }; export const getCourseDetail = async (courseId: string) => { return await http< IResponse<{ data: ICourse; }> >(`/system/manage/${courseId}`, { method: "GET", }); }; export const createCourse = async ( params: Pick< ICourse, | "courseName" | "profile" | "schoolName" | "teacherName" | "semester" | "previewUrl" > ) => { return await http(`/system/manage`, { method: "POST", body: params, }); }; export const deleteCourse = async (courseId: number) => { return await http(`/system/manage/${courseId}`, { method: "DELETE", }); }; export const getCourseChatpers = async (courseId: number) => { return await http< IResponse<{ total: number; rows: ICourseChapter[]; }> >(`/system/chapter/details/${courseId}`, { method: "GET", }); }; export const createCourseChatper = async (params: { courseId: number; title: string; }) => { return await http(`/system/chapter`, { method: "POST", body: params, }); }; export const deleteCourseChatper = async (chapterId: number) => { return await http(`/system/chapter/${chapterId}`, { method: "DELETE", }); }; export const editCourseChapter = async (chapter: ICourseChapter) => { return await http(`/system/chapter`, { method: "PUT", body: chapter, }); }; export const createCourseSection = async (params: { chapterId: number; title: string; }) => { return await http(`/system/section`, { method: "POST", body: params, }); }; export const deleteCourseSection = async (sectionId: number) => { return await http(`/system/section/${sectionId}`, { method: "DELETE", }); }; export const createResource = async (params: ICreateResource) => { return await http(`/system/resource`, { method: "POST", body: params, }); }; export const deleteResource = async (resourceId: number) => { return await http(`/system/resource/${resourceId}`, { method: "DELETE", }); }; export const editResource = async (resource: IResource) => { return await http(`/system/resource`, { method: "PUT", body: resource, }); }; export const addResourceToSection = async (params: { sectionId: number; resourceId: number; }) => { return await http(`/system/sectionResource`, { method: "POST", body: params, }); }; export const addTeacherToCourse = async (params: { courseId: number; teacherId: number; }) => { return await http(`/system/teacherteam`, { method: "POST", body: params, }); }; export const deleteTeacherTeamRecord = async (recordId: number) => { return await http(`/system/teacherteam/${recordId}`, { method: "DELETE", }); }; export const getTeacherTeamByCourse = async (courseId: number) => { return await http< IResponse<{ data: IPerson[]; }> >(`/system/teacherteam/course/${courseId}`, { method: "GET", }); }; export const createClass = async (params: { className: string; notes: string; courseId: number; }) => { return await http(`/system/course/class`, { method: "POST", body: params, }); }; export const deleteClass = async (classId: number) => { return await http(`/system/course/class/${classId}`, { method: "DELETE", }); }; export const getClassListByCourse = async (courseId: number) => { return await http< IResponse<{ data: ICourseClass[]; }> >(`/system/course/class/${courseId}`, { method: "GET", }); }; export const getStudentListByClass = async (classId: number) => { return await http< IResponse<{ data: IPerson[]; }> >(`/system/student/class/${classId}`, { method: "GET", }); }; export const addStudentToClass = async (params: { classId: number; studentId: number; }) => { return await http(`/system/student`, { method: "POST", body: params, }); }; export const deleteStudentClassRecord = async (recordId: number) => { return await http(`/system/student/${recordId}`, { method: "DELETE", }); };