import { getApi } from './generated'; import type { CourseControllerFindAllParams, CourseControllerGetReviewListParams, } from './generated/model'; // ============= 类型定义(保持向后兼容) ============= export interface CourseQueryParams { page?: number; pageSize?: number; grade?: string; status?: string; keyword?: string; } export interface Course { id: number; name: string; description?: string; pictureBookName?: string; grades: string[]; status: string; version: string; usageCount: number; teacherCount: number; avgRating: number; createdAt: Date; updatedAt: Date; submittedAt?: Date; reviewedAt?: Date; reviewComment?: string; // 新增字段 themeId?: number; theme?: { id: number; name: string }; coreContent?: string; coverImagePath?: string; domainTags?: string[]; gradeTags?: string[]; duration?: number; // 课程介绍字段 introSummary?: string; introHighlights?: string; introGoals?: string; introSchedule?: string; introKeyPoints?: string; introMethods?: string; introEvaluation?: string; introNotes?: string; // 排课计划参考 scheduleRefData?: string; // 环创建设 environmentConstruction?: string; // 关联课程 courseLessons?: CourseLesson[]; } export interface CourseLesson { id: number; courseId: 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; assessmentData?: string; useTemplate: boolean; sortOrder: number; steps?: LessonStep[]; } export interface LessonStep { id: number; lessonId: number; name: string; content?: string; duration: number; objective?: string; resourceIds?: string; sortOrder: number; } export interface ValidationResult { valid: boolean; errors: ValidationError[]; warnings: ValidationWarning[]; } export interface ValidationError { field: string; message: string; code: string; } export interface ValidationWarning { field: string; message: string; code: string; } // ============= API 函数(使用生成的客户端) ============= // 获取 API 客户端实例 const api = getApi(); // 转换查询参数类型 const toFindAllParams = (params: CourseQueryParams): CourseControllerFindAllParams => ({ page: params.page, pageSize: params.pageSize, grade: params.grade, status: params.status, keyword: params.keyword, }); // 获取课程包列表 export function getCourses(params: CourseQueryParams): Promise<{ items: Course[]; total: number; page: number; pageSize: number; }> { return api.courseControllerFindAll(toFindAllParams(params)) as any; } // 获取审核列表 export function getReviewList(params: CourseQueryParams): Promise<{ items: Course[]; total: number; page: number; pageSize: number; }> { const findAllParams = toFindAllParams(params) as CourseControllerGetReviewListParams; return api.courseControllerGetReviewList(findAllParams) as any; } // 获取课程包详情 export function getCourse(id: number): Promise { return api.courseControllerFindOne(String(id)) as any; } // 创建课程包 export function createCourse(data: any): Promise { return api.courseControllerCreate(data) as any; } // 更新课程包 export function updateCourse(id: number, data: any): Promise { return api.courseControllerUpdate(String(id), data) as any; } // 删除课程包 export function deleteCourse(id: number): Promise { return api.courseControllerRemove(String(id)) as any; } // 验证课程完整性 export function validateCourse(id: number): Promise { return api.courseControllerValidate(String(id)) as any; } // 提交审核 export function submitCourse(id: number, copyrightConfirmed: boolean): Promise { return api.courseControllerSubmit(String(id), { copyrightConfirmed }) as any; } // 撤销审核 export function withdrawCourse(id: number): Promise { return api.courseControllerWithdraw(String(id)) as any; } // 审核通过 export function approveCourse(id: number, data: { checklist?: any; comment?: string }): Promise { return api.courseControllerApprove(String(id), data) as any; } // 审核驳回 export function rejectCourse(id: number, data: { checklist?: any; comment: string }): Promise { return api.courseControllerReject(String(id), data) as any; } // 直接发布(超级管理员) export function directPublishCourse(id: number, skipValidation?: boolean): Promise { return api.courseControllerDirectPublish(String(id), { skipValidation }) as any; } // 发布课程包 export function publishCourse(id: number): Promise { return api.courseControllerPublish(String(id)) as any; } // 下架课程包 export function unpublishCourse(id: number): Promise { return api.courseControllerUnpublish(String(id)) as any; } // 重新发布 export function republishCourse(id: number): Promise { return api.courseControllerRepublish(String(id)) as any; } // 获取课程包统计数据 export function getCourseStats(id: number): Promise { return api.courseControllerGetStats(String(id)) as any; } // 获取版本历史 export function getCourseVersions(id: number): Promise { return api.courseControllerGetVersionHistory(String(id)) as any; } // ============= 常量 ============= // 课程状态映射 export const COURSE_STATUS_MAP: Record = { DRAFT: { label: '草稿', color: 'default' }, PENDING: { label: '审核中', color: 'processing' }, REJECTED: { label: '已驳回', color: 'error' }, PUBLISHED: { label: '已发布', color: 'success' }, ARCHIVED: { label: '已下架', color: 'warning' }, }; // 获取状态显示信息 export function getCourseStatusInfo(status: string) { return COURSE_STATUS_MAP[status] || { label: status, color: 'default' }; }