kindergarten_java/reading-platform-frontend/src/api/school-course.ts
zhonghua 23eab43590 fix(teacher): 教师端多项修复
- 课程中心: 修复搜索框重复图标、页面无数据、gradeTags/domainTags 解析
- 备课/上课: 课程/授课 ID 使用 string 避免 Long 精度丢失
- 预约上课: 补充 teacherId/title/lessonDate 等必填字段
- 备课模式: 解析 gradeTags 字符串修复 translateGradeTags 报错
- 涉及: CourseListView, PrepareModeView, LessonView, BroadcastView, LessonRecordsView

Made-with: Cursor
2026-03-16 14:54:18 +08:00

259 lines
7.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { getReadingPlatformAPI } from './generated';
// ============= 类型定义(保持向后兼容) =============
export interface SchoolCourse {
id: number;
tenantId: number;
sourceCourseId: number;
name: string;
description?: string;
createdBy: number;
changesSummary?: string;
usageCount: number;
status: string;
createdAt: string;
updatedAt?: string;
// 保存位置和审核状态
saveLocation?: string;
reviewStatus?: string;
reviewedBy?: number;
reviewedAt?: string;
reviewComment?: string;
// 课程配置字段
themeId?: number;
gradeTags?: string;
domainTags?: string;
duration?: number;
coverImagePath?: string;
coreContent?: string;
introSummary?: string;
introHighlights?: string;
introGoals?: string;
introSchedule?: string;
introKeyPoints?: string;
introMethods?: string;
introEvaluation?: string;
introNotes?: string;
scheduleRefData?: string;
environmentConstruction?: string;
sourceCourse?: {
id: number;
name: string;
coverImagePath?: string;
description?: string;
};
lessons?: SchoolCourseLesson[];
}
export interface SchoolCourseLesson {
id: number;
schoolCourseId: number;
sourceLessonId: number;
lessonType: string;
// 基本信息字段
name: string;
description?: string;
duration: number;
// 资源文件
videoPath?: string;
videoName?: string;
pptPath?: string;
pptName?: string;
pdfPath?: string;
pdfName?: string;
// 课程配置
objectives?: string;
preparation?: string;
extension?: string;
reflection?: string;
changeNote?: string;
stepsData?: string;
}
export interface SchoolCourseReservation {
id: number;
schoolCourseId: number;
teacherId: number;
classId: number;
scheduledDate: string;
scheduledTime?: string;
status: string;
note?: string;
createdAt: string;
}
export interface CreateSchoolCourseData {
sourceCourseId: number;
name: string;
description?: string;
changesSummary?: string;
}
export interface UpdateSchoolCourseData {
name?: string;
description?: string;
changesSummary?: string;
status?: string;
}
export interface CreateReservationData {
teacherId: number;
classId: number;
scheduledDate: string;
scheduledTime?: string;
note?: string;
}
// ============= API 客户端实例 =============
const api = getReadingPlatformAPI();
// ==================== 学校端 API ====================
// 获取校本课程包列表
export function getSchoolCourseList() {
return api.schoolCourseControllerFindAll() as any;
}
// 获取可创建校本课程包的源课程列表
export function getSourceCourses() {
return api.schoolCourseControllerGetSourceCourses() as any;
}
// 获取校本课程包详情
export function getSchoolCourseDetail(id: number) {
return api.schoolCourseControllerFindOne(id) as any;
}
// 创建校本课程包
export function createSchoolCourse(data: CreateSchoolCourseData) {
return api.schoolCourseControllerCreate(data) as any;
}
// 更新校本课程包
export function updateSchoolCourse(id: number, data: UpdateSchoolCourseData) {
return api.schoolCourseControllerUpdate(id, data) as any;
}
// 删除校本课程包
export function deleteSchoolCourse(id: number) {
return api.schoolCourseControllerRemove(id) as any;
}
// 获取校本课程列表
export function getSchoolCourseLessons(schoolCourseId: number) {
return api.schoolCourseControllerFindLessons(schoolCourseId) as any;
}
// 更新校本课程
export function updateSchoolCourseLesson(
schoolCourseId: number,
lessonId: number,
data: Partial<SchoolCourseLesson>,
) {
return api.schoolCourseControllerUpdateLesson(schoolCourseId, lessonId, data) as any;
}
// 获取预约列表
export function getReservations(schoolCourseId: number) {
return api.schoolCourseControllerFindReservations(schoolCourseId) as any;
}
// 创建预约
export function createReservation(schoolCourseId: number, data: CreateReservationData) {
return api.schoolCourseControllerCreateReservation(schoolCourseId, data) as any;
}
// 取消预约
export function cancelReservation(reservationId: number) {
return api.schoolCourseControllerCancelReservation(reservationId) as any;
}
// ==================== 教师端 API ====================
// 获取教师端校本课程列表
export function getTeacherSchoolCourseList() {
return api.teacherSchoolCourseControllerFindAll() as any;
}
// 获取教师端可创建校本课程包的源课程列表
export function getTeacherSourceCourses() {
return api.teacherSchoolCourseControllerGetSourceCourses() as any;
}
// 获取教师端校本课程包详情
export function getTeacherSchoolCourseDetail(id: number) {
return api.teacherSchoolCourseControllerFindOne(id) as any;
}
// 创建教师端校本课程包
export function createTeacherSchoolCourse(data: CreateSchoolCourseData) {
return api.teacherSchoolCourseControllerCreate(data) as any;
}
// 更新教师端校本课程包
export function updateTeacherSchoolCourse(id: number, data: UpdateSchoolCourseData) {
return api.teacherSchoolCourseControllerUpdate(id, data) as any;
}
// 删除教师端校本课程包
export function deleteTeacherSchoolCourse(id: number) {
return api.teacherSchoolCourseControllerRemove(id) as any;
}
// 获取教师端校本课程列表
export function getTeacherSchoolCourseLessons(schoolCourseId: number) {
return api.teacherSchoolCourseControllerFindLessons(schoolCourseId) as any;
}
// 更新教师端校本课程
export function updateTeacherSchoolCourseLesson(
schoolCourseId: number,
lessonId: number,
data: Partial<SchoolCourseLesson>,
) {
return api.teacherSchoolCourseControllerUpdateLesson(schoolCourseId, lessonId, data) as any;
}
// ==================== 新增完整数据API ====================
// 从源课程包创建校本课程包
export function createSchoolCourseFromSource(sourceCourseId: number, saveLocation: 'PERSONAL' | 'SCHOOL') {
return api.schoolCourseControllerCreateFromSource({ sourceCourseId, saveLocation }) as any;
}
export function createTeacherSchoolCourseFromSource(sourceCourseId: number, saveLocation: 'PERSONAL' | 'SCHOOL') {
return api.teacherSchoolCourseControllerCreateFromSource({ sourceCourseId, saveLocation }) as any;
}
// 获取校本课程包完整详情(含课程配置)
export function getSchoolCourseFullDetail(id: number) {
return api.schoolCourseControllerGetFullDetail(id) as any;
}
export function getTeacherSchoolCourseFullDetail(id: number | string) {
return api.teacherSchoolCourseControllerGetFullDetail(id as any) as any;
}
// 更新校本课程包完整数据
export function updateSchoolCourseFull(id: number, data: any) {
return api.schoolCourseControllerUpdateFull(id, data) as any;
}
export function updateTeacherSchoolCourseFull(id: number, data: any) {
return api.teacherSchoolCourseControllerUpdateFull(id, data) as any;
}
// ==================== 审核API仅学校端====================
// 审核通过
export function approveSchoolCourse(id: number, comment?: string) {
return api.schoolCourseControllerApprove(id, { comment }) as any;
}
// 审核驳回
export function rejectSchoolCourse(id: number, comment: string) {
return api.schoolCourseControllerReject(id, { comment }) as any;
}