IntelliClass_FE/api/course.ts

173 lines
3.5 KiB
TypeScript

import type { ICourse, ICourseChapter, ICourseResource } from "~/types";
import type { IResponse } from ".";
export interface ICourseTeamMember {
id: number;
teacherId: number;
courseId: number;
teacher: ITeacher;
createTime: Date;
updateTime: Date;
createBy: Date;
updateBy: number;
remark: string | null;
}
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 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<IResponse>(`/system/manage`, {
method: "POST",
body: params,
});
};
export const deleteCourse = async (courseId: number) => {
return await http<IResponse>(`/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<IResponse>(`/system/chapter`, {
method: "POST",
body: params,
});
};
export const deleteCourseChatper = async (chapterId: number) => {
return await http<IResponse>(`/system/chapter/${chapterId}`, {
method: "DELETE",
});
};
export const createCourseSection = async (params: {
chapterId: number;
title: string;
}) => {
return await http<IResponse>(`/system/section`, {
method: "POST",
body: params,
});
};
export const deleteCourseSection = async (sectionId: number) => {
return await http<IResponse>(`/system/section/${sectionId}`, {
method: "DELETE",
});
};
export const createCourseResource = async (params: ICourseResource) => {
return await http<IResponse>(`/system/resource`, {
method: "POST",
body: params,
});
};
export const deleteCourseResource = async (resourceId: number) => {
return await http<IResponse>(`/system/resource/${resourceId}`, {
method: "DELETE",
});
};
export const addTeacherToCourse = async (params: {
courseId: number;
teacherId: number;
}) => {
return await http<IResponse>(`/system/teacherteam`, {
method: "POST",
body: params,
});
};
export const deleteTeacherTeamRecord = async (recordId: number) => {
return await http<IResponse>(`/system/teacherteam/${recordId}`, {
method: "DELETE",
});
};
export const getTeacherTeamByCourse = async (courseId: number) => {
return await http<
IResponse<{
data: ICourseTeamMember[];
}>
>(`/system/teacherteam/course/${courseId}`, {
method: "GET",
});
};