kindergarten_java/reading-platform-frontend/src/api/course-center.ts

92 lines
2.0 KiB
TypeScript

import { http } from './index';
// ============= 类型定义 =============
/** 套餐信息 */
export interface CourseCollection {
id: number;
name: string;
description?: string;
packageCount: number;
gradeLevels?: string[];
status: string;
startDate?: string;
endDate?: string;
}
/** 课程包中的课程项(用于提取课程配置) */
export interface CoursePackageCourseItem {
id?: number;
name?: string;
lessonType?: string;
}
/** 课程包信息 */
export interface CoursePackage {
id: number;
name: string;
description?: string;
coverImagePath?: string;
pictureBookName?: string;
gradeTags: string[];
domainTags?: string[]; // 不再展示,由课程配置替代
courses?: CoursePackageCourseItem[]; // 用于课程配置展示
themeId?: number;
themeName?: string;
durationMinutes?: number;
usageCount?: number;
avgRating?: number;
sortOrder?: number;
}
/** 筛选元数据 - 年级选项 */
export interface GradeOption {
label: string;
count: number;
}
/** 筛选元数据 - 课程配置选项 */
export interface LessonTypeOption {
lessonType: string;
name: string;
count: number;
}
/** 筛选元数据响应 */
export interface FilterMetaResponse {
grades: GradeOption[];
lessonTypes: LessonTypeOption[];
}
// ============= API 接口 =============
/**
* 获取租户的课程套餐列表
*/
export function getCollections(): Promise<CourseCollection[]> {
return http.get<CourseCollection[]>('/v1/school/packages');
}
/**
* 获取套餐下的课程包列表(支持筛选)
*/
export function getPackages(
collectionId: number,
params?: {
grade?: string;
lessonType?: string;
keyword?: string;
}
): Promise<CoursePackage[]> {
return http.get<CoursePackage[]>(`/v1/school/packages/${collectionId}/packages`, {
params,
});
}
/**
* 获取套餐的筛选元数据
*/
export function getFilterMeta(collectionId: number): Promise<FilterMetaResponse> {
return http.get<FilterMetaResponse>(`/v1/school/packages/${collectionId}/filter-meta`);
}