feat: 套餐管理功能增强

新增功能:
- 后端新增套餐状态管理端点(下架、重新发布、撤销审核)
- 前端套餐详情页增加完整状态流转操作
- 前端套餐管理增加课程包添加/移除功能
- 修复套餐详情页空值引用错误
- 新增 collections.ts API 封装模块

后端变更:
- AdminCourseCollectionController 新增 archive/republish/withdraw 端点
- CourseCollectionService 新增对应服务方法

前端变更:
- collections.ts 新增 API 封装
- CollectionDetailView 增加状态管理按钮和课程包管理
- CollectionListView 增加状态筛选和操作按钮
- 修复 route 配置和 API 调用路径
- 合并远程更新,解决 TenantListView.vue 冲突

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Opus 4.6 2026-03-18 18:19:25 +08:00
parent 337dcc43d8
commit ddd3d8c152
183 changed files with 5397 additions and 3602 deletions

View File

@ -505,6 +505,57 @@ definePage({
---
## 代码修改验证流程
**重要**: 修改代码后必须执行以下验证步骤,确保没有影响其他模块。
### 修改后验证清单(必须执行)
**1. 检查是否影响了其他模块**
- 确认修改的文件不会被其他模块引用
- 检查是否有共享组件、工具类或配置被修改
- 验证 API 路径是否与预期一致(超管端用 `/api/v1/admin/*`,学校端用 `/api/v1/school/*`
**2. 确认 API 调用的正确性**
- 前端调用的 API 路径与后端 Controller 的 `@RequestMapping` 一致
- 返回的数据结构与前端期望的类型匹配
- 分页接口使用 `PageResult<T>` 统一结构
**3. 验证数据流向**
- 数据库表名、字段名与实体类映射正确
- 三层架构Controller → Service → Mapper数据传递使用正确的类型
- DTO/VO 仅在 Controller 层使用Service 和 Mapper 层使用 Entity
### 问题定位步骤
当发现功能异常时,按以下步骤定位:
1. **打开浏览器开发者工具F12**
- 查看 Console 标签页:是否有 JavaScript 错误
- 查看 Network 标签页API 请求返回了什么数据
- 检查请求路径是否正确(应该 `/api/v1/...` 不是 `/api/api/v1/...`
2. **检查后端日志**
- 确认后端服务是否启动(端口 8480
- 查看 SQL 查询日志,确认查询的表和字段正确
- 检查是否有异常堆栈信息
3. **验证数据库数据**
- 确认数据库表中的数据是否符合预期
- 检查关联关系(外键、中间表)是否正确
- 验证三层架构的数据层级关系是否混淆
### 常见问题排查
| 问题症状 | 可能原因 | 排查方法 |
|---------|---------|---------|
| API 404 错误 | 前端调用路径与后端不匹配 | 对比前端 API 路径和后端 `@RequestMapping` |
| 数据格式错误 | 返回类型与前端期望不符 | 检查后端返回的 VO 和前端类型定义 |
| 空数据或错误数据 | 查询了错误的表或字段 | 查看后端 SQL 日志和数据库实际数据 |
| 编译错误 | 类型不匹配或导入错误 | 运行 `npm run build``mvn compile` 检查 |
---
## 测试完成后清理
**重要**: 测试完成后请关闭前后端服务,避免占用端口和资源。
@ -699,6 +750,6 @@ npm run test:e2e:ui
| 后端测试(待创建) | `reading-platform-java/src/test/` |
| 启动脚本 | `start-all.sh` |
*本规范最后更新于 2026-03-17*
*本规范最后更新于 2026-03-18*
*技术栈:统一使用 Spring Boot (Java) 后端*
*JDK 版本17必须*

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,7 @@ import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
const __dirname = dirname(fileURLToPath(import.meta.url));
const TARGET = 'http://localhost:8080/v3/api-docs';
const TARGET = 'http://localhost:8480/v3/api-docs';
const OUTPUT = join(__dirname, '../openapi.json');
async function fetchAndFix() {

View File

@ -0,0 +1,224 @@
import { getReadingPlatformAPI } from './generated';
const api = getReadingPlatformAPI();
// ============= 类型定义 =============
export interface CollectionQueryParams {
pageNum?: number;
pageSize?: number;
status?: string;
}
export interface Collection {
id: number;
name: string;
description?: string;
price: number;
discountPrice?: number;
discountType?: string;
gradeLevels: string[];
packageCount?: number;
status: string;
createdAt: string;
updatedAt: string;
packages?: CollectionPackage[];
reviewComment?: string;
}
export interface CollectionPackage {
id: number;
name: string;
description?: string;
}
export interface CreateCollectionDto {
name: string;
description?: string;
price: number;
discountPrice?: number;
discountType?: string;
gradeLevels: string[];
}
export interface UpdateCollectionDto {
name?: string;
description?: string;
price?: number;
discountPrice?: number;
discountType?: string;
gradeLevels?: string[];
}
// ============= 辅助函数 =============
// 修复 gradeLevels 格式:后端返回的格式是 ["[\"小班\"", " \"中班\""]
// 需要转换为 ["小班", "中班"]
function fixGradeLevels(gradeLevels: string | string[] | undefined): string[] {
if (!gradeLevels) return [];
// 如果是字符串数组,尝试拼接并解析
if (Array.isArray(gradeLevels)) {
if (gradeLevels.length === 0) return [];
// 检查是否是被分割的 JSON 字符串
if (gradeLevels[0]?.startsWith('[')) {
try {
const joined = gradeLevels.join('');
return JSON.parse(joined);
} catch {
return [];
}
}
return gradeLevels;
}
// 如果是字符串,尝试解析 JSON
if (typeof gradeLevels === 'string') {
try {
return JSON.parse(gradeLevels);
} catch {
return [];
}
}
return [];
}
// 转换 API 响应数据为前端格式
function normalizeCollection(data: any): Collection {
// 如果数据是包装的响应格式 { code, message, data },提取 data 字段
const collectionData = data?.data ?? data;
if (!collectionData) {
throw new Error('套餐数据为空');
}
return {
...collectionData,
id: Number(collectionData.id),
price: Number(collectionData.price),
discountPrice: collectionData.discountPrice ? Number(collectionData.discountPrice) : undefined,
gradeLevels: fixGradeLevels(collectionData.gradeLevels),
};
}
function normalizePageResult(raw: any): {
items: Collection[];
total: number;
page: number;
pageSize: number;
} {
const list = raw?.list ?? raw?.items ?? [];
return {
items: Array.isArray(list) ? list.map(normalizeCollection) : [],
total: Number(raw?.total ?? 0),
page: Number(raw?.pageNum ?? raw?.page ?? 1),
pageSize: Number(raw?.pageSize ?? 10),
};
}
// ============= API 函数 =============
// 获取课程套餐列表
export function getCollections(params: CollectionQueryParams = {}): Promise<{
items: Collection[];
total: number;
page: number;
pageSize: number;
}> {
return (api.page as any)({
pageNum: params.pageNum ?? 1,
pageSize: params.pageSize ?? 10,
...(params.status ? { status: params.status } : {}),
}).then(normalizePageResult) as any;
}
// 获取课程套餐详情
export async function getCollection(id: number | string): Promise<Collection> {
const data = await (api.findOne2 as any)(Number(id)) as any;
if (!data) {
throw new Error('获取套餐详情失败:返回数据为空');
}
return normalizeCollection(data);
}
// 创建课程套餐
export function createCollection(data: CreateCollectionDto): Promise<Collection> {
return (api.create as any)(data) as any;
}
// 更新课程套餐
export function updateCollection(id: number | string, data: UpdateCollectionDto): Promise<Collection> {
return (api.update2 as any)(id as number, data) as any;
}
// 删除课程套餐
export function deleteCollection(id: number | string): Promise<void> {
return (api.delete2 as any)(id as number) as any;
}
// 设置套餐课程包
export function setCollectionPackages(id: number | string, packageIds: number[]): Promise<void> {
return (api.setPackages as any)(id as number, packageIds) as any;
}
// 发布课程套餐
export function publishCollection(id: number | string): Promise<void> {
return (api.publish as any)(id as number) as any;
}
// 下架课程套餐
export function archiveCollection(id: number | string): Promise<void> {
return (api.archive as any)(id as number) as any;
}
// 重新发布课程套餐
export function republishCollection(id: number | string): Promise<void> {
return (api.republish as any)(id as number) as any;
}
// 撤销审核
export function withdrawCollection(id: number | string): Promise<void> {
return (api.withdraw as any)(id as number) as any;
}
// 授予租户
export function grantToTenant(collectionId: number | string, tenantIds: number[]): Promise<void> {
return (api.grantToTenant as any)(collectionId as number, tenantIds) as any;
}
// ============= 常量 =============
export const COLLECTION_STATUS_MAP: Record<string, { label: string; color: string }> = {
DRAFT: { label: '草稿', color: 'default' },
PENDING: { label: '待审核', color: 'processing' },
APPROVED: { label: '已通过', color: 'success' },
PUBLISHED: { label: '已发布', color: 'blue' },
ARCHIVED: { label: '已下架', color: 'warning' },
REJECTED: { label: '已驳回', color: 'error' },
};
export function getCollectionStatusInfo(status: string) {
return COLLECTION_STATUS_MAP[status] || { label: status, color: 'default' };
}
// 解析适用年级
export function parseGradeLevels(gradeLevels: string | string[]): string[] {
if (Array.isArray(gradeLevels)) return gradeLevels;
try {
return JSON.parse(gradeLevels || '[]');
} catch {
return [];
}
}
// 格式化价格
export function formatPrice(price: number | null | undefined): string {
if (price === null || price === undefined) return '-';
return `¥${(price / 100).toFixed(2)}`;
}
// 格式化日期
export function formatDate(date: string): string {
return new Date(date).toLocaleString('zh-CN');
}

View File

@ -197,9 +197,9 @@ export function approveCourse(id: number, data: { checklist?: any; comment?: str
return api.publishCourse(id) as any;
}
// 审核驳回(课程专用,调用 POST /api/v1/admin/courses/{id}/reject
// 审核驳回(课程专用,调用 POST /api/v1/admin/packages/{id}/reject
export function rejectCourse(id: number, data: { checklist?: any; comment: string }): Promise<any> {
return axios.post(`/api/v1/admin/courses/${id}/reject`, { comment: data.comment }).then((res: any) => {
return axios.post(`/api/v1/admin/packages/${id}/reject`, { comment: data.comment }).then((res: any) => {
const body = res?.data;
if (body && typeof body === 'object' && 'code' in body && body.code !== 200 && body.code !== 0) {
throw new Error(body.message || '驳回失败');

View File

@ -6,6 +6,7 @@
* OpenAPI spec version: 1.0.0
*/
import type {
AddPackageToCollectionParams,
BasicSettingsUpdateRequest,
BindStudentParams,
ChangePasswordParams,
@ -21,7 +22,6 @@ import type {
DeleteFileBody,
ExportGrowthRecordsParams,
ExportLessonsParams,
FindAll1Params,
FindAllItemsParams,
FindAllLibrariesParams,
GenerateEditTokenParams,
@ -55,6 +55,7 @@ import type {
GetRecentGrowthRecordsParams,
GetSchedules1Params,
GetSchedulesParams,
GetSchoolCoursesParams,
GetStudentPageParams,
GetTaskPage1Params,
GetTaskPageParams,
@ -65,6 +66,7 @@ import type {
GetTenantPageParams,
GetTimetable1Params,
GetTimetableParams,
GrantCollectionRequest,
GrowthRecordCreateRequest,
GrowthRecordUpdateRequest,
LessonCreateRequest,
@ -74,9 +76,6 @@ import type {
LessonUpdateRequest,
LoginRequest,
NotificationSettingsUpdateRequest,
PackageCreateRequest,
PackageGrantRequest,
PackageReviewRequest,
PageParams,
ParentCreateRequest,
ParentUpdateRequest,
@ -1224,9 +1223,9 @@ const deleteItem = (
}
/**
* @summary
* @summary
*/
const findOne1 = (
const getCourse1 = (
id: number,
) => {
return customMutator<Blob>(
@ -1237,72 +1236,14 @@ const findOne1 = (
}
/**
* @summary
*/
const update1 = (
id: number,
packageCreateRequest: PackageCreateRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}`, method: 'PUT',
headers: {'Content-Type': 'application/json', },
data: packageCreateRequest,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const delete1 = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}`, method: 'DELETE',
responseType: 'blob'
},
);
}
/**
* @summary
*/
const setCourses = (
id: number,
setCoursesBody: number[],
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}/courses`, method: 'PUT',
headers: {'Content-Type': 'application/json', },
data: setCoursesBody,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const getCourse1 = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses/${id}`, method: 'GET',
responseType: 'blob'
},
);
}
/**
* @summary
* @summary
*/
const updateCourse = (
id: number,
courseUpdateRequest: CourseUpdateRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses/${id}`, method: 'PUT',
{url: `/api/v1/admin/packages/${id}`, method: 'PUT',
headers: {'Content-Type': 'application/json', },
data: courseUpdateRequest,
responseType: 'blob'
@ -1311,13 +1252,13 @@ const updateCourse = (
}
/**
* @summary
* @summary
*/
const deleteCourse = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses/${id}`, method: 'DELETE',
{url: `/api/v1/admin/packages/${id}`, method: 'DELETE',
responseType: 'blob'
},
);
@ -1343,7 +1284,7 @@ const reorderSteps = (
/**
* @summary
*/
const findOne2 = (
const findOne1 = (
courseId: number,
id: number,
) => {
@ -1357,7 +1298,7 @@ const findOne2 = (
/**
* @summary
*/
const update2 = (
const update1 = (
courseId: number,
id: number,
courseLessonCreateRequest: CourseLessonCreateRequest,
@ -1374,7 +1315,7 @@ const update2 = (
/**
* @summary
*/
const delete2 = (
const delete1 = (
courseId: number,
id: number,
) => {
@ -1435,7 +1376,7 @@ const reorder1 = (
/**
* @summary
*/
const findOne3 = (
const findOne2 = (
id: number,
) => {
return customMutator<Blob>(
@ -1448,7 +1389,7 @@ const findOne3 = (
/**
* @summary
*/
const update3 = (
const update2 = (
id: number,
createCollectionRequest: CreateCollectionRequest,
) => {
@ -1464,7 +1405,7 @@ const update3 = (
/**
* @summary
*/
const delete3 = (
const delete2 = (
id: number,
) => {
return customMutator<Blob>(
@ -2082,7 +2023,8 @@ const resetPassword1 = (
}
/**
* @summary
* @deprecated
* @summary 使
*/
const renewPackage = (
id: number,
@ -2097,6 +2039,22 @@ const renewPackage = (
);
}
/**
* @summary
*/
const renewCollection = (
collectionId: number,
renewRequest: RenewRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/school/packages/${collectionId}/renew`, method: 'POST',
headers: {'Content-Type': 'application/json', },
data: renewRequest,
responseType: 'blob'
},
);
}
/**
* @summary Get growth record page
*/
@ -2359,6 +2317,16 @@ const changePassword = (
);
}
const repairFlyway = (
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/util/repair-flyway`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
*/
@ -2503,10 +2471,10 @@ const batchDeleteItems = (
}
/**
* @summary
* @summary
*/
const findAll1 = (
params?: FindAll1Params,
const getCoursePage1 = (
params: GetCoursePage1Params,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages`, method: 'GET',
@ -2517,53 +2485,24 @@ const findAll1 = (
}
/**
* @summary
* @summary
*/
const create1 = (
packageCreateRequest: PackageCreateRequest,
const createCourse = (
courseCreateRequest: CourseCreateRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages`, method: 'POST',
headers: {'Content-Type': 'application/json', },
data: packageCreateRequest,
data: courseCreateRequest,
responseType: 'blob'
},
);
}
/**
* @summary
* @summary
*/
const submit = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}/submit`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
*/
const review = (
id: number,
packageReviewRequest: PackageReviewRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}/review`, method: 'POST',
headers: {'Content-Type': 'application/json', },
data: packageReviewRequest,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const publish = (
const publishCourse = (
id: number,
) => {
return customMutator<Blob>(
@ -2574,84 +2513,42 @@ const publish = (
}
/**
* @summary 线
*/
const offline = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}/offline`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
*/
const grantToTenant = (
id: number,
packageGrantRequest: PackageGrantRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/${id}/grant`, method: 'POST',
headers: {'Content-Type': 'application/json', },
data: packageGrantRequest,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const getCoursePage1 = (
params: GetCoursePage1Params,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses`, method: 'GET',
params,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const createCourse = (
courseCreateRequest: CourseCreateRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses`, method: 'POST',
headers: {'Content-Type': 'application/json', },
data: courseCreateRequest,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const publishCourse = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses/${id}/publish`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
* @summary
*/
const archiveCourse = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/courses/${id}/archive`, method: 'POST',
{url: `/api/v1/admin/packages/${id}/archive`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* packageCount
* @summary
*/
const fixCollectionPackages = (
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/data-fix/fix-collection-packages`, method: 'POST',
responseType: 'blob'
},
);
}
/**
*
* @summary
*/
const addPackageToCollection = (
params: AddPackageToCollectionParams,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/data-fix/add-package-to-collection`, method: 'POST',
params,
responseType: 'blob'
},
);
@ -2660,7 +2557,7 @@ const archiveCourse = (
/**
* @summary
*/
const findAll2 = (
const findAll1 = (
courseId: number,
) => {
return customMutator<Blob>(
@ -2673,7 +2570,7 @@ const findAll2 = (
/**
* @summary
*/
const create2 = (
const create1 = (
courseId: number,
courseLessonCreateRequest: CourseLessonCreateRequest,
) => {
@ -2734,7 +2631,7 @@ const page = (
/**
* @summary
*/
const create3 = (
const create2 = (
createCollectionRequest: CreateCollectionRequest,
) => {
return customMutator<Blob>(
@ -2746,10 +2643,36 @@ const create3 = (
);
}
/**
* @summary
*/
const withdraw = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/collections/${id}/withdraw`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
*/
const republish = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/collections/${id}/republish`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
*/
const publish1 = (
const publish = (
id: number,
) => {
return customMutator<Blob>(
@ -2759,6 +2682,35 @@ const publish1 = (
);
}
/**
* @summary
*/
const grantToTenant = (
id: number,
grantCollectionRequest: GrantCollectionRequest,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/collections/${id}/grant`, method: 'POST',
headers: {'Content-Type': 'application/json', },
data: grantCollectionRequest,
responseType: 'blob'
},
);
}
/**
* @summary
*/
const archive = (
id: number,
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/collections/${id}/archive`, method: 'POST',
responseType: 'blob'
},
);
}
/**
* @summary
*/
@ -3470,17 +3422,18 @@ const exportGrowthRecords = (
* @summary
*/
const getSchoolCourses = (
params?: GetSchoolCoursesParams,
) => {
return customMutator<Blob>(
{url: `/api/v1/school/courses`, method: 'GET',
params,
responseType: 'blob'
},
);
}
/**
* @summary
* @summary
*/
const getSchoolCourse = (
id: number,
@ -3821,13 +3774,14 @@ const getStats1 = (
}
/**
* @summary
* packageCount
* @summary
*/
const getPublishedPackages = (
const checkConsistency = (
) => {
return customMutator<Blob>(
{url: `/api/v1/admin/packages/all`, method: 'GET',
{url: `/api/v1/admin/data-fix/check-consistency`, method: 'GET',
responseType: 'blob'
},
);
@ -3862,7 +3816,7 @@ const deleteFile = (
);
}
return {getTask,updateTask,deleteTask,getTemplate,updateTemplate,deleteTemplate,getSchedule,updateSchedule,cancelSchedule,getLesson,updateLesson,getLessonProgress,saveLessonProgress,getGrowthRecord,updateGrowthRecord,deleteGrowthRecord,getTeacher,updateTeacher,deleteTeacher,getTask1,updateTask1,deleteTask1,getTemplate1,updateTemplate1,deleteTemplate1,getStudent,updateStudent,deleteStudent,getSettings,updateSettings,getSecuritySettings,updateSecuritySettings,getNotificationSettings,updateNotificationSettings,getBasicSettings,updateBasicSettings,getSchedule1,updateSchedule1,cancelSchedule1,getParent,updateParent,deleteParent,getGrowthRecord1,updateGrowthRecord1,deleteGrowthRecord1,getClass,updateClass,deleteClass,updateClassTeacher,removeClassTeacher,getGrowthRecord2,updateGrowthRecord2,deleteGrowthRecord2,findOne,update,_delete,reorder,getTenant,updateTenant,deleteTenant,updateTenantStatus,updateTenantQuota,getAllSettings,updateSettings1,getStorageSettings,updateStorageSettings,getSecuritySettings1,updateSecuritySettings1,getNotificationSettings1,updateNotificationSettings1,getBasicSettings1,updateBasicSettings1,findLibrary,updateLibrary,deleteLibrary,findItem,updateItem,deleteItem,findOne1,update1,delete1,setCourses,getCourse1,updateCourse,deleteCourse,reorderSteps,findOne2,update2,delete2,updateStep,removeStep,reorder1,findOne3,update3,delete3,setPackages,getTaskPage,createTask,getTemplates,createTemplate,createFromTemplate,getSchedules,createSchedule,markAsRead,markAllAsRead,getMyLessons,createLesson,saveStudentRecord,batchSaveStudentRecords,startLesson,getLessonFeedback,submitFeedback,completeLesson,cancelLesson,createLessonFromSchedule,startLessonFromSchedule,getGrowthRecordPage,createGrowthRecord,getTeacherPage,createTeacher,resetPassword,getTaskPage1,createTask1,getTemplates1,createTemplate1,getStudentPage,createStudent,getSchedules1,createSchedule1,checkConflict,batchCreateSchedules,createSchedulesByClasses,getParentPage,createParent,bindStudent,unbindStudent,resetPassword1,renewPackage,getGrowthRecordPage1,createGrowthRecord1,getClassPage,createClass,getClassTeachers1,assignTeachers,getClassStudents1,assignStudents,completeTask,markAsRead1,markAllAsRead1,createGrowthRecord2,refreshToken,uploadFile,refreshToken1,logout,login,changePassword,findAll,create,getTenantPage,createTenant,resetTenantPassword,findAllLibraries,createLibrary,findAllItems,createItem,batchDeleteItems,findAll1,create1,submit,review,publish,offline,grantToTenant,getCoursePage1,createCourse,publishCourse,archiveCourse,findAll2,create2,findSteps,createStep,page,create3,publish1,getWeeklyStats,getTodayLessons,getDefaultTemplate,getAllStudents,getTodaySchedules,getTimetable,getRecommendedCourses,getMyNotifications,getNotification,getUnreadCount,getStudentRecords,getTodayLessons1,getLessonTrend,getFeedbacks,getFeedbackStats,getDashboard,getCoursePage,getCourse,getAllCourses,getCourseUsage,getClasses,getClassTeachers,getClassStudents,getDefaultTemplate1,getSchoolStats,getActiveTeachers,getLessonTrend1,getCourseUsageStats,getCourseDistribution,getRecentActivities,getTimetable1,getCoursePackageLessonTypes,getCalendarViewData,getTeacherReports,getStudentReports,getOverview,getCourseReports,getParentChildren,findTenantCollections,getPackagesByCollection,getPackageCourses,getPackageInfo,getPackageUsage,findTenantPackages,getLogList,getLogDetail,getLogStats,getFeedbacks1,getFeedbackStats1,exportTeacherStats,exportStudentStats,exportLessons,exportGrowthRecords,getSchoolCourses,getSchoolCourse,getMyTasks,getTask2,getTasksByStudent,getMyNotifications1,getNotification1,getUnreadCount1,getGrowthRecordsByStudent,getRecentGrowthRecords,getMyChildren,getChild,getChildGrowth,generateEditToken,generateReadOnlyToken,getOssToken,getCurrentUser,getTenantStats,getAllActiveTenants,getStats,getTrendData,getActiveTenants,getPopularCourses,getRecentActivities1,getTenantDefaults,getStats1,getPublishedPackages,findByType,deleteFile}};
return {getTask,updateTask,deleteTask,getTemplate,updateTemplate,deleteTemplate,getSchedule,updateSchedule,cancelSchedule,getLesson,updateLesson,getLessonProgress,saveLessonProgress,getGrowthRecord,updateGrowthRecord,deleteGrowthRecord,getTeacher,updateTeacher,deleteTeacher,getTask1,updateTask1,deleteTask1,getTemplate1,updateTemplate1,deleteTemplate1,getStudent,updateStudent,deleteStudent,getSettings,updateSettings,getSecuritySettings,updateSecuritySettings,getNotificationSettings,updateNotificationSettings,getBasicSettings,updateBasicSettings,getSchedule1,updateSchedule1,cancelSchedule1,getParent,updateParent,deleteParent,getGrowthRecord1,updateGrowthRecord1,deleteGrowthRecord1,getClass,updateClass,deleteClass,updateClassTeacher,removeClassTeacher,getGrowthRecord2,updateGrowthRecord2,deleteGrowthRecord2,findOne,update,_delete,reorder,getTenant,updateTenant,deleteTenant,updateTenantStatus,updateTenantQuota,getAllSettings,updateSettings1,getStorageSettings,updateStorageSettings,getSecuritySettings1,updateSecuritySettings1,getNotificationSettings1,updateNotificationSettings1,getBasicSettings1,updateBasicSettings1,findLibrary,updateLibrary,deleteLibrary,findItem,updateItem,deleteItem,getCourse1,updateCourse,deleteCourse,reorderSteps,findOne1,update1,delete1,updateStep,removeStep,reorder1,findOne2,update2,delete2,setPackages,getTaskPage,createTask,getTemplates,createTemplate,createFromTemplate,getSchedules,createSchedule,markAsRead,markAllAsRead,getMyLessons,createLesson,saveStudentRecord,batchSaveStudentRecords,startLesson,getLessonFeedback,submitFeedback,completeLesson,cancelLesson,createLessonFromSchedule,startLessonFromSchedule,getGrowthRecordPage,createGrowthRecord,getTeacherPage,createTeacher,resetPassword,getTaskPage1,createTask1,getTemplates1,createTemplate1,getStudentPage,createStudent,getSchedules1,createSchedule1,checkConflict,batchCreateSchedules,createSchedulesByClasses,getParentPage,createParent,bindStudent,unbindStudent,resetPassword1,renewPackage,renewCollection,getGrowthRecordPage1,createGrowthRecord1,getClassPage,createClass,getClassTeachers1,assignTeachers,getClassStudents1,assignStudents,completeTask,markAsRead1,markAllAsRead1,createGrowthRecord2,refreshToken,uploadFile,refreshToken1,logout,login,changePassword,repairFlyway,findAll,create,getTenantPage,createTenant,resetTenantPassword,findAllLibraries,createLibrary,findAllItems,createItem,batchDeleteItems,getCoursePage1,createCourse,publishCourse,archiveCourse,fixCollectionPackages,addPackageToCollection,findAll1,create1,findSteps,createStep,page,create2,withdraw,republish,publish,grantToTenant,archive,getWeeklyStats,getTodayLessons,getDefaultTemplate,getAllStudents,getTodaySchedules,getTimetable,getRecommendedCourses,getMyNotifications,getNotification,getUnreadCount,getStudentRecords,getTodayLessons1,getLessonTrend,getFeedbacks,getFeedbackStats,getDashboard,getCoursePage,getCourse,getAllCourses,getCourseUsage,getClasses,getClassTeachers,getClassStudents,getDefaultTemplate1,getSchoolStats,getActiveTeachers,getLessonTrend1,getCourseUsageStats,getCourseDistribution,getRecentActivities,getTimetable1,getCoursePackageLessonTypes,getCalendarViewData,getTeacherReports,getStudentReports,getOverview,getCourseReports,getParentChildren,findTenantCollections,getPackagesByCollection,getPackageCourses,getPackageInfo,getPackageUsage,findTenantPackages,getLogList,getLogDetail,getLogStats,getFeedbacks1,getFeedbackStats1,exportTeacherStats,exportStudentStats,exportLessons,exportGrowthRecords,getSchoolCourses,getSchoolCourse,getMyTasks,getTask2,getTasksByStudent,getMyNotifications1,getNotification1,getUnreadCount1,getGrowthRecordsByStudent,getRecentGrowthRecords,getMyChildren,getChild,getChildGrowth,generateEditToken,generateReadOnlyToken,getOssToken,getCurrentUser,getTenantStats,getAllActiveTenants,getStats,getTrendData,getActiveTenants,getPopularCourses,getRecentActivities1,getTenantDefaults,getStats1,checkConsistency,findByType,deleteFile}};
export type GetTaskResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getTask']>>>
export type UpdateTaskResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['updateTask']>>>
export type DeleteTaskResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['deleteTask']>>>
@ -3941,23 +3895,19 @@ export type DeleteLibraryResult = NonNullable<Awaited<ReturnType<ReturnType<type
export type FindItemResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findItem']>>>
export type UpdateItemResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['updateItem']>>>
export type DeleteItemResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['deleteItem']>>>
export type FindOne1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findOne1']>>>
export type Update1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['update1']>>>
export type Delete1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['delete1']>>>
export type SetCoursesResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['setCourses']>>>
export type GetCourse1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getCourse1']>>>
export type UpdateCourseResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['updateCourse']>>>
export type DeleteCourseResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['deleteCourse']>>>
export type ReorderStepsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['reorderSteps']>>>
export type FindOne2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findOne2']>>>
export type Update2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['update2']>>>
export type Delete2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['delete2']>>>
export type FindOne1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findOne1']>>>
export type Update1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['update1']>>>
export type Delete1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['delete1']>>>
export type UpdateStepResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['updateStep']>>>
export type RemoveStepResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['removeStep']>>>
export type Reorder1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['reorder1']>>>
export type FindOne3Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findOne3']>>>
export type Update3Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['update3']>>>
export type Delete3Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['delete3']>>>
export type FindOne2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findOne2']>>>
export type Update2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['update2']>>>
export type Delete2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['delete2']>>>
export type SetPackagesResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['setPackages']>>>
export type GetTaskPageResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getTaskPage']>>>
export type CreateTaskResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['createTask']>>>
@ -4001,6 +3951,7 @@ export type BindStudentResult = NonNullable<Awaited<ReturnType<ReturnType<typeof
export type UnbindStudentResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['unbindStudent']>>>
export type ResetPassword1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['resetPassword1']>>>
export type RenewPackageResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['renewPackage']>>>
export type RenewCollectionResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['renewCollection']>>>
export type GetGrowthRecordPage1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getGrowthRecordPage1']>>>
export type CreateGrowthRecord1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['createGrowthRecord1']>>>
export type GetClassPageResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getClassPage']>>>
@ -4019,6 +3970,7 @@ export type RefreshToken1Result = NonNullable<Awaited<ReturnType<ReturnType<type
export type LogoutResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['logout']>>>
export type LoginResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['login']>>>
export type ChangePasswordResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['changePassword']>>>
export type RepairFlywayResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['repairFlyway']>>>
export type FindAllResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findAll']>>>
export type CreateResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['create']>>>
export type GetTenantPageResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getTenantPage']>>>
@ -4029,24 +3981,23 @@ export type CreateLibraryResult = NonNullable<Awaited<ReturnType<ReturnType<type
export type FindAllItemsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findAllItems']>>>
export type CreateItemResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['createItem']>>>
export type BatchDeleteItemsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['batchDeleteItems']>>>
export type FindAll1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findAll1']>>>
export type Create1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['create1']>>>
export type SubmitResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['submit']>>>
export type ReviewResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['review']>>>
export type PublishResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['publish']>>>
export type OfflineResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['offline']>>>
export type GrantToTenantResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['grantToTenant']>>>
export type GetCoursePage1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getCoursePage1']>>>
export type CreateCourseResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['createCourse']>>>
export type PublishCourseResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['publishCourse']>>>
export type ArchiveCourseResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['archiveCourse']>>>
export type FindAll2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findAll2']>>>
export type Create2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['create2']>>>
export type FixCollectionPackagesResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['fixCollectionPackages']>>>
export type AddPackageToCollectionResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['addPackageToCollection']>>>
export type FindAll1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findAll1']>>>
export type Create1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['create1']>>>
export type FindStepsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findSteps']>>>
export type CreateStepResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['createStep']>>>
export type PageResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['page']>>>
export type Create3Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['create3']>>>
export type Publish1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['publish1']>>>
export type Create2Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['create2']>>>
export type WithdrawResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['withdraw']>>>
export type RepublishResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['republish']>>>
export type PublishResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['publish']>>>
export type GrantToTenantResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['grantToTenant']>>>
export type ArchiveResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['archive']>>>
export type GetWeeklyStatsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getWeeklyStats']>>>
export type GetTodayLessonsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getTodayLessons']>>>
export type GetDefaultTemplateResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getDefaultTemplate']>>>
@ -4126,6 +4077,6 @@ export type GetPopularCoursesResult = NonNullable<Awaited<ReturnType<ReturnType<
export type GetRecentActivities1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getRecentActivities1']>>>
export type GetTenantDefaultsResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getTenantDefaults']>>>
export type GetStats1Result = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getStats1']>>>
export type GetPublishedPackagesResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['getPublishedPackages']>>>
export type CheckConsistencyResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['checkConsistency']>>>
export type FindByTypeResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['findByType']>>>
export type DeleteFileResult = NonNullable<Awaited<ReturnType<ReturnType<typeof getReadingPlatformAPI>['deleteFile']>>>

View File

@ -0,0 +1,21 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ActiveTenantItemResponse {
/** 租户 ID */
tenantId?: number;
/** 租户名称 */
tenantName?: string;
/** 活跃用户数 */
activeUsers?: number;
/** 课程使用数 */
courseCount?: number;
}

View File

@ -0,0 +1,15 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ActiveTenantsQueryRequest {
/** 返回数量限制 */
limit?: number;
}

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type AddPackageToCollectionParams = {
collectionId: number;
packageId: number;
};

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface BasicSettingsResponse {
/** 学校名称 */
schoolName?: string;
/** 学校Logo */
logoUrl?: string;
/** 联系电话 */
contactPhone?: string;
/** 联系邮箱 */
contactEmail?: string;
/** 学校地址 */
address?: string;
/** 学校简介 */
description?: string;
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface BasicSettingsUpdateRequest {
/** 学校名称 */
schoolName?: string;
/** 学校Logo */
logoUrl?: string;
/** 联系电话 */
contactPhone?: string;
/** 联系邮箱 */
contactEmail?: string;
/** 学校地址 */
address?: string;
/** 学校简介 */
description?: string;
}

View File

@ -0,0 +1,20 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CalendarViewResponseSchedules } from './calendarViewResponseSchedules';
/**
*
*/
export interface CalendarViewResponse {
/** 开始日期 */
startDate?: string;
/** 结束日期 */
endDate?: string;
/** 按日期分组的排课数据 */
schedules?: CalendarViewResponseSchedules;
}

View File

@ -0,0 +1,13 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { DayScheduleItem } from './dayScheduleItem';
/**
*
*/
export type CalendarViewResponseSchedules = {[key: string]: DayScheduleItem[]};

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type CheckConflictParams = {
classId: number;
teacherId?: number;
scheduledDate: string;
scheduledTime: string;
};

View File

@ -0,0 +1,18 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ConflictInfo } from './conflictInfo';
/**
*
*/
export interface ConflictCheckResult {
/** 是否有冲突 */
hasConflict?: boolean;
/** 冲突信息列表 */
conflicts?: ConflictInfo[];
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ConflictInfo {
/** 冲突类型CLASS-班级冲突TEACHER-教师冲突 */
type?: string;
/** 冲突描述 */
message?: string;
/** 冲突的排课 ID */
conflictScheduleId?: number;
/** 冲突的班级名称 */
className?: string;
/** 冲突的教师名称 */
teacherName?: string;
/** 冲突时间 */
conflictTime?: string;
}

View File

@ -0,0 +1,19 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface CourseCollectionPageQueryRequest {
/** 页码 */
pageNum?: number;
/** 每页数量 */
pageSize?: number;
/** 状态 */
status?: string;
}

View File

@ -0,0 +1,54 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CoursePackageItem } from './coursePackageItem';
/**
*
*/
export interface CourseCollectionResponse {
/** ID */
id?: number;
/** 名称 */
name?: string;
/** 描述 */
description?: string;
/** 价格(分) */
price?: number;
/** 折后价格(分) */
discountPrice?: number;
/** 折扣类型 */
discountType?: string;
/** 年级水平(数组) */
gradeLevels?: string[];
/** 课程包数量 */
packageCount?: number;
/** 状态 */
status?: string;
/** 提交时间 */
submittedAt?: string;
/** 提交人ID */
submittedBy?: number;
/** 审核时间 */
reviewedAt?: string;
/** 审核人ID */
reviewedBy?: number;
/** 审核意见 */
reviewComment?: string;
/** 发布时间 */
publishedAt?: string;
/** 创建时间 */
createdAt?: string;
/** 更新时间 */
updatedAt?: string;
/** 开始日期(租户套餐) */
startDate?: string;
/** 结束日期(租户套餐) */
endDate?: string;
/** 包含的课程包列表 */
packages?: CoursePackageItem[];
}

View File

@ -7,7 +7,7 @@
*/
/**
*
* 7
*/
export interface CoursePackage {
/** 主键 ID */
@ -20,22 +20,94 @@ export interface CoursePackage {
updateBy?: string;
/** 更新时间 */
updatedAt?: string;
/** 套餐名称 */
/** 租户 ID */
tenantId?: number;
/** 课程名称 */
name?: string;
/** 套餐描述 */
/** 课程编码 */
code?: string;
/** 课程描述 */
description?: string;
/** 价格(分) */
price?: number;
/** 折后价格(分) */
discountPrice?: number;
/** 折扣类型PERCENTAGE、FIXED */
discountType?: string;
/** 适用年级JSON 数组) */
gradeLevels?: string;
/** 课程数量 */
courseCount?: number;
/** 状态DRAFT、PENDING、APPROVED、REJECTED、PUBLISHED、OFFLINE */
/** 封面 URL */
coverUrl?: string;
/** 课程类别 */
category?: string;
/** 适用年龄范围 */
ageRange?: string;
/** 难度等级 */
difficultyLevel?: string;
/** 课程时长(分钟) */
durationMinutes?: number;
/** 课程目标 */
objectives?: string;
/** 状态 */
status?: string;
/** 是否系统课程 */
isSystem?: number;
/** 核心内容 */
coreContent?: string;
/** 课程介绍 - 概要 */
introSummary?: string;
/** 课程介绍 - 亮点 */
introHighlights?: string;
/** 课程介绍 - 目标 */
introGoals?: string;
/** 课程介绍 - 进度安排 */
introSchedule?: string;
/** 课程介绍 - 重点 */
introKeyPoints?: string;
/** 课程介绍 - 方法 */
introMethods?: string;
/** 课程介绍 - 评估 */
introEvaluation?: string;
/** 课程介绍 - 注意事项 */
introNotes?: string;
/** 进度计划参考数据JSON */
scheduleRefData?: string;
/** 环境创设(步骤 7 */
environmentConstruction?: string;
/** 主题 ID */
themeId?: number;
/** 绘本名称 */
pictureBookName?: string;
/** 封面图片路径 */
coverImagePath?: string;
/** 电子绘本路径JSON 数组) */
ebookPaths?: string;
/** 音频资源路径JSON 数组) */
audioPaths?: string;
/** 视频资源路径JSON 数组) */
videoPaths?: string;
/** 其他资源JSON 数组) */
otherResources?: string;
/** PPT 课件路径 */
pptPath?: string;
/** PPT 课件名称 */
pptName?: string;
/** 海报图片路径 */
posterPaths?: string;
/** 教学工具 */
tools?: string;
/** 学生材料 */
studentMaterials?: string;
/** 教案数据JSON */
lessonPlanData?: string;
/** 活动数据JSON */
activitiesData?: string;
/** 评估数据JSON */
assessmentData?: string;
/** 年级标签JSON 数组) */
gradeTags?: string;
/** 领域标签JSON 数组) */
domainTags?: string;
/** 是否有集体课 */
hasCollectiveLesson?: number;
/** 版本号 */
version?: string;
/** 父版本 ID */
parentId?: number;
/** 是否最新版本 */
isLatest?: number;
/** 提交时间 */
submittedAt?: string;
/** 提交人 ID */
@ -46,6 +118,14 @@ export interface CoursePackage {
reviewedBy?: number;
/** 审核意见 */
reviewComment?: string;
/** 审核检查清单 */
reviewChecklist?: string;
/** 发布时间 */
publishedAt?: string;
/** 使用次数 */
usageCount?: number;
/** 教师数量 */
teacherCount?: number;
/** 平均评分 */
avgRating?: number;
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface CoursePackageItem {
/** 课程包ID */
id?: number;
/** 课程包名称 */
name?: string;
/** 课程包描述 */
description?: string;
/** 适用年级 */
gradeLevels?: string[];
/** 课程数量 */
courseCount?: number;
/** 排序号 */
sortOrder?: number;
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface CoursePageQueryRequest {
/** 页码 */
pageNum?: number;
/** 每页数量 */
pageSize?: number;
/** 关键词 */
keyword?: string;
/** 分类 */
category?: string;
/** 状态 */
status?: string;
/** 是否仅查询待审核 */
reviewOnly?: boolean;
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface CourseReportResponse {
/** 课程ID */
courseId?: number;
/** 课程名称 */
courseName?: string;
/** 授课次数 */
lessonCount?: number;
/** 参与学生数 */
studentCount?: number;
/** 平均评分 */
averageRating?: number;
/** 完成率 */
completionRate?: number;
}

View File

@ -0,0 +1,22 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export interface CreateCollectionRequest {
/** 名称 */
name?: string;
/** 描述 */
description?: string;
/** 价格(分) */
price?: number;
/** 折扣价格(分) */
discountPrice?: number;
/** 折扣类型 */
discountType?: string;
/** 年级标签 */
gradeLevels?: string[];
}

View File

@ -0,0 +1,27 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface CreateTaskFromTemplateRequest {
/** 模板 ID */
templateId?: number;
/** 任务标题 */
title: string;
/** 任务描述 */
description?: string;
/** 开始日期 */
startDate?: string;
/** 截止日期 */
endDate?: string;
/** 目标类型class-班级student-学生 */
targetType?: string;
/** 目标 IDs */
targetIds?: number[];
}

View File

@ -0,0 +1,27 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface DayScheduleItem {
/** 排课 ID */
id?: number;
/** 班级名称 */
className?: string;
/** 课程包名称 */
coursePackageName?: string;
/** 课程类型名称 */
lessonTypeName?: string;
/** 教师名称 */
teacherName?: string;
/** 时间段 */
scheduledTime?: string;
/** 状态 */
status?: string;
}

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type GenerateEditTokenParams = {
url: string;
name: string;
};

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type GenerateReadOnlyTokenParams = {
url: string;
name: string;
};

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type GetCalendarViewDataParams = {
startDate?: string;
endDate?: string;
classId?: number;
teacherId?: number;
};

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type GetOssTokenParams = {
fileName: string;
dir?: string;
};

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export type GetSchoolCoursesParams = {
keyword?: string;
grade?: string;
};

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export interface GrantCollectionRequest {
/** 租户ID */
tenantId?: number;
/** 结束日期ISO格式2024-12-31 */
endDate?: string;
/** 支付价格(分) */
pricePaid?: number;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export interface ImmTokenVo {
webofficeURL?: string;
accessToken?: string;
refreshToken?: string;
expireTime?: number;
}

View File

@ -9,6 +9,7 @@
export * from './activeTenantItemResponse';
export * from './activeTenantsQueryRequest';
export * from './addClassTeacherDto';
export * from './addPackageToCollectionParams';
export * from './adminStatsControllerGetActiveTenantsParams';
export * from './adminStatsControllerGetPopularCoursesParams';
export * from './adminStatsControllerGetRecentActivitiesParams';
@ -123,6 +124,7 @@ export * from './getRecentActivitiesParams';
export * from './getRecentGrowthRecordsParams';
export * from './getSchedules1Params';
export * from './getSchedulesParams';
export * from './getSchoolCoursesParams';
export * from './getStudentPageParams';
export * from './getTaskPage1Params';
export * from './getTaskPageParams';
@ -133,6 +135,7 @@ export * from './getTemplatesParams';
export * from './getTenantPageParams';
export * from './getTimetable1Params';
export * from './getTimetableParams';
export * from './grantCollectionRequest';
export * from './grantRequest';
export * from './growthRecord';
export * from './growthRecordCreateRequest';
@ -271,6 +274,7 @@ export * from './resultListCourse';
export * from './resultListCourseCollectionResponse';
export * from './resultListCourseLesson';
export * from './resultListCourseLessonResponse';
export * from './resultListCoursePackage';
export * from './resultListCoursePackageResponse';
export * from './resultListCourseReportResponse';
export * from './resultListCourseResponse';
@ -356,6 +360,7 @@ export * from './resultSchoolSettingsResponse';
export * from './resultSecuritySettingsResponse';
export * from './resultStatsResponse';
export * from './resultStatsTrendResponse';
export * from './resultString';
export * from './resultStudent';
export * from './resultStudentRecordResponse';
export * from './resultStudentResponse';

View File

@ -0,0 +1,19 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ClassResponse } from './classResponse';
import type { CourseResponse } from './courseResponse';
import type { LessonResponse } from './lessonResponse';
/**
*
*/
export interface LessonDetailResponse {
lesson?: LessonResponse;
course?: CourseResponse;
class?: ClassResponse;
}

View File

@ -0,0 +1,45 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LessonFeedback {
/** 主键 ID */
id?: number;
/** 创建人 */
createBy?: string;
/** 创建时间 */
createdAt?: string;
/** 更新人 */
updateBy?: string;
/** 更新时间 */
updatedAt?: string;
/** 课程 ID */
lessonId?: number;
/** 教师 ID */
teacherId?: number;
/** 反馈内容 */
content?: string;
/** 评分 */
rating?: number;
/** 教学设计评分 (1-5) */
designQuality?: number;
/** 学生参与度评分 (1-5) */
participation?: number;
/** 目标达成度评分 (1-5) */
goalAchievement?: number;
/** 各步骤反馈 (JSON 数组) */
stepFeedbacks?: string;
/** 优点 */
pros?: string;
/** 建议 */
suggestions?: string;
/** 已完成的活动 */
activitiesDone?: string;
}

View File

@ -0,0 +1,47 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LessonFeedbackRequest {
/** 反馈内容 */
content?: string;
/**
* (1-5)
* @minimum 1
* @maximum 5
*/
rating?: number;
/**
* (1-5)
* @minimum 1
* @maximum 5
*/
designQuality?: number;
/**
* (1-5)
* @minimum 1
* @maximum 5
*/
participation?: number;
/**
* (1-5)
* @minimum 1
* @maximum 5
*/
goalAchievement?: number;
/** 各步骤反馈 (JSON 数组) */
stepFeedbacks?: string;
/** 优点 */
pros?: string;
/** 建议 */
suggestions?: string;
/** 已完成的活动 */
activitiesDone?: string;
}

View File

@ -0,0 +1,43 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LessonFeedbackResponse {
/** ID */
id?: number;
/** 课程 ID */
lessonId?: number;
/** 教师 ID */
teacherId?: number;
/** 教师姓名 */
teacherName?: string;
/** 反馈内容 */
content?: string;
/** 评分 */
rating?: number;
/** 教学设计评分 (1-5) */
designQuality?: number;
/** 学生参与度评分 (1-5) */
participation?: number;
/** 目标达成度评分 (1-5) */
goalAchievement?: number;
/** 各步骤反馈 (JSON 数组) */
stepFeedbacks?: string;
/** 优点 */
pros?: string;
/** 建议 */
suggestions?: string;
/** 已完成的活动 */
activitiesDone?: string;
/** 创建时间 */
createdAt?: string;
/** 更新时间 */
updatedAt?: string;
}

View File

@ -0,0 +1,24 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonProgressRequestProgressData } from './lessonProgressRequestProgressData';
/**
*
*/
export interface LessonProgressRequest {
/** 当前课程 ID */
currentLessonId?: number;
/** 当前步骤 ID */
currentStepId?: number;
/** 课程 ID 列表 */
lessonIds?: number[];
/** 已完成课程 ID 列表 */
completedLessonIds?: number[];
/** 进度数据 (JSON 对象) */
progressData?: LessonProgressRequestProgressData;
}

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
* (JSON )
*/
export type LessonProgressRequestProgressData = { [key: string]: unknown };

View File

@ -0,0 +1,23 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LessonStepCreateRequest {
/** 环节名称 */
name?: string;
/** 环节内容 */
content?: string;
/** 时长(分钟) */
duration?: number;
/** 教学目标 */
objective?: string;
/** 关联资源 ID 列表 */
resourceIds?: number[];
}

View File

@ -0,0 +1,33 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LessonStepResponse {
/** ID */
id?: number;
/** 课时 ID */
lessonId?: number;
/** 名称 */
name?: string;
/** 内容 */
content?: string;
/** 时长 */
duration?: number;
/** 目标 */
objective?: string;
/** 资源 IDs */
resourceIds?: string;
/** 排序号 */
sortOrder?: number;
/** 创建时间 */
createdAt?: string;
/** 更新时间 */
updatedAt?: string;
}

View File

@ -0,0 +1,19 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LessonTypeInfo {
/** 课程类型代码 */
lessonType?: string;
/** 课程类型名称 */
lessonTypeName?: string;
/** 该类型的课程数量 */
count?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface LibrarySummary {
id?: number;
name?: string;
libraryType?: string;
}

View File

@ -0,0 +1,23 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface NotificationSettingsResponse {
/** 启用邮件通知 */
emailEnabled?: boolean;
/** 启用短信通知 */
smsEnabled?: boolean;
/** 启用站内通知 */
inAppEnabled?: boolean;
/** 任务完成通知 */
taskCompletionNotify?: boolean;
/** 课程提醒通知 */
courseReminderNotify?: boolean;
}

View File

@ -0,0 +1,23 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface NotificationSettingsUpdateRequest {
/** 启用邮件通知 */
emailEnabled?: boolean;
/** 启用短信通知 */
smsEnabled?: boolean;
/** 启用站内通知 */
inAppEnabled?: boolean;
/** 任务完成通知 */
taskCompletionNotify?: boolean;
/** 课程提醒通知 */
courseReminderNotify?: boolean;
}

View File

@ -0,0 +1,37 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface OperationLogResponse {
/** ID */
id?: number;
/** 租户 ID */
tenantId?: number;
/** 用户 ID */
userId?: number;
/** 用户角色 */
userRole?: string;
/** 操作 */
action?: string;
/** 模块 */
module?: string;
/** 目标类型 */
targetType?: string;
/** 目标 ID */
targetId?: number;
/** 详情 */
details?: string;
/** IP 地址 */
ipAddress?: string;
/** 用户代理 */
userAgent?: string;
/** 创建时间 */
createdAt?: string;
}

View File

@ -0,0 +1,17 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export interface OssTokenVo {
accessid?: string;
policy?: string;
signature?: string;
dir?: string;
host?: string;
key?: string;
expire?: number;
}

View File

@ -0,0 +1,19 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface PackageGrantRequest {
/** 租户 ID */
tenantId?: number;
/** 结束日期 */
endDate?: string;
/** 支付金额(分) */
pricePaid?: number;
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface PackageInfoResponse {
/** 学校名称 */
name?: string;
/** 学校编码 */
code?: string;
/** 状态 */
status?: string;
/** 到期时间 */
expireDate?: string;
/** 最大教师数 */
maxTeachers?: number;
/** 最大学生数 */
maxStudents?: number;
}

View File

@ -0,0 +1,19 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface PackageReviewRequest {
/** 是否通过 */
approved?: boolean;
/** 审核意见 */
comment?: string;
/** 是否同时发布(仅当 approved=true 时有效) */
publish?: boolean;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { UsageInfo } from './usageInfo';
/**
* 使
*/
export interface PackageUsageResponse {
teacher?: UsageInfo;
student?: UsageInfo;
}

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseCollectionPageQueryRequest } from './courseCollectionPageQueryRequest';
export type PageParams = {
request: CourseCollectionPageQueryRequest;
};

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseCollectionResponse } from './courseCollectionResponse';
export interface PageResultCourseCollectionResponse {
list?: CourseCollectionResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonFeedbackResponse } from './lessonFeedbackResponse';
export interface PageResultLessonFeedbackResponse {
list?: LessonFeedbackResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { OperationLogResponse } from './operationLogResponse';
export interface PageResultOperationLogResponse {
list?: OperationLogResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ResourceItemResponse } from './resourceItemResponse';
export interface PageResultResourceItemResponse {
list?: ResourceItemResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ResourceLibraryResponse } from './resourceLibraryResponse';
export interface PageResultResourceLibraryResponse {
list?: ResourceLibraryResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { SchedulePlanResponse } from './schedulePlanResponse';
export interface PageResultSchedulePlanResponse {
list?: SchedulePlanResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,16 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { TaskTemplateResponse } from './taskTemplateResponse';
export interface PageResultTaskTemplateResponse {
list?: TaskTemplateResponse[];
total?: number;
pageNum?: number;
pageSize?: number;
pages?: number;
}

View File

@ -0,0 +1,21 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface PopularCourseItemResponse {
/** 课程 ID */
courseId?: number;
/** 课程名称 */
courseName?: string;
/** 使用次数 */
usageCount?: number;
/** 教师数量 */
teacherCount?: number;
}

View File

@ -0,0 +1,15 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface PopularCoursesQueryRequest {
/** 返回数量限制 */
limit?: number;
}

View File

@ -0,0 +1,15 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface RecentActivitiesQueryRequest {
/** 返回数量限制 */
limit?: number;
}

View File

@ -0,0 +1,25 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface RecentActivityItemResponse {
/** 活动 ID */
activityId?: number;
/** 活动类型 */
activityType?: string;
/** 活动描述 */
description?: string;
/** 操作人 ID */
operatorId?: number;
/** 操作人名称 */
operatorName?: string;
/** 操作时间 */
operationTime?: string;
}

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
export interface RefreshTokenRequest {
accessToken?: string;
refreshToken?: string;
}

View File

@ -0,0 +1,28 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ReportOverviewResponseCourseStats } from './reportOverviewResponseCourseStats';
/**
*
*/
export interface ReportOverviewResponse {
/** 报告日期 */
reportDate?: string;
/** 教师总数 */
totalTeachers?: number;
/** 学生总数 */
totalStudents?: number;
/** 班级总数 */
totalClasses?: number;
/** 本月授课次数 */
monthlyLessons?: number;
/** 本月任务完成数 */
monthlyTasksCompleted?: number;
/** 课程使用统计 */
courseStats?: ReportOverviewResponseCourseStats;
}

View File

@ -0,0 +1,12 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
* 使
*/
export type ReportOverviewResponseCourseStats = {[key: string]: { [key: string]: unknown }};

View File

@ -0,0 +1,29 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ResourceItemCreateRequest {
/** 资源库 ID */
libraryId?: string;
/** 资源标题 */
title?: string;
/** 文件类型 */
fileType?: string;
/** 文件路径 */
filePath?: string;
/** 文件大小(字节) */
fileSize?: number;
/** 资源描述 */
description?: string;
/** 标签(字符串数组) */
tags?: string[];
/** 租户 ID */
tenantId?: string;
}

View File

@ -0,0 +1,39 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LibrarySummary } from './librarySummary';
/**
*
*/
export interface ResourceItemResponse {
/** ID */
id?: number;
/** 资源库 ID */
libraryId?: string;
/** 租户 ID */
tenantId?: string;
/** 资源标题 */
title?: string;
/** 文件类型 (IMAGE/PDF/VIDEO/AUDIO/PPT/OTHER) */
fileType?: string;
/** 文件路径 */
filePath?: string;
/** 文件大小(字节) */
fileSize?: number;
/** 资源标签 */
tags?: string[];
library?: LibrarySummary;
/** 资源描述 */
description?: string;
/** 状态 */
status?: string;
/** 创建时间 */
createdAt?: string;
/** 更新时间 */
updatedAt?: string;
}

View File

@ -0,0 +1,19 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ResourceItemUpdateRequest {
/** 资源标题 */
title?: string;
/** 资源描述 */
description?: string;
/** 标签(字符串数组) */
tags?: string[];
}

View File

@ -0,0 +1,21 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ResourceLibraryCreateRequest {
/** 资源库名称 */
name?: string;
/** 资源库类型 */
type?: string;
/** 资源库描述 */
description?: string;
/** 租户 ID */
tenantId?: string;
}

View File

@ -0,0 +1,31 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ResourceLibraryResponse {
/** ID */
id?: number;
/** 租户 ID */
tenantId?: string;
/** 资源库名称 */
name?: string;
/** 资源库描述 */
description?: string;
/** 创建人 */
createdBy?: string;
/** 更新人 */
updatedBy?: string;
/** 创建时间 */
createdAt?: string;
/** 更新时间 */
updatedAt?: string;
/** 资源库类型 */
libraryType?: string;
}

View File

@ -0,0 +1,17 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
/**
*
*/
export interface ResourceLibraryUpdateRequest {
/** 资源库名称 */
name?: string;
/** 资源库描述 */
description?: string;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { BasicSettingsResponse } from './basicSettingsResponse';
export interface ResultBasicSettingsResponse {
code?: number;
message?: string;
data?: BasicSettingsResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CalendarViewResponse } from './calendarViewResponse';
export interface ResultCalendarViewResponse {
code?: number;
message?: string;
data?: CalendarViewResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ConflictCheckResult } from './conflictCheckResult';
export interface ResultConflictCheckResult {
code?: number;
message?: string;
data?: ConflictCheckResult;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseCollectionResponse } from './courseCollectionResponse';
export interface ResultCourseCollectionResponse {
code?: number;
message?: string;
data?: CourseCollectionResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseLessonResponse } from './courseLessonResponse';
export interface ResultCourseLessonResponse {
code?: number;
message?: string;
data?: CourseLessonResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ImmTokenVo } from './immTokenVo';
export interface ResultImmTokenVo {
code?: number;
message?: string;
data?: ImmTokenVo;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonDetailResponse } from './lessonDetailResponse';
export interface ResultLessonDetailResponse {
code?: number;
message?: string;
data?: LessonDetailResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonFeedback } from './lessonFeedback';
export interface ResultLessonFeedback {
code?: number;
message?: string;
data?: LessonFeedback;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonStepResponse } from './lessonStepResponse';
export interface ResultLessonStepResponse {
code?: number;
message?: string;
data?: LessonStepResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ActiveTenantItemResponse } from './activeTenantItemResponse';
export interface ResultListActiveTenantItemResponse {
code?: number;
message?: string;
data?: ActiveTenantItemResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseCollectionResponse } from './courseCollectionResponse';
export interface ResultListCourseCollectionResponse {
code?: number;
message?: string;
data?: CourseCollectionResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseLessonResponse } from './courseLessonResponse';
export interface ResultListCourseLessonResponse {
code?: number;
message?: string;
data?: CourseLessonResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CoursePackage } from './coursePackage';
export interface ResultListCoursePackage {
code?: number;
message?: string;
data?: CoursePackage[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { CourseReportResponse } from './courseReportResponse';
export interface ResultListCourseReportResponse {
code?: number;
message?: string;
data?: CourseReportResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonStepResponse } from './lessonStepResponse';
export interface ResultListLessonStepResponse {
code?: number;
message?: string;
data?: LessonStepResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { LessonTypeInfo } from './lessonTypeInfo';
export interface ResultListLessonTypeInfo {
code?: number;
message?: string;
data?: LessonTypeInfo[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { PopularCourseItemResponse } from './popularCourseItemResponse';
export interface ResultListPopularCourseItemResponse {
code?: number;
message?: string;
data?: PopularCourseItemResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { RecentActivityItemResponse } from './recentActivityItemResponse';
export interface ResultListRecentActivityItemResponse {
code?: number;
message?: string;
data?: RecentActivityItemResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { SchedulePlanResponse } from './schedulePlanResponse';
export interface ResultListSchedulePlanResponse {
code?: number;
message?: string;
data?: SchedulePlanResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { StudentRecordResponse } from './studentRecordResponse';
export interface ResultListStudentRecordResponse {
code?: number;
message?: string;
data?: StudentRecordResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { StudentReportResponse } from './studentReportResponse';
export interface ResultListStudentReportResponse {
code?: number;
message?: string;
data?: StudentReportResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { TeacherReportResponse } from './teacherReportResponse';
export interface ResultListTeacherReportResponse {
code?: number;
message?: string;
data?: TeacherReportResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { TeacherResponse } from './teacherResponse';
export interface ResultListTeacherResponse {
code?: number;
message?: string;
data?: TeacherResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { ThemeResponse } from './themeResponse';
export interface ResultListThemeResponse {
code?: number;
message?: string;
data?: ThemeResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { TimetableResponse } from './timetableResponse';
export interface ResultListTimetableResponse {
code?: number;
message?: string;
data?: TimetableResponse[];
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { NotificationSettingsResponse } from './notificationSettingsResponse';
export interface ResultNotificationSettingsResponse {
code?: number;
message?: string;
data?: NotificationSettingsResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { OperationLogResponse } from './operationLogResponse';
export interface ResultOperationLogResponse {
code?: number;
message?: string;
data?: OperationLogResponse;
}

View File

@ -0,0 +1,14 @@
/**
* Generated by orval v8.5.3 🍺
* Do not edit manually.
* Reading Platform API
* Reading Platform Backend Service API Documentation
* OpenAPI spec version: 1.0.0
*/
import type { OssTokenVo } from './ossTokenVo';
export interface ResultOssTokenVo {
code?: number;
message?: string;
data?: OssTokenVo;
}

Some files were not shown because too many files have changed in this diff Show More