diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 0c257b7..f39471d 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -6,7 +6,8 @@ "Bash(JAVA_HOME=/f/Java/jdk-17 PATH=/f/Java/jdk-17/bin:/f/apache-maven-3.8.4/bin:$PATH mvn compile:*)", "Bash(cmd.exe:*)", "Bash(powershell:*)", - "Bash(./mvnw.cmd:*)" + "Bash(./mvnw.cmd:*)", + "Bash(.mvnw.cmd clean:*)" ] } } diff --git a/.gitignore b/.gitignore index e060d82..a38c24e 100644 --- a/.gitignore +++ b/.gitignore @@ -53,5 +53,4 @@ reading-platform-frontend/src/components.d.ts .gitignore .cursor/rules/generated-api-readonly.mdc .cursor/rules/frontend-api-orval-usage.mdc -reading-platform-frontend/src/components.d.ts reading-platform-frontend/api-spec.yml \ No newline at end of file diff --git a/reading-platform-frontend/src/api/generated/api.ts b/reading-platform-frontend/src/api/generated/api.ts index 63c7894..db4c0a9 100644 --- a/reading-platform-frontend/src/api/generated/api.ts +++ b/reading-platform-frontend/src/api/generated/api.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/approveCourseParams.ts b/reading-platform-frontend/src/api/generated/model/approveCourseParams.ts index 7c48e33..36b59ff 100644 --- a/reading-platform-frontend/src/api/generated/model/approveCourseParams.ts +++ b/reading-platform-frontend/src/api/generated/model/approveCourseParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/bindStudentParams.ts b/reading-platform-frontend/src/api/generated/model/bindStudentParams.ts index e289c88..884b2ba 100644 --- a/reading-platform-frontend/src/api/generated/model/bindStudentParams.ts +++ b/reading-platform-frontend/src/api/generated/model/bindStudentParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/changePasswordParams.ts b/reading-platform-frontend/src/api/generated/model/changePasswordParams.ts index 9c0c98e..59babeb 100644 --- a/reading-platform-frontend/src/api/generated/model/changePasswordParams.ts +++ b/reading-platform-frontend/src/api/generated/model/changePasswordParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/classCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/classCreateRequest.ts index b6da618..65486e5 100644 --- a/reading-platform-frontend/src/api/generated/model/classCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/classCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/classUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/classUpdateRequest.ts index 89922ac..106c578 100644 --- a/reading-platform-frontend/src/api/generated/model/classUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/classUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/clazz.ts b/reading-platform-frontend/src/api/generated/model/clazz.ts index 550d0b4..99b8ef1 100644 --- a/reading-platform-frontend/src/api/generated/model/clazz.ts +++ b/reading-platform-frontend/src/api/generated/model/clazz.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/completeTaskParams.ts b/reading-platform-frontend/src/api/generated/model/completeTaskParams.ts index 36cea60..4eaeeee 100644 --- a/reading-platform-frontend/src/api/generated/model/completeTaskParams.ts +++ b/reading-platform-frontend/src/api/generated/model/completeTaskParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/course.ts b/reading-platform-frontend/src/api/generated/model/course.ts index 657bf49..19729c3 100644 --- a/reading-platform-frontend/src/api/generated/model/course.ts +++ b/reading-platform-frontend/src/api/generated/model/course.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/courseCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/courseCreateRequest.ts index 9b028ac..a1deb54 100644 --- a/reading-platform-frontend/src/api/generated/model/courseCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/courseCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/courseLesson.ts b/reading-platform-frontend/src/api/generated/model/courseLesson.ts index 7c0eb8b..482057d 100644 --- a/reading-platform-frontend/src/api/generated/model/courseLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/courseLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/coursePackage.ts b/reading-platform-frontend/src/api/generated/model/coursePackage.ts index 8347462..e02e142 100644 --- a/reading-platform-frontend/src/api/generated/model/coursePackage.ts +++ b/reading-platform-frontend/src/api/generated/model/coursePackage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/courseUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/courseUpdateRequest.ts index d736be9..b2be311 100644 --- a/reading-platform-frontend/src/api/generated/model/courseUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/courseUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/createTaskFromTemplateRequest.ts b/reading-platform-frontend/src/api/generated/model/createTaskFromTemplateRequest.ts index cf886ed..f06eb9e 100644 --- a/reading-platform-frontend/src/api/generated/model/createTaskFromTemplateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/createTaskFromTemplateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/deleteFileParams.ts b/reading-platform-frontend/src/api/generated/model/deleteFileParams.ts index 2fd6991..1562ada 100644 --- a/reading-platform-frontend/src/api/generated/model/deleteFileParams.ts +++ b/reading-platform-frontend/src/api/generated/model/deleteFileParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getActiveTeachersParams.ts b/reading-platform-frontend/src/api/generated/model/getActiveTeachersParams.ts index 906009b..b78fe21 100644 --- a/reading-platform-frontend/src/api/generated/model/getActiveTeachersParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getActiveTeachersParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getActiveTenantsParams.ts b/reading-platform-frontend/src/api/generated/model/getActiveTenantsParams.ts index 40ea417..1b8c791 100644 --- a/reading-platform-frontend/src/api/generated/model/getActiveTenantsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getActiveTenantsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getActivitiesParams.ts b/reading-platform-frontend/src/api/generated/model/getActivitiesParams.ts index a7f6bdc..f6c3b27 100644 --- a/reading-platform-frontend/src/api/generated/model/getActivitiesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getActivitiesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getClassPageParams.ts b/reading-platform-frontend/src/api/generated/model/getClassPageParams.ts index ac5855e..36ff88c 100644 --- a/reading-platform-frontend/src/api/generated/model/getClassPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getClassPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getCompletions1Params.ts b/reading-platform-frontend/src/api/generated/model/getCompletions1Params.ts index 2d44c78..fec7007 100644 --- a/reading-platform-frontend/src/api/generated/model/getCompletions1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getCompletions1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getCompletionsParams.ts b/reading-platform-frontend/src/api/generated/model/getCompletionsParams.ts index 5294fb0..da5bc99 100644 --- a/reading-platform-frontend/src/api/generated/model/getCompletionsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getCompletionsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getCoursePage1Params.ts b/reading-platform-frontend/src/api/generated/model/getCoursePage1Params.ts index a4fe368..9ede597 100644 --- a/reading-platform-frontend/src/api/generated/model/getCoursePage1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getCoursePage1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getCoursePageParams.ts b/reading-platform-frontend/src/api/generated/model/getCoursePageParams.ts index 5b5412b..ff100e3 100644 --- a/reading-platform-frontend/src/api/generated/model/getCoursePageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getCoursePageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getCourses1Params.ts b/reading-platform-frontend/src/api/generated/model/getCourses1Params.ts index 47f00c6..1dace18 100644 --- a/reading-platform-frontend/src/api/generated/model/getCourses1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getCourses1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getCoursesParams.ts b/reading-platform-frontend/src/api/generated/model/getCoursesParams.ts index afa95ed..8e76c98 100644 --- a/reading-platform-frontend/src/api/generated/model/getCoursesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getCoursesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getGrowthRecordPage1Params.ts b/reading-platform-frontend/src/api/generated/model/getGrowthRecordPage1Params.ts index 6778282..748a71d 100644 --- a/reading-platform-frontend/src/api/generated/model/getGrowthRecordPage1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getGrowthRecordPage1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getGrowthRecordPageParams.ts b/reading-platform-frontend/src/api/generated/model/getGrowthRecordPageParams.ts index e543e8d..08b3dc0 100644 --- a/reading-platform-frontend/src/api/generated/model/getGrowthRecordPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getGrowthRecordPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getGrowthRecordsByStudentParams.ts b/reading-platform-frontend/src/api/generated/model/getGrowthRecordsByStudentParams.ts index ee5ac0b..fc86c21 100644 --- a/reading-platform-frontend/src/api/generated/model/getGrowthRecordsByStudentParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getGrowthRecordsByStudentParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getItemsParams.ts b/reading-platform-frontend/src/api/generated/model/getItemsParams.ts index 8214b1d..5a17bb9 100644 --- a/reading-platform-frontend/src/api/generated/model/getItemsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getItemsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getLessonTrendParams.ts b/reading-platform-frontend/src/api/generated/model/getLessonTrendParams.ts index aac8795..b8c17a3 100644 --- a/reading-platform-frontend/src/api/generated/model/getLessonTrendParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getLessonTrendParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getLibrariesParams.ts b/reading-platform-frontend/src/api/generated/model/getLibrariesParams.ts index db879c2..64b112e 100644 --- a/reading-platform-frontend/src/api/generated/model/getLibrariesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getLibrariesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getLogs1Params.ts b/reading-platform-frontend/src/api/generated/model/getLogs1Params.ts index cfed552..81d4865 100644 --- a/reading-platform-frontend/src/api/generated/model/getLogs1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getLogs1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getLogsParams.ts b/reading-platform-frontend/src/api/generated/model/getLogsParams.ts index 3fa5f0b..78928cd 100644 --- a/reading-platform-frontend/src/api/generated/model/getLogsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getLogsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getMonthlyStats1Params.ts b/reading-platform-frontend/src/api/generated/model/getMonthlyStats1Params.ts index e62746b..0fb6804 100644 --- a/reading-platform-frontend/src/api/generated/model/getMonthlyStats1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getMonthlyStats1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getMonthlyStatsParams.ts b/reading-platform-frontend/src/api/generated/model/getMonthlyStatsParams.ts index e80d5f9..1b60ce3 100644 --- a/reading-platform-frontend/src/api/generated/model/getMonthlyStatsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getMonthlyStatsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getMyLessonsParams.ts b/reading-platform-frontend/src/api/generated/model/getMyLessonsParams.ts index 7055a5f..d40f18e 100644 --- a/reading-platform-frontend/src/api/generated/model/getMyLessonsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getMyLessonsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getMyNotifications1Params.ts b/reading-platform-frontend/src/api/generated/model/getMyNotifications1Params.ts index 6426e57..3229eaf 100644 --- a/reading-platform-frontend/src/api/generated/model/getMyNotifications1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getMyNotifications1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getMyNotifications2Params.ts b/reading-platform-frontend/src/api/generated/model/getMyNotifications2Params.ts index 38a0865..3e3a6fc 100644 --- a/reading-platform-frontend/src/api/generated/model/getMyNotifications2Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getMyNotifications2Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getMyNotificationsParams.ts b/reading-platform-frontend/src/api/generated/model/getMyNotificationsParams.ts index 65a3192..d4aa05c 100644 --- a/reading-platform-frontend/src/api/generated/model/getMyNotificationsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getMyNotificationsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getPackages1Params.ts b/reading-platform-frontend/src/api/generated/model/getPackages1Params.ts index 281e870..ae9ff2c 100644 --- a/reading-platform-frontend/src/api/generated/model/getPackages1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getPackages1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getPackagesParams.ts b/reading-platform-frontend/src/api/generated/model/getPackagesParams.ts index c855daa..5cf7228 100644 --- a/reading-platform-frontend/src/api/generated/model/getPackagesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getPackagesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getParentPageParams.ts b/reading-platform-frontend/src/api/generated/model/getParentPageParams.ts index 4e9b487..51e9ced 100644 --- a/reading-platform-frontend/src/api/generated/model/getParentPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getParentPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getPopularCoursesParams.ts b/reading-platform-frontend/src/api/generated/model/getPopularCoursesParams.ts index a73d77f..50efb16 100644 --- a/reading-platform-frontend/src/api/generated/model/getPopularCoursesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getPopularCoursesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getRecentActivitiesParams.ts b/reading-platform-frontend/src/api/generated/model/getRecentActivitiesParams.ts index fdac59a..473063a 100644 --- a/reading-platform-frontend/src/api/generated/model/getRecentActivitiesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getRecentActivitiesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getRecentGrowthRecordsParams.ts b/reading-platform-frontend/src/api/generated/model/getRecentGrowthRecordsParams.ts index a9062e1..8445aaa 100644 --- a/reading-platform-frontend/src/api/generated/model/getRecentGrowthRecordsParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getRecentGrowthRecordsParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getReviewCoursePageParams.ts b/reading-platform-frontend/src/api/generated/model/getReviewCoursePageParams.ts index 7020e9c..349fd2e 100644 --- a/reading-platform-frontend/src/api/generated/model/getReviewCoursePageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getReviewCoursePageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getSchedulePlans1Params.ts b/reading-platform-frontend/src/api/generated/model/getSchedulePlans1Params.ts index ecc0a87..856c1de 100644 --- a/reading-platform-frontend/src/api/generated/model/getSchedulePlans1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getSchedulePlans1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getSchedulePlansParams.ts b/reading-platform-frontend/src/api/generated/model/getSchedulePlansParams.ts index 583cf0b..ebc3507 100644 --- a/reading-platform-frontend/src/api/generated/model/getSchedulePlansParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getSchedulePlansParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getScheduleTemplatesParams.ts b/reading-platform-frontend/src/api/generated/model/getScheduleTemplatesParams.ts index acf81b5..d38c2d0 100644 --- a/reading-platform-frontend/src/api/generated/model/getScheduleTemplatesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getScheduleTemplatesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getStudentPageParams.ts b/reading-platform-frontend/src/api/generated/model/getStudentPageParams.ts index a8f8e52..756b4c8 100644 --- a/reading-platform-frontend/src/api/generated/model/getStudentPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getStudentPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTaskPage1Params.ts b/reading-platform-frontend/src/api/generated/model/getTaskPage1Params.ts index 4de0118..25bf6e6 100644 --- a/reading-platform-frontend/src/api/generated/model/getTaskPage1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getTaskPage1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTaskPageParams.ts b/reading-platform-frontend/src/api/generated/model/getTaskPageParams.ts index bb8d874..d080615 100644 --- a/reading-platform-frontend/src/api/generated/model/getTaskPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getTaskPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTasksByStudentParams.ts b/reading-platform-frontend/src/api/generated/model/getTasksByStudentParams.ts index cf9b698..d30df3a 100644 --- a/reading-platform-frontend/src/api/generated/model/getTasksByStudentParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getTasksByStudentParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTeacherPageParams.ts b/reading-platform-frontend/src/api/generated/model/getTeacherPageParams.ts index f86f637..646477a 100644 --- a/reading-platform-frontend/src/api/generated/model/getTeacherPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getTeacherPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTemplates1Params.ts b/reading-platform-frontend/src/api/generated/model/getTemplates1Params.ts index efcbb88..a298f5d 100644 --- a/reading-platform-frontend/src/api/generated/model/getTemplates1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/getTemplates1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTemplatesParams.ts b/reading-platform-frontend/src/api/generated/model/getTemplatesParams.ts index 44ae86f..7e68b1c 100644 --- a/reading-platform-frontend/src/api/generated/model/getTemplatesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getTemplatesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTenantPageParams.ts b/reading-platform-frontend/src/api/generated/model/getTenantPageParams.ts index f3076a6..c93c1c4 100644 --- a/reading-platform-frontend/src/api/generated/model/getTenantPageParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getTenantPageParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getThemesParams.ts b/reading-platform-frontend/src/api/generated/model/getThemesParams.ts index 69728d3..cdbf9a3 100644 --- a/reading-platform-frontend/src/api/generated/model/getThemesParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getThemesParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/getTimetableParams.ts b/reading-platform-frontend/src/api/generated/model/getTimetableParams.ts index f73a74d..c40bc5b 100644 --- a/reading-platform-frontend/src/api/generated/model/getTimetableParams.ts +++ b/reading-platform-frontend/src/api/generated/model/getTimetableParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/growthRecord.ts b/reading-platform-frontend/src/api/generated/model/growthRecord.ts index 3e70cba..f49bbf7 100644 --- a/reading-platform-frontend/src/api/generated/model/growthRecord.ts +++ b/reading-platform-frontend/src/api/generated/model/growthRecord.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/growthRecordCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/growthRecordCreateRequest.ts index a415ad2..9e47c7f 100644 --- a/reading-platform-frontend/src/api/generated/model/growthRecordCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/growthRecordCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/growthRecordUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/growthRecordUpdateRequest.ts index 614f3af..ac0f1e8 100644 --- a/reading-platform-frontend/src/api/generated/model/growthRecordUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/growthRecordUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/index.ts b/reading-platform-frontend/src/api/generated/model/index.ts index cc8a92a..a65298b 100644 --- a/reading-platform-frontend/src/api/generated/model/index.ts +++ b/reading-platform-frontend/src/api/generated/model/index.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation @@ -297,4 +297,4 @@ export * from "./updateSettingsBody"; export * from "./updateTenantQuotaBody"; export * from "./updateTenantStatusBody"; export * from "./uploadFileBody"; -export * from "./userInfoResponse"; +export * from "./userInfoResponse"; \ No newline at end of file diff --git a/reading-platform-frontend/src/api/generated/model/lesson.ts b/reading-platform-frontend/src/api/generated/model/lesson.ts index 64127fe..f006622 100644 --- a/reading-platform-frontend/src/api/generated/model/lesson.ts +++ b/reading-platform-frontend/src/api/generated/model/lesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/lessonCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/lessonCreateRequest.ts index 622ffda..da7a55a 100644 --- a/reading-platform-frontend/src/api/generated/model/lessonCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/lessonCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/lessonUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/lessonUpdateRequest.ts index ec72edb..fef7c38 100644 --- a/reading-platform-frontend/src/api/generated/model/lessonUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/lessonUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/localTime.ts b/reading-platform-frontend/src/api/generated/model/localTime.ts index 914081d..053df12 100644 --- a/reading-platform-frontend/src/api/generated/model/localTime.ts +++ b/reading-platform-frontend/src/api/generated/model/localTime.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/loginRequest.ts b/reading-platform-frontend/src/api/generated/model/loginRequest.ts index 2acefbd..fe9a9c5 100644 --- a/reading-platform-frontend/src/api/generated/model/loginRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/loginRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/loginResponse.ts b/reading-platform-frontend/src/api/generated/model/loginResponse.ts index 4b72bff..9c0afed 100644 --- a/reading-platform-frontend/src/api/generated/model/loginResponse.ts +++ b/reading-platform-frontend/src/api/generated/model/loginResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/notification.ts b/reading-platform-frontend/src/api/generated/model/notification.ts index 7539e90..f4517e7 100644 --- a/reading-platform-frontend/src/api/generated/model/notification.ts +++ b/reading-platform-frontend/src/api/generated/model/notification.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/operationLog.ts b/reading-platform-frontend/src/api/generated/model/operationLog.ts index d3fd4df..f78536a 100644 --- a/reading-platform-frontend/src/api/generated/model/operationLog.ts +++ b/reading-platform-frontend/src/api/generated/model/operationLog.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultClazz.ts b/reading-platform-frontend/src/api/generated/model/pageResultClazz.ts index 87c6acf..438aecf 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultClazz.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultClazz.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultCourse.ts b/reading-platform-frontend/src/api/generated/model/pageResultCourse.ts index b0aa382..60a62a8 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultCoursePackage.ts b/reading-platform-frontend/src/api/generated/model/pageResultCoursePackage.ts index 5125fce..feb089a 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultCoursePackage.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultCoursePackage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultGrowthRecord.ts b/reading-platform-frontend/src/api/generated/model/pageResultGrowthRecord.ts index 2fa8551..d0386bd 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultGrowthRecord.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultGrowthRecord.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultLesson.ts b/reading-platform-frontend/src/api/generated/model/pageResultLesson.ts index 33da94b..5bb1fbf 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultNotification.ts b/reading-platform-frontend/src/api/generated/model/pageResultNotification.ts index f5bfb15..aa8d231 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultNotification.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultNotification.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultOperationLog.ts b/reading-platform-frontend/src/api/generated/model/pageResultOperationLog.ts index 7fb1af5..136932d 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultOperationLog.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultOperationLog.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultParent.ts b/reading-platform-frontend/src/api/generated/model/pageResultParent.ts index 3b3b4ba..13ddab2 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultParent.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultParent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultResourceItem.ts b/reading-platform-frontend/src/api/generated/model/pageResultResourceItem.ts index 6f4e0aa..a6026f0 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultResourceItem.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultResourceItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultSchedulePlan.ts b/reading-platform-frontend/src/api/generated/model/pageResultSchedulePlan.ts index 271a93d..a0b7954 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultSchedulePlan.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultSchedulePlan.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultScheduleTemplate.ts b/reading-platform-frontend/src/api/generated/model/pageResultScheduleTemplate.ts index e9e72de..672f804 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultScheduleTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultScheduleTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultSchoolCourse.ts b/reading-platform-frontend/src/api/generated/model/pageResultSchoolCourse.ts index 4d9b3aa..32b3f3f 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultSchoolCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultSchoolCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultStudent.ts b/reading-platform-frontend/src/api/generated/model/pageResultStudent.ts index 153b2e8..e067c9d 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultStudent.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultStudent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultTask.ts b/reading-platform-frontend/src/api/generated/model/pageResultTask.ts index ca23b1d..f9c3d9e 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultTask.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultTask.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultTaskCompletion.ts b/reading-platform-frontend/src/api/generated/model/pageResultTaskCompletion.ts index 20bb9af..added07 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultTaskCompletion.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultTaskCompletion.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultTaskTemplate.ts b/reading-platform-frontend/src/api/generated/model/pageResultTaskTemplate.ts index 3c4b91a..83ebd35 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultTaskTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultTaskTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultTeacher.ts b/reading-platform-frontend/src/api/generated/model/pageResultTeacher.ts index bc42083..7681455 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultTeacher.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultTeacher.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/pageResultTenant.ts b/reading-platform-frontend/src/api/generated/model/pageResultTenant.ts index c0049cb..751105a 100644 --- a/reading-platform-frontend/src/api/generated/model/pageResultTenant.ts +++ b/reading-platform-frontend/src/api/generated/model/pageResultTenant.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/parent.ts b/reading-platform-frontend/src/api/generated/model/parent.ts index 4b381e9..9fe12ff 100644 --- a/reading-platform-frontend/src/api/generated/model/parent.ts +++ b/reading-platform-frontend/src/api/generated/model/parent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/parentCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/parentCreateRequest.ts index 160bec6..72e98ad 100644 --- a/reading-platform-frontend/src/api/generated/model/parentCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/parentCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/parentUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/parentUpdateRequest.ts index 05e15f1..85f9262 100644 --- a/reading-platform-frontend/src/api/generated/model/parentUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/parentUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/rejectCourseParams.ts b/reading-platform-frontend/src/api/generated/model/rejectCourseParams.ts index 11b0c96..ed01577 100644 --- a/reading-platform-frontend/src/api/generated/model/rejectCourseParams.ts +++ b/reading-platform-frontend/src/api/generated/model/rejectCourseParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resetPassword1Params.ts b/reading-platform-frontend/src/api/generated/model/resetPassword1Params.ts index 6c8ce72..96c20a8 100644 --- a/reading-platform-frontend/src/api/generated/model/resetPassword1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/resetPassword1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resetPasswordParams.ts b/reading-platform-frontend/src/api/generated/model/resetPasswordParams.ts index 8f28461..ca4bf65 100644 --- a/reading-platform-frontend/src/api/generated/model/resetPasswordParams.ts +++ b/reading-platform-frontend/src/api/generated/model/resetPasswordParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resourceItem.ts b/reading-platform-frontend/src/api/generated/model/resourceItem.ts index bea3f4c..3543607 100644 --- a/reading-platform-frontend/src/api/generated/model/resourceItem.ts +++ b/reading-platform-frontend/src/api/generated/model/resourceItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resourceLibrary.ts b/reading-platform-frontend/src/api/generated/model/resourceLibrary.ts index 5dc6a9f..619dd30 100644 --- a/reading-platform-frontend/src/api/generated/model/resourceLibrary.ts +++ b/reading-platform-frontend/src/api/generated/model/resourceLibrary.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultClazz.ts b/reading-platform-frontend/src/api/generated/model/resultClazz.ts index c375f52..f76ce78 100644 --- a/reading-platform-frontend/src/api/generated/model/resultClazz.ts +++ b/reading-platform-frontend/src/api/generated/model/resultClazz.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultCourse.ts b/reading-platform-frontend/src/api/generated/model/resultCourse.ts index 3d049ae..0269a03 100644 --- a/reading-platform-frontend/src/api/generated/model/resultCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultCourseLesson.ts b/reading-platform-frontend/src/api/generated/model/resultCourseLesson.ts index 00878a9..10ad592 100644 --- a/reading-platform-frontend/src/api/generated/model/resultCourseLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/resultCourseLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultCoursePackage.ts b/reading-platform-frontend/src/api/generated/model/resultCoursePackage.ts index 1a488f3..430ffe0 100644 --- a/reading-platform-frontend/src/api/generated/model/resultCoursePackage.ts +++ b/reading-platform-frontend/src/api/generated/model/resultCoursePackage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultGrowthRecord.ts b/reading-platform-frontend/src/api/generated/model/resultGrowthRecord.ts index db6b565..d8b8564 100644 --- a/reading-platform-frontend/src/api/generated/model/resultGrowthRecord.ts +++ b/reading-platform-frontend/src/api/generated/model/resultGrowthRecord.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultLesson.ts b/reading-platform-frontend/src/api/generated/model/resultLesson.ts index 2e93693..9bc626f 100644 --- a/reading-platform-frontend/src/api/generated/model/resultLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/resultLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListCourse.ts b/reading-platform-frontend/src/api/generated/model/resultListCourse.ts index b81fe96..a9d83c9 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListCourseLesson.ts b/reading-platform-frontend/src/api/generated/model/resultListCourseLesson.ts index 67329f7..9ee7a9f 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListCourseLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListCourseLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListGrowthRecord.ts b/reading-platform-frontend/src/api/generated/model/resultListGrowthRecord.ts index d77d484..cebda88 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListGrowthRecord.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListGrowthRecord.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListLesson.ts b/reading-platform-frontend/src/api/generated/model/resultListLesson.ts index 5dfa032..03bc91c 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListMapStringObject.ts b/reading-platform-frontend/src/api/generated/model/resultListMapStringObject.ts index aec66ba..04b2f70 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListMapStringObject.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListMapStringObject.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListMapStringObjectDataItem.ts b/reading-platform-frontend/src/api/generated/model/resultListMapStringObjectDataItem.ts index b3c3328..9c629d5 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListMapStringObjectDataItem.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListMapStringObjectDataItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListResourceLibrary.ts b/reading-platform-frontend/src/api/generated/model/resultListResourceLibrary.ts index 366edfa..f65f06e 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListResourceLibrary.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListResourceLibrary.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListSchedulePlan.ts b/reading-platform-frontend/src/api/generated/model/resultListSchedulePlan.ts index a83e140..a892334 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListSchedulePlan.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListSchedulePlan.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListStudent.ts b/reading-platform-frontend/src/api/generated/model/resultListStudent.ts index 2eaf890..bfc1031 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListStudent.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListStudent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListTenantResponse.ts b/reading-platform-frontend/src/api/generated/model/resultListTenantResponse.ts index 0e7537c..cfa68d0 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListTenantResponse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListTenantResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultListTheme.ts b/reading-platform-frontend/src/api/generated/model/resultListTheme.ts index f1a5358..058ff7f 100644 --- a/reading-platform-frontend/src/api/generated/model/resultListTheme.ts +++ b/reading-platform-frontend/src/api/generated/model/resultListTheme.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultLoginResponse.ts b/reading-platform-frontend/src/api/generated/model/resultLoginResponse.ts index f071031..338fafb 100644 --- a/reading-platform-frontend/src/api/generated/model/resultLoginResponse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultLoginResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultLong.ts b/reading-platform-frontend/src/api/generated/model/resultLong.ts index 752c25f..b6af0a3 100644 --- a/reading-platform-frontend/src/api/generated/model/resultLong.ts +++ b/reading-platform-frontend/src/api/generated/model/resultLong.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultMapStringObject.ts b/reading-platform-frontend/src/api/generated/model/resultMapStringObject.ts index 5954d9a..b9b33d9 100644 --- a/reading-platform-frontend/src/api/generated/model/resultMapStringObject.ts +++ b/reading-platform-frontend/src/api/generated/model/resultMapStringObject.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultMapStringObjectData.ts b/reading-platform-frontend/src/api/generated/model/resultMapStringObjectData.ts index 3bb4889..21a0ac3 100644 --- a/reading-platform-frontend/src/api/generated/model/resultMapStringObjectData.ts +++ b/reading-platform-frontend/src/api/generated/model/resultMapStringObjectData.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultMapStringString.ts b/reading-platform-frontend/src/api/generated/model/resultMapStringString.ts index 5f7f205..8c2511a 100644 --- a/reading-platform-frontend/src/api/generated/model/resultMapStringString.ts +++ b/reading-platform-frontend/src/api/generated/model/resultMapStringString.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultMapStringStringData.ts b/reading-platform-frontend/src/api/generated/model/resultMapStringStringData.ts index 6f573f5..c6f3b1f 100644 --- a/reading-platform-frontend/src/api/generated/model/resultMapStringStringData.ts +++ b/reading-platform-frontend/src/api/generated/model/resultMapStringStringData.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultNotification.ts b/reading-platform-frontend/src/api/generated/model/resultNotification.ts index 706b90f..d91d136 100644 --- a/reading-platform-frontend/src/api/generated/model/resultNotification.ts +++ b/reading-platform-frontend/src/api/generated/model/resultNotification.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultClazz.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultClazz.ts index afcf682..66f880e 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultClazz.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultClazz.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultCourse.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultCourse.ts index 5bd550e..a1ce8c2 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultCoursePackage.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultCoursePackage.ts index ef4e14a..377d054 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultCoursePackage.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultCoursePackage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultGrowthRecord.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultGrowthRecord.ts index 1979e7f..fdff698 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultGrowthRecord.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultGrowthRecord.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultLesson.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultLesson.ts index cc4b3d8..36ef939 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultLesson.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultLesson.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultNotification.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultNotification.ts index 894a766..4dde901 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultNotification.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultNotification.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultOperationLog.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultOperationLog.ts index 1029b81..d8cd0c8 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultOperationLog.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultOperationLog.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultParent.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultParent.ts index dbd5b67..69a3d91 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultParent.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultParent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultResourceItem.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultResourceItem.ts index ceda460..9880e46 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultResourceItem.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultResourceItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultSchedulePlan.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultSchedulePlan.ts index 020f5e6..cffec68 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultSchedulePlan.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultSchedulePlan.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultScheduleTemplate.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultScheduleTemplate.ts index e8cfe43..145cbee 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultScheduleTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultScheduleTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultSchoolCourse.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultSchoolCourse.ts index ceb6805..3f49a15 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultSchoolCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultSchoolCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultStudent.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultStudent.ts index 8ee2173..0a47817 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultStudent.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultStudent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultTask.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultTask.ts index f2ceaca..c8bb85f 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultTask.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultTask.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultTaskCompletion.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultTaskCompletion.ts index 00ddaae..4f70bfe 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultTaskCompletion.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultTaskCompletion.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultTaskTemplate.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultTaskTemplate.ts index 7eb8f09..f65e88e 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultTaskTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultTaskTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultTeacher.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultTeacher.ts index c257e24..566cb70 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultTeacher.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultTeacher.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultPageResultTenant.ts b/reading-platform-frontend/src/api/generated/model/resultPageResultTenant.ts index d35e035..94c8021 100644 --- a/reading-platform-frontend/src/api/generated/model/resultPageResultTenant.ts +++ b/reading-platform-frontend/src/api/generated/model/resultPageResultTenant.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultParent.ts b/reading-platform-frontend/src/api/generated/model/resultParent.ts index 40180c7..fdb1fce 100644 --- a/reading-platform-frontend/src/api/generated/model/resultParent.ts +++ b/reading-platform-frontend/src/api/generated/model/resultParent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultResourceItem.ts b/reading-platform-frontend/src/api/generated/model/resultResourceItem.ts index 4a820dc..f107646 100644 --- a/reading-platform-frontend/src/api/generated/model/resultResourceItem.ts +++ b/reading-platform-frontend/src/api/generated/model/resultResourceItem.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultResourceLibrary.ts b/reading-platform-frontend/src/api/generated/model/resultResourceLibrary.ts index 2277729..0243f6c 100644 --- a/reading-platform-frontend/src/api/generated/model/resultResourceLibrary.ts +++ b/reading-platform-frontend/src/api/generated/model/resultResourceLibrary.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultSchedulePlan.ts b/reading-platform-frontend/src/api/generated/model/resultSchedulePlan.ts index 1cb2745..d865b76 100644 --- a/reading-platform-frontend/src/api/generated/model/resultSchedulePlan.ts +++ b/reading-platform-frontend/src/api/generated/model/resultSchedulePlan.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultScheduleTemplate.ts b/reading-platform-frontend/src/api/generated/model/resultScheduleTemplate.ts index 96e9178..1a9cd4a 100644 --- a/reading-platform-frontend/src/api/generated/model/resultScheduleTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/resultScheduleTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultSchoolCourse.ts b/reading-platform-frontend/src/api/generated/model/resultSchoolCourse.ts index e53e06e..845fa65 100644 --- a/reading-platform-frontend/src/api/generated/model/resultSchoolCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultSchoolCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultStudent.ts b/reading-platform-frontend/src/api/generated/model/resultStudent.ts index 44886ea..2089154 100644 --- a/reading-platform-frontend/src/api/generated/model/resultStudent.ts +++ b/reading-platform-frontend/src/api/generated/model/resultStudent.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultTask.ts b/reading-platform-frontend/src/api/generated/model/resultTask.ts index c5da3d0..8320e14 100644 --- a/reading-platform-frontend/src/api/generated/model/resultTask.ts +++ b/reading-platform-frontend/src/api/generated/model/resultTask.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultTaskCompletion.ts b/reading-platform-frontend/src/api/generated/model/resultTaskCompletion.ts index e73f153..8e6062b 100644 --- a/reading-platform-frontend/src/api/generated/model/resultTaskCompletion.ts +++ b/reading-platform-frontend/src/api/generated/model/resultTaskCompletion.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultTaskTemplate.ts b/reading-platform-frontend/src/api/generated/model/resultTaskTemplate.ts index 2cf2432..126ddd6 100644 --- a/reading-platform-frontend/src/api/generated/model/resultTaskTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/resultTaskTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultTeacher.ts b/reading-platform-frontend/src/api/generated/model/resultTeacher.ts index c987319..6bb3f04 100644 --- a/reading-platform-frontend/src/api/generated/model/resultTeacher.ts +++ b/reading-platform-frontend/src/api/generated/model/resultTeacher.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultTenant.ts b/reading-platform-frontend/src/api/generated/model/resultTenant.ts index c39f28e..e5d1f6e 100644 --- a/reading-platform-frontend/src/api/generated/model/resultTenant.ts +++ b/reading-platform-frontend/src/api/generated/model/resultTenant.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultTheme.ts b/reading-platform-frontend/src/api/generated/model/resultTheme.ts index 225caff..c072a5a 100644 --- a/reading-platform-frontend/src/api/generated/model/resultTheme.ts +++ b/reading-platform-frontend/src/api/generated/model/resultTheme.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultUserInfoResponse.ts b/reading-platform-frontend/src/api/generated/model/resultUserInfoResponse.ts index 6945d4f..0f82212 100644 --- a/reading-platform-frontend/src/api/generated/model/resultUserInfoResponse.ts +++ b/reading-platform-frontend/src/api/generated/model/resultUserInfoResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultVoid.ts b/reading-platform-frontend/src/api/generated/model/resultVoid.ts index 342ae35..f212e5a 100644 --- a/reading-platform-frontend/src/api/generated/model/resultVoid.ts +++ b/reading-platform-frontend/src/api/generated/model/resultVoid.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/resultVoidData.ts b/reading-platform-frontend/src/api/generated/model/resultVoidData.ts index 86f58a1..b36f087 100644 --- a/reading-platform-frontend/src/api/generated/model/resultVoidData.ts +++ b/reading-platform-frontend/src/api/generated/model/resultVoidData.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/reviewPackageBody.ts b/reading-platform-frontend/src/api/generated/model/reviewPackageBody.ts index f32570b..507228c 100644 --- a/reading-platform-frontend/src/api/generated/model/reviewPackageBody.ts +++ b/reading-platform-frontend/src/api/generated/model/reviewPackageBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/schedulePlan.ts b/reading-platform-frontend/src/api/generated/model/schedulePlan.ts index e26fad1..fe1c587 100644 --- a/reading-platform-frontend/src/api/generated/model/schedulePlan.ts +++ b/reading-platform-frontend/src/api/generated/model/schedulePlan.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/schedulePlanCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/schedulePlanCreateRequest.ts index 9d4ee2f..02b0243 100644 --- a/reading-platform-frontend/src/api/generated/model/schedulePlanCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/schedulePlanCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/scheduleTemplate.ts b/reading-platform-frontend/src/api/generated/model/scheduleTemplate.ts index 11dd3eb..2dfd2a7 100644 --- a/reading-platform-frontend/src/api/generated/model/scheduleTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/scheduleTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/scheduleTemplateApplyRequest.ts b/reading-platform-frontend/src/api/generated/model/scheduleTemplateApplyRequest.ts index c000284..bc227a6 100644 --- a/reading-platform-frontend/src/api/generated/model/scheduleTemplateApplyRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/scheduleTemplateApplyRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/schoolCourse.ts b/reading-platform-frontend/src/api/generated/model/schoolCourse.ts index 096025c..7e218f4 100644 --- a/reading-platform-frontend/src/api/generated/model/schoolCourse.ts +++ b/reading-platform-frontend/src/api/generated/model/schoolCourse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/student.ts b/reading-platform-frontend/src/api/generated/model/student.ts index 8be8183..7c55678 100644 --- a/reading-platform-frontend/src/api/generated/model/student.ts +++ b/reading-platform-frontend/src/api/generated/model/student.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/studentCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/studentCreateRequest.ts index fee0f8c..f29edbc 100644 --- a/reading-platform-frontend/src/api/generated/model/studentCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/studentCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/studentUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/studentUpdateRequest.ts index 0bdcc76..2815cbf 100644 --- a/reading-platform-frontend/src/api/generated/model/studentUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/studentUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/task.ts b/reading-platform-frontend/src/api/generated/model/task.ts index ee91204..8463cb3 100644 --- a/reading-platform-frontend/src/api/generated/model/task.ts +++ b/reading-platform-frontend/src/api/generated/model/task.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/taskCompletion.ts b/reading-platform-frontend/src/api/generated/model/taskCompletion.ts index 6509431..88228b3 100644 --- a/reading-platform-frontend/src/api/generated/model/taskCompletion.ts +++ b/reading-platform-frontend/src/api/generated/model/taskCompletion.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/taskCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/taskCreateRequest.ts index 5bb593f..90e36ec 100644 --- a/reading-platform-frontend/src/api/generated/model/taskCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/taskCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/taskTemplate.ts b/reading-platform-frontend/src/api/generated/model/taskTemplate.ts index c386a0b..e428f0c 100644 --- a/reading-platform-frontend/src/api/generated/model/taskTemplate.ts +++ b/reading-platform-frontend/src/api/generated/model/taskTemplate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/taskTemplateCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/taskTemplateCreateRequest.ts index a8db4b2..3bce611 100644 --- a/reading-platform-frontend/src/api/generated/model/taskTemplateCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/taskTemplateCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/taskTemplateUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/taskTemplateUpdateRequest.ts index 7a2d7e9..2b1aed8 100644 --- a/reading-platform-frontend/src/api/generated/model/taskTemplateUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/taskTemplateUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/taskUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/taskUpdateRequest.ts index 4aeb643..cd484c0 100644 --- a/reading-platform-frontend/src/api/generated/model/taskUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/taskUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/teacher.ts b/reading-platform-frontend/src/api/generated/model/teacher.ts index dcb8119..5d220ab 100644 --- a/reading-platform-frontend/src/api/generated/model/teacher.ts +++ b/reading-platform-frontend/src/api/generated/model/teacher.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/teacherCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/teacherCreateRequest.ts index 7ec8e67..a38ca3a 100644 --- a/reading-platform-frontend/src/api/generated/model/teacherCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/teacherCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/teacherUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/teacherUpdateRequest.ts index 1785e4e..b62dd82 100644 --- a/reading-platform-frontend/src/api/generated/model/teacherUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/teacherUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/tenant.ts b/reading-platform-frontend/src/api/generated/model/tenant.ts index 56a3448..30e069f 100644 --- a/reading-platform-frontend/src/api/generated/model/tenant.ts +++ b/reading-platform-frontend/src/api/generated/model/tenant.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/tenantCreateRequest.ts b/reading-platform-frontend/src/api/generated/model/tenantCreateRequest.ts index fff8beb..eae0cc3 100644 --- a/reading-platform-frontend/src/api/generated/model/tenantCreateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/tenantCreateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/tenantResponse.ts b/reading-platform-frontend/src/api/generated/model/tenantResponse.ts index 74ca8ee..f87aa3b 100644 --- a/reading-platform-frontend/src/api/generated/model/tenantResponse.ts +++ b/reading-platform-frontend/src/api/generated/model/tenantResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/tenantUpdateRequest.ts b/reading-platform-frontend/src/api/generated/model/tenantUpdateRequest.ts index a96ef29..579ff38 100644 --- a/reading-platform-frontend/src/api/generated/model/tenantUpdateRequest.ts +++ b/reading-platform-frontend/src/api/generated/model/tenantUpdateRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/theme.ts b/reading-platform-frontend/src/api/generated/model/theme.ts index 9d7ac52..defb30a 100644 --- a/reading-platform-frontend/src/api/generated/model/theme.ts +++ b/reading-platform-frontend/src/api/generated/model/theme.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/updateCompletion1Params.ts b/reading-platform-frontend/src/api/generated/model/updateCompletion1Params.ts index ffe835b..9f6e41d 100644 --- a/reading-platform-frontend/src/api/generated/model/updateCompletion1Params.ts +++ b/reading-platform-frontend/src/api/generated/model/updateCompletion1Params.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/updateCompletionParams.ts b/reading-platform-frontend/src/api/generated/model/updateCompletionParams.ts index 6e0a8b4..0f8ddb0 100644 --- a/reading-platform-frontend/src/api/generated/model/updateCompletionParams.ts +++ b/reading-platform-frontend/src/api/generated/model/updateCompletionParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/updateSettings1Body.ts b/reading-platform-frontend/src/api/generated/model/updateSettings1Body.ts index 304c458..90bb3bb 100644 --- a/reading-platform-frontend/src/api/generated/model/updateSettings1Body.ts +++ b/reading-platform-frontend/src/api/generated/model/updateSettings1Body.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/updateSettingsBody.ts b/reading-platform-frontend/src/api/generated/model/updateSettingsBody.ts index f7b8d23..d13df32 100644 --- a/reading-platform-frontend/src/api/generated/model/updateSettingsBody.ts +++ b/reading-platform-frontend/src/api/generated/model/updateSettingsBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/updateTenantQuotaBody.ts b/reading-platform-frontend/src/api/generated/model/updateTenantQuotaBody.ts index ec02189..3fa28d3 100644 --- a/reading-platform-frontend/src/api/generated/model/updateTenantQuotaBody.ts +++ b/reading-platform-frontend/src/api/generated/model/updateTenantQuotaBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/updateTenantStatusBody.ts b/reading-platform-frontend/src/api/generated/model/updateTenantStatusBody.ts index e78bb46..4d4097d 100644 --- a/reading-platform-frontend/src/api/generated/model/updateTenantStatusBody.ts +++ b/reading-platform-frontend/src/api/generated/model/updateTenantStatusBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/uploadFileBody.ts b/reading-platform-frontend/src/api/generated/model/uploadFileBody.ts index 88117e5..b93b306 100644 --- a/reading-platform-frontend/src/api/generated/model/uploadFileBody.ts +++ b/reading-platform-frontend/src/api/generated/model/uploadFileBody.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/api/generated/model/userInfoResponse.ts b/reading-platform-frontend/src/api/generated/model/userInfoResponse.ts index a571615..fb4cf43 100644 --- a/reading-platform-frontend/src/api/generated/model/userInfoResponse.ts +++ b/reading-platform-frontend/src/api/generated/model/userInfoResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.21.0 🍺 + * Generated by orval v7.13.2 🍺 * Do not edit manually. * Reading Platform API * Reading Platform Backend Service API Documentation diff --git a/reading-platform-frontend/src/router/index.ts b/reading-platform-frontend/src/router/index.ts index 9c57f4b..29b4be5 100644 --- a/reading-platform-frontend/src/router/index.ts +++ b/reading-platform-frontend/src/router/index.ts @@ -77,26 +77,26 @@ const routes: RouteRecordRaw[] = [ }, // V2 新增路由 { - path: 'packages', - name: 'AdminPackages', + path: 'bundles', + name: 'AdminBundles', component: () => import('@/views/admin/packages/PackageListView.vue'), meta: { title: '套餐管理' }, }, { - path: 'packages/create', - name: 'AdminPackageCreate', + path: 'bundles/create', + name: 'AdminBundleCreate', component: () => import('@/views/admin/packages/PackageEditView.vue'), meta: { title: '创建套餐' }, }, { - path: 'packages/:id', - name: 'AdminPackageDetail', + path: 'bundles/:id', + name: 'AdminBundleDetail', component: () => import('@/views/admin/packages/PackageDetailView.vue'), meta: { title: '套餐详情' }, }, { - path: 'packages/:id/edit', - name: 'AdminPackageEdit', + path: 'bundles/:id/edit', + name: 'AdminBundleEdit', component: () => import('@/views/admin/packages/PackageEditView.vue'), meta: { title: '编辑套餐' }, }, diff --git a/reading-platform-java/init-test-data.sql b/reading-platform-java/init-test-data.sql new file mode 100644 index 0000000..86600f6 --- /dev/null +++ b/reading-platform-java/init-test-data.sql @@ -0,0 +1,13 @@ +-- ============================================ +-- Reading Platform 测试数据初始化 SQL +-- 版本:1.0.0 +-- 说明:包含完整的测试数据,涵盖所有主要业务实体 +-- ============================================ + +USE reading_platform; + +-- ============================================ +-- 1. 管理员账户 (密码:admin123) +-- ============================================ +INSERT INTO t_admin_user (id, username, password, name, email, phone, status) VALUES +('10000000000000000000000000000001', 'admin', '\a\0\.7JHq3aKzYOxLNqZzK8U8MqP0JzXzZ5Z5Z5Z5Z5Z5Z', '系统管理员', 'admin@reading.com', '13800138000', 'active'); diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminBundleCoursePackageController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminBundleCoursePackageController.java new file mode 100644 index 0000000..cb65af5 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminBundleCoursePackageController.java @@ -0,0 +1,78 @@ +package com.reading.platform.controller.admin; + +import com.reading.platform.common.annotation.RequireRole; +import com.reading.platform.common.enums.UserRole; +import com.reading.platform.common.response.Result; +import com.reading.platform.entity.ProductBundleCoursePackage; +import com.reading.platform.service.ProductBundleCoursePackageService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 管理员 - 套餐课程包关联管理控制器 + */ +@Tag(name = "管理员 - 套餐课程包关联", description = "套餐课程包关联管理接口") +@RestController +@RequestMapping("/api/v1/admin/bundles/{bundleId}/packages") +@RequiredArgsConstructor +@RequireRole(UserRole.ADMIN) +public class AdminBundleCoursePackageController { + + private final ProductBundleCoursePackageService bundleCoursePackageService; + + @Operation(summary = "获取套餐包含的课程包列表") + @GetMapping + public Result> getBundleCoursePackages(@PathVariable String bundleId) { + return Result.success(bundleCoursePackageService.getBundleCoursePackages(bundleId)); + } + + @Operation(summary = "添加课程包到套餐") + @PostMapping + public Result addBundleCoursePackage( + @PathVariable String bundleId, + @RequestBody Map body) { + String coursePackageId = body.get("coursePackageId"); + String gradeLevel = body.get("gradeLevel"); + + ProductBundleCoursePackage relation = new ProductBundleCoursePackage(); + relation.setProductBundleId(bundleId); + relation.setCoursePackageId(coursePackageId); + relation.setGradeLevel(gradeLevel); + + return Result.success(bundleCoursePackageService.addBundleCoursePackage(relation)); + } + + @Operation(summary = "从套餐移除课程包") + @DeleteMapping("/{id}") + public Result removeBundleCoursePackage( + @PathVariable String bundleId, + @PathVariable String id) { + bundleCoursePackageService.removeBundleCoursePackage(id); + return Result.success(); + } + + @Operation(summary = "更新课程包排序") + @PutMapping("/{id}/sort") + public Result updateSortOrder( + @PathVariable String bundleId, + @PathVariable String id, + @RequestBody Map body) { + Integer sortOrder = body.get("sortOrder"); + bundleCoursePackageService.updateSortOrder(id, sortOrder); + return Result.success(); + } + + @Operation(summary = "批量添加课程包到套餐") + @PostMapping("/batch") + public Result batchAddBundleCoursePackages( + @PathVariable String bundleId, + @RequestBody List coursePackageIds) { + bundleCoursePackageService.batchAddBundleCoursePackages(bundleId, coursePackageIds); + return Result.success(); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java index 263ffc2..f62716d 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminCoursePackageController.java @@ -26,13 +26,12 @@ public class AdminCoursePackageController { public Result> getPackages( @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(defaultValue = "20") int pageSize, - @RequestParam(required = false) String keyword, - @RequestParam(required = false) String status) { - Page result = coursePackageService.getPackages(page, pageSize, keyword, status); + @RequestParam(required = false) String keyword) { + Page result = coursePackageService.getPackages(page, pageSize, keyword); return Result.success(PageResult.of(result)); } - @Operation(summary = "根据ID获取课程包") + @Operation(summary = "根据 ID 获取课程包") @GetMapping("/{id}") public Result getPackage(@PathVariable String id) { return Result.success(coursePackageService.getPackageById(id)); @@ -57,35 +56,6 @@ public class AdminCoursePackageController { return Result.success(); } - @Operation(summary = "提交课程包审核") - @PostMapping("/{id}/submit") - public Result submitPackage(@PathVariable String id) { - coursePackageService.submitPackage(id); - return Result.success(); - } - - @Operation(summary = "审核课程包(通过或拒绝)") - @PostMapping("/{id}/review") - public Result reviewPackage( - @PathVariable String id, - @RequestBody java.util.Map body) { - boolean approved = Boolean.TRUE.equals(body.get("approved")); - String comment = (String) body.get("comment"); - coursePackageService.reviewPackage(id, approved, comment); - return Result.success(); - } - - @Operation(summary = "发布课程包") - @PostMapping("/{id}/publish") - public Result publishPackage(@PathVariable String id) { - coursePackageService.publishPackage(id); - return Result.success(); - } - - @Operation(summary = "下架课程包") - @PostMapping("/{id}/offline") - public Result offlinePackage(@PathVariable String id) { - coursePackageService.offlinePackage(id); - return Result.success(); - } + // 注意:课程包状态管理已移至套餐(ProductBundle) + // 以下方法已废弃,请使用 /api/v1/admin/bundles 相关接口 } diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminPackageCourseController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminPackageCourseController.java new file mode 100644 index 0000000..96dd191 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminPackageCourseController.java @@ -0,0 +1,76 @@ +package com.reading.platform.controller.admin; + +import com.reading.platform.common.annotation.RequireRole; +import com.reading.platform.common.enums.UserRole; +import com.reading.platform.common.response.Result; +import com.reading.platform.entity.CoursePackageCourse; +import com.reading.platform.service.CoursePackageCourseService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * 管理员 - 课程包课程关联管理控制器 + */ +@Tag(name = "管理员 - 课程包课程关联", description = "课程包课程关联管理接口") +@RestController +@RequestMapping("/api/v1/admin/packages/{packageId}/courses") +@RequiredArgsConstructor +@RequireRole(UserRole.ADMIN) +public class AdminPackageCourseController { + + private final CoursePackageCourseService packageCourseService; + + @Operation(summary = "获取课程包包含的课程列表") + @GetMapping + public Result> getPackageCourses(@PathVariable String packageId) { + return Result.success(packageCourseService.getPackageCourses(packageId)); + } + + @Operation(summary = "添加课程到课程包") + @PostMapping + public Result addPackageCourse( + @PathVariable String packageId, + @RequestBody Map body) { + String courseId = body.get("courseId"); + + CoursePackageCourse relation = new CoursePackageCourse(); + relation.setCoursePackageId(packageId); + relation.setCourseId(courseId); + + return Result.success(packageCourseService.addPackageCourse(relation)); + } + + @Operation(summary = "从课程包移除课程") + @DeleteMapping("/{id}") + public Result removePackageCourse( + @PathVariable String packageId, + @PathVariable String id) { + packageCourseService.removePackageCourse(id); + return Result.success(); + } + + @Operation(summary = "更新课程排序") + @PutMapping("/{id}/sort") + public Result updateSortOrder( + @PathVariable String packageId, + @PathVariable String id, + @RequestBody Map body) { + Integer sortOrder = body.get("sortOrder"); + packageCourseService.updateSortOrder(id, sortOrder); + return Result.success(); + } + + @Operation(summary = "批量添加课程到课程包") + @PostMapping("/batch") + public Result batchAddPackageCourses( + @PathVariable String packageId, + @RequestBody List courseIds) { + packageCourseService.batchAddPackageCourses(packageId, courseIds); + return Result.success(); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminProductBundleController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminProductBundleController.java new file mode 100644 index 0000000..60842a4 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminProductBundleController.java @@ -0,0 +1,105 @@ +package com.reading.platform.controller.admin; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.reading.platform.common.annotation.RequireRole; +import com.reading.platform.common.enums.UserRole; +import com.reading.platform.common.response.PageResult; +import com.reading.platform.common.response.Result; +import com.reading.platform.entity.ProductBundle; +import com.reading.platform.service.ProductBundleService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * 管理员 - 套餐管理控制器 + */ +@Tag(name = "管理员 - 套餐管理", description = "产品套餐管理接口(管理员专用)") +@RestController +@RequestMapping("/api/v1/admin/bundles") +@RequiredArgsConstructor +@RequireRole(UserRole.ADMIN) +public class AdminProductBundleController { + + private final ProductBundleService productBundleService; + + @Operation(summary = "获取套餐列表") + @GetMapping + public Result> getBundles( + @RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(defaultValue = "20") int pageSize, + @RequestParam(required = false) String keyword, + @RequestParam(required = false) String status) { + Page result = productBundleService.getBundlePage(page, pageSize, keyword, status); + return Result.success(PageResult.of(result)); + } + + @Operation(summary = "根据 ID 获取套餐") + @GetMapping("/{id}") + public Result getBundle(@PathVariable String id) { + return Result.success(productBundleService.getBundleById(id)); + } + + @Operation(summary = "创建套餐") + @PostMapping + public Result createBundle(@RequestBody ProductBundle bundle) { + return Result.success(productBundleService.createBundle(bundle)); + } + + @Operation(summary = "更新套餐") + @PutMapping("/{id}") + public Result updateBundle(@PathVariable String id, @RequestBody ProductBundle bundle) { + return Result.success(productBundleService.updateBundle(id, bundle)); + } + + @Operation(summary = "删除套餐") + @DeleteMapping("/{id}") + public Result deleteBundle(@PathVariable String id) { + productBundleService.deleteBundle(id); + return Result.success(); + } + + @Operation(summary = "提交套餐审核") + @PostMapping("/{id}/submit") + public Result submitBundle(@PathVariable String id) { + productBundleService.submitBundle(id); + return Result.success(); + } + + @Operation(summary = "审核套餐(通过或拒绝)") + @PostMapping("/{id}/review") + public Result reviewBundle( + @PathVariable String id, + @RequestBody java.util.Map body) { + Boolean approvedObj = (Boolean) body.get("approved"); + boolean approved = approvedObj != null && approvedObj; + String comment = (String) body.get("comment"); + productBundleService.reviewBundle(id, approved, comment); + return Result.success(); + } + + @Operation(summary = "发布套餐") + @PostMapping("/{id}/publish") + public Result publishBundle(@PathVariable String id) { + productBundleService.publishBundle(id); + return Result.success(); + } + + @Operation(summary = "下架套餐") + @PostMapping("/{id}/offline") + public Result offlineBundle(@PathVariable String id) { + productBundleService.offlineBundle(id); + return Result.success(); + } + + @Operation(summary = "获取系统套餐列表") + @GetMapping("/system") + public Result> getSystemBundles( + @RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(defaultValue = "20") int pageSize, + @RequestParam(required = false) String gradeLevel) { + Page result = productBundleService.getSystemBundles(page, pageSize, gradeLevel); + return Result.success(PageResult.of(result)); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminTenantBundleController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminTenantBundleController.java new file mode 100644 index 0000000..29cdc5b --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/admin/AdminTenantBundleController.java @@ -0,0 +1,96 @@ +package com.reading.platform.controller.admin; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.reading.platform.common.annotation.RequireRole; +import com.reading.platform.common.enums.UserRole; +import com.reading.platform.common.response.PageResult; +import com.reading.platform.common.response.Result; +import com.reading.platform.entity.TenantProductBundle; +import com.reading.platform.service.TenantProductBundleService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 管理员 - 学校套餐购买记录管理控制器 + */ +@Tag(name = "管理员 - 学校套餐购买记录", description = "学校套餐购买记录管理接口") +@RestController +@RequestMapping("/api/v1/admin/tenant-bundles") +@RequiredArgsConstructor +@RequireRole(UserRole.ADMIN) +public class AdminTenantBundleController { + + private final TenantProductBundleService tenantBundleService; + + @Operation(summary = "获取学校套餐购买记录列表") + @GetMapping + public Result> getTenantBundles( + @RequestParam(value = "page", defaultValue = "1") int page, + @RequestParam(defaultValue = "20") int pageSize, + @RequestParam(required = false) String tenantId, + @RequestParam(required = false) String status) { + Page result = tenantBundleService.getTenantBundlePage(page, pageSize, tenantId, status); + return Result.success(PageResult.of(result)); + } + + @Operation(summary = "根据 ID 获取购买记录") + @GetMapping("/{id}") + public Result getTenantBundle(@PathVariable String id) { + return Result.success(tenantBundleService.getTenantBundleById(id)); + } + + @Operation(summary = "获取学校的套餐列表") + @GetMapping("/tenant/{tenantId}") + public Result> getTenantBundlesByTenantId(@PathVariable String tenantId) { + return Result.success(tenantBundleService.getTenantBundlesByTenantId(tenantId)); + } + + @Operation(summary = "获取学校当前有效的套餐") + @GetMapping("/tenant/{tenantId}/active") + public Result getActiveTenantBundle(@PathVariable String tenantId) { + TenantProductBundle bundle = tenantBundleService.getActiveTenantBundle(tenantId); + if (bundle == null) { + return Result.success(null); + } + return Result.success(bundle); + } + + @Operation(summary = "创建购买记录") + @PostMapping + public Result createTenantBundle(@RequestBody TenantProductBundle record) { + return Result.success(tenantBundleService.createTenantBundle(record)); + } + + @Operation(summary = "更新购买记录") + @PutMapping("/{id}") + public Result updateTenantBundle( + @PathVariable String id, + @RequestBody TenantProductBundle record) { + return Result.success(tenantBundleService.updateTenantBundle(id, record)); + } + + @Operation(summary = "激活套餐") + @PostMapping("/{id}/activate") + public Result activateBundle(@PathVariable String id) { + tenantBundleService.activateBundle(id); + return Result.success(); + } + + @Operation(summary = "过期套餐") + @PostMapping("/{id}/expire") + public Result expireBundle(@PathVariable String id) { + tenantBundleService.expireBundle(id); + return Result.success(); + } + + @Operation(summary = "暂停套餐") + @PostMapping("/{id}/suspend") + public Result suspendBundle(@PathVariable String id) { + tenantBundleService.suspendBundle(id); + return Result.success(); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolCoursePackageController.java b/reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolCoursePackageController.java index 5a5edf5..b4f5ca1 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolCoursePackageController.java +++ b/reading-platform-java/src/main/java/com/reading/platform/controller/school/SchoolCoursePackageController.java @@ -27,7 +27,7 @@ public class SchoolCoursePackageController { @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize, @RequestParam(required = false) String keyword) { - Page page = coursePackageService.getPackages(pageNum, pageSize, keyword, "published"); + Page page = coursePackageService.getPackages(pageNum, pageSize, keyword); return Result.success(PageResult.of(page)); } @@ -37,7 +37,7 @@ public class SchoolCoursePackageController { @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "20") int pageSize, @RequestParam(required = false) String keyword) { - Page page = coursePackageService.getPackages(pageNum, pageSize, keyword, "published"); + Page page = coursePackageService.getPackages(pageNum, pageSize, keyword); return Result.success(PageResult.of(page)); } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/AdminSettingsUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/AdminSettingsUpdateRequest.java index d015897..e5a6446 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/AdminSettingsUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/AdminSettingsUpdateRequest.java @@ -10,72 +10,72 @@ import lombok.Data; @Schema(description = "管理员设置更新请求") public class AdminSettingsUpdateRequest { - @Schema(description = "系统名称") + @Schema(description = "系统名称", example = "少儿智慧阅读平台") private String systemName; - @Schema(description = "系统描述") + @Schema(description = "系统描述", example = "专业的幼儿园课程管理系统") private String systemDesc; - @Schema(description = "联系电话") + @Schema(description = "联系电话", example = "010-12345678") private String contactPhone; - @Schema(description = "联系邮箱") + @Schema(description = "联系邮箱", example = "admin@example.com") private String contactEmail; - @Schema(description = "系统 Logo") + @Schema(description = "系统 Logo", example = "/logo.png") private String systemLogo; - @Schema(description = "密码强度") + @Schema(description = "密码强度", example = "medium") private String passwordStrength; - @Schema(description = "最大登录尝试次数") + @Schema(description = "最大登录尝试次数", example = "5") private Integer maxLoginAttempts; - @Schema(description = "Token 过期时间") + @Schema(description = "Token 过期时间", example = "24h") private String tokenExpire; - @Schema(description = "强制 HTTPS") + @Schema(description = "强制 HTTPS", example = "true") private Boolean forceHttps; - @Schema(description = "邮箱启用") + @Schema(description = "邮箱启用", example = "true") private Boolean emailEnabled; - @Schema(description = "SMTP 主机") + @Schema(description = "SMTP 主机", example = "smtp.example.com") private String smtpHost; - @Schema(description = "SMTP 端口") + @Schema(description = "SMTP 端口", example = "587") private Integer smtpPort; - @Schema(description = "SMTP 用户") + @Schema(description = "SMTP 用户", example = "smtp@example.com") private String smtpUser; - @Schema(description = "SMTP 密码") + @Schema(description = "SMTP 密码", example = "password") private String smtpPassword; - @Schema(description = "发件人邮箱") + @Schema(description = "发件人邮箱", example = "noreply@example.com") private String fromEmail; - @Schema(description = "短信启用") + @Schema(description = "短信启用", example = "false") private Boolean smsEnabled; - @Schema(description = "存储类型") + @Schema(description = "存储类型", example = "local") private String storageType; - @Schema(description = "最大文件大小") + @Schema(description = "最大文件大小", example = "10") private Integer maxFileSize; - @Schema(description = "允许的文件类型") + @Schema(description = "允许的文件类型", example = "jpg,png,pdf") private String allowedTypes; - @Schema(description = "默认教师配额") + @Schema(description = "默认教师配额", example = "50") private Integer defaultTeacherQuota; - @Schema(description = "默认学生配额") + @Schema(description = "默认学生配额", example = "500") private Integer defaultStudentQuota; - @Schema(description = "启用自动过期") + @Schema(description = "启用自动过期", example = "true") private Boolean enableAutoExpire; - @Schema(description = "提前通知天数") + @Schema(description = "提前通知天数", example = "7") private Integer notifyBeforeDays; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassCreateRequest.java index 6004774..117f32f 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassCreateRequest.java @@ -8,17 +8,17 @@ import lombok.Data; @Schema(description = "班级创建请求") public class ClassCreateRequest { + @Schema(description = "班级名称", example = "大一班", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "班级名称不能为空") - @Schema(description = "班级名称") private String name; - @Schema(description = "年级") + @Schema(description = "年级", example = "大班") private String grade; - @Schema(description = "描述") + @Schema(description = "描述", example = "阳光活泼的大一班") private String description; - @Schema(description = "容量") + @Schema(description = "容量", example = "35") private Integer capacity; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassUpdateRequest.java index 3fd2f3b..ebb8f20 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ClassUpdateRequest.java @@ -7,19 +7,19 @@ import lombok.Data; @Schema(description = "班级更新请求") public class ClassUpdateRequest { - @Schema(description = "班级名称") + @Schema(description = "班级名称", example = "大一班") private String name; - @Schema(description = "年级") + @Schema(description = "年级", example = "大班") private String grade; - @Schema(description = "描述") + @Schema(description = "描述", example = "阳光活泼的大一班") private String description; - @Schema(description = "容量") + @Schema(description = "容量", example = "35") private Integer capacity; - @Schema(description = "状态") + @Schema(description = "状态", example = "active") private String status; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseCreateRequest.java index e957883..b0eb8da 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseCreateRequest.java @@ -11,81 +11,81 @@ import java.util.List; public class CourseCreateRequest { @NotBlank(message = "课程名称不能为空") - @Schema(description = "课程名称") + @Schema(description = "课程名称", example = "绘本阅读入门") private String name; - @Schema(description = "课程编码") + @Schema(description = "课程编码", example = "READ001") private String code; - @Schema(description = "描述") + @Schema(description = "描述", example = "适合大班幼儿的绘本阅读课程") private String description; @Schema(description = "封面URL") private String coverUrl; - @Schema(description = "封面图片路径") + @Schema(description = "封面图片路径", example = "/images/course1.png") private String coverImagePath; - @Schema(description = "分类") + @Schema(description = "分类", example = "language") private String category; - @Schema(description = "年龄段") + @Schema(description = "年龄段", example = "5-6 岁") private String ageRange; - @Schema(description = "难度等级") + @Schema(description = "难度等级", example = "beginner") private String difficultyLevel; - @Schema(description = "时长(分钟)") + @Schema(description = "时长(分钟)", example = "30") private Integer durationMinutes; - @Schema(description = "教学目标") + @Schema(description = "教学目标", example = "培养幼儿阅读兴趣") private String objectives; // ============================================ // 课程包重构字段 // ============================================ - @Schema(description = "核心内容") + @Schema(description = "核心内容", example = "绘本阅读指导") private String coreContent; // 课程介绍(8个字段) - @Schema(description = "课程摘要") + @Schema(description = "课程摘要", example = "本课程通过绘本阅读培养幼儿语言能力") private String introSummary; - @Schema(description = "课程亮点") + @Schema(description = "课程亮点", example = "互动式教学,趣味性强") private String introHighlights; - @Schema(description = "课程目标") + @Schema(description = "课程目标", example = "提升幼儿阅读理解能力") private String introGoals; - @Schema(description = "内容安排") + @Schema(description = "内容安排", example = "每周 2 课时,共 16 周") private String introSchedule; - @Schema(description = "重点难点") + @Schema(description = "重点难点", example = "培养幼儿自主阅读习惯") private String introKeyPoints; - @Schema(description = "教学方法") + @Schema(description = "教学方法", example = "情景教学、互动游戏") private String introMethods; - @Schema(description = "评估方法") + @Schema(description = "评估方法", example = "过程性评估与终结性评估结合") private String introEvaluation; - @Schema(description = "注意事项") + @Schema(description = "注意事项", example = "关注个体差异") private String introNotes; // 课表参考数据 - @Schema(description = "课表参考数据(JSON)") + @Schema(description = "课表参考数据(JSON)", example = "{}") private String scheduleRefData; // 环境创设(步骤7) - @Schema(description = "环境创设内容") + @Schema(description = "环境创设内容", example = "阅读角布置") private String environmentConstruction; // 主题与绘本 @Schema(description = "主题ID") private String themeId; - @Schema(description = "绘本名称") + @Schema(description = "绘本名称", example = "三只小猪") private String pictureBookName; // 数字资源 @@ -114,17 +114,17 @@ public class CourseCreateRequest { @Schema(description = "教具(JSON数组)") private String tools; - @Schema(description = "学生材料") + @Schema(description = "学生材料", example = "练习册、画笔") private String studentMaterials; // 教案、活动、评估 - @Schema(description = "教案数据(JSON)") + @Schema(description = "教案数据(JSON)", example = "{}") private String lessonPlanData; - @Schema(description = "活动数据(JSON)") + @Schema(description = "活动数据(JSON)", example = "{}") private String activitiesData; - @Schema(description = "评估数据(JSON)") + @Schema(description = "评估数据(JSON)", example = "{}") private String assessmentData; // 标签 @@ -135,7 +135,7 @@ public class CourseCreateRequest { private String domainTags; // 集体课 - @Schema(description = "是否有集体课") + @Schema(description = "是否有集体课", example = "true") private Boolean hasCollectiveLesson; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseUpdateRequest.java index 5071fb0..9f65319 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/CourseUpdateRequest.java @@ -19,7 +19,7 @@ public class CourseUpdateRequest { @Schema(description = "封面URL") private String coverUrl; - @Schema(description = "封面图片路径") + @Schema(description = "封面图片路径", example = "/images/course1.png") private String coverImagePath; @Schema(description = "分类") @@ -44,47 +44,47 @@ public class CourseUpdateRequest { // 课程包重构字段 // ============================================ - @Schema(description = "核心内容") + @Schema(description = "核心内容", example = "绘本阅读指导") private String coreContent; // 课程介绍(8个字段) - @Schema(description = "课程摘要") + @Schema(description = "课程摘要", example = "本课程通过绘本阅读培养幼儿语言能力") private String introSummary; - @Schema(description = "课程亮点") + @Schema(description = "课程亮点", example = "互动式教学,趣味性强") private String introHighlights; - @Schema(description = "课程目标") + @Schema(description = "课程目标", example = "提升幼儿阅读理解能力") private String introGoals; - @Schema(description = "内容安排") + @Schema(description = "内容安排", example = "每周 2 课时,共 16 周") private String introSchedule; - @Schema(description = "重点难点") + @Schema(description = "重点难点", example = "培养幼儿自主阅读习惯") private String introKeyPoints; - @Schema(description = "教学方法") + @Schema(description = "教学方法", example = "情景教学、互动游戏") private String introMethods; - @Schema(description = "评估方法") + @Schema(description = "评估方法", example = "过程性评估与终结性评估结合") private String introEvaluation; - @Schema(description = "注意事项") + @Schema(description = "注意事项", example = "关注个体差异") private String introNotes; // 课表参考数据 - @Schema(description = "课表参考数据(JSON)") + @Schema(description = "课表参考数据(JSON)", example = "{}") private String scheduleRefData; // 环境创设(步骤7) - @Schema(description = "环境创设内容") + @Schema(description = "环境创设内容", example = "阅读角布置") private String environmentConstruction; // 主题与绘本 @Schema(description = "主题ID") private String themeId; - @Schema(description = "绘本名称") + @Schema(description = "绘本名称", example = "三只小猪") private String pictureBookName; // 数字资源 @@ -113,17 +113,17 @@ public class CourseUpdateRequest { @Schema(description = "教具(JSON数组)") private String tools; - @Schema(description = "学生材料") + @Schema(description = "学生材料", example = "练习册、画笔") private String studentMaterials; // 教案、活动、评估 - @Schema(description = "教案数据(JSON)") + @Schema(description = "教案数据(JSON)", example = "{}") private String lessonPlanData; - @Schema(description = "活动数据(JSON)") + @Schema(description = "活动数据(JSON)", example = "{}") private String activitiesData; - @Schema(description = "评估数据(JSON)") + @Schema(description = "评估数据(JSON)", example = "{}") private String assessmentData; // 标签 diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/CreateTaskFromTemplateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/CreateTaskFromTemplateRequest.java index 85c7d8b..16582b5 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/CreateTaskFromTemplateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/CreateTaskFromTemplateRequest.java @@ -14,20 +14,20 @@ import java.util.List; @Schema(description = "从模板创建任务请求") public class CreateTaskFromTemplateRequest { - @Schema(description = "模板 ID") + @Schema(description = "模板 ID", example = "1") private String templateId; - @Schema(description = "目标 ID 列表(班级 ID 或学生 ID)") + @Schema(description = "目标 ID 列表(班级 ID 或学生 ID)", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "目标 ID 列表不能为空") private List targetIds; - @Schema(description = "目标类型:CLASS-班级,STUDENT-学生") + @Schema(description = "目标类型:CLASS-班级,STUDENT-学生", example = "CLASS") private String targetType = "CLASS"; - @Schema(description = "任务开始日期") + @Schema(description = "任务开始日期", example = "2024-01-01") private LocalDate startDate; - @Schema(description = "任务截止日期") + @Schema(description = "任务截止日期", example = "2024-01-31") private LocalDate endDate; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordCreateRequest.java index a3aac61..79e01cf 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordCreateRequest.java @@ -12,28 +12,28 @@ import java.util.List; @Schema(description = "成长档案创建请求") public class GrowthRecordCreateRequest { + @Schema(description = "学生 ID", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "Student ID is required") - @Schema(description = "Student ID") private String studentId; + @Schema(description = "类型:reading, behavior, achievement, milestone", example = "reading", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "Type is required") - @Schema(description = "Type: reading, behavior, achievement, milestone") private String type; + @Schema(description = "标题", example = "第一次独立阅读", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "Title is required") - @Schema(description = "Title") private String title; - @Schema(description = "Content") + @Schema(description = "内容", example = "孩子今天第一次独立完成了整本绘本的阅读") private String content; - @Schema(description = "Images (JSON array)") + @Schema(description = "图片(JSON 数组)", example = "[\"/images/record1.jpg\"]") private String images; - @Schema(description = "Record date") + @Schema(description = "记录日期", example = "2024-01-15") private LocalDate recordDate; - @Schema(description = "Tags") + @Schema(description = "标签", example = "[\"阅读\",\"成长\"]") private List tags; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordUpdateRequest.java index 1f126db..3d3552d 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/GrowthRecordUpdateRequest.java @@ -10,22 +10,22 @@ import java.util.List; @Schema(description = "成长档案更新请求") public class GrowthRecordUpdateRequest { - @Schema(description = "类型") + @Schema(description = "类型", example = "reading") private String type; - @Schema(description = "标题") + @Schema(description = "标题", example = "第一次独立阅读") private String title; - @Schema(description = "内容") + @Schema(description = "内容", example = "孩子今天第一次独立完成了整本绘本的阅读") private String content; @Schema(description = "图片(JSON数组)") private String images; - @Schema(description = "记录日期") + @Schema(description = "记录日期", example = "2024-01-15") private LocalDate recordDate; - @Schema(description = "标签") + @Schema(description = "标签", example = "[\"阅读\",\"成长\"]") private List tags; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonCreateRequest.java index d878252..1919ba7 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonCreateRequest.java @@ -24,23 +24,23 @@ public class LessonCreateRequest { private String teacherId; @NotBlank(message = "标题不能为空") - @Schema(description = "课时标题") + @Schema(description = "课时标题", example = "绘本阅读第一课时") private String title; @NotNull(message = "课时日期不能为空") - @Schema(description = "课时日期") + @Schema(description = "课时日期", example = "2024-01-15") private LocalDate lessonDate; - @Schema(description = "开始时间") + @Schema(description = "开始时间", example = "09:00") private LocalTime startTime; - @Schema(description = "结束时间") + @Schema(description = "结束时间", example = "10:00") private LocalTime endTime; - @Schema(description = "地点") + @Schema(description = "地点", example = "教室 101") private String location; - @Schema(description = "备注") + @Schema(description = "备注", example = "请提前准备教具") private String notes; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonUpdateRequest.java index 60cb787..ea128c2 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LessonUpdateRequest.java @@ -10,25 +10,25 @@ import java.time.LocalTime; @Schema(description = "课时更新请求") public class LessonUpdateRequest { - @Schema(description = "Lesson title") + @Schema(description = "课时标题", example = "绘本阅读第一课时") private String title; - @Schema(description = "Lesson date") + @Schema(description = "课时日期", example = "2024-01-15") private LocalDate lessonDate; - @Schema(description = "Start time") + @Schema(description = "开始时间", example = "09:00") private LocalTime startTime; - @Schema(description = "End time") + @Schema(description = "结束时间", example = "10:00") private LocalTime endTime; - @Schema(description = "Location") + @Schema(description = "地点", example = "教室 101") private String location; - @Schema(description = "Status") + @Schema(description = "状态", example = "COMPLETED") private String status; - @Schema(description = "Notes") + @Schema(description = "备注", example = "请提前准备教具") private String notes; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java index 0325b0e..1103206 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/LoginRequest.java @@ -9,13 +9,13 @@ import lombok.Data; @Schema(description = "登录请求") public class LoginRequest { + @Schema(description = "用户名", example = "admin", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "用户名不能为空") @JsonAlias("account") - @Schema(description = "用户名", example = "admin") private String username; + @Schema(description = "密码", example = "admin123", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "密码不能为空") - @Schema(description = "密码", example = "admin123") private String password; @Schema(description = "登录角色", example = "admin") diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentCreateRequest.java index f80bee0..ca1dcb4 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentCreateRequest.java @@ -5,28 +5,28 @@ import jakarta.validation.constraints.NotBlank; import lombok.Data; @Data -@Schema(description = "Parent Create Request") +@Schema(description = "家长创建请求") public class ParentCreateRequest { + @Schema(description = "用户名", example = "parent1", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "用户名不能为空") - @Schema(description = "用户名") private String username; + @Schema(description = "密码", example = "123456", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "密码不能为空") - @Schema(description = "密码") private String password; + @Schema(description = "姓名", example = "张三", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "姓名不能为空") - @Schema(description = "姓名") private String name; - @Schema(description = "电话") + @Schema(description = "电话", example = "13800138000") private String phone; - @Schema(description = "邮箱") + @Schema(description = "邮箱", example = "parent@example.com") private String email; - @Schema(description = "性别") + @Schema(description = "性别", example = "male") private String gender; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentUpdateRequest.java index c0f4b66..5f8a664 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ParentUpdateRequest.java @@ -7,22 +7,22 @@ import lombok.Data; @Schema(description = "家长更新请求") public class ParentUpdateRequest { - @Schema(description = "姓名") + @Schema(description = "姓名", example = "张三") private String name; - @Schema(description = "电话") + @Schema(description = "电话", example = "13800138000") private String phone; - @Schema(description = "邮箱") + @Schema(description = "邮箱", example = "parent@example.com") private String email; @Schema(description = "头像URL") private String avatarUrl; - @Schema(description = "性别") + @Schema(description = "性别", example = "male") private String gender; - @Schema(description = "状态") + @Schema(description = "状态", example = "active") private String status; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanCreateRequest.java index bbc02d0..dcea7ee 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanCreateRequest.java @@ -14,37 +14,37 @@ import java.time.LocalTime; @Schema(description = "课表计划创建请求") public class SchedulePlanCreateRequest { - @Schema(description = "班级 ID") + @Schema(description = "班级 ID", example = "1") private String classId; - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", example = "1") private String courseId; - @Schema(description = "星期几:1-7") + @Schema(description = "星期几:1-7", example = "1") private Integer dayOfWeek; - @Schema(description = "节次") + @Schema(description = "节次", example = "1") private Integer period; - @Schema(description = "上课时间") + @Schema(description = "上课时间", example = "08:00") private LocalTime startTime; - @Schema(description = "下课时间") + @Schema(description = "下课时间", example = "08:45") private LocalTime endTime; - @Schema(description = "授课教师 ID") + @Schema(description = "授课教师 ID", example = "1") private String teacherId; - @Schema(description = "开始日期") + @Schema(description = "开始日期", example = "2024-01-01") private LocalDate startDate; - @Schema(description = "结束日期") + @Schema(description = "结束日期", example = "2024-06-30") private LocalDate endDate; - @Schema(description = "教室/地点") + @Schema(description = "教室/地点", example = "教室 101") private String location; - @Schema(description = "备注") + @Schema(description = "备注", example = "正常上课") private String note; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanUpdateRequest.java index 184e5c1..d81d7c4 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchedulePlanUpdateRequest.java @@ -13,24 +13,24 @@ import java.time.LocalTime; @Schema(description = "课表计划更新请求") public class SchedulePlanUpdateRequest { - @Schema(description = "授课教师 ID") + @Schema(description = "授课教师 ID", example = "1") private String teacherId; - @Schema(description = "开始日期") + @Schema(description = "开始日期", example = "2024-01-01") private LocalDate startDate; - @Schema(description = "结束日期") + @Schema(description = "结束日期", example = "2024-06-30") private LocalDate endDate; - @Schema(description = "开始时间") + @Schema(description = "开始时间", example = "08:00") private LocalTime startTime; - @Schema(description = "结束时间") + @Schema(description = "结束时间", example = "08:45") private LocalTime endTime; - @Schema(description = "状态") + @Schema(description = "状态", example = "active") private String status; - @Schema(description = "备注") + @Schema(description = "备注", example = "调课通知") private String note; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ScheduleTemplateApplyRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ScheduleTemplateApplyRequest.java index 65d7c66..da5bf37 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/ScheduleTemplateApplyRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/ScheduleTemplateApplyRequest.java @@ -13,15 +13,15 @@ import java.time.LocalDate; @Schema(description = "课表模板应用请求") public class ScheduleTemplateApplyRequest { + @Schema(description = "班级 ID", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "班级 ID 不能为空") - @Schema(description = "班级 ID") private String classId; + @Schema(description = "应用开始日期", example = "2024-01-01", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "开始日期不能为空") - @Schema(description = "应用开始日期") private LocalDate startDate; - @Schema(description = "应用周数") + @Schema(description = "应用周数", example = "16") private Integer weeks; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchoolSettingsUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchoolSettingsUpdateRequest.java index 27b3203..7edd885 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchoolSettingsUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/SchoolSettingsUpdateRequest.java @@ -10,21 +10,21 @@ import lombok.Data; @Schema(description = "学校设置更新请求") public class SchoolSettingsUpdateRequest { - @Schema(description = "学校名称") + @Schema(description = "学校名称", example = "阳光幼儿园") private String schoolName; - @Schema(description = "学校 Logo") + @Schema(description = "学校 Logo", example = "/logo/school.png") private String schoolLogo; - @Schema(description = "地址") + @Schema(description = "地址", example = "北京市朝阳区 XX 路 XX 号") private String address; - @Schema(description = "课时通知启用") + @Schema(description = "课时通知启用", example = "true") private Boolean notifyOnLesson; - @Schema(description = "任务通知启用") + @Schema(description = "任务通知启用", example = "true") private Boolean notifyOnTask; - @Schema(description = "成长记录通知启用") + @Schema(description = "成长记录通知启用", example = "true") private Boolean notifyOnGrowth; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentCreateRequest.java index 49b8eac..3181f6b 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentCreateRequest.java @@ -10,29 +10,29 @@ import java.time.LocalDate; @Schema(description = "学生创建请求") public class StudentCreateRequest { + @Schema(description = "姓名", example = "张三", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "Name is required") - @Schema(description = "Name") private String name; - @Schema(description = "Gender") + @Schema(description = "性别", example = "male") private String gender; - @Schema(description = "Birth date") + @Schema(description = "出生日期", example = "2018-01-01") private LocalDate birthDate; - @Schema(description = "Grade") + @Schema(description = "年级", example = "大班") private String grade; - @Schema(description = "Student number") + @Schema(description = "学号", example = "S2024001") private String studentNo; - @Schema(description = "Reading level") + @Schema(description = "阅读水平", example = "初级") private String readingLevel; - @Schema(description = "Interests") + @Schema(description = "兴趣爱好", example = "画画、唱歌") private String interests; - @Schema(description = "Notes") + @Schema(description = "备注", example = "性格活泼") private String notes; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentUpdateRequest.java index 970ae69..d8a9f29 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/StudentUpdateRequest.java @@ -9,34 +9,34 @@ import java.time.LocalDate; @Schema(description = "学生更新请求") public class StudentUpdateRequest { - @Schema(description = "姓名") + @Schema(description = "姓名", example = "张三") private String name; - @Schema(description = "性别") + @Schema(description = "性别", example = "male") private String gender; - @Schema(description = "出生日期") + @Schema(description = "出生日期", example = "2018-01-01") private LocalDate birthDate; @Schema(description = "头像URL") private String avatarUrl; - @Schema(description = "年级") + @Schema(description = "年级", example = "大班") private String grade; - @Schema(description = "学号") + @Schema(description = "学号", example = "S2024001") private String studentNo; - @Schema(description = "阅读水平") + @Schema(description = "阅读水平", example = "初级") private String readingLevel; - @Schema(description = "兴趣爱好") + @Schema(description = "兴趣爱好", example = "画画、唱歌") private String interests; - @Schema(description = "备注") + @Schema(description = "备注", example = "性格活泼") private String notes; - @Schema(description = "状态") + @Schema(description = "状态", example = "active") private String status; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskCreateRequest.java index a7644be..a95f03e 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskCreateRequest.java @@ -12,10 +12,10 @@ import java.util.List; public class TaskCreateRequest { @NotBlank(message = "任务标题不能为空") - @Schema(description = "任务标题") + @Schema(description = "任务标题", example = "绘本阅读作业") private String title; - @Schema(description = "描述") + @Schema(description = "描述", example = "请阅读《三只小猪》并回答问题") private String description; @Schema(description = "任务类型: 阅读、作业、活动") @@ -24,10 +24,10 @@ public class TaskCreateRequest { @Schema(description = "课程ID") private String courseId; - @Schema(description = "开始日期") + @Schema(description = "开始日期", example = "2024-01-01") private LocalDate startDate; - @Schema(description = "截止日期") + @Schema(description = "截止日期", example = "2024-01-07") private LocalDate dueDate; @Schema(description = "附件(JSON数组)") diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskFeedbackUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskFeedbackUpdateRequest.java index 8dcc7ea..7dee53a 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskFeedbackUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskFeedbackUpdateRequest.java @@ -10,6 +10,6 @@ import lombok.Data; @Schema(description = "任务家长反馈更新请求") public class TaskFeedbackUpdateRequest { - @Schema(description = "家长反馈内容") + @Schema(description = "家长反馈内容", example = "孩子已认真完成作业") private String feedback; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateCreateRequest.java index 034d167..1337434 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateCreateRequest.java @@ -11,20 +11,20 @@ import lombok.Data; @Schema(description = "任务模板创建请求") public class TaskTemplateCreateRequest { + @Schema(description = "模板名称", example = "绘本阅读模板", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "模板名称不能为空") - @Schema(description = "模板名称") private String name; - @Schema(description = "模板描述") + @Schema(description = "模板描述", example = "适用于绘本阅读课程的通用模板") private String description; - @Schema(description = "任务类型:阅读、作业、活动") + @Schema(description = "任务类型:阅读、作业、活动", example = "reading") private String type; - @Schema(description = "任务内容模板") + @Schema(description = "任务内容模板", example = "请阅读指定绘本并记录心得") private String content; - @Schema(description = "是否公共模板:0-私有,1-公共") + @Schema(description = "是否公共模板:0-私有,1-公共", example = "0") private Integer isPublic = 0; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateUpdateRequest.java index 633b601..b896a0f 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskTemplateUpdateRequest.java @@ -10,19 +10,19 @@ import lombok.Data; @Schema(description = "任务模板更新请求") public class TaskTemplateUpdateRequest { - @Schema(description = "模板名称") + @Schema(description = "模板名称", example = "绘本阅读模板") private String name; - @Schema(description = "模板描述") + @Schema(description = "模板描述", example = "适用于绘本阅读课程的通用模板") private String description; - @Schema(description = "任务类型:阅读、作业、活动") + @Schema(description = "任务类型:阅读、作业、活动", example = "reading") private String type; - @Schema(description = "任务内容模板") + @Schema(description = "任务内容模板", example = "请阅读指定绘本并记录心得") private String content; - @Schema(description = "是否公共模板:0-私有,1-公共") + @Schema(description = "是否公共模板:0-私有,1-公共", example = "1") private Integer isPublic; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskUpdateRequest.java index 072c02e..62a827f 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TaskUpdateRequest.java @@ -9,22 +9,22 @@ import java.time.LocalDate; @Schema(description = "任务更新请求") public class TaskUpdateRequest { - @Schema(description = "任务标题") + @Schema(description = "任务标题", example = "绘本阅读作业") private String title; - @Schema(description = "描述") + @Schema(description = "描述", example = "请阅读《三只小猪》并回答问题") private String description; - @Schema(description = "任务类型") + @Schema(description = "任务类型", example = "reading") private String type; - @Schema(description = "开始日期") + @Schema(description = "开始日期", example = "2024-01-01") private LocalDate startDate; - @Schema(description = "截止日期") + @Schema(description = "截止日期", example = "2024-01-07") private LocalDate dueDate; - @Schema(description = "状态") + @Schema(description = "状态", example = "published") private String status; @Schema(description = "附件(JSON数组)") diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherCreateRequest.java index db49a6e..aae7f5d 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherCreateRequest.java @@ -8,28 +8,28 @@ import lombok.Data; @Schema(description = "教师创建请求") public class TeacherCreateRequest { + @Schema(description = "用户名", example = "teacher1", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "用户名不能为空") - @Schema(description = "用户名") private String username; + @Schema(description = "密码", example = "123456", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "密码不能为空") - @Schema(description = "密码") private String password; + @Schema(description = "姓名", example = "李老师", requiredMode = Schema.RequiredMode.REQUIRED) @NotBlank(message = "姓名不能为空") - @Schema(description = "姓名") private String name; - @Schema(description = "电话") + @Schema(description = "电话", example = "13800138000") private String phone; - @Schema(description = "邮箱") + @Schema(description = "邮箱", example = "teacher@example.com") private String email; - @Schema(description = "性别") + @Schema(description = "性别", example = "female") private String gender; - @Schema(description = "个人简介") + @Schema(description = "个人简介", example = "拥有 5 年幼儿教育经验") private String bio; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherUpdateRequest.java index ccac6be..97fc977 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TeacherUpdateRequest.java @@ -7,25 +7,25 @@ import lombok.Data; @Schema(description = "教师更新请求") public class TeacherUpdateRequest { - @Schema(description = "姓名") + @Schema(description = "姓名", example = "李老师") private String name; - @Schema(description = "电话") + @Schema(description = "电话", example = "13800138000") private String phone; - @Schema(description = "邮箱") + @Schema(description = "邮箱", example = "teacher@example.com") private String email; @Schema(description = "头像URL") private String avatarUrl; - @Schema(description = "性别") + @Schema(description = "性别", example = "female") private String gender; - @Schema(description = "个人简介") + @Schema(description = "个人简介", example = "拥有 5 年幼儿教育经验") private String bio; - @Schema(description = "状态") + @Schema(description = "状态", example = "active") private String status; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantCreateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantCreateRequest.java index 509fe5a..8937bba 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantCreateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantCreateRequest.java @@ -12,49 +12,49 @@ import java.time.LocalDateTime; public class TenantCreateRequest { @NotBlank(message = "租户名称不能为空") - @Schema(description = "租户名称") + @Schema(description = "租户名称", example = "阳光幼儿园") private String name; @NotBlank(message = "登录账号不能为空") @JsonAlias("loginAccount") - @Schema(description = "租户编码 / 登录账号") + @Schema(description = "租户编码 / 登录账号", example = "KINDERGARTEN_001") private String code; @JsonAlias("contactPerson") - @Schema(description = "联系人") + @Schema(description = "联系人", example = "张园长") private String contactName; - @Schema(description = "联系电话") + @Schema(description = "联系电话", example = "010-12345678") private String contactPhone; - @Schema(description = "联系邮箱") + @Schema(description = "联系邮箱", example = "admin@kindergarten.com") private String contactEmail; - @Schema(description = "地址") + @Schema(description = "地址", example = "北京市朝阳区 XX 路 XX 号") private String address; - @Schema(description = "Logo URL") + @Schema(description = "Logo URL", example = "/logo/school.png") private String logoUrl; @JsonAlias("expireDate") - @Schema(description = "过期日期") + @Schema(description = "过期日期", example = "2025-12-31") private LocalDateTime expireAt; @JsonAlias("studentQuota") - @Schema(description = "最大学生数") + @Schema(description = "最大学生数", example = "500") private Integer maxStudents; @JsonAlias("teacherQuota") - @Schema(description = "最大教师数") + @Schema(description = "最大教师数", example = "50") private Integer maxTeachers; @Schema(description = "初始密码(默认: 123456)") private String password; - @Schema(description = "套餐类型(可选)") + @Schema(description = "套餐类型(可选)", example = "standard") private String packageType; - @Schema(description = "开始日期(可选)") + @Schema(description = "开始日期(可选)", example = "2024-01-01") private String startDate; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantQuotaUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantQuotaUpdateRequest.java index 2e1c020..f816dc9 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantQuotaUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantQuotaUpdateRequest.java @@ -10,12 +10,12 @@ import lombok.Data; @Schema(description = "租户配额更新请求") public class TenantQuotaUpdateRequest { - @Schema(description = "套餐类型") + @Schema(description = "套餐类型", example = "standard") private String packageType; - @Schema(description = "教师配额") + @Schema(description = "教师配额", example = "50") private Integer teacherQuota; - @Schema(description = "学生配额") + @Schema(description = "学生配额", example = "500") private Integer studentQuota; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantStatusUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantStatusUpdateRequest.java index 79d3faf..ceca9b5 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantStatusUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantStatusUpdateRequest.java @@ -10,6 +10,6 @@ import lombok.Data; @Schema(description = "租户状态更新请求") public class TenantStatusUpdateRequest { - @Schema(description = "状态:active/inactive") + @Schema(description = "状态:active/inactive", example = "active") private String status; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantUpdateRequest.java b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantUpdateRequest.java index bd9dc68..d44901e 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantUpdateRequest.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/request/TenantUpdateRequest.java @@ -10,44 +10,44 @@ import java.time.LocalDateTime; @Schema(description = "租户更新请求") public class TenantUpdateRequest { - @Schema(description = "租户名称") + @Schema(description = "租户名称", example = "阳光幼儿园") private String name; + @Schema(description = "联系人", example = "张园长") @JsonAlias("contactPerson") - @Schema(description = "联系人") private String contactName; - @Schema(description = "联系电话") + @Schema(description = "联系电话", example = "010-12345678") private String contactPhone; - @Schema(description = "联系邮箱") + @Schema(description = "联系邮箱", example = "admin@kindergarten.com") private String contactEmail; - @Schema(description = "地址") + @Schema(description = "地址", example = "北京市朝阳区 XX 路 XX 号") private String address; - @Schema(description = "Logo URL") + @Schema(description = "Logo URL", example = "/logo/school.png") private String logoUrl; - @Schema(description = "状态") + @Schema(description = "状态", example = "active") private String status; + @Schema(description = "过期日期", example = "2025-12-31") @JsonAlias("expireDate") - @Schema(description = "过期日期") private LocalDateTime expireAt; + @Schema(description = "最大学生数", example = "500") @JsonAlias("studentQuota") - @Schema(description = "最大学生数") private Integer maxStudents; + @Schema(description = "最大教师数", example = "50") @JsonAlias("teacherQuota") - @Schema(description = "最大教师数") private Integer maxTeachers; - @Schema(description = "套餐类型(可选)") + @Schema(description = "套餐类型(可选)", example = "standard") private String packageType; - @Schema(description = "开始日期(可选)") + @Schema(description = "开始日期(可选)", example = "2024-01-01") private String startDate; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseResponse.java b/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseResponse.java index a65076f..a912d83 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseResponse.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseResponse.java @@ -19,13 +19,13 @@ public class CourseResponse { @Schema(description = "租户ID") private String tenantId; - @Schema(description = "课程名称") + @Schema(description = "课程名称", example = "绘本阅读入门") private String name; - @Schema(description = "课程编码") + @Schema(description = "课程编码", example = "READ001") private String code; - @Schema(description = "描述") + @Schema(description = "描述", example = "适合大班幼儿的绘本阅读课程") private String description; @Schema(description = "封面URL") @@ -34,22 +34,22 @@ public class CourseResponse { @Schema(description = "封面图片路径") private String coverImagePath; - @Schema(description = "分类") + @Schema(description = "分类", example = "language") private String category; - @Schema(description = "年龄段") + @Schema(description = "年龄段", example = "5-6 岁") private String ageRange; - @Schema(description = "难度等级") + @Schema(description = "难度等级", example = "beginner") private String difficultyLevel; - @Schema(description = "时长(分钟)") + @Schema(description = "时长(分钟)", example = "30") private Integer durationMinutes; @Schema(description = "教学目标") private String objectives; - @Schema(description = "状态") + @Schema(description = "状态", example = "published") private String status; @Schema(description = "是否系统课程") @@ -59,7 +59,7 @@ public class CourseResponse { // 课程包字段 // ============================================ - @Schema(description = "核心内容") + @Schema(description = "核心内容", example = "绘本阅读指导") private String coreContent; // 课程介绍(8个字段) diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseStatsReportResponse.java b/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseStatsReportResponse.java index cb2031e..c42b6be 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseStatsReportResponse.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseStatsReportResponse.java @@ -10,27 +10,27 @@ import lombok.Data; @Schema(description = "课程统计响应") public class CourseStatsReportResponse { - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", example = "1") private String courseId; - @Schema(description = "课程名称") + @Schema(description = "课程名称", example = "绘本阅读入门") private String courseName; - @Schema(description = "课程分类") + @Schema(description = "课程分类", example = "language") private String category; - @Schema(description = "使用教师数") + @Schema(description = "使用教师数", example = "10") private Integer teacherCount; - @Schema(description = "使用班级数") + @Schema(description = "使用班级数", example = "5") private Integer classCount; - @Schema(description = "本月课时数") + @Schema(description = "本月课时数", example = "100") private Integer monthlyLessons; - @Schema(description = "总课时数") + @Schema(description = "总课时数", example = "500") private Integer totalLessons; - @Schema(description = "平均评分") + @Schema(description = "平均评分", example = "4.5") private Double avgRating; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseUsageItemResponse.java b/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseUsageItemResponse.java index 0dabd73..0ade45b 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseUsageItemResponse.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/response/CourseUsageItemResponse.java @@ -10,12 +10,12 @@ import lombok.Data; @Schema(description = "课程使用统计响应") public class CourseUsageItemResponse { - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", example = "1") private String courseId; - @Schema(description = "课程名称") + @Schema(description = "课程名称", example = "绘本阅读入门") private String courseName; - @Schema(description = "使用次数") + @Schema(description = "使用次数", example = "100") private Integer usageCount; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/dto/response/ImportTemplateResponse.java b/reading-platform-java/src/main/java/com/reading/platform/dto/response/ImportTemplateResponse.java index cb662f4..1b2ea4e 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/dto/response/ImportTemplateResponse.java +++ b/reading-platform-java/src/main/java/com/reading/platform/dto/response/ImportTemplateResponse.java @@ -10,10 +10,10 @@ import lombok.Data; @Schema(description = "导入模板响应") public class ImportTemplateResponse { - @Schema(description = "表头") + @Schema(description = "表头", example = "[\"姓名\",\"性别\"]") private String[] headers; - @Schema(description = "示例数据") + @Schema(description = "示例数据", example = "[\"张三\",\"男\"]") private String[] example; public static ImportTemplateResponse studentTemplate() { diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/AdminUser.java b/reading-platform-java/src/main/java/com/reading/platform/entity/AdminUser.java index c63cd07..c6880cf 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/AdminUser.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/AdminUser.java @@ -11,25 +11,35 @@ import java.time.LocalDateTime; */ @Data @TableName("t_admin_user") +@Schema(description = "管理员用户信息") public class AdminUser { + @Schema(description = "管理员 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "用户名", example = "admin", requiredMode = Schema.RequiredMode.REQUIRED) private String username; + @Schema(description = "密码", accessMode = Schema.AccessMode.WRITE_ONLY, requiredMode = Schema.RequiredMode.REQUIRED) private String password; + @Schema(description = "姓名", example = "系统管理员", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "邮箱", example = "admin@example.com") private String email; + @Schema(description = "手机号", example = "13800138000") private String phone; + @Schema(description = "头像 URL") private String avatarUrl; + @Schema(description = "状态", example = "active", allowableValues = {"active", "inactive"}) private String status; + @Schema(description = "最后登录时间", accessMode = Schema.AccessMode.READ_ONLY) private LocalDateTime lastLoginAt; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -48,6 +58,7 @@ public class AdminUser { @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/ClassTeacher.java b/reading-platform-java/src/main/java/com/reading/platform/entity/ClassTeacher.java index e490c88..2425220 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/ClassTeacher.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/ClassTeacher.java @@ -18,20 +18,19 @@ public class ClassTeacher { @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "班级 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String classId; + @Schema(description = "教师 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String teacherId; + @Schema(description = "角色", example = "teacher", requiredMode = Schema.RequiredMode.REQUIRED) private String role; - /** - * 是否主教 - */ + @Schema(description = "是否主教", example = "true") private Boolean isPrimary; - /** - * 排序 - */ + @Schema(description = "排序", example = "1") private Integer sortOrder; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Clazz.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Clazz.java index db70441..bcdec96 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Clazz.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Clazz.java @@ -14,21 +14,26 @@ import java.time.LocalDateTime; @Schema(description = "班级") public class Clazz { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "班级 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; + @Schema(description = "班级名称", example = "向日葵班", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "年级", example = "大班") private String grade; + @Schema(description = "班级描述") private String description; + @Schema(description = "班级容量", example = "30") private Integer capacity; + @Schema(description = "状态", example = "active", allowableValues = {"active", "inactive"}) private String status; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Course.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Course.java index 04017fc..5b58b25 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Course.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Course.java @@ -13,33 +13,47 @@ import java.time.LocalDateTime; */ @Data @TableName("t_course") +@Schema(description = "课程信息") public class Course { + @Schema(description = "课程 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; + @Schema(description = "课程名称", example = "绘本阅读入门", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "课程编码", example = "READ001") private String code; + @Schema(description = "课程描述", example = "适合大班幼儿的绘本阅读课程") private String description; + @Schema(description = "封面图片 URL") private String coverUrl; + @Schema(description = "分类", example = "language") private String category; + @Schema(description = "适用年龄段", example = "5-6 岁") private String ageRange; + @Schema(description = "难度等级", example = "beginner") private String difficultyLevel; + @Schema(description = "课程时长(分钟)", example = "30") private Integer durationMinutes; + @Schema(description = "课程目标") private String objectives; + @Schema(description = "状态", example = "published") private String status; + @Schema(description = "是否系统课程 0-否 1-是", example = "0") private Integer isSystem; // ============================================ @@ -47,71 +61,142 @@ public class Course { // ============================================ // 核心内容 + @Schema(description = "核心内容") private String coreContent; - // 课程介绍(8个字段) + // 课程介绍(8 个字段) + @Schema(description = "课程介绍摘要") private String introSummary; + + @Schema(description = "课程亮点") private String introHighlights; + + @Schema(description = "课程目标") private String introGoals; + + @Schema(description = "课程进度安排") private String introSchedule; + + @Schema(description = "课程重点") private String introKeyPoints; + + @Schema(description = "教学方法") private String introMethods; + + @Schema(description = "评估方式") private String introEvaluation; + + @Schema(description = "注意事项") private String introNotes; // 课表参考数据(JSON) + @Schema(description = "课表参考数据 JSON") private String scheduleRefData; - // 环境创设(步骤7) + // 环境创设(步骤 7) + @Schema(description = "环境创设方案") private String environmentConstruction; // 主题与绘本关系 + @Schema(description = "主题 ID") private String themeId; + + @Schema(description = "绘本名称") private String pictureBookName; // 封面图片 + @Schema(description = "封面图片路径") private String coverImagePath; - // 数字资源(JSON数组) + // 数字资源(JSON 数组) + @Schema(description = "电子书资源路径 JSON") private String ebookPaths; + + @Schema(description = "音频资源路径 JSON") private String audioPaths; + + @Schema(description = "视频资源路径 JSON") private String videoPaths; + + @Schema(description = "其他资源路径 JSON") private String otherResources; // 教学材料 + @Schema(description = "PPT 课件路径") private String pptPath; + + @Schema(description = "PPT 课件名称") private String pptName; + + @Schema(description = "海报图片路径 JSON") private String posterPaths; + + @Schema(description = "教学工具") private String tools; + + @Schema(description = "学生材料") private String studentMaterials; // 教案、活动、评估(JSON) + @Schema(description = "教案数据 JSON") private String lessonPlanData; + + @Schema(description = "活动数据 JSON") private String activitiesData; + + @Schema(description = "评估数据 JSON") private String assessmentData; - // 年级与领域标签(JSON数组) + // 年级与领域标签(JSON 数组) + @Schema(description = "年级标签 JSON") private String gradeTags; + + @Schema(description = "领域标签 JSON") private String domainTags; // 集体课标志 + @Schema(description = "是否有集体课 0-否 1-是") private Integer hasCollectiveLesson; // 版本与审核字段 + @Schema(description = "版本号") private String version; + + @Schema(description = "父课程 ID") private String parentId; + + @Schema(description = "是否最新版本 0-否 1-是") private Integer isLatest; + + @Schema(description = "提交时间", accessMode = Schema.AccessMode.READ_ONLY) private LocalDateTime submittedAt; + + @Schema(description = "提交人 ID", accessMode = Schema.AccessMode.READ_ONLY) private Long submittedBy; + + @Schema(description = "审核时间", accessMode = Schema.AccessMode.READ_ONLY) private LocalDateTime reviewedAt; + + @Schema(description = "审核人 ID", accessMode = Schema.AccessMode.READ_ONLY) private Long reviewedBy; + + @Schema(description = "审核意见") private String reviewComment; + + @Schema(description = "审核清单 JSON") private String reviewChecklist; + + @Schema(description = "发布时间", accessMode = Schema.AccessMode.READ_ONLY) private LocalDateTime publishedAt; // 使用统计 + @Schema(description = "使用次数", example = "100") private Integer usageCount; + + @Schema(description = "教师使用人数", example = "20") private Integer teacherCount; + + @Schema(description = "平均评分", example = "4.5") private BigDecimal avgRating; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -130,6 +215,7 @@ public class Course { @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseActivity.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseActivity.java index 860bb84..4c2c1ee 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseActivity.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseActivity.java @@ -14,29 +14,29 @@ import java.time.LocalDateTime; @Schema(description = "课程活动") public class CourseActivity { + @Schema(description = "活动 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; - @Schema(description = "活动标题") + @Schema(description = "活动标题", example = "角色扮演活动", requiredMode = Schema.RequiredMode.REQUIRED) private String title; - @Schema(description = "活动类型") + @Schema(description = "活动类型", example = "role_play", requiredMode = Schema.RequiredMode.REQUIRED) private String type; - @Schema(description = "活动内容") + @Schema(description = "活动内容", requiredMode = Schema.RequiredMode.REQUIRED) private String content; @Schema(description = "所需材料") private String materials; - @Schema(description = "时长(分钟)") + @Schema(description = "时长(分钟)", example = "15") private Integer durationMinutes; - @Schema(description = "排序顺序") + @Schema(description = "排序顺序", example = "1") private Integer sortOrder; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -55,7 +55,7 @@ public class CourseActivity { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseLesson.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseLesson.java index aacb7c5..c1adb76 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseLesson.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseLesson.java @@ -14,27 +14,35 @@ import java.time.LocalDateTime; @Schema(description = "课程课时") public class CourseLesson { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "课时 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; + @Schema(description = "课时标题", example = "第一课时:认识绘本", requiredMode = Schema.RequiredMode.REQUIRED) private String title; + @Schema(description = "课时描述") private String description; + @Schema(description = "课时内容") private String content; + @Schema(description = "排序顺序", example = "1") private Integer sortOrder; - @Schema(description = "课时顺序号") + @Schema(description = "课时顺序号", example = "1") private Integer lessonOrder; + @Schema(description = "时长(分钟)", example = "30") private Integer durationMinutes; + @Schema(description = "视频 URL") private String videoUrl; + @Schema(description = "状态", example = "published") private String status; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -45,12 +53,15 @@ public class CourseLesson { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackage.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackage.java index aff3135..55522cc 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackage.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackage.java @@ -4,33 +4,37 @@ import com.baomidou.mybatisplus.annotation.*; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; -import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * 课程包实体 + * 课程的集合,如"小班语言课程包" */ @Data @TableName("t_course_package") @Schema(description = "课程包") public class CoursePackage { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "课程包 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + // === 基础信息 === + @Schema(description = "课程包名称", example = "小班语言课程包", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "课程包描述", example = "适合小班幼儿的语言领域课程包") private String description; + @Schema(description = "封面图片 URL") private String coverUrl; + @Schema(description = "课程数量", example = "10") private Integer courseCount; - private BigDecimal price; - - private String status; - + // === 系统字段 === + @Schema(description = "是否系统课程包 0-否 1-是", example = "0") private Integer isSystem; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -41,12 +45,23 @@ public class CoursePackage { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; + + // === 关联关系(一对多) === + @TableField(exist = false) + private List packageCourses; + + // === 关联关系(多对多,通过套餐 - 课程包关联表) === + @TableField(exist = false) + private List bundleCoursePackages; } diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackageCourse.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackageCourse.java new file mode 100644 index 0000000..da571e8 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CoursePackageCourse.java @@ -0,0 +1,57 @@ +package com.reading.platform.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 课程包课程关联实体 + * 用于实现课程包与课程的一对多关系 + */ +@Data +@TableName("t_course_package_course") +@Schema(description = "课程包课程关联") +public class CoursePackageCourse { + + @Schema(description = "关联 ID", accessMode = Schema.AccessMode.READ_ONLY) + @TableId(type = IdType.ASSIGN_ID) + private String id; + + // === 关联字段 === + @Schema(description = "课程包 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1234567890") + private String coursePackageId; + + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "0987654321") + private String courseId; + + // === 业务字段 === + @Schema(description = "排序", example = "1") + private Integer sortOrder; + + // === 系统字段 === + @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private String createdBy; + + @Schema(description = "更新人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updatedBy; + + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createdAt; + + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updatedAt; + + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) + @TableLogic + private Integer deleted; + + // === 关联查询 === + @TableField(exist = false) + private Course course; +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseResource.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseResource.java index 26fa4bc..873e5ef 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseResource.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseResource.java @@ -14,26 +14,35 @@ import java.time.LocalDateTime; @Schema(description = "课程资源") public class CourseResource { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "资源 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; + @Schema(description = "资源标题", example = "绘本 PPT 课件", requiredMode = Schema.RequiredMode.REQUIRED) private String title; + @Schema(description = "资源类型", example = "ppt", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"ppt", "pdf", "video", "audio", "image", "document"}) private String type; + @Schema(description = "资源 URL") private String url; + @Schema(description = "文件路径") private String filePath; + @Schema(description = "文件大小(字节)", example = "1048576") private Long fileSize; + @Schema(description = "时长(秒)", example = "300") private Integer duration; + @Schema(description = "资源描述") private String description; + @Schema(description = "排序顺序", example = "1") private Integer sortOrder; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -44,12 +53,15 @@ public class CourseResource { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScript.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScript.java index d70782a..d9d1794 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScript.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScript.java @@ -14,16 +14,20 @@ import java.time.LocalDateTime; @Schema(description = "课程脚本") public class CourseScript { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "脚本 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; + @Schema(description = "脚本标题", example = "绘本阅读脚本", requiredMode = Schema.RequiredMode.REQUIRED) private String title; + @Schema(description = "脚本描述") private String description; + @Schema(description = "排序顺序", example = "1") private Integer sortOrder; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -34,12 +38,15 @@ public class CourseScript { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScriptPage.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScriptPage.java index 89d65c4..e830b99 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScriptPage.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseScriptPage.java @@ -14,22 +14,29 @@ import java.time.LocalDateTime; @Schema(description = "课程脚本页面") public class CourseScriptPage { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "页面 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "脚本 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String scriptId; + @Schema(description = "页码", example = "1") private Integer pageNumber; + @Schema(description = "页面内容", requiredMode = Schema.RequiredMode.REQUIRED) private String content; + @Schema(description = "图片 URL") private String imageUrl; + @Schema(description = "音频 URL") private String audioUrl; + @Schema(description = "时长(秒)", example = "30") private Integer duration; + @Schema(description = "备注说明") private String notes; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -40,12 +47,15 @@ public class CourseScriptPage { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseVersion.java b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseVersion.java index 9230c56..dab3cf6 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/CourseVersion.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/CourseVersion.java @@ -14,20 +14,20 @@ import java.time.LocalDateTime; @Schema(description = "课程版本") public class CourseVersion { + @Schema(description = "版本 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; - @Schema(description = "版本号") + @Schema(description = "版本号", example = "1.0.0", requiredMode = Schema.RequiredMode.REQUIRED) private String version; - @Schema(description = "版本描述") + @Schema(description = "版本描述", example = "初始版本") private String description; - @Schema(description = "状态") + @Schema(description = "状态", example = "published", allowableValues = {"draft", "published", "archived"}) private String status; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -46,7 +46,7 @@ public class CourseVersion { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/GrowthRecord.java b/reading-platform-java/src/main/java/com/reading/platform/entity/GrowthRecord.java index 267b97a..85a2b15 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/GrowthRecord.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/GrowthRecord.java @@ -12,29 +12,41 @@ import java.time.LocalDateTime; */ @Data @TableName("t_growth_record") +@Schema(description = "成长档案记录") public class GrowthRecord { + @Schema(description = "成长档案 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; + @Schema(description = "学生 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String studentId; + @Schema(description = "记录类型", example = "photo", requiredMode = Schema.RequiredMode.REQUIRED) private String type; + @Schema(description = "标题", example = "第一次阅读打卡", requiredMode = Schema.RequiredMode.REQUIRED) private String title; + @Schema(description = "内容", example = "今天完成了第一本绘本阅读") private String content; + @Schema(description = "图片 URLs JSON") private String images; + @Schema(description = "记录人 ID", accessMode = Schema.AccessMode.READ_ONLY) private String recordedBy; + @Schema(description = "记录人角色", example = "parent", accessMode = Schema.AccessMode.READ_ONLY) private String recorderRole; + @Schema(description = "记录日期", example = "2024-01-01") private LocalDate recordDate; + @Schema(description = "标签 JSON") private String tags; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -45,12 +57,15 @@ public class GrowthRecord { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Lesson.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Lesson.java index 20496d4..f638048 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Lesson.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Lesson.java @@ -16,64 +16,52 @@ import java.time.LocalTime; @Schema(description = "课时信息") public class Lesson { + @Schema(description = "课时 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "租户 ID") + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; - @Schema(description = "班级 ID") + @Schema(description = "班级 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String classId; - @Schema(description = "教师 ID") + @Schema(description = "教师 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String teacherId; - @Schema(description = "课时标题") + @Schema(description = "课时标题", example = "绘本阅读第一课时", requiredMode = Schema.RequiredMode.REQUIRED) private String title; - @Schema(description = "课时日期") + @Schema(description = "课时日期", example = "2024-01-01") private LocalDate lessonDate; - @Schema(description = "开始时间") + @Schema(description = "开始时间", example = "08:00:00") private LocalTime startTime; - @Schema(description = "结束时间") + @Schema(description = "结束时间", example = "08:45:00") private LocalTime endTime; - @Schema(description = "上课地点") + @Schema(description = "上课地点", example = "一年级一班教室") private String location; - @Schema(description = "状态") + @Schema(description = "状态", example = "scheduled", allowableValues = {"scheduled", "completed", "cancelled"}) private String status; @Schema(description = "备注说明") private String notes; - /** - * 实际时长(分钟) - */ - @Schema(description = "实际时长(分钟)") + @Schema(description = "实际时长(分钟)", example = "45") private Integer actualDuration; - /** - * 整体评分 - */ - @Schema(description = "整体评分") + @Schema(description = "整体评分", example = "5", minimum = "1", maximum = "5") private String overallRating; - /** - * 参与度评分 - */ - @Schema(description = "参与度评分") + @Schema(description = "参与度评分", example = "4", minimum = "1", maximum = "5") private String participationRating; - /** - * 完成说明 - */ @Schema(description = "完成说明") private String completionNote; @@ -93,7 +81,7 @@ public class Lesson { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/LessonFeedback.java b/reading-platform-java/src/main/java/com/reading/platform/entity/LessonFeedback.java index 2b2ef0b..80d5a40 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/LessonFeedback.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/LessonFeedback.java @@ -14,67 +14,43 @@ import java.time.LocalDateTime; @Schema(description = "课时反馈") public class LessonFeedback { + @Schema(description = "反馈 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "课时 ID") + @Schema(description = "课时 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String lessonId; - @Schema(description = "课程 ID") + @Schema(description = "课程 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String courseId; - @Schema(description = "租户 ID") + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; - @Schema(description = "教师 ID") + @Schema(description = "教师 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String teacherId; - /** - * 整体评分 (1-5) - */ - @Schema(description = "整体评分 (1-5)", minimum = "1", maximum = "5") + @Schema(description = "整体评分 (1-5)", example = "4", minimum = "1", maximum = "5") private Integer overallRating; - /** - * 设计质量评分 (1-5) - */ - @Schema(description = "设计质量评分 (1-5)", minimum = "1", maximum = "5") + @Schema(description = "设计质量评分 (1-5)", example = "4", minimum = "1", maximum = "5") private Integer designQuality; - /** - * 参与度评分 (1-5) - */ - @Schema(description = "参与度评分 (1-5)", minimum = "1", maximum = "5") + @Schema(description = "参与度评分 (1-5)", example = "4", minimum = "1", maximum = "5") private Integer participation; - /** - * 目标达成度评分 (1-5) - */ - @Schema(description = "目标达成度评分 (1-5)", minimum = "1", maximum = "5") + @Schema(description = "目标达成度评分 (1-5)", example = "4", minimum = "1", maximum = "5") private Integer goalAchievement; - /** - * 环节反馈 JSON - */ @Schema(description = "环节反馈 JSON") private String stepFeedbacks; - /** - * 优点 - */ @Schema(description = "优点") private String pros; - /** - * 建议 - */ @Schema(description = "建议") private String suggestions; - /** - * 完成的活动 JSON - */ @Schema(description = "完成的活动 JSON") private String activitiesDone; @@ -94,7 +70,7 @@ public class LessonFeedback { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Notification.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Notification.java index 79f8248..644b1ac 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Notification.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Notification.java @@ -14,29 +14,29 @@ import java.time.LocalDateTime; @Schema(description = "系统通知") public class Notification { + @Schema(description = "通知 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "租户 ID") + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; - @Schema(description = "通知标题") + @Schema(description = "通知标题", example = "课程更新通知", requiredMode = Schema.RequiredMode.REQUIRED) private String title; - @Schema(description = "通知内容") + @Schema(description = "通知内容", requiredMode = Schema.RequiredMode.REQUIRED) private String content; - @Schema(description = "通知类型") + @Schema(description = "通知类型", example = "system", allowableValues = {"system", "task", "lesson", "other"}) private String type; - @Schema(description = "发送人 ID") + @Schema(description = "发送人 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String senderId; - @Schema(description = "发送人角色") + @Schema(description = "发送人角色", example = "admin", requiredMode = Schema.RequiredMode.REQUIRED) private String senderRole; - @Schema(description = "接收者类型") + @Schema(description = "接收者类型", example = "all", allowableValues = {"all", "teacher", "parent", "student"}) private String recipientType; @Schema(description = "接收者 ID") @@ -56,7 +56,7 @@ public class Notification { @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/OperationLog.java b/reading-platform-java/src/main/java/com/reading/platform/entity/OperationLog.java index 2d6cd26..e909dd0 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/OperationLog.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/OperationLog.java @@ -24,7 +24,7 @@ public class OperationLog { @Schema(description = "用户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String userId; - @Schema(description = "用户角色 admin/school/teacher/parent", example = "teacher") + @Schema(description = "用户角色", example = "teacher", allowableValues = {"admin", "school", "teacher", "parent"}) private String userRole; @Schema(description = "操作类型", example = "CREATE", requiredMode = Schema.RequiredMode.REQUIRED) @@ -42,7 +42,7 @@ public class OperationLog { @Schema(description = "操作详情") private String details; - @Schema(description = "IP 地址") + @Schema(description = "IP 地址", example = "192.168.1.100") private String ipAddress; @Schema(description = "用户代理") diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Parent.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Parent.java index f3f73df..8df5660 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Parent.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Parent.java @@ -7,33 +7,45 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 家长实体 + * 家长信息 */ @Data @TableName("t_parent") +@Schema(description = "家长信息") public class Parent { + @Schema(description = "家长 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; + @Schema(description = "用户名", example = "parent1", requiredMode = Schema.RequiredMode.REQUIRED) private String username; + @Schema(description = "密码", accessMode = Schema.AccessMode.WRITE_ONLY, requiredMode = Schema.RequiredMode.REQUIRED) private String password; + @Schema(description = "家长姓名", example = "张三", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "手机号", example = "13800138000") private String phone; + @Schema(description = "邮箱", example = "zhangsan@example.com") private String email; + @Schema(description = "头像 URL") private String avatarUrl; + @Schema(description = "性别", example = "male", allowableValues = {"male", "female"}) private String gender; + @Schema(description = "状态", example = "active", allowableValues = {"active", "inactive"}) private String status; + @Schema(description = "最后登录时间", accessMode = Schema.AccessMode.READ_ONLY) private LocalDateTime lastLoginAt; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -52,6 +64,7 @@ public class Parent { @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/ParentStudent.java b/reading-platform-java/src/main/java/com/reading/platform/entity/ParentStudent.java index 41fd2e6..988eec9 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/ParentStudent.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/ParentStudent.java @@ -7,24 +7,24 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 家长-学生关联实体 + * 家长 - 学生关联实体 */ @Data @TableName("t_parent_student") -@Schema(description = "家长 - 学生关联") +@Schema(description = "家长学生关联") public class ParentStudent { - @TableId(type = IdType.ASSIGN_ID) @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @TableId(type = IdType.ASSIGN_ID) private String id; - @Schema(description = "家长 ID") + @Schema(description = "家长 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String parentId; - @Schema(description = "学生 ID") + @Schema(description = "学生 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String studentId; - @Schema(description = "关系") + @Schema(description = "关系", example = "mother", allowableValues = {"father", "mother", "other"}) private String relationship; @Schema(description = "是否主要联系人", example = "1") @@ -38,7 +38,7 @@ public class ParentStudent { @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/ProductBundle.java b/reading-platform-java/src/main/java/com/reading/platform/entity/ProductBundle.java new file mode 100644 index 0000000..7179787 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/ProductBundle.java @@ -0,0 +1,86 @@ +package com.reading.platform.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 产品套餐实体 + * 商业套餐,可包含多个课程包 + */ +@Data +@TableName("t_product_bundle") +@Schema(description = "产品套餐") +public class ProductBundle { + + @Schema(description = "套餐 ID", accessMode = Schema.AccessMode.READ_ONLY) + @TableId(type = IdType.ASSIGN_ID) + private String id; + + // === 基础信息 === + @Schema(description = "套餐名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小班全年套餐") + private String name; + + @Schema(description = "套餐描述", example = "适合小班幼儿的全年语言领域套餐") + private String description; + + @Schema(description = "封面图片 URL") + private String coverUrl; + + // === 价格字段(单位:分) === + @Schema(description = "价格(分)", example = "9900") + private Integer price; + + @Schema(description = "优惠价(分)") + private Integer discountPrice; + + @Schema(description = "优惠类型:PERCENT-折扣/FIXED-立减") + private String discountType; + + // === 适用年级 === + @Schema(description = "适用年级(JSON 数组)", example = "[\"小班\",\"中班\",\"大班\"]") + private String gradeLevels; + + // === 状态字段 === + @Schema(description = "状态", allowableValues = {"DRAFT", "PENDING_REVIEW", "APPROVED", "REJECTED", "PUBLISHED", "OFFLINE"}) + private String status; + + @Schema(description = "课程包数量") + private Integer coursePackageCount; + + @Schema(description = "使用学校数") + private Integer tenantCount; + + @Schema(description = "发布时间") + private LocalDateTime publishedAt; + + // === 系统字段 === + @Schema(description = "是否系统套餐 0-否 1-是", example = "0") + private Integer isSystem; + + @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private String createdBy; + + @Schema(description = "更新人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updatedBy; + + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createdAt; + + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updatedAt; + + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) + @TableLogic + private Integer deleted; + + // === 关联关系(多对多) === + @TableField(exist = false) + private java.util.List bundleCoursePackages; +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/ProductBundleCoursePackage.java b/reading-platform-java/src/main/java/com/reading/platform/entity/ProductBundleCoursePackage.java new file mode 100644 index 0000000..c7ff1b9 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/ProductBundleCoursePackage.java @@ -0,0 +1,60 @@ +package com.reading.platform.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 套餐课程包关联实体 + * 用于实现套餐与课程包的多对多关系 + */ +@Data +@TableName("t_product_bundle_course_package") +@Schema(description = "套餐课程包关联") +public class ProductBundleCoursePackage { + + @Schema(description = "关联 ID", accessMode = Schema.AccessMode.READ_ONLY) + @TableId(type = IdType.ASSIGN_ID) + private String id; + + // === 关联字段 === + @Schema(description = "套餐 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1234567890") + private String productBundleId; + + @Schema(description = "课程包 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "0987654321") + private String coursePackageId; + + // === 业务字段 === + @Schema(description = "适用年级", example = "小班") + private String gradeLevel; + + @Schema(description = "排序", example = "1") + private Integer sortOrder; + + // === 系统字段 === + @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private String createdBy; + + @Schema(description = "更新人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updatedBy; + + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createdAt; + + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updatedAt; + + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) + @TableLogic + private Integer deleted; + + // === 关联查询 === + @TableField(exist = false) + private CoursePackage coursePackage; +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceItem.java b/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceItem.java index 6c80540..73ca519 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceItem.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceItem.java @@ -14,38 +14,38 @@ import java.time.LocalDateTime; @Schema(description = "资源项") public class ResourceItem { + @Schema(description = "资源项 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "资源库 ID") + @Schema(description = "资源库 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String libraryId; - @Schema(description = "租户 ID") + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; - @Schema(description = "资源类型") + @Schema(description = "资源类型", example = "picture_book", requiredMode = Schema.RequiredMode.REQUIRED) private String type; - @Schema(description = "资源名称") + @Schema(description = "资源名称", example = "《好饿的毛毛虫》", requiredMode = Schema.RequiredMode.REQUIRED) private String name; - @Schema(description = "资源编码") + @Schema(description = "资源编码", example = "PB001") private String code; @Schema(description = "资源描述") private String description; - @Schema(description = "数量") + @Schema(description = "数量", example = "10") private Integer quantity; - @Schema(description = "可用数量") + @Schema(description = "可用数量", example = "8") private Integer availableQuantity; - @Schema(description = "存放位置") + @Schema(description = "存放位置", example = "A 区 -1 架 -2 层") private String location; - @Schema(description = "状态") + @Schema(description = "状态", example = "available", allowableValues = {"available", "borrowed", "lost"}) private String status; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -64,7 +64,7 @@ public class ResourceItem { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceLibrary.java b/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceLibrary.java index 03817e5..0ddbf7c 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceLibrary.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/ResourceLibrary.java @@ -14,20 +14,20 @@ import java.time.LocalDateTime; @Schema(description = "资源库") public class ResourceLibrary { + @Schema(description = "资源库 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) private String id; - @Schema(description = "租户 ID") + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; - @Schema(description = "资源库名称") + @Schema(description = "资源库名称", example = "绘本资源库", requiredMode = Schema.RequiredMode.REQUIRED) private String name; @Schema(description = "资源库描述") private String description; - @Schema(description = "资源库类型") + @Schema(description = "资源库类型", example = "picture_book", requiredMode = Schema.RequiredMode.REQUIRED) private String type; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -46,7 +46,7 @@ public class ResourceLibrary { @TableField(fill = FieldFill.INSERT_UPDATE) private String updatedBy; - @Schema(description = "是否删除", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/SchedulePlan.java b/reading-platform-java/src/main/java/com/reading/platform/entity/SchedulePlan.java index b9e6fea..03ff8d6 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/SchedulePlan.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/SchedulePlan.java @@ -53,13 +53,13 @@ public class SchedulePlan { @Schema(description = "结束日期") private LocalDate endDate; - @Schema(description = "上课地点") + @Schema(description = "上课地点", example = "一年级一班教室") private String location; @Schema(description = "备注说明") private String note; - @Schema(description = "状态 scheduled/completed/cancelled", example = "scheduled") + @Schema(description = "状态", example = "scheduled", allowableValues = {"scheduled", "completed", "cancelled"}) private String status; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/SchoolCourse.java b/reading-platform-java/src/main/java/com/reading/platform/entity/SchoolCourse.java index 987f607..a13413e 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/SchoolCourse.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/SchoolCourse.java @@ -36,7 +36,7 @@ public class SchoolCourse { @Schema(description = "适用年龄段", example = "5-6 岁") private String ageRange; - @Schema(description = "状态 published/draft", example = "published") + @Schema(description = "状态", example = "published", allowableValues = {"published", "draft"}) private String status; @Schema(description = "创建人 ID", accessMode = Schema.AccessMode.READ_ONLY) diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Student.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Student.java index 6bfc687..03c17cc 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Student.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Student.java @@ -8,60 +8,63 @@ import java.time.LocalDate; import java.time.LocalDateTime; /** - * 学生实体 + * 学生信息 */ @Data @TableName("t_student") +@Schema(description = "学生信息") public class Student { + @Schema(description = "学生 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; + @Schema(description = "学生姓名", example = "张三", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "性别", example = "male", allowableValues = {"male", "female"}) private String gender; + @Schema(description = "出生日期", example = "2018-01-01") private LocalDate birthDate; + @Schema(description = "头像 URL") private String avatarUrl; + @Schema(description = "年级", example = "一年级") private String grade; + @Schema(description = "学号") private String studentNo; + @Schema(description = "阅读水平", example = "初级") private String readingLevel; + @Schema(description = "兴趣爱好") private String interests; + @Schema(description = "备注") private String notes; + @Schema(description = "状态", example = "active", allowableValues = {"active", "inactive"}) private String status; - /** - * 班级 ID - */ + @Schema(description = "班级 ID") private String classId; - /** - * 家长姓名 - */ + @Schema(description = "家长姓名") private String parentName; - /** - * 家长手机号 - */ + @Schema(description = "家长手机号", example = "13800138000") private String parentPhone; - /** - * 阅读次数 - */ + @Schema(description = "阅读次数", example = "10") private Integer readingCount; - /** - * 课时数 - */ + @Schema(description = "课时数", example = "20") private Integer lessonCount; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -80,6 +83,7 @@ public class Student { @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/StudentClassHistory.java b/reading-platform-java/src/main/java/com/reading/platform/entity/StudentClassHistory.java index a861076..5f7cc19 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/StudentClassHistory.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/StudentClassHistory.java @@ -25,10 +25,10 @@ public class StudentClassHistory { @Schema(description = "班级 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String classId; - @Schema(description = "开始日期", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "开始日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2024-01-01") private LocalDate startDate; - @Schema(description = "结束日期") + @Schema(description = "结束日期", example = "2024-06-30") private LocalDate endDate; @Schema(description = "状态 active/graduated/transferred", example = "active") diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Tag.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Tag.java index 1cd9b6b..162dd27 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Tag.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Tag.java @@ -24,7 +24,7 @@ public class Tag { @Schema(description = "标签名称", example = "绘本阅读", requiredMode = Schema.RequiredMode.REQUIRED) private String name; - @Schema(description = "标签类型", example = "course") + @Schema(description = "标签类型", example = "course", allowableValues = {"course", "lesson", "task", "other"}) private String type; @Schema(description = "标签颜色", example = "#1890ff") diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/TaskCompletion.java b/reading-platform-java/src/main/java/com/reading/platform/entity/TaskCompletion.java index c96deef..19363c9 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/TaskCompletion.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/TaskCompletion.java @@ -24,7 +24,7 @@ public class TaskCompletion { @Schema(description = "学生 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String studentId; - @Schema(description = "完成状态", example = "completed") + @Schema(description = "完成状态", example = "completed", allowableValues = {"pending", "completed", "incomplete"}) private String status; @Schema(description = "完成时间") diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTarget.java b/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTarget.java index 3a55787..a68ca1f 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTarget.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTarget.java @@ -21,7 +21,7 @@ public class TaskTarget { @Schema(description = "任务 ID", requiredMode = Schema.RequiredMode.REQUIRED) private String taskId; - @Schema(description = "目标类型", example = "student", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "目标类型", example = "student", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"student", "class", "grade"}) private String targetType; @Schema(description = "目标 ID", requiredMode = Schema.RequiredMode.REQUIRED) diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTemplate.java b/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTemplate.java index 931617f..7324578 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTemplate.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/TaskTemplate.java @@ -27,7 +27,7 @@ public class TaskTemplate { @Schema(description = "模板描述") private String description; - @Schema(description = "任务类型", example = "reading") + @Schema(description = "任务类型", example = "reading", allowableValues = {"reading", "writing", "oral", "other"}) private String type; @Schema(description = "模板内容") diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Teacher.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Teacher.java index 4da8f31..930cc50 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Teacher.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Teacher.java @@ -7,35 +7,48 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 教师实体 + * 教师信息 */ @Data @TableName("t_teacher") +@Schema(description = "教师信息") public class Teacher { + @Schema(description = "教师 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) private String tenantId; + @Schema(description = "用户名", example = "zhangsan", requiredMode = Schema.RequiredMode.REQUIRED) private String username; + @Schema(description = "密码", accessMode = Schema.AccessMode.WRITE_ONLY, requiredMode = Schema.RequiredMode.REQUIRED) private String password; + @Schema(description = "教师姓名", example = "张老师", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "手机号", example = "13800138000") private String phone; + @Schema(description = "邮箱", example = "zhangsan@example.com") private String email; + @Schema(description = "头像 URL") private String avatarUrl; + @Schema(description = "性别", example = "male", allowableValues = {"male", "female"}) private String gender; + @Schema(description = "个人简介") private String bio; + @Schema(description = "状态", example = "active", allowableValues = {"active", "inactive"}) private String status; + @Schema(description = "最后登录时间", accessMode = Schema.AccessMode.READ_ONLY) private LocalDateTime lastLoginAt; @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) @@ -54,6 +67,7 @@ public class Teacher { @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updatedAt; + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) @TableLogic private Integer deleted; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Tenant.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Tenant.java index e7fab8e..3472cbc 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Tenant.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Tenant.java @@ -14,36 +14,49 @@ import java.time.LocalDateTime; */ @Data @TableName("t_tenant") +@Schema(description = "租户信息") public class Tenant { + @Schema(description = "租户 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; + @Schema(description = "租户名称", example = "阳光幼儿园", requiredMode = Schema.RequiredMode.REQUIRED) private String name; + @Schema(description = "登录账号", example = "sunshine", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("loginAccount") private String code; + @Schema(description = "联系人姓名", example = "张三", requiredMode = Schema.RequiredMode.REQUIRED) @JsonProperty("contactPerson") private String contactName; + @Schema(description = "联系人手机号", example = "13800138000") private String contactPhone; + @Schema(description = "联系人邮箱", example = "zhangsan@example.com") private String contactEmail; + @Schema(description = "地址", example = "北京市朝阳区 XX 路 XX 号") private String address; + @Schema(description = "Logo URL") private String logoUrl; + @Schema(description = "状态", example = "active", allowableValues = {"active", "inactive"}) @JsonSerialize(using = UpperCaseSerializer.class) private String status; + @Schema(description = "到期时间", example = "2025-12-31 23:59:59") @JsonProperty("expireDate") private LocalDateTime expireAt; + @Schema(description = "学生配额", example = "500") @JsonProperty("studentQuota") private Integer maxStudents; + @Schema(description = "教师配额", example = "50") @JsonProperty("teacherQuota") private Integer maxTeachers; diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/TenantCourse.java b/reading-platform-java/src/main/java/com/reading/platform/entity/TenantCourse.java index d291df4..11c182a 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/TenantCourse.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/TenantCourse.java @@ -7,7 +7,7 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 租户-课程关联实体 + * 租户 - 课程关联实体 */ @Data @TableName("t_tenant_course") diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/TenantProductBundle.java b/reading-platform-java/src/main/java/com/reading/platform/entity/TenantProductBundle.java new file mode 100644 index 0000000..5d47217 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/TenantProductBundle.java @@ -0,0 +1,69 @@ +package com.reading.platform.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 学校套餐购买记录实体 + * 用于记录学校购买套餐的信息 + */ +@Data +@TableName("t_tenant_product_bundle") +@Schema(description = "学校套餐购买记录") +public class TenantProductBundle { + + @Schema(description = "购买记录 ID", accessMode = Schema.AccessMode.READ_ONLY) + @TableId(type = IdType.ASSIGN_ID) + private String id; + + @Schema(description = "租户 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1234567890") + private String tenantId; + + @Schema(description = "套餐 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "0987654321") + private String productBundleId; + + @Schema(description = "开始日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026-01-01 00:00:00") + private LocalDateTime startDate; + + @Schema(description = "结束日期", requiredMode = Schema.RequiredMode.REQUIRED, example = "2026-12-31 23:59:59") + private LocalDateTime endDate; + + @Schema(description = "状态", allowableValues = {"ACTIVE", "EXPIRED", "SUSPENDED"}) + private String status; + + @Schema(description = "实付价格(分)", example = "8900") + private Integer pricePaid; + + @Schema(description = "购买时间") + private LocalDateTime purchaseTime; + + @Schema(description = "续费自原套餐 ID") + private String renewedFrom; + + @Schema(description = "创建人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private String createdBy; + + @Schema(description = "更新人用户名", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updatedBy; + + @Schema(description = "创建时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createdAt; + + @Schema(description = "更新时间", accessMode = Schema.AccessMode.READ_ONLY) + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updatedAt; + + @Schema(description = "是否删除 0-未删除 1-已删除", accessMode = Schema.AccessMode.READ_ONLY) + @TableLogic + private Integer deleted; + + // === 关联查询 === + @TableField(exist = false) + private ProductBundle productBundle; +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/entity/Theme.java b/reading-platform-java/src/main/java/com/reading/platform/entity/Theme.java index c7d1f49..1f9bf65 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/entity/Theme.java +++ b/reading-platform-java/src/main/java/com/reading/platform/entity/Theme.java @@ -14,7 +14,7 @@ import java.time.LocalDateTime; @Schema(description = "主题") public class Theme { - @Schema(description = "ID", accessMode = Schema.AccessMode.READ_ONLY) + @Schema(description = "主题 ID", accessMode = Schema.AccessMode.READ_ONLY) @TableId(type = IdType.ASSIGN_ID) private String id; diff --git a/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageCourseMapper.java b/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageCourseMapper.java new file mode 100644 index 0000000..7ce2cea --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/mapper/CoursePackageCourseMapper.java @@ -0,0 +1,12 @@ +package com.reading.platform.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.reading.platform.entity.CoursePackageCourse; +import org.apache.ibatis.annotations.Mapper; + +/** + * 课程包课程关联 Mapper + */ +@Mapper +public interface CoursePackageCourseMapper extends BaseMapper { +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/mapper/ProductBundleCoursePackageMapper.java b/reading-platform-java/src/main/java/com/reading/platform/mapper/ProductBundleCoursePackageMapper.java new file mode 100644 index 0000000..3daef28 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/mapper/ProductBundleCoursePackageMapper.java @@ -0,0 +1,12 @@ +package com.reading.platform.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.reading.platform.entity.ProductBundleCoursePackage; +import org.apache.ibatis.annotations.Mapper; + +/** + * 套餐课程包关联 Mapper + */ +@Mapper +public interface ProductBundleCoursePackageMapper extends BaseMapper { +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/mapper/ProductBundleMapper.java b/reading-platform-java/src/main/java/com/reading/platform/mapper/ProductBundleMapper.java new file mode 100644 index 0000000..3a848d3 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/mapper/ProductBundleMapper.java @@ -0,0 +1,12 @@ +package com.reading.platform.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.reading.platform.entity.ProductBundle; +import org.apache.ibatis.annotations.Mapper; + +/** + * 产品套餐 Mapper + */ +@Mapper +public interface ProductBundleMapper extends BaseMapper { +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/mapper/TenantProductBundleMapper.java b/reading-platform-java/src/main/java/com/reading/platform/mapper/TenantProductBundleMapper.java new file mode 100644 index 0000000..af5a811 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/mapper/TenantProductBundleMapper.java @@ -0,0 +1,12 @@ +package com.reading.platform.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.reading.platform.entity.TenantProductBundle; +import org.apache.ibatis.annotations.Mapper; + +/** + * 学校套餐购买记录 Mapper + */ +@Mapper +public interface TenantProductBundleMapper extends BaseMapper { +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/ClassService.java b/reading-platform-java/src/main/java/com/reading/platform/service/ClassService.java index d4d55ff..7896694 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/ClassService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/ClassService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.ClassCreateRequest; import com.reading.platform.dto.request.ClassUpdateRequest; @@ -12,7 +13,7 @@ import java.util.List; /** * Class Service Interface */ -public interface ClassService { +public interface ClassService extends IService { Clazz createClass(String tenantId, ClassCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/CourseLessonService.java b/reading-platform-java/src/main/java/com/reading/platform/service/CourseLessonService.java index d52bd56..bfcd824 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/CourseLessonService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/CourseLessonService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.reading.platform.entity.CourseLesson; import java.util.List; @@ -7,7 +8,7 @@ import java.util.List; /** * 课程课时服务接口 */ -public interface CourseLessonService { +public interface CourseLessonService extends IService { /** * 根据课程 ID 获取课时列表 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageCourseService.java b/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageCourseService.java new file mode 100644 index 0000000..e52540c --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageCourseService.java @@ -0,0 +1,37 @@ +package com.reading.platform.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.reading.platform.entity.CoursePackageCourse; + +import java.util.List; + +/** + * 课程包课程关联服务接口 + */ +public interface CoursePackageCourseService extends IService { + + /** + * 获取课程包包含的课程列表 + */ + List getPackageCourses(String coursePackageId); + + /** + * 添加课程包课程关联 + */ + CoursePackageCourse addPackageCourse(CoursePackageCourse relation); + + /** + * 移除课程包课程关联 + */ + void removePackageCourse(String id); + + /** + * 更新课程包课程排序 + */ + void updateSortOrder(String id, Integer sortOrder); + + /** + * 批量添加课程包课程关联 + */ + void batchAddPackageCourses(String coursePackageId, List courseIds); +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java b/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java index 73e4869..87ae5d7 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/CoursePackageService.java @@ -1,17 +1,19 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.entity.CoursePackage; /** * 课程包服务接口 + * 课程包是纯课程集合,不包含商业状态 */ -public interface CoursePackageService { +public interface CoursePackageService extends IService { /** * 获取课程包分页 */ - Page getPackages(int pageNum, int pageSize, String keyword, String status); + Page getPackages(int pageNum, int pageSize, String keyword); /** * 根据 ID 获取课程包 @@ -33,23 +35,10 @@ public interface CoursePackageService { */ void deletePackage(String id); - /** - * 提交审核 - */ - void submitPackage(String id); - - /** - * 审核课程包 - */ - void reviewPackage(String id, boolean approved, String comment); - - /** - * 发布课程包 - */ - void publishPackage(String id); - - /** - * 下架课程包 - */ - void offlinePackage(String id); + // 注意:CoursePackage 不再包含状态字段,状态管理已移至 ProductBundle + // 以下方法已废弃,请使用 ProductBundleService 相关方法 + // void submitPackage(String id); + // void reviewPackage(String id, boolean approved, String comment); + // void publishPackage(String id); + // void offlinePackage(String id); } diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/GrowthRecordService.java b/reading-platform-java/src/main/java/com/reading/platform/service/GrowthRecordService.java index 2bb9de6..dbac83c 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/GrowthRecordService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/GrowthRecordService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.GrowthRecordCreateRequest; import com.reading.platform.dto.request.GrowthRecordUpdateRequest; @@ -10,7 +11,7 @@ import java.util.List; /** * Growth Record Service Interface */ -public interface GrowthRecordService { +public interface GrowthRecordService extends IService { GrowthRecord createGrowthRecord(String tenantId, String recorderId, String recorderRole, GrowthRecordCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/LessonFeedbackService.java b/reading-platform-java/src/main/java/com/reading/platform/service/LessonFeedbackService.java index 217759e..14689ac 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/LessonFeedbackService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/LessonFeedbackService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.entity.LessonFeedback; @@ -9,7 +10,7 @@ import java.util.Map; /** * 课程反馈服务接口 */ -public interface LessonFeedbackService { +public interface LessonFeedbackService extends IService { /** * 根据教师 ID 获取反馈列表 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/LessonService.java b/reading-platform-java/src/main/java/com/reading/platform/service/LessonService.java index 6813d12..aa84309 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/LessonService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/LessonService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.LessonCreateRequest; import com.reading.platform.dto.request.LessonUpdateRequest; @@ -14,7 +15,7 @@ import java.util.Map; /** * Lesson Service Interface */ -public interface LessonService { +public interface LessonService extends IService { Lesson createLesson(String tenantId, LessonCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/NotificationService.java b/reading-platform-java/src/main/java/com/reading/platform/service/NotificationService.java index 61643dd..f96bb10 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/NotificationService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/NotificationService.java @@ -1,12 +1,13 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.entity.Notification; /** * Notification Service Interface */ -public interface NotificationService { +public interface NotificationService extends IService { Notification createNotification(String tenantId, String senderId, String senderRole, String title, String content, String type, String recipientType, String recipientId); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/OperationLogService.java b/reading-platform-java/src/main/java/com/reading/platform/service/OperationLogService.java index f74aaf7..3bfe28e 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/OperationLogService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/OperationLogService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.entity.OperationLog; @@ -9,7 +10,7 @@ import java.util.Map; /** * 操作日志服务接口 */ -public interface OperationLogService { +public interface OperationLogService extends IService { /** * 获取操作日志分页 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/ParentService.java b/reading-platform-java/src/main/java/com/reading/platform/service/ParentService.java index 55dd773..9b455e4 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/ParentService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/ParentService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.ParentCreateRequest; import com.reading.platform.dto.request.ParentUpdateRequest; @@ -10,7 +11,7 @@ import java.util.List; /** * Parent Service Interface */ -public interface ParentService { +public interface ParentService extends IService { Parent createParent(String tenantId, ParentCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/ProductBundleCoursePackageService.java b/reading-platform-java/src/main/java/com/reading/platform/service/ProductBundleCoursePackageService.java new file mode 100644 index 0000000..7aa551d --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/ProductBundleCoursePackageService.java @@ -0,0 +1,37 @@ +package com.reading.platform.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.reading.platform.entity.ProductBundleCoursePackage; + +import java.util.List; + +/** + * 套餐课程包关联服务接口 + */ +public interface ProductBundleCoursePackageService extends IService { + + /** + * 获取套餐包含的课程包列表 + */ + List getBundleCoursePackages(String productBundleId); + + /** + * 添加套餐课程包关联 + */ + ProductBundleCoursePackage addBundleCoursePackage(ProductBundleCoursePackage relation); + + /** + * 移除套餐课程包关联 + */ + void removeBundleCoursePackage(String id); + + /** + * 更新套餐课程包排序 + */ + void updateSortOrder(String id, Integer sortOrder); + + /** + * 批量添加套餐课程包关联 + */ + void batchAddBundleCoursePackages(String productBundleId, List coursePackageIds); +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/ProductBundleService.java b/reading-platform-java/src/main/java/com/reading/platform/service/ProductBundleService.java new file mode 100644 index 0000000..9a7c15c --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/ProductBundleService.java @@ -0,0 +1,61 @@ +package com.reading.platform.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.reading.platform.entity.ProductBundle; + +/** + * 产品套餐服务接口 + */ +public interface ProductBundleService extends IService { + + /** + * 获取套餐分页列表 + */ + Page getBundlePage(int pageNum, int pageSize, String keyword, String status); + + /** + * 根据 ID 获取套餐 + */ + ProductBundle getBundleById(String id); + + /** + * 创建套餐 + */ + ProductBundle createBundle(ProductBundle bundle); + + /** + * 更新套餐 + */ + ProductBundle updateBundle(String id, ProductBundle bundle); + + /** + * 删除套餐 + */ + void deleteBundle(String id); + + /** + * 提交审核 + */ + void submitBundle(String id); + + /** + * 审核套餐 + */ + void reviewBundle(String id, boolean approved, String comment); + + /** + * 发布套餐 + */ + void publishBundle(String id); + + /** + * 下架套餐 + */ + void offlineBundle(String id); + + /** + * 获取系统套餐列表 + */ + Page getSystemBundles(int pageNum, int pageSize, String gradeLevel); +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/ScheduleService.java b/reading-platform-java/src/main/java/com/reading/platform/service/ScheduleService.java index 6e41230..221331a 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/ScheduleService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/ScheduleService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.SchedulePlanCreateRequest; import com.reading.platform.dto.request.ScheduleTemplateApplyRequest; @@ -13,7 +14,7 @@ import java.util.Map; /** * 课表服务接口 */ -public interface ScheduleService { +public interface ScheduleService extends IService { /** * 获取课表计划分页 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/SchoolCourseService.java b/reading-platform-java/src/main/java/com/reading/platform/service/SchoolCourseService.java index be73c88..8f472b2 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/SchoolCourseService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/SchoolCourseService.java @@ -1,12 +1,13 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.entity.SchoolCourse; /** * 校本课程服务接口 */ -public interface SchoolCourseService { +public interface SchoolCourseService extends IService { /** * 获取校本课程分页 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/StudentService.java b/reading-platform-java/src/main/java/com/reading/platform/service/StudentService.java index 1dc4aee..d764bc2 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/StudentService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/StudentService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.StudentCreateRequest; import com.reading.platform.dto.request.StudentUpdateRequest; @@ -11,7 +12,7 @@ import java.util.List; /** * Student Service Interface */ -public interface StudentService { +public interface StudentService extends IService { Student createStudent(String tenantId, StudentCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/TaskService.java b/reading-platform-java/src/main/java/com/reading/platform/service/TaskService.java index 6a51621..c6f24b4 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/TaskService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/TaskService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.*; import com.reading.platform.entity.Task; @@ -12,7 +13,7 @@ import java.util.Map; /** * Task Service Interface */ -public interface TaskService { +public interface TaskService extends IService { Task createTask(String tenantId, String creatorId, String creatorRole, TaskCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/TeacherService.java b/reading-platform-java/src/main/java/com/reading/platform/service/TeacherService.java index bf0a5a1..7542454 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/TeacherService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/TeacherService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.TeacherCreateRequest; import com.reading.platform.dto.request.TeacherUpdateRequest; @@ -8,7 +9,7 @@ import com.reading.platform.entity.Teacher; /** * Teacher Service Interface */ -public interface TeacherService { +public interface TeacherService extends IService { Teacher createTeacher(String tenantId, TeacherCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/TenantProductBundleService.java b/reading-platform-java/src/main/java/com/reading/platform/service/TenantProductBundleService.java new file mode 100644 index 0000000..d999375 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/TenantProductBundleService.java @@ -0,0 +1,58 @@ +package com.reading.platform.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.reading.platform.entity.TenantProductBundle; + +import java.util.List; + +/** + * 学校套餐购买记录服务接口 + */ +public interface TenantProductBundleService extends IService { + + /** + * 获取学校套餐购买记录分页 + */ + Page getTenantBundlePage(int pageNum, int pageSize, String tenantId, String status); + + /** + * 根据 ID 获取购买记录 + */ + TenantProductBundle getTenantBundleById(String id); + + /** + * 获取学校的套餐列表 + */ + List getTenantBundlesByTenantId(String tenantId); + + /** + * 获取学校当前有效的套餐 + */ + TenantProductBundle getActiveTenantBundle(String tenantId); + + /** + * 创建购买记录 + */ + TenantProductBundle createTenantBundle(TenantProductBundle record); + + /** + * 更新购买记录 + */ + TenantProductBundle updateTenantBundle(String id, TenantProductBundle record); + + /** + * 激活套餐 + */ + void activateBundle(String id); + + /** + * 过期套餐 + */ + void expireBundle(String id); + + /** + * 暂停套餐 + */ + void suspendBundle(String id); +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/TenantService.java b/reading-platform-java/src/main/java/com/reading/platform/service/TenantService.java index f63960b..13c3f82 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/TenantService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/TenantService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.reading.platform.dto.request.TenantCreateRequest; import com.reading.platform.dto.request.TenantUpdateRequest; @@ -11,7 +12,7 @@ import java.util.List; /** * 租户服务接口 */ -public interface TenantService { +public interface TenantService extends IService { Tenant createTenant(TenantCreateRequest request); diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/ThemeService.java b/reading-platform-java/src/main/java/com/reading/platform/service/ThemeService.java index fd4db2f..98d7416 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/ThemeService.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/ThemeService.java @@ -1,5 +1,6 @@ package com.reading.platform.service; +import com.baomidou.mybatisplus.extension.service.IService; import com.reading.platform.entity.Theme; import java.util.List; @@ -7,7 +8,7 @@ import java.util.List; /** * 主题服务接口 */ -public interface ThemeService { +public interface ThemeService extends IService { /** * 获取所有主题 diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ClassServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ClassServiceImpl.java index 7d2d3d1..a2ae7fa 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ClassServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ClassServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -27,7 +28,7 @@ import java.util.List; @Service @RequiredArgsConstructor -public class ClassServiceImpl implements ClassService { +public class ClassServiceImpl extends ServiceImpl implements ClassService { private final ClazzMapper clazzMapper; private final ClassTeacherMapper classTeacherMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseLessonServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseLessonServiceImpl.java index e34827c..6250274 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseLessonServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseLessonServiceImpl.java @@ -1,6 +1,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.entity.CourseLesson; @@ -16,7 +17,7 @@ import java.util.List; */ @Service @RequiredArgsConstructor -public class CourseLessonServiceImpl implements CourseLessonService { +public class CourseLessonServiceImpl extends ServiceImpl implements CourseLessonService { private final CourseLessonMapper courseLessonMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageCourseServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageCourseServiceImpl.java new file mode 100644 index 0000000..4a39377 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageCourseServiceImpl.java @@ -0,0 +1,99 @@ +package com.reading.platform.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.reading.platform.common.exception.BusinessException; +import com.reading.platform.entity.CoursePackageCourse; +import com.reading.platform.mapper.CoursePackageCourseMapper; +import com.reading.platform.service.CoursePackageCourseService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 课程包课程关联服务实现类 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class CoursePackageCourseServiceImpl extends ServiceImpl implements CoursePackageCourseService { + + private final CoursePackageCourseMapper coursePackageCourseMapper; + + @Override + public List getPackageCourses(String coursePackageId) { + log.debug("查询课程包包含的课程,课程包 ID: {}", coursePackageId); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(CoursePackageCourse::getCoursePackageId, coursePackageId); + wrapper.orderByAsc(CoursePackageCourse::getSortOrder); + + List result = coursePackageCourseMapper.selectList(wrapper); + log.info("查询课程包包含的课程成功,课程包 ID: {}, 数量:{}", coursePackageId, result.size()); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public CoursePackageCourse addPackageCourse(CoursePackageCourse relation) { + log.info("开始添加课程包课程关联,课程包 ID: {}, 课程 ID: {}", + relation.getCoursePackageId(), relation.getCourseId()); + + relation.setCreatedAt(LocalDateTime.now()); + coursePackageCourseMapper.insert(relation); + + log.info("课程包课程关联添加成功,ID: {}", relation.getId()); + return relation; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void removePackageCourse(String id) { + log.info("开始移除课程包课程关联,ID: {}", id); + + CoursePackageCourse relation = getById(id); + if (relation == null) { + throw new BusinessException("课程包课程关联不存在"); + } + + coursePackageCourseMapper.deleteById(id); + log.info("课程包课程关联移除成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateSortOrder(String id, Integer sortOrder) { + log.info("开始更新课程包课程排序,ID: {}, 排序:{}", id, sortOrder); + + CoursePackageCourse relation = getById(id); + if (relation == null) { + throw new BusinessException("课程包课程关联不存在"); + } + + relation.setSortOrder(sortOrder); + coursePackageCourseMapper.updateById(relation); + + log.info("课程包课程排序更新成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchAddPackageCourses(String coursePackageId, List courseIds) { + log.info("开始批量添加课程包课程关联,课程包 ID: {}, 课程数量:{}", coursePackageId, courseIds.size()); + + for (int i = 0; i < courseIds.size(); i++) { + CoursePackageCourse relation = new CoursePackageCourse(); + relation.setCoursePackageId(coursePackageId); + relation.setCourseId(courseIds.get(i)); + relation.setSortOrder(i); + relation.setCreatedAt(LocalDateTime.now()); + coursePackageCourseMapper.insert(relation); + } + + log.info("批量添加课程包课程关联成功,课程包 ID: {}, 数量:{}", coursePackageId, courseIds.size()); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageServiceImpl.java index 5e15382..bd91969 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CoursePackageServiceImpl.java @@ -2,90 +2,88 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.entity.CoursePackage; import com.reading.platform.mapper.CoursePackageMapper; import com.reading.platform.service.CoursePackageService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; /** * 课程包服务实现类 + * 课程包是纯课程集合,不包含商业状态 */ +@Slf4j @Service @RequiredArgsConstructor -public class CoursePackageServiceImpl implements CoursePackageService { +public class CoursePackageServiceImpl extends ServiceImpl implements CoursePackageService { private final CoursePackageMapper coursePackageMapper; @Override - public Page getPackages(int pageNum, int pageSize, String keyword, String status) { + public Page getPackages(int pageNum, int pageSize, String keyword) { + log.debug("查询课程包分页,页码:{},每页大小:{},关键词:{}", pageNum, pageSize, keyword); + Page page = new Page<>(pageNum, pageSize); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + if (keyword != null && !keyword.isEmpty()) { wrapper.like(CoursePackage::getName, keyword); } - if (status != null && !status.isEmpty()) { - wrapper.eq(CoursePackage::getStatus, status); - } wrapper.orderByDesc(CoursePackage::getCreatedAt); - return coursePackageMapper.selectPage(page, wrapper); + + Page result = coursePackageMapper.selectPage(page, wrapper); + log.info("查询课程包分页成功,共{}条", result.getTotal()); + return result; } @Override public CoursePackage getPackageById(String id) { + log.debug("查询课程包,ID: {}", id); + CoursePackage pkg = coursePackageMapper.selectById(id); if (pkg == null) { - throw new BusinessException(ErrorCode.DATA_NOT_FOUND, "Course package not found"); + log.warn("课程包不存在,ID: {}", id); + throw new BusinessException(ErrorCode.DATA_NOT_FOUND, "课程包不存在"); } + log.info("查询课程包成功,名称:{}", pkg.getName()); return pkg; } @Override public CoursePackage createPackage(CoursePackage pkg) { + log.info("开始创建课程包,名称:{}", pkg.getName()); + coursePackageMapper.insert(pkg); + log.info("课程包创建成功,ID: {}", pkg.getId()); return pkg; } @Override public CoursePackage updatePackage(String id, CoursePackage pkg) { + log.info("开始更新课程包,ID: {}", id); + getPackageById(id); pkg.setId(id); coursePackageMapper.updateById(pkg); + + log.info("课程包更新成功,ID: {}", id); return coursePackageMapper.selectById(id); } @Override public void deletePackage(String id) { + log.info("开始删除课程包,ID: {}", id); + + getPackageById(id); coursePackageMapper.deleteById(id); + + log.info("课程包删除成功,ID: {}", id); } - @Override - public void submitPackage(String id) { - CoursePackage pkg = getPackageById(id); - pkg.setStatus("pending"); - coursePackageMapper.updateById(pkg); - } - - @Override - public void reviewPackage(String id, boolean approved, String comment) { - CoursePackage pkg = getPackageById(id); - pkg.setStatus(approved ? "published" : "rejected"); - coursePackageMapper.updateById(pkg); - } - - @Override - public void publishPackage(String id) { - CoursePackage pkg = getPackageById(id); - pkg.setStatus("published"); - coursePackageMapper.updateById(pkg); - } - - @Override - public void offlinePackage(String id) { - CoursePackage pkg = getPackageById(id); - pkg.setStatus("archived"); - coursePackageMapper.updateById(pkg); - } + // 注意:CoursePackage 不再包含状态字段,状态管理已移至 ProductBundle + // 以下方法已废弃,请使用 ProductBundle 相关方法 } diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseServiceImpl.java index 1b633ca..2c66457 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/CourseServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -27,7 +28,7 @@ import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor -public class CourseServiceImpl implements CourseService { +public class CourseServiceImpl extends ServiceImpl implements CourseService { private final CourseMapper courseMapper; private final CourseLessonMapper courseLessonMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/GrowthRecordServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/GrowthRecordServiceImpl.java index 3e0df41..e81b733 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/GrowthRecordServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/GrowthRecordServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; @@ -23,7 +24,7 @@ import java.util.List; @Service @RequiredArgsConstructor -public class GrowthRecordServiceImpl implements GrowthRecordService { +public class GrowthRecordServiceImpl extends ServiceImpl implements GrowthRecordService { private final GrowthRecordMapper growthRecordMapper; private final ObjectMapper objectMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonFeedbackServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonFeedbackServiceImpl.java index 1f408d7..a7620e4 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonFeedbackServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonFeedbackServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -22,7 +23,7 @@ import java.util.stream.Collectors; @Slf4j @Service @RequiredArgsConstructor -public class LessonFeedbackServiceImpl implements LessonFeedbackService { +public class LessonFeedbackServiceImpl extends ServiceImpl implements LessonFeedbackService { private final LessonFeedbackMapper lessonFeedbackMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java index 1f45720..cb26814 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/LessonServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -24,7 +25,7 @@ import java.util.*; @Service @RequiredArgsConstructor -public class LessonServiceImpl implements LessonService { +public class LessonServiceImpl extends ServiceImpl implements LessonService { private final LessonMapper lessonMapper; private final StudentRecordMapper studentRecordMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/NotificationServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/NotificationServiceImpl.java index 7dd9616..ca642a4 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/NotificationServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/NotificationServiceImpl.java @@ -3,6 +3,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -17,7 +18,7 @@ import java.time.LocalDateTime; @Service @RequiredArgsConstructor -public class NotificationServiceImpl implements NotificationService { +public class NotificationServiceImpl extends ServiceImpl implements NotificationService { private final NotificationMapper notificationMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/OperationLogServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/OperationLogServiceImpl.java index a9d035f..a9064a9 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/OperationLogServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/OperationLogServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.security.SecurityUtils; import com.reading.platform.entity.OperationLog; import com.reading.platform.mapper.OperationLogMapper; @@ -19,7 +20,7 @@ import java.util.stream.Collectors; */ @Service @RequiredArgsConstructor -public class OperationLogServiceImpl implements OperationLogService { +public class OperationLogServiceImpl extends ServiceImpl implements OperationLogService { private final OperationLogMapper operationLogMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ParentServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ParentServiceImpl.java index 7008f2a..7369659 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ParentServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ParentServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -20,7 +21,7 @@ import org.springframework.util.StringUtils; @Service @RequiredArgsConstructor -public class ParentServiceImpl implements ParentService { +public class ParentServiceImpl extends ServiceImpl implements ParentService { private final ParentMapper parentMapper; private final ParentStudentMapper parentStudentMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ProductBundleCoursePackageServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ProductBundleCoursePackageServiceImpl.java new file mode 100644 index 0000000..c1f327b --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ProductBundleCoursePackageServiceImpl.java @@ -0,0 +1,99 @@ +package com.reading.platform.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.reading.platform.common.exception.BusinessException; +import com.reading.platform.entity.ProductBundleCoursePackage; +import com.reading.platform.mapper.ProductBundleCoursePackageMapper; +import com.reading.platform.service.ProductBundleCoursePackageService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 套餐课程包关联服务实现类 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ProductBundleCoursePackageServiceImpl extends ServiceImpl implements ProductBundleCoursePackageService { + + private final ProductBundleCoursePackageMapper productBundleCoursePackageMapper; + + @Override + public List getBundleCoursePackages(String productBundleId) { + log.debug("查询套餐包含的课程包,套餐 ID: {}", productBundleId); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProductBundleCoursePackage::getProductBundleId, productBundleId); + wrapper.orderByAsc(ProductBundleCoursePackage::getSortOrder); + + List result = productBundleCoursePackageMapper.selectList(wrapper); + log.info("查询套餐包含的课程包成功,套餐 ID: {}, 数量:{}", productBundleId, result.size()); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ProductBundleCoursePackage addBundleCoursePackage(ProductBundleCoursePackage relation) { + log.info("开始添加套餐课程包关联,套餐 ID: {}, 课程包 ID: {}", + relation.getProductBundleId(), relation.getCoursePackageId()); + + relation.setCreatedAt(LocalDateTime.now()); + productBundleCoursePackageMapper.insert(relation); + + log.info("套餐课程包关联添加成功,ID: {}", relation.getId()); + return relation; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void removeBundleCoursePackage(String id) { + log.info("开始移除套餐课程包关联,ID: {}", id); + + ProductBundleCoursePackage relation = getById(id); + if (relation == null) { + throw new BusinessException("套餐课程包关联不存在"); + } + + productBundleCoursePackageMapper.deleteById(id); + log.info("套餐课程包关联移除成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateSortOrder(String id, Integer sortOrder) { + log.info("开始更新套餐课程包排序,ID: {}, 排序:{}", id, sortOrder); + + ProductBundleCoursePackage relation = getById(id); + if (relation == null) { + throw new BusinessException("套餐课程包关联不存在"); + } + + relation.setSortOrder(sortOrder); + productBundleCoursePackageMapper.updateById(relation); + + log.info("套餐课程包排序更新成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchAddBundleCoursePackages(String productBundleId, List coursePackageIds) { + log.info("开始批量添加套餐课程包关联,套餐 ID: {}, 课程包数量:{}", productBundleId, coursePackageIds.size()); + + for (int i = 0; i < coursePackageIds.size(); i++) { + ProductBundleCoursePackage relation = new ProductBundleCoursePackage(); + relation.setProductBundleId(productBundleId); + relation.setCoursePackageId(coursePackageIds.get(i)); + relation.setSortOrder(i); + relation.setCreatedAt(LocalDateTime.now()); + productBundleCoursePackageMapper.insert(relation); + } + + log.info("批量添加套餐课程包关联成功,套餐 ID: {}, 数量:{}", productBundleId, coursePackageIds.size()); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ProductBundleServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ProductBundleServiceImpl.java new file mode 100644 index 0000000..6233041 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ProductBundleServiceImpl.java @@ -0,0 +1,162 @@ +package com.reading.platform.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.reading.platform.common.enums.ErrorCode; +import com.reading.platform.common.exception.BusinessException; +import com.reading.platform.entity.ProductBundle; +import com.reading.platform.mapper.ProductBundleMapper; +import com.reading.platform.service.ProductBundleService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; + +/** + * 产品套餐服务实现类 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class ProductBundleServiceImpl extends ServiceImpl implements ProductBundleService { + + private final ProductBundleMapper productBundleMapper; + + @Override + public Page getBundlePage(int pageNum, int pageSize, String keyword, String status) { + log.debug("查询套餐分页,页码:{},每页大小:{},关键词:{},状态:{}", pageNum, pageSize, keyword, status); + + Page page = new Page<>(pageNum, pageSize); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (keyword != null && !keyword.isEmpty()) { + wrapper.like(ProductBundle::getName, keyword); + } + if (status != null && !status.isEmpty()) { + wrapper.eq(ProductBundle::getStatus, status); + } + wrapper.orderByDesc(ProductBundle::getCreatedAt); + + Page result = productBundleMapper.selectPage(page, wrapper); + log.info("查询套餐分页成功,共{}条", result.getTotal()); + return result; + } + + @Override + public ProductBundle getBundleById(String id) { + log.debug("查询套餐,ID: {}", id); + + ProductBundle bundle = productBundleMapper.selectById(id); + if (bundle == null) { + log.warn("套餐不存在,ID: {}", id); + throw new BusinessException(ErrorCode.DATA_NOT_FOUND, "套餐不存在"); + } + log.info("查询套餐成功,名称:{}", bundle.getName()); + return bundle; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ProductBundle createBundle(ProductBundle bundle) { + log.info("开始创建套餐,名称:{}", bundle.getName()); + + productBundleMapper.insert(bundle); + log.info("套餐创建成功,ID: {}", bundle.getId()); + return bundle; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ProductBundle updateBundle(String id, ProductBundle bundle) { + log.info("开始更新套餐,ID: {}", id); + + ProductBundle existing = getBundleById(id); + bundle.setId(id); + productBundleMapper.updateById(bundle); + + log.info("套餐更新成功,ID: {}", id); + return productBundleMapper.selectById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteBundle(String id) { + log.info("开始删除套餐,ID: {}", id); + + getBundleById(id); + productBundleMapper.deleteById(id); + + log.info("套餐删除成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void submitBundle(String id) { + log.info("开始提交套餐审核,ID: {}", id); + + ProductBundle bundle = getBundleById(id); + bundle.setStatus("PENDING_REVIEW"); + productBundleMapper.updateById(bundle); + + log.info("套餐提交审核成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void reviewBundle(String id, boolean approved, String comment) { + log.info("开始审核套餐,ID: {}, 结果:{}", id, approved ? "通过" : "拒绝"); + + ProductBundle bundle = getBundleById(id); + bundle.setStatus(approved ? "APPROVED" : "REJECTED"); + productBundleMapper.updateById(bundle); + + log.info("套餐审核成功,ID: {}, 结果:{}", id, approved ? "通过" : "拒绝"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void publishBundle(String id) { + log.info("开始发布套餐,ID: {}", id); + + ProductBundle bundle = getBundleById(id); + bundle.setStatus("PUBLISHED"); + bundle.setPublishedAt(LocalDateTime.now()); + productBundleMapper.updateById(bundle); + + log.info("套餐发布成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void offlineBundle(String id) { + log.info("开始下架套餐,ID: {}", id); + + ProductBundle bundle = getBundleById(id); + bundle.setStatus("OFFLINE"); + productBundleMapper.updateById(bundle); + + log.info("套餐下架成功,ID: {}", id); + } + + @Override + public Page getSystemBundles(int pageNum, int pageSize, String gradeLevel) { + log.debug("查询系统套餐列表,页码:{},每页大小:{},年级:{}", pageNum, pageSize, gradeLevel); + + Page page = new Page<>(pageNum, pageSize); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ProductBundle::getIsSystem, 1); + wrapper.eq(ProductBundle::getStatus, "PUBLISHED"); + + if (gradeLevel != null && !gradeLevel.isEmpty()) { + wrapper.like(ProductBundle::getGradeLevels, gradeLevel); + } + wrapper.orderByDesc(ProductBundle::getCreatedAt); + + Page result = productBundleMapper.selectPage(page, wrapper); + log.info("查询系统套餐列表成功,共{}条", result.getTotal()); + return result; + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ScheduleServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ScheduleServiceImpl.java index 16f7bd5..d9a3930 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ScheduleServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ScheduleServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.dto.request.SchedulePlanCreateRequest; @@ -25,7 +26,7 @@ import java.util.*; */ @Service @RequiredArgsConstructor -public class ScheduleServiceImpl implements ScheduleService { +public class ScheduleServiceImpl extends ServiceImpl implements ScheduleService { private final SchedulePlanMapper schedulePlanMapper; private final ScheduleTemplateMapper scheduleTemplateMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/SchoolCourseServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/SchoolCourseServiceImpl.java index 9e18156..f8bd6cc 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/SchoolCourseServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/SchoolCourseServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.entity.SchoolCourse; @@ -15,7 +16,7 @@ import org.springframework.stereotype.Service; */ @Service @RequiredArgsConstructor -public class SchoolCourseServiceImpl implements SchoolCourseService { +public class SchoolCourseServiceImpl extends ServiceImpl implements SchoolCourseService { private final SchoolCourseMapper schoolCourseMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/StudentServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/StudentServiceImpl.java index 012dbaf..38e1464 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/StudentServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/StudentServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -28,7 +29,7 @@ import java.util.List; @Service @RequiredArgsConstructor -public class StudentServiceImpl implements StudentService { +public class StudentServiceImpl extends ServiceImpl implements StudentService { private final StudentMapper studentMapper; private final ParentStudentMapper parentStudentMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/SystemSettingServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/SystemSettingServiceImpl.java index 179e5de..f9e77c0 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/SystemSettingServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/SystemSettingServiceImpl.java @@ -1,6 +1,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.reading.platform.entity.SystemSetting; import com.reading.platform.mapper.SystemSettingMapper; @@ -17,7 +18,7 @@ import java.util.Map; */ @Service @RequiredArgsConstructor -public class SystemSettingServiceImpl implements SystemSettingService { +public class SystemSettingServiceImpl extends ServiceImpl implements SystemSettingService { private final SystemSettingMapper systemSettingMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TaskServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TaskServiceImpl.java index f33d49d..cfc55fd 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TaskServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TaskServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -22,7 +23,7 @@ import java.util.*; @Service @Slf4j @RequiredArgsConstructor -public class TaskServiceImpl implements TaskService { +public class TaskServiceImpl extends ServiceImpl implements TaskService { private final TaskMapper taskMapper; private final TaskTargetMapper taskTargetMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TeacherServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TeacherServiceImpl.java index 96369f4..e2f7f84 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TeacherServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TeacherServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -18,7 +19,7 @@ import org.springframework.util.StringUtils; @Service @RequiredArgsConstructor -public class TeacherServiceImpl implements TeacherService { +public class TeacherServiceImpl extends ServiceImpl implements TeacherService { private final TeacherMapper teacherMapper; private final PasswordEncoder passwordEncoder; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantProductBundleServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantProductBundleServiceImpl.java new file mode 100644 index 0000000..48d44c1 --- /dev/null +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantProductBundleServiceImpl.java @@ -0,0 +1,151 @@ +package com.reading.platform.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.reading.platform.common.exception.BusinessException; +import com.reading.platform.entity.TenantProductBundle; +import com.reading.platform.mapper.TenantProductBundleMapper; +import com.reading.platform.service.TenantProductBundleService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDateTime; +import java.util.List; + +/** + * 学校套餐购买记录服务实现类 + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TenantProductBundleServiceImpl extends ServiceImpl implements TenantProductBundleService { + + private final TenantProductBundleMapper tenantProductBundleMapper; + + @Override + public Page getTenantBundlePage(int pageNum, int pageSize, String tenantId, String status) { + log.debug("查询学校套餐购买记录分页,页码:{},每页大小:{},租户 ID: {}, 状态:{}", pageNum, pageSize, tenantId, status); + + Page page = new Page<>(pageNum, pageSize); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + + if (tenantId != null && !tenantId.isEmpty()) { + wrapper.eq(TenantProductBundle::getTenantId, tenantId); + } + if (status != null && !status.isEmpty()) { + wrapper.eq(TenantProductBundle::getStatus, status); + } + wrapper.orderByDesc(TenantProductBundle::getCreatedAt); + + Page result = tenantProductBundleMapper.selectPage(page, wrapper); + log.info("查询学校套餐购买记录分页成功,共{}条", result.getTotal()); + return result; + } + + @Override + public TenantProductBundle getTenantBundleById(String id) { + log.debug("查询学校套餐购买记录,ID: {}", id); + + TenantProductBundle record = tenantProductBundleMapper.selectById(id); + if (record == null) { + log.warn("学校套餐购买记录不存在,ID: {}", id); + throw new BusinessException("学校套餐购买记录不存在"); + } + log.info("查询学校套餐购买记录成功,ID: {}", id); + return record; + } + + @Override + public List getTenantBundlesByTenantId(String tenantId) { + log.debug("查询学校的套餐列表,租户 ID: {}", tenantId); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TenantProductBundle::getTenantId, tenantId); + wrapper.orderByDesc(TenantProductBundle::getPurchaseTime); + + List result = tenantProductBundleMapper.selectList(wrapper); + log.info("查询学校的套餐列表成功,租户 ID: {}, 数量:{}", tenantId, result.size()); + return result; + } + + @Override + public TenantProductBundle getActiveTenantBundle(String tenantId) { + log.debug("查询学校当前有效的套餐,租户 ID: {}", tenantId); + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(TenantProductBundle::getTenantId, tenantId); + wrapper.eq(TenantProductBundle::getStatus, "ACTIVE"); + wrapper.le(TenantProductBundle::getEndDate, LocalDateTime.now()); + wrapper.orderByDesc(TenantProductBundle::getPurchaseTime); + + TenantProductBundle result = tenantProductBundleMapper.selectOne(wrapper); + if (result != null) { + log.info("查询学校当前有效的套餐成功,租户 ID: {}, 套餐 ID: {}", tenantId, result.getProductBundleId()); + } else { + log.info("学校当前无有效套餐,租户 ID: {}", tenantId); + } + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public TenantProductBundle createTenantBundle(TenantProductBundle record) { + log.info("开始创建学校套餐购买记录,租户 ID: {}, 套餐 ID: {}", record.getTenantId(), record.getProductBundleId()); + + tenantProductBundleMapper.insert(record); + log.info("学校套餐购买记录创建成功,ID: {}", record.getId()); + return record; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public TenantProductBundle updateTenantBundle(String id, TenantProductBundle record) { + log.info("开始更新学校套餐购买记录,ID: {}", id); + + TenantProductBundle existing = getTenantBundleById(id); + record.setId(id); + tenantProductBundleMapper.updateById(record); + + log.info("学校套餐购买记录更新成功,ID: {}", id); + return tenantProductBundleMapper.selectById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void activateBundle(String id) { + log.info("开始激活套餐,ID: {}", id); + + TenantProductBundle record = getTenantBundleById(id); + record.setStatus("ACTIVE"); + tenantProductBundleMapper.updateById(record); + + log.info("套餐激活成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void expireBundle(String id) { + log.info("开始过期套餐,ID: {}", id); + + TenantProductBundle record = getTenantBundleById(id); + record.setStatus("EXPIRED"); + tenantProductBundleMapper.updateById(record); + + log.info("套餐过期成功,ID: {}", id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void suspendBundle(String id) { + log.info("开始暂停套餐,ID: {}", id); + + TenantProductBundle record = getTenantBundleById(id); + record.setStatus("SUSPENDED"); + tenantProductBundleMapper.updateById(record); + + log.info("套餐暂停成功,ID: {}", id); + } +} diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantServiceImpl.java index 9d03d6c..5e3e148 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/TenantServiceImpl.java @@ -2,6 +2,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.common.util.PageUtils; @@ -24,7 +25,7 @@ import java.util.stream.Collectors; @Service @RequiredArgsConstructor -public class TenantServiceImpl implements TenantService { +public class TenantServiceImpl extends ServiceImpl implements TenantService { private final TenantMapper tenantMapper; private final TeacherMapper teacherMapper; diff --git a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ThemeServiceImpl.java b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ThemeServiceImpl.java index da06c0c..155305e 100644 --- a/reading-platform-java/src/main/java/com/reading/platform/service/impl/ThemeServiceImpl.java +++ b/reading-platform-java/src/main/java/com/reading/platform/service/impl/ThemeServiceImpl.java @@ -1,6 +1,7 @@ package com.reading.platform.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.reading.platform.common.enums.ErrorCode; import com.reading.platform.common.exception.BusinessException; import com.reading.platform.entity.Theme; @@ -16,7 +17,7 @@ import java.util.List; */ @Service @RequiredArgsConstructor -public class ThemeServiceImpl implements ThemeService { +public class ThemeServiceImpl extends ServiceImpl implements ThemeService { private final ThemeMapper themeMapper; diff --git a/reading-platform-java/src/main/resources/application-dev.yml b/reading-platform-java/src/main/resources/application-dev.yml index e296938..652a792 100644 --- a/reading-platform-java/src/main/resources/application-dev.yml +++ b/reading-platform-java/src/main/resources/application-dev.yml @@ -27,8 +27,7 @@ spring: port: 6379 database: 0 -file: - upload: +/api/v1/school/courses upload: path: ./uploads/ base-url: /uploads/ diff --git a/reading-platform-java/src/main/resources/db/migration/V1__init.sql b/reading-platform-java/src/main/resources/db/migration/V1__init.sql new file mode 100644 index 0000000..8df38ba --- /dev/null +++ b/reading-platform-java/src/main/resources/db/migration/V1__init.sql @@ -0,0 +1,746 @@ +-- ============================================ +-- Reading Platform Database Schema +-- ============================================ +-- Flyway 版本:V1 +-- 数据库:MySQL 8.0+ +-- 字符集:utf8mb4 +-- 创建日期:2026-03-11 +-- +-- 说明:完整的数据库初始化脚本 +-- 包含所有实体类字段的完整建表语句 +-- +-- 表列表:共 37 张表 +-- - 用户表:6 张 +-- - 班级表:3 张 +-- - 课程表:10 张 +-- - 课时表:3 张 +-- - 任务表:4 张 +-- - 成长表:1 张 +-- - 资源表:2 张 +-- - 日程表:2 张 +-- - 系统表:5 张 +-- ============================================ + +CREATE DATABASE IF NOT EXISTS reading_platform DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +USE reading_platform; + +-- ============================================ +-- Admin User (for super admin) +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_admin_user ( + id VARCHAR(32) PRIMARY KEY COMMENT '管理员 ID', + username VARCHAR(50) NOT NULL UNIQUE, + password VARCHAR(255) NOT NULL, + name VARCHAR(50) NOT NULL, + email VARCHAR(100), + phone VARCHAR(20), + avatar_url VARCHAR(500), + status VARCHAR(20) DEFAULT 'active', + last_login_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='管理员用户'; + +-- ============================================ +-- Tenant Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_tenant ( + id VARCHAR(32) PRIMARY KEY COMMENT '租户 ID', + name VARCHAR(100) NOT NULL COMMENT 'Tenant name', + code VARCHAR(50) NOT NULL UNIQUE COMMENT 'Tenant code', + contact_name VARCHAR(50) COMMENT 'Contact person', + contact_phone VARCHAR(20) COMMENT 'Contact phone', + contact_email VARCHAR(100) COMMENT 'Contact email', + address VARCHAR(255) COMMENT 'Address', + logo_url VARCHAR(500) COMMENT 'Logo URL', + status VARCHAR(20) DEFAULT 'active' COMMENT 'Status: active, expired, disabled', + expire_at DATETIME COMMENT 'Expiration date', + max_students INT DEFAULT 0 COMMENT 'Max students allowed', + max_teachers INT DEFAULT 0 COMMENT 'Max teachers allowed', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户(幼儿园/机构)'; + +-- ============================================ +-- User Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_teacher ( + id VARCHAR(32) PRIMARY KEY COMMENT '教师 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + username VARCHAR(50) NOT NULL, + password VARCHAR(255) NOT NULL, + name VARCHAR(50) NOT NULL, + phone VARCHAR(20), + email VARCHAR(100), + avatar_url VARCHAR(500), + gender VARCHAR(10), + bio TEXT, + status VARCHAR(20) DEFAULT 'active', + last_login_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_username (username) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师'; + +CREATE TABLE IF NOT EXISTS t_student ( + id VARCHAR(32) PRIMARY KEY COMMENT '学生 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + name VARCHAR(50) NOT NULL, + gender VARCHAR(10), + birth_date DATE, + avatar_url VARCHAR(500), + grade VARCHAR(20), + student_no VARCHAR(50), + reading_level VARCHAR(20), + interests TEXT, + notes TEXT, + status VARCHAR(20) DEFAULT 'active', + class_id VARCHAR(32) COMMENT '班级 ID', + parent_name VARCHAR(100) COMMENT '家长姓名', + parent_phone VARCHAR(20) COMMENT '家长手机号', + reading_count INT DEFAULT 0 COMMENT '阅读次数', + lesson_count INT DEFAULT 0 COMMENT '课时数', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生'; + +CREATE TABLE IF NOT EXISTS t_parent ( + id VARCHAR(32) PRIMARY KEY COMMENT '家长 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + username VARCHAR(50) NOT NULL, + password VARCHAR(255) NOT NULL, + name VARCHAR(50) NOT NULL, + phone VARCHAR(20), + email VARCHAR(100), + avatar_url VARCHAR(500), + gender VARCHAR(10), + status VARCHAR(20) DEFAULT 'active', + last_login_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_username (username) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家长'; + +CREATE TABLE IF NOT EXISTS t_parent_student ( + id VARCHAR(32) PRIMARY KEY COMMENT '主键 ID', + parent_id VARCHAR(32) NOT NULL COMMENT '家长 ID', + student_id VARCHAR(32) NOT NULL COMMENT '学生 ID', + relationship VARCHAR(20) DEFAULT 'parent' COMMENT 'parent, guardian, etc.', + is_primary TINYINT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_parent_student (parent_id, student_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='家长 - 学生关联'; + +-- ============================================ +-- Class Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_clazz ( + id VARCHAR(32) PRIMARY KEY COMMENT '班级 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + name VARCHAR(100) NOT NULL, + grade VARCHAR(20), + description TEXT, + capacity INT DEFAULT 30, + status VARCHAR(20) DEFAULT 'active', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级'; + +CREATE TABLE IF NOT EXISTS t_class_teacher ( + id VARCHAR(32) PRIMARY KEY COMMENT '主键 ID', + class_id VARCHAR(32) NOT NULL COMMENT '班级 ID', + teacher_id VARCHAR(32) NOT NULL COMMENT '教师 ID', + role VARCHAR(20) DEFAULT 'teacher' COMMENT 'head_teacher, teacher, assistant', + is_primary BOOLEAN DEFAULT FALSE COMMENT '是否主教', + sort_order INT DEFAULT 0 COMMENT '排序', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_class_teacher (class_id, teacher_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='班级 - 教师关联'; + +CREATE TABLE IF NOT EXISTS t_student_class_history ( + id VARCHAR(32) PRIMARY KEY COMMENT '主键 ID', + student_id VARCHAR(32) NOT NULL COMMENT '学生 ID', + class_id VARCHAR(32) NOT NULL COMMENT '班级 ID', + start_date DATE NOT NULL, + end_date DATE, + status VARCHAR(20) DEFAULT 'active', + reason VARCHAR(255) COMMENT '调班原因', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生班级历史'; + +-- ============================================ +-- Course Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_course ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程 ID', + tenant_id VARCHAR(32) COMMENT 'NULL for system courses', + name VARCHAR(200) NOT NULL, + code VARCHAR(50), + description TEXT, + cover_url VARCHAR(500), + category VARCHAR(50), + age_range VARCHAR(50), + difficulty_level VARCHAR(20), + duration_minutes INT, + objectives TEXT, + status VARCHAR(20) DEFAULT 'draft', + is_system TINYINT DEFAULT 0, + -- 课程包重构字段 + core_content TEXT, + intro_summary TEXT, + intro_highlights TEXT, + intro_goals TEXT, + intro_schedule TEXT, + intro_key_points TEXT, + intro_methods TEXT, + intro_evaluation TEXT, + intro_notes TEXT, + schedule_ref_data TEXT, + environment_construction TEXT, + theme_id VARCHAR(32) COMMENT '主题 ID', + picture_book_name VARCHAR(100), + cover_image_path VARCHAR(500), + ebook_paths TEXT, + audio_paths TEXT, + video_paths TEXT, + other_resources TEXT, + ppt_path VARCHAR(500), + ppt_name VARCHAR(100), + poster_paths TEXT, + tools TEXT, + student_materials TEXT, + lesson_plan_data TEXT, + activities_data TEXT, + assessment_data TEXT, + grade_tags TEXT, + domain_tags TEXT, + has_collective_lesson TINYINT DEFAULT 0, + -- 版本与审核字段 + version VARCHAR(20), + parent_id VARCHAR(32) COMMENT '父课程 ID', + is_latest TINYINT DEFAULT 0, + submitted_at DATETIME, + submitted_by VARCHAR(64), + reviewed_at DATETIME, + reviewed_by VARCHAR(64), + review_comment TEXT, + review_checklist TEXT, + published_at DATETIME, + -- 使用统计 + usage_count INT DEFAULT 0, + teacher_count INT DEFAULT 0, + avg_rating DECIMAL(10,2), + -- 审计字段 + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程'; + +CREATE TABLE IF NOT EXISTS t_course_version ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程版本 ID', + course_id VARCHAR(32) NOT NULL COMMENT '课程 ID', + version VARCHAR(20) NOT NULL, + description TEXT, + status VARCHAR(20) DEFAULT 'draft', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程版本'; + +CREATE TABLE IF NOT EXISTS t_course_package ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程包 ID', + name VARCHAR(100) NOT NULL, + description TEXT, + cover_url VARCHAR(500), + course_count INT DEFAULT 0, + price DECIMAL(10,2), + status VARCHAR(20) DEFAULT 'draft', + is_system TINYINT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程包'; + +CREATE TABLE IF NOT EXISTS t_school_course ( + id VARCHAR(32) PRIMARY KEY COMMENT '校本课程 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + name VARCHAR(200) NOT NULL, + description TEXT, + cover_url VARCHAR(500), + category VARCHAR(50), + age_range VARCHAR(50), + status VARCHAR(20) DEFAULT 'draft', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='校本课程'; + +CREATE TABLE IF NOT EXISTS t_tenant_course ( + id VARCHAR(32) PRIMARY KEY COMMENT '租户课程 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + course_id VARCHAR(32) NOT NULL COMMENT '课程 ID', + enabled TINYINT DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_tenant_course (tenant_id, course_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='租户 - 课程关联'; + +CREATE TABLE IF NOT EXISTS t_course_resource ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程资源 ID', + course_id VARCHAR(32) NOT NULL, + title VARCHAR(200) NOT NULL, + type VARCHAR(50) COMMENT 'video, audio, document, image, link', + url VARCHAR(1000), + file_path VARCHAR(500), + file_size BIGINT, + duration INT COMMENT 'Duration in seconds', + description TEXT, + sort_order INT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程资源'; + +CREATE TABLE IF NOT EXISTS t_course_script ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程脚本 ID', + course_id VARCHAR(32) NOT NULL, + title VARCHAR(200) NOT NULL, + description TEXT, + sort_order INT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程脚本'; + +CREATE TABLE IF NOT EXISTS t_course_script_page ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程脚本页面 ID', + script_id VARCHAR(32) NOT NULL, + page_number INT NOT NULL, + content TEXT, + image_url VARCHAR(500), + audio_url VARCHAR(500), + duration INT COMMENT 'Duration in seconds', + notes TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程脚本页面'; + +CREATE TABLE IF NOT EXISTS t_course_activity ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程活动 ID', + course_id VARCHAR(32) NOT NULL, + title VARCHAR(200) NOT NULL, + type VARCHAR(50) COMMENT 'quiz, discussion, practice, game', + content TEXT, + materials TEXT, + duration_minutes INT, + sort_order INT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程活动'; + +CREATE TABLE IF NOT EXISTS t_course_lesson ( + id VARCHAR(32) PRIMARY KEY COMMENT '课程课时 ID', + course_id VARCHAR(32) NOT NULL, + title VARCHAR(200) NOT NULL, + description TEXT, + content TEXT, + sort_order INT DEFAULT 0, + lesson_order INT COMMENT '课时顺序号', + duration_minutes INT, + video_url VARCHAR(500), + status VARCHAR(20) DEFAULT 'draft', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程课时'; + +-- ============================================ +-- Lesson Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_lesson ( + id VARCHAR(32) PRIMARY KEY COMMENT '课时 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + course_id VARCHAR(32) NOT NULL COMMENT '课程 ID', + class_id VARCHAR(32) COMMENT '班级 ID', + teacher_id VARCHAR(32) NOT NULL COMMENT '教师 ID', + title VARCHAR(200) NOT NULL, + lesson_date DATE NOT NULL, + start_time TIME, + end_time TIME, + location VARCHAR(100), + status VARCHAR(20) DEFAULT 'scheduled', + notes TEXT, + -- 新增字段 + actual_duration INT COMMENT '实际时长(分钟)', + overall_rating VARCHAR(10) COMMENT '整体评分', + participation_rating VARCHAR(10) COMMENT '参与度评分', + completion_note TEXT COMMENT '完成说明', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课时'; + +CREATE TABLE IF NOT EXISTS t_lesson_feedback ( + id VARCHAR(32) PRIMARY KEY COMMENT '课时反馈 ID', + lesson_id VARCHAR(32) NOT NULL COMMENT '课时 ID', + course_id VARCHAR(32) COMMENT '课程 ID', + tenant_id VARCHAR(32) COMMENT '租户 ID', + teacher_id VARCHAR(32) NOT NULL COMMENT '教师 ID', + design_quality INT COMMENT '设计质量评分 (1-5)', + participation INT COMMENT '参与度评分 (1-5)', + goal_achievement INT COMMENT '目标达成度评分 (1-5)', + overall_rating INT COMMENT '整体评分 (1-5)', + step_feedbacks TEXT COMMENT '环节反馈 JSON', + pros TEXT COMMENT '优点', + suggestions TEXT COMMENT '建议', + activities_done TEXT COMMENT '完成的活动 JSON', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课时反馈'; + +CREATE TABLE IF NOT EXISTS t_student_record ( + id VARCHAR(32) PRIMARY KEY COMMENT '学生记录 ID', + lesson_id VARCHAR(32) NOT NULL COMMENT '课时 ID', + student_id VARCHAR(32) NOT NULL COMMENT '学生 ID', + attendance VARCHAR(20) DEFAULT 'present' COMMENT 'present, absent, late', + performance TEXT, + notes TEXT, + focus INT COMMENT '专注力评分 (1-5)', + participation INT COMMENT '参与度评分 (1-5)', + interest INT COMMENT '兴趣评分 (1-5)', + understanding INT COMMENT '理解度评分 (1-5)', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_lesson_student (lesson_id, student_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生记录'; + +-- ============================================ +-- Task Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_task ( + id VARCHAR(32) PRIMARY KEY COMMENT '任务 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + title VARCHAR(200) NOT NULL, + name VARCHAR(200) COMMENT '任务名称', + description TEXT, + type VARCHAR(50) DEFAULT 'homework' COMMENT 'reading, homework, activity', + course_id VARCHAR(32) COMMENT '课程 ID', + creator_id VARCHAR(32) NOT NULL, + creator_role VARCHAR(20) NOT NULL, + start_date DATE, + due_date DATE, + status VARCHAR(20) DEFAULT 'pending', + attachments TEXT COMMENT 'JSON array of attachment URLs', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务'; + +CREATE TABLE IF NOT EXISTS t_task_template ( + id VARCHAR(32) PRIMARY KEY COMMENT '任务模板 ID', + tenant_id VARCHAR(32) NOT NULL, + name VARCHAR(100) NOT NULL, + description TEXT, + type VARCHAR(50), + content TEXT, + is_public TINYINT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务模板'; + +CREATE TABLE IF NOT EXISTS t_task_target ( + id VARCHAR(32) PRIMARY KEY COMMENT '任务目标 ID', + task_id VARCHAR(32) NOT NULL, + target_type VARCHAR(20) NOT NULL COMMENT 'class, student', + target_id VARCHAR(32) NOT NULL, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务目标'; + +CREATE TABLE IF NOT EXISTS t_task_completion ( + id VARCHAR(32) PRIMARY KEY COMMENT '任务完成 ID', + task_id VARCHAR(32) NOT NULL, + student_id VARCHAR(32) NOT NULL, + status VARCHAR(20) DEFAULT 'pending' COMMENT 'pending, in_progress, completed', + completed_at DATETIME, + content TEXT, + attachments TEXT COMMENT 'JSON array of attachment URLs', + rating INT, + feedback TEXT, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_task_student (task_id, student_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='任务完成'; + +-- ============================================ +-- Growth Record Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_growth_record ( + id VARCHAR(32) PRIMARY KEY COMMENT '成长档案 ID', + tenant_id VARCHAR(32) NOT NULL, + student_id VARCHAR(32) NOT NULL, + type VARCHAR(50) NOT NULL COMMENT 'reading, behavior, achievement, milestone', + title VARCHAR(200) NOT NULL, + content TEXT, + images TEXT COMMENT 'JSON array of image URLs', + recorded_by VARCHAR(32) NOT NULL, + recorder_role VARCHAR(20) NOT NULL, + record_date DATE NOT NULL, + tags TEXT COMMENT 'JSON array of tags', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='成长档案'; + +-- ============================================ +-- Resource Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_resource_library ( + id VARCHAR(32) PRIMARY KEY COMMENT '资源库 ID', + tenant_id VARCHAR(32) NOT NULL, + name VARCHAR(100) NOT NULL, + description TEXT, + type VARCHAR(50) COMMENT 'book, material, equipment', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资源库'; + +CREATE TABLE IF NOT EXISTS t_resource_item ( + id VARCHAR(32) PRIMARY KEY COMMENT '资源项 ID', + library_id VARCHAR(32) NOT NULL, + tenant_id VARCHAR(32) COMMENT '租户 ID', + type VARCHAR(50) COMMENT '资源类型:book, material, equipment', + name VARCHAR(200) NOT NULL, + code VARCHAR(50), + description TEXT, + quantity INT DEFAULT 1, + available_quantity INT DEFAULT 1, + location VARCHAR(100), + status VARCHAR(20) DEFAULT 'available', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='资源项'; + +-- ============================================ +-- Schedule Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_schedule_plan ( + id VARCHAR(32) PRIMARY KEY COMMENT '日程计划 ID', + tenant_id VARCHAR(32) NOT NULL, + name VARCHAR(100) NOT NULL, + class_id VARCHAR(32) COMMENT '班级 ID', + course_id VARCHAR(32) COMMENT '课程 ID', + teacher_id VARCHAR(32) COMMENT '教师 ID', + day_of_week INT COMMENT '星期几 (1-7)', + period INT COMMENT '第几节课', + start_time TIME, + end_time TIME, + start_date DATE, + end_date DATE, + location VARCHAR(100), + note TEXT, + status VARCHAR(20) DEFAULT 'scheduled', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日程计划'; + +CREATE TABLE IF NOT EXISTS t_schedule_template ( + id VARCHAR(32) PRIMARY KEY COMMENT '日程模板 ID', + tenant_id VARCHAR(32) NOT NULL, + name VARCHAR(100) NOT NULL, + description TEXT, + content TEXT COMMENT 'JSON schedule data', + is_public TINYINT DEFAULT 0, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='日程模板'; + +-- ============================================ +-- System Tables +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_system_setting ( + id VARCHAR(32) PRIMARY KEY COMMENT '系统设置 ID', + tenant_id VARCHAR(32) COMMENT 'NULL for global settings', + setting_key VARCHAR(100) NOT NULL, + setting_value TEXT, + description VARCHAR(255), + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_tenant_key (tenant_id, setting_key) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统设置'; + +CREATE TABLE IF NOT EXISTS t_notification ( + id VARCHAR(32) PRIMARY KEY COMMENT '通知 ID', + tenant_id VARCHAR(32) NOT NULL, + title VARCHAR(200) NOT NULL, + content TEXT NOT NULL, + type VARCHAR(50) COMMENT 'system, course, task, growth', + sender_id VARCHAR(32), + sender_role VARCHAR(20), + recipient_type VARCHAR(20) NOT NULL COMMENT 'all, class, teacher, parent, student', + recipient_id VARCHAR(32), + is_read TINYINT DEFAULT 0, + read_at DATETIME, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通知'; + +CREATE TABLE IF NOT EXISTS t_operation_log ( + id VARCHAR(32) PRIMARY KEY COMMENT '操作日志 ID', + tenant_id VARCHAR(32), + user_id VARCHAR(32) NOT NULL, + user_role VARCHAR(20), + action VARCHAR(100) NOT NULL, + module VARCHAR(50), + target_type VARCHAR(50), + target_id VARCHAR(32), + details TEXT, + ip_address VARCHAR(50), + user_agent VARCHAR(500), + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + created_by VARCHAR(64) COMMENT '创建人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志'; + +CREATE TABLE IF NOT EXISTS t_tag ( + id VARCHAR(32) PRIMARY KEY COMMENT '标签 ID', + tenant_id VARCHAR(32) NOT NULL, + name VARCHAR(50) NOT NULL, + type VARCHAR(50) COMMENT 'student, course, resource', + color VARCHAR(20), + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + UNIQUE KEY uk_tenant_name_type (tenant_id, name, type) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='标签'; + +CREATE TABLE IF NOT EXISTS t_theme ( + id VARCHAR(32) PRIMARY KEY COMMENT '主题 ID', + name VARCHAR(50) NOT NULL, + display_name VARCHAR(100), + color VARCHAR(20), + icon VARCHAR(50), + sort_order INT DEFAULT 0, + is_enabled TINYINT DEFAULT 1, + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + deleted TINYINT DEFAULT 0, + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='主题'; + +-- ============================================ +-- Indexes +-- ============================================ + +CREATE INDEX idx_teacher_tenant ON t_teacher(tenant_id); +CREATE INDEX idx_student_tenant ON t_student(tenant_id); +CREATE INDEX idx_parent_tenant ON t_parent(tenant_id); +CREATE INDEX idx_clazz_tenant ON t_clazz(tenant_id); +CREATE INDEX idx_course_tenant ON t_course(tenant_id); +CREATE INDEX idx_lesson_tenant ON t_lesson(tenant_id); +CREATE INDEX idx_task_tenant ON t_task(tenant_id); +CREATE INDEX idx_growth_record_tenant ON t_growth_record(tenant_id); +CREATE INDEX idx_notification_tenant ON t_notification(tenant_id); diff --git a/reading-platform-java/src/main/resources/db/migration/V2__create_product_bundle_tables.sql b/reading-platform-java/src/main/resources/db/migration/V2__create_product_bundle_tables.sql new file mode 100644 index 0000000..35f676a --- /dev/null +++ b/reading-platform-java/src/main/resources/db/migration/V2__create_product_bundle_tables.sql @@ -0,0 +1,109 @@ +-- ============================================ +-- 套餐与课程包表结构 +-- ============================================ +-- Flyway 版本:V2 +-- 数据库:MySQL 8.0+ +-- 字符集:utf8mb4 +-- 创建日期:2026-03-11 +-- +-- 说明:套餐与课程包重构 +-- - 新增套餐表 t_product_bundle +-- - 新增套餐 - 课程包关联表 t_product_bundle_course_package +-- - 新增课程包 - 课程关联表 t_course_package_course +-- - 新增学校套餐购买记录表 t_tenant_product_bundle +-- - 修改课程包表 t_course_package(移除商业字段) +-- ============================================ + +USE reading_platform; + +-- ============================================ +-- 套餐表(新增) +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_product_bundle ( + id VARCHAR(32) PRIMARY KEY COMMENT '套餐 ID', + name VARCHAR(100) NOT NULL COMMENT '套餐名称', + description VARCHAR(500) COMMENT '套餐描述', + cover_url VARCHAR(500) COMMENT '封面图片 URL', + price INT COMMENT '价格(分)', + discount_price INT COMMENT '优惠价(分)', + discount_type VARCHAR(20) COMMENT '优惠类型:PERCENT-折扣/FIXED-立减', + grade_levels VARCHAR(100) COMMENT '适用年级(JSON 数组)', + status VARCHAR(20) DEFAULT 'DRAFT' COMMENT '状态:DRAFT, PENDING_REVIEW, APPROVED, REJECTED, PUBLISHED, OFFLINE', + course_package_count INT DEFAULT 0 COMMENT '课程包数量', + tenant_count INT DEFAULT 0 COMMENT '使用学校数', + published_at DATETIME COMMENT '发布时间', + is_system TINYINT DEFAULT 0 COMMENT '是否系统套餐 0-否 1-是', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + deleted TINYINT DEFAULT 0 COMMENT '是否删除 0-未删除 1-已删除', + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品套餐'; + +-- ============================================ +-- 套餐 - 课程包关联表(新增) +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_product_bundle_course_package ( + id VARCHAR(32) PRIMARY KEY COMMENT '关联 ID', + product_bundle_id VARCHAR(32) NOT NULL COMMENT '套餐 ID', + course_package_id VARCHAR(32) NOT NULL COMMENT '课程包 ID', + grade_level VARCHAR(20) COMMENT '适用年级', + sort_order INT DEFAULT 0 COMMENT '排序', + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + deleted TINYINT DEFAULT 0 COMMENT '是否删除 0-未删除 1-已删除', + UNIQUE KEY uk_bundle_package (product_bundle_id, course_package_id), + INDEX idx_product_bundle (product_bundle_id), + INDEX idx_course_package (course_package_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='套餐课程包关联'; + +-- ============================================ +-- 课程包 - 课程关联表(新增) +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_course_package_course ( + id VARCHAR(32) PRIMARY KEY COMMENT '关联 ID', + course_package_id VARCHAR(32) NOT NULL COMMENT '课程包 ID', + course_id VARCHAR(32) NOT NULL COMMENT '课程 ID', + sort_order INT DEFAULT 0 COMMENT '排序', + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + deleted TINYINT DEFAULT 0 COMMENT '是否删除 0-未删除 1-已删除', + UNIQUE KEY uk_package_course (course_package_id, course_id), + INDEX idx_course_package (course_package_id), + INDEX idx_course (course_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程包课程关联'; + +-- ============================================ +-- 学校套餐购买记录表(新增) +-- ============================================ + +CREATE TABLE IF NOT EXISTS t_tenant_product_bundle ( + id VARCHAR(32) PRIMARY KEY COMMENT '购买记录 ID', + tenant_id VARCHAR(32) NOT NULL COMMENT '租户 ID', + product_bundle_id VARCHAR(32) NOT NULL COMMENT '套餐 ID', + start_date DATETIME NOT NULL COMMENT '开始日期', + end_date DATETIME NOT NULL COMMENT '结束日期', + status VARCHAR(20) DEFAULT 'ACTIVE' COMMENT '状态:ACTIVE, EXPIRED, SUSPENDED', + price_paid INT COMMENT '实付价格(分)', + purchase_time DATETIME COMMENT '购买时间', + renewed_from VARCHAR(32) COMMENT '续费自原套餐 ID', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + deleted TINYINT DEFAULT 0 COMMENT '是否删除 0-未删除 1-已删除', + created_by VARCHAR(64) COMMENT '创建人用户名', + updated_by VARCHAR(64) COMMENT '更新人用户名', + INDEX idx_tenant (tenant_id), + INDEX idx_product_bundle (product_bundle_id), + INDEX idx_status (status) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学校套餐购买记录'; + +-- ============================================ +-- 外键约束(可选,根据业务需求决定是否添加) +-- ============================================ diff --git a/reading-platform-java/src/test/java/com/reading/platform/TestDataGenerator.java.bak b/reading-platform-java/src/test/java/com/reading/platform/TestDataGenerator.java.bak new file mode 100644 index 0000000..d6f5a8e --- /dev/null +++ b/reading-platform-java/src/test/java/com/reading/platform/TestDataGenerator.java.bak @@ -0,0 +1,899 @@ +package com.reading.platform; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.reading.platform.entity.*; +import com.reading.platform.mapper.*; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.annotation.Propagation; + +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; + +/** + * 测试数据生成器 + * 用于生成一批测试数据并插入到数据库 + */ +@SpringBootTest +@ActiveProfiles("dev") +public class TestDataGenerator { + + @Autowired + private TenantMapper tenantMapper; + + @Autowired + private TeacherMapper teacherMapper; + + @Autowired + private StudentMapper studentMapper; + + @Autowired + private ParentMapper parentMapper; + + @Autowired + private ClazzMapper clazzMapper; + + @Autowired + private ClassTeacherMapper classTeacherMapper; + + @Autowired + private ParentStudentMapper parentStudentMapper; + + @Autowired + private CourseMapper courseMapper; + + @Autowired + private CourseLessonMapper courseLessonMapper; + + @Autowired + private LessonMapper lessonMapper; + + @Autowired + private TaskMapper taskMapper; + + @Autowired + private TaskTemplateMapper taskTemplateMapper; + + @Autowired + private NotificationMapper notificationMapper; + + @Autowired + private ThemeMapper themeMapper; + + @Autowired + private SchedulePlanMapper schedulePlanMapper; + + @Autowired + private GrowthRecordMapper growthRecordMapper; + + private final PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + + /** + * 清理测试数据(按顺序删除,避免外键约束问题) + */ + @Transactional(propagation = Propagation.REQUIRES_NEW) + private void cleanupTestData() { + System.out.println("【清理】开始清理旧的测试数据..."); + + // 测试租户的 code + String testTenantCode1 = "sunshine_kinder"; + String testTenantCode2 = "hope_kinder"; + + // 测试教师的 username + String[] testTeacherUsernames = {"teacher_wang", "teacher_li", "teacher_zhang"}; + + // 测试家长的 username + String[] testParentUsernames = {"parent_zhang", "parent_liu"}; + + System.out.println(" 开始清理教师数据..."); + // 物理删除测试教师 + for (String username : testTeacherUsernames) { + teacherMapper.deletePhysicalByUsername(username); + } + System.out.println(" ✓ 物理删除测试教师"); + + System.out.println(" 开始删除学校账号..."); + // 物理删除教师表中的学校账号(这些账号的用户名 = 租户 code) + teacherMapper.deletePhysicalByUsername(testTenantCode1); + teacherMapper.deletePhysicalByUsername(testTenantCode2); + System.out.println(" ✓ 物理删除学校账号"); + + System.out.println(" 开始清理家长数据..."); + // 物理删除测试家长 + for (String username : testParentUsernames) { + parentMapper.deletePhysicalByUsername(username); + } + System.out.println(" ✓ 物理删除测试家长"); + + System.out.println(" 开始清理学生数据..."); + // 物理删除测试学生(按学号) + studentMapper.deletePhysicalByStudentNo("S2024001"); + studentMapper.deletePhysicalByStudentNo("S2024002"); + studentMapper.deletePhysicalByStudentNo("S2024003"); + System.out.println(" ✓ 物理删除测试学生"); + + System.out.println(" 开始物理删除租户..."); + // 使用物理删除清理租户 + int deleted1 = tenantMapper.deletePhysicalByCode(testTenantCode1); + System.out.println(" ✓ 物理删除租户:" + testTenantCode1 + " (" + deleted1 + " 条)"); + + int deleted2 = tenantMapper.deletePhysicalByCode(testTenantCode2); + System.out.println(" ✓ 物理删除租户:" + testTenantCode2 + " (" + deleted2 + " 条)"); + + // 清理主题数据(使用物理删除) + System.out.println(" 开始清理主题数据..."); + themeMapper.deletePhysical(); + System.out.println(" ✓ 删除所有主题数据"); + + System.out.println("【清理】清理完成"); + } + + /** + * 清理指定租户的所有数据 + */ + private void cleanupTenantData(Long tenantId) { + // 按依赖顺序删除 + growthRecordMapper.delete(new LambdaQueryWrapper().eq(GrowthRecord::getTenantId, tenantId)); + schedulePlanMapper.delete(new LambdaQueryWrapper().eq(SchedulePlan::getTenantId, tenantId)); + notificationMapper.delete(new LambdaQueryWrapper().eq(Notification::getTenantId, tenantId)); + taskTemplateMapper.delete(new LambdaQueryWrapper().eq(TaskTemplate::getTenantId, tenantId)); + taskMapper.delete(new LambdaQueryWrapper().eq(Task::getTenantId, tenantId)); + lessonMapper.delete(new LambdaQueryWrapper().eq(Lesson::getTenantId, tenantId)); + courseMapper.delete(new LambdaQueryWrapper().eq(Course::getTenantId, tenantId)); + + // 删除家长学生关联 + ParentStudentMapper psMapper = parentStudentMapper; + // 先获取该租户的家长和学生 + var parents = parentMapper.selectList(new LambdaQueryWrapper().eq(Parent::getTenantId, tenantId)); + for (Parent parent : parents) { + psMapper.delete(new LambdaQueryWrapper().eq(ParentStudent::getParentId, parent.getId())); + } + + // 删除学生 + studentMapper.delete(new LambdaQueryWrapper().eq(Student::getTenantId, tenantId)); + + // 删除家长 + parentMapper.delete(new LambdaQueryWrapper().eq(Parent::getTenantId, tenantId)); + + // 删除班级教师关联 + var classes = clazzMapper.selectList(new LambdaQueryWrapper().eq(Clazz::getTenantId, tenantId)); + for (Clazz clazz : classes) { + classTeacherMapper.delete(new LambdaQueryWrapper().eq(ClassTeacher::getClassId, clazz.getId())); + } + + // 删除班级 + clazzMapper.delete(new LambdaQueryWrapper().eq(Clazz::getTenantId, tenantId)); + + // 删除教师(包括学校账号) + teacherMapper.delete(new LambdaQueryWrapper().eq(Teacher::getTenantId, tenantId)); + } + + /** + * 生成完整的测试数据 + * 包括:租户、教师、学生、家长、班级、课程、课时、任务、通知等 + */ + @Test + public void generateAllTestData() { + System.out.println("========== 开始生成测试数据 =========="); + + // 先清理测试租户的旧数据(如果存在) + cleanupTestData(); + + // 1. 创建租户(幼儿园) + Long tenantId = createTenants(); + + // 2. 创建主题 + createThemes(); + + // 3. 创建教师 + Long teacherId1 = createTeachers(tenantId); + Long teacherId2 = createTeachers2(tenantId); + + // 4. 创建学生 + Long studentId1 = createStudents(tenantId); + Long studentId2 = createStudents2(tenantId); + Long studentId3 = createStudents3(tenantId); + + // 5. 创建家长 + Long parentId1 = createParents(tenantId); + Long parentId2 = createParents2(tenantId); + + // 6. 创建班级 + Long classId1 = createClasses(tenantId); + Long classId2 = createClasses2(tenantId); + + // 7. 关联班级和教师 + createClassTeacher(classId1, teacherId1); + createClassTeacher2(classId2, teacherId2); + + // 8. 关联家长和学生 + createParentStudents(parentId1, studentId1); + createParentStudents2(parentId2, studentId2, studentId3); + + // 9. 创建课程 + Long courseId1 = createCourses(tenantId); + Long courseId2 = createCourses2(tenantId); + + // 10. 创建课程课时 + createCourseLessons(courseId1); + createCourseLessons2(courseId2); + + // 11. 创建课时(教学活动) + createLessons(tenantId, courseId1, classId1, teacherId1); + + // 12. 创建任务 + createTasks(tenantId, courseId1, teacherId1); + + // 13. 创建任务模板 + createTaskTemplates(tenantId); + + // 14. 创建通知 + createNotifications(tenantId, teacherId1, parentId1); + + // 15. 创建课表计划 + createSchedulePlans(tenantId, classId1, courseId1, teacherId1); + + // 16. 创建成长记录 + createGrowthRecords(tenantId, studentId1); + + System.out.println("========== 测试数据生成完成 =========="); + } + + /** + * 创建租户(幼儿园) + */ + private Long createTenants() { + System.out.println("【1】创建租户..."); + + Tenant tenant = new Tenant(); + tenant.setName("阳光幼儿园"); + tenant.setCode("sunshine_kinder"); + tenant.setContactName("张园长"); + tenant.setContactPhone("13800138001"); + tenant.setContactEmail("sunshine@kinder.com"); + tenant.setAddress("北京市朝阳区阳光路 100 号"); + tenant.setLogoUrl("/uploads/logos/sunshine.png"); + tenant.setStatus("active"); + tenant.setExpireAt(LocalDateTime.now().plusYears(1)); + tenant.setMaxStudents(500); + tenant.setMaxTeachers(50); + + tenantMapper.insert(tenant); + System.out.println(" ✓ 创建租户:阳光幼儿园 (ID=" + tenant.getId() + ")"); + + // 创建第二个租户 + Tenant tenant2 = new Tenant(); + tenant2.setName("希望幼儿园"); + tenant2.setCode("hope_kinder"); + tenant2.setContactName("李园长"); + tenant2.setContactPhone("13800138002"); + tenant2.setContactEmail("hope@kinder.com"); + tenant2.setAddress("北京市海淀区希望路 200 号"); + tenant2.setLogoUrl("/uploads/logos/hope.png"); + tenant2.setStatus("active"); + tenant2.setExpireAt(LocalDateTime.now().plusYears(1)); + tenant2.setMaxStudents(300); + tenant2.setMaxTeachers(30); + + tenantMapper.insert(tenant2); + System.out.println(" ✓ 创建租户:希望幼儿园 (ID=" + tenant2.getId() + ")"); + + // 创建学校登录账号(教师表中) + Teacher schoolAccount = new Teacher(); + schoolAccount.setTenantId(tenant.getId()); + schoolAccount.setUsername(tenant.getCode()); + schoolAccount.setPassword(passwordEncoder.encode("123456")); + schoolAccount.setName("阳光幼儿园 - 学校账号"); + schoolAccount.setStatus("active"); + teacherMapper.insert(schoolAccount); + System.out.println(" ✓ 创建学校登录账号 (username=" + tenant.getCode() + ", password=123456)"); + + return tenant.getId(); + } + + /** + * 创建主题 + */ + private void createThemes() { + System.out.println("【2】创建主题..."); + + String[][] themes = { + {"language", "语言与文字", "#FF6B6B"}, + {"math", "数学与逻辑", "#4ECDC4"}, + {"science", "科学探索", "#45B7D1"}, + {"art", "艺术与创造", "#FFA07A"}, + {"social", "社会情感", "#98D8C8"}, + {"health", "健康运动", "#F7DC6F"}, + {"nature", "自然认知", "#82E0AA"} + }; + + int sortOrder = 1; + for (String[] theme : themes) { + Theme entity = new Theme(); + entity.setName(theme[0]); + entity.setDisplayName(theme[1]); + entity.setColor(theme[2]); + entity.setIcon("icon-" + theme[0]); + entity.setSortOrder(sortOrder++); + entity.setIsEnabled(1); + + themeMapper.insert(entity); + System.out.println(" ✓ 创建主题:" + theme[1] + " (" + theme[0] + ")"); + } + } + + /** + * 创建教师 + */ + private Long createTeachers(Long tenantId) { + System.out.println("【3】创建教师..."); + + Teacher teacher = new Teacher(); + teacher.setTenantId(tenantId); + teacher.setUsername("teacher_wang"); + teacher.setPassword(passwordEncoder.encode("123456")); + teacher.setName("王老师"); + teacher.setPhone("13900139001"); + teacher.setEmail("wang@kinder.com"); + teacher.setGender("female"); + teacher.setBio("资深幼儿教师,擅长语言教学"); + teacher.setStatus("active"); + + teacherMapper.insert(teacher); + System.out.println(" ✓ 创建教师:王老师 (ID=" + teacher.getId() + ", username=teacher_wang)"); + + return teacher.getId(); + } + + private Long createTeachers2(Long tenantId) { + Teacher teacher = new Teacher(); + teacher.setTenantId(tenantId); + teacher.setUsername("teacher_li"); + teacher.setPassword(passwordEncoder.encode("123456")); + teacher.setName("李老师"); + teacher.setPhone("13900139002"); + teacher.setEmail("li@kinder.com"); + teacher.setGender("male"); + teacher.setBio("体育教师,擅长运动游戏"); + teacher.setStatus("active"); + + teacherMapper.insert(teacher); + System.out.println(" ✓ 创建教师:李老师 (ID=" + teacher.getId() + ", username=teacher_li)"); + + return teacher.getId(); + } + + /** + * 创建学生 + */ + private Long createStudents(Long tenantId) { + System.out.println("【4】创建学生..."); + + Student student = new Student(); + student.setTenantId(tenantId); + student.setName("小明"); + student.setGender("male"); + student.setBirthDate(LocalDate.of(2019, 5, 15)); + student.setAvatarUrl("/uploads/avatars/student1.png"); + student.setGrade("大班"); + student.setStudentNo("S2024001"); + student.setReadingLevel("中级"); + student.setInterests("阅读、画画、积木"); + student.setNotes("活泼好动,喜欢提问"); + student.setStatus("active"); + + studentMapper.insert(student); + System.out.println(" ✓ 创建学生:小明 (ID=" + student.getId() + ")"); + + return student.getId(); + } + + private Long createStudents2(Long tenantId) { + Student student = new Student(); + student.setTenantId(tenantId); + student.setName("小红"); + student.setGender("female"); + student.setBirthDate(LocalDate.of(2019, 8, 20)); + student.setAvatarUrl("/uploads/avatars/student2.png"); + student.setGrade("大班"); + student.setStudentNo("S2024002"); + student.setReadingLevel("高级"); + student.setInterests("阅读、唱歌、跳舞"); + student.setNotes("文静乖巧,记忆力好"); + student.setStatus("active"); + + studentMapper.insert(student); + System.out.println(" ✓ 创建学生:小红 (ID=" + student.getId() + ")"); + + return student.getId(); + } + + private Long createStudents3(Long tenantId) { + Student student = new Student(); + student.setTenantId(tenantId); + student.setName("小强"); + student.setGender("male"); + student.setBirthDate(LocalDate.of(2020, 2, 10)); + student.setAvatarUrl("/uploads/avatars/student3.png"); + student.setGrade("中班"); + student.setStudentNo("S2024003"); + student.setReadingLevel("初级"); + student.setInterests("运动、游戏"); + student.setNotes("性格开朗,喜欢集体活动"); + student.setStatus("active"); + + studentMapper.insert(student); + System.out.println(" ✓ 创建学生:小强 (ID=" + student.getId() + ")"); + + return student.getId(); + } + + /** + * 创建家长 + */ + private Long createParents(Long tenantId) { + System.out.println("【5】创建家长..."); + + Parent parent = new Parent(); + parent.setTenantId(tenantId); + parent.setUsername("parent_zhang"); + parent.setPassword(passwordEncoder.encode("123456")); + parent.setName("张先生"); + parent.setPhone("13700137001"); + parent.setEmail("zhang@qq.com"); + parent.setGender("male"); + parent.setStatus("active"); + + parentMapper.insert(parent); + System.out.println(" ✓ 创建家长:张先生 (ID=" + parent.getId() + ", username=parent_zhang)"); + + return parent.getId(); + } + + private Long createParents2(Long tenantId) { + Parent parent = new Parent(); + parent.setTenantId(tenantId); + parent.setUsername("parent_liu"); + parent.setPassword(passwordEncoder.encode("123456")); + parent.setName("刘女士"); + parent.setPhone("13700137002"); + parent.setEmail("liu@qq.com"); + parent.setGender("female"); + parent.setStatus("active"); + + parentMapper.insert(parent); + System.out.println(" ✓ 创建家长:刘女士 (ID=" + parent.getId() + ", username=parent_liu)"); + + return parent.getId(); + } + + /** + * 创建班级 + */ + private Long createClasses(Long tenantId) { + System.out.println("【6】创建班级..."); + + Clazz clazz = new Clazz(); + clazz.setTenantId(tenantId); + clazz.setName("大(一)班"); + clazz.setGrade("大班"); + clazz.setDescription("2019 年出生的小朋友"); + clazz.setCapacity(35); + clazz.setStatus("active"); + + clazzMapper.insert(clazz); + System.out.println(" ✓ 创建班级:大(一)班 (ID=" + clazz.getId() + ")"); + + return clazz.getId(); + } + + private Long createClasses2(Long tenantId) { + Clazz clazz = new Clazz(); + clazz.setTenantId(tenantId); + clazz.setName("中(一)班"); + clazz.setGrade("中班"); + clazz.setDescription("2020 年出生的小朋友"); + clazz.setCapacity(30); + clazz.setStatus("active"); + + clazzMapper.insert(clazz); + System.out.println(" ✓ 创建班级:中(一)班 (ID=" + clazz.getId() + ")"); + + return clazz.getId(); + } + + /** + * 创建班级 - 教师关联 + */ + private void createClassTeacher(Long classId, Long teacherId) { + System.out.println("【7】创建班级 - 教师关联..."); + + ClassTeacher ct = new ClassTeacher(); + ct.setClassId(classId); + ct.setTeacherId(teacherId); + ct.setRole("head_teacher"); + + classTeacherMapper.insert(ct); + System.out.println(" ✓ 关联班级 - 教师:大(一)班 - 王老师(班主任)"); + } + + private void createClassTeacher2(Long classId, Long teacherId) { + ClassTeacher ct = new ClassTeacher(); + ct.setClassId(classId); + ct.setTeacherId(teacherId); + ct.setRole("head_teacher"); + + classTeacherMapper.insert(ct); + System.out.println(" ✓ 关联班级 - 教师:中(一)班 - 李老师(班主任)"); + } + + /** + * 创建家长 - 学生关联 + */ + private void createParentStudents(Long parentId, Long studentId) { + System.out.println("【8】创建家长 - 学生关联..."); + + ParentStudent ps = new ParentStudent(); + ps.setParentId(parentId); + ps.setStudentId(studentId); + ps.setRelationship("father"); + ps.setIsPrimary(1); + + parentStudentMapper.insert(ps); + System.out.println(" ✓ 关联家长 - 学生:张先生 - 小明(父子)"); + } + + private void createParentStudents2(Long parentId, Long studentId1, Long studentId2) { + ParentStudent ps1 = new ParentStudent(); + ps1.setParentId(parentId); + ps1.setStudentId(studentId1); + ps1.setRelationship("mother"); + ps1.setIsPrimary(1); + + parentStudentMapper.insert(ps1); + + ParentStudent ps2 = new ParentStudent(); + ps2.setParentId(parentId); + ps2.setStudentId(studentId2); + ps2.setRelationship("mother"); + ps2.setIsPrimary(1); + + parentStudentMapper.insert(ps2); + System.out.println(" ✓ 关联家长 - 学生:刘女士 - 小红、小强(母子)"); + } + + /** + * 创建课程 + */ + private Long createCourses(Long tenantId) { + System.out.println("【9】创建课程..."); + + Course course = new Course(); + course.setTenantId(tenantId); + course.setName("绘本阅读入门"); + course.setCode("READ001"); + course.setDescription("适合大班幼儿的绘本阅读课程,培养孩子的阅读兴趣和基础阅读能力"); + course.setCoverUrl("/uploads/courses/reading101.png"); + course.setCategory("language"); + course.setAgeRange("5-6 岁"); + course.setDifficultyLevel("beginner"); + course.setDurationMinutes(30); + course.setObjectives("培养阅读兴趣、提升语言表达能力、增强想象力"); + course.setStatus("published"); + course.setIsSystem(0); + course.setThemeId(1L); + course.setPictureBookName("《猜猜我有多爱你》"); + course.setVersion("1.0"); + course.setIsLatest(1); + + courseMapper.insert(course); + System.out.println(" ✓ 创建课程:绘本阅读入门 (ID=" + course.getId() + ")"); + + return course.getId(); + } + + private Long createCourses2(Long tenantId) { + Course course = new Course(); + course.setTenantId(tenantId); + course.setName("趣味数学游戏"); + course.setCode("MATH001"); + course.setDescription("通过游戏的方式学习基础数学概念"); + course.setCoverUrl("/uploads/courses/math101.png"); + course.setCategory("math"); + course.setAgeRange("4-5 岁"); + course.setDifficultyLevel("beginner"); + course.setDurationMinutes(25); + course.setObjectives("认识数字、学习简单加减法、培养逻辑思维"); + course.setStatus("published"); + course.setIsSystem(0); + course.setThemeId(2L); + course.setVersion("1.0"); + course.setIsLatest(1); + + courseMapper.insert(course); + System.out.println(" ✓ 创建课程:趣味数学游戏 (ID=" + course.getId() + ")"); + + return course.getId(); + } + + /** + * 创建课程课时 + */ + private void createCourseLessons(Long courseId) { + System.out.println("【10】创建课程课时..."); + + String[][] lessons = { + {"第一讲:认识绘本", "了解绘本的结构和特点"}, + {"第二讲:封面故事", "从封面猜测故事内容"}, + {"第三讲:角色认知", "认识故事中的主要角色"}, + {"第四讲:情节理解", "理解故事的发展脉络"}, + {"第五讲:情感体验", "感受故事中的情感表达"}, + {"第六讲:创意延伸", "发挥想象,创编故事结局"} + }; + + for (int i = 0; i < lessons.length; i++) { + CourseLesson lesson = new CourseLesson(); + lesson.setCourseId(courseId); + lesson.setTitle(lessons[i][0]); + lesson.setDescription(lessons[i][1]); + lesson.setContent("这里是课时内容详情..."); + lesson.setSortOrder(i + 1); + lesson.setDurationMinutes(15); + lesson.setStatus("published"); + + courseLessonMapper.insert(lesson); + } + System.out.println(" ✓ 创建课程课时:" + lessons.length + " 个课时"); + } + + private void createCourseLessons2(Long courseId) { + String[][] lessons = { + {"第一讲:数字歌", "学习数字 1-10"}, + {"第二讲:比大小", "认识大小概念"}, + {"第三讲:数一数", "练习点数"}, + {"第四讲:简单加法", "学习 5 以内加法"}, + {"第五讲:简单减法", "学习 5 以内减法"} + }; + + for (int i = 0; i < lessons.length; i++) { + CourseLesson lesson = new CourseLesson(); + lesson.setCourseId(courseId); + lesson.setTitle(lessons[i][0]); + lesson.setDescription(lessons[i][1]); + lesson.setContent("这里是课时内容详情..."); + lesson.setSortOrder(i + 1); + lesson.setDurationMinutes(12); + lesson.setStatus("published"); + + courseLessonMapper.insert(lesson); + } + System.out.println(" ✓ 创建课程课时:" + lessons.length + " 个课时"); + } + + /** + * 创建课时(教学活动) + */ + private void createLessons(Long tenantId, Long courseId, Long classId, Long teacherId) { + System.out.println("【11】创建课时(教学活动)..."); + + LocalDate baseDate = LocalDate.now(); + + for (int i = 0; i < 4; i++) { + Lesson lesson = new Lesson(); + lesson.setTenantId(String.valueOf(tenantId)); + lesson.setCourseId(String.valueOf(courseId)); + lesson.setClassId(String.valueOf(classId)); + lesson.setTeacherId(String.valueOf(teacherId)); + lesson.setTitle("绘本阅读 - 第" + (i + 1) + "课"); + lesson.setLessonDate(baseDate.plusWeeks(i)); + lesson.setStartTime(LocalTime.of(9, 0)); + lesson.setEndTime(LocalTime.of(9, 30)); + lesson.setLocation("大一班教室"); + lesson.setStatus("scheduled"); + lesson.setNotes("请小朋友们提前准备好绘本"); + + lessonMapper.insert(lesson); + } + System.out.println(" ✓ 创建课时:4 个教学活动"); + } + + /** + * 创建任务 + */ + private void createTasks(Long tenantId, Long courseId, Long teacherId) { + System.out.println("【12】创建任务..."); + + LocalDate baseDate = LocalDate.now(); + + // 任务 1 + Task task1 = new Task(); + task1.setTenantId(String.valueOf(tenantId)); + task1.setTitle("阅读打卡第 1 周"); + task1.setDescription("请家长陪同孩子每天阅读 15 分钟,并记录阅读内容"); + task1.setType("reading"); + task1.setCourseId(String.valueOf(courseId)); + task1.setCreatorId(String.valueOf(teacherId)); + task1.setCreatorRole("teacher"); + task1.setStartDate(baseDate); + task1.setDueDate(baseDate.plusDays(7)); + task1.setStatus("published"); + + taskMapper.insert(task1); + + // 任务 2 + Task task2 = new Task(); + task2.setTenantId(String.valueOf(tenantId)); + task2.setTitle("绘画作业:我喜欢的故事角色"); + task2.setDescription("画出你最喜欢的故事角色,并说明理由"); + task2.setType("homework"); + task2.setCourseId(String.valueOf(courseId)); + task2.setCreatorId(String.valueOf(teacherId)); + task2.setCreatorRole("teacher"); + task2.setStartDate(baseDate); + task2.setDueDate(baseDate.plusDays(5)); + task2.setStatus("published"); + + taskMapper.insert(task2); + + // 任务 3 + Task task3 = new Task(); + task3.setTenantId(String.valueOf(tenantId)); + task3.setTitle("周末亲子活动"); + task3.setDescription("周末和孩子一起去图书馆或书店"); + task3.setType("activity"); + task3.setCourseId(String.valueOf(courseId)); + task3.setCreatorId(String.valueOf(teacherId)); + task3.setCreatorRole("teacher"); + task3.setStartDate(baseDate.plusDays(5)); + task3.setDueDate(baseDate.plusDays(7)); + task3.setStatus("published"); + + taskMapper.insert(task3); + + System.out.println(" ✓ 创建任务:3 个任务"); + } + + /** + * 创建任务模板 + */ + private void createTaskTemplates(Long tenantId) { + System.out.println("【13】创建任务模板..."); + + String[][] templates = { + {"阅读打卡模板", "用于日常阅读打卡记录", "reading", "请记录今天的阅读内容..."}, + {"绘画作业模板", "用于美术类作业", "homework", "请上传孩子的绘画作品..."}, + {"亲子活动模板", "用于记录亲子活动", "activity", "请分享活动过程和感受..."}, + {"观察记录模板", "用于观察类作业", "homework", "请记录观察到的现象..."} + }; + + for (int i = 0; i < templates.length; i++) { + String[] template = templates[i]; + TaskTemplate tt = new TaskTemplate(); + tt.setTenantId(String.valueOf(tenantId)); + tt.setName(template[0]); + tt.setDescription(template[1]); + tt.setType(template[2]); + tt.setContent(template[3]); + tt.setIsPublic(1); + + taskTemplateMapper.insert(tt); + } + System.out.println(" ✓ 创建任务模板:" + templates.length + " 个模板"); + } + + /** + * 创建通知 + */ + private void createNotifications(Long tenantId, Long teacherId, Long parentId) { + System.out.println("【14】创建通知..."); + + // 通知 1 - 系统通知 + Notification n1 = new Notification(); + n1.setTenantId(String.valueOf(tenantId)); + n1.setTitle("新学期开始通知"); + n1.setContent("亲爱的家长们,新学期即将开始,请做好入园准备。"); + n1.setType("system"); + n1.setRecipientType("all"); + n1.setIsRead(0); + + notificationMapper.insert(n1); + + // 通知 2 - 课程通知 + Notification n2 = new Notification(); + n2.setTenantId(String.valueOf(tenantId)); + n2.setTitle("绘本阅读课程更新"); + n2.setContent("《猜猜我有多爱你》课程已更新,请查看。"); + n2.setType("course"); + n2.setSenderId(String.valueOf(teacherId)); + n2.setSenderRole("teacher"); + n2.setRecipientType("all"); + n2.setIsRead(0); + + notificationMapper.insert(n2); + + // 通知 3 - 任务通知 + Notification n3 = new Notification(); + n3.setTenantId(String.valueOf(tenantId)); + n3.setTitle("新任务发布"); + n3.setContent("本周的阅读打卡任务已发布,请家长陪同完成。"); + n3.setType("task"); + n3.setSenderId(String.valueOf(teacherId)); + n3.setSenderRole("teacher"); + n3.setRecipientId(String.valueOf(parentId)); + n3.setRecipientType("parent"); + n3.setIsRead(0); + + notificationMapper.insert(n3); + + System.out.println(" ✓ 创建通知:3 条通知"); + } + + /** + * 创建课表计划 + */ + private void createSchedulePlans(Long tenantId, Long classId, Long courseId, Long teacherId) { + System.out.println("【15】创建课表计划..."); + + int[][] schedules = { + {1, 1}, // 周一第 1 节 + {1, 3}, // 周一第 3 节 + {3, 2}, // 周三第 2 节 + {5, 1} // 周五第 1 节 + }; + + for (int[] schedule : schedules) { + SchedulePlan plan = new SchedulePlan(); + plan.setTenantId(String.valueOf(tenantId)); + plan.setName("绘本阅读课"); + plan.setClassId(String.valueOf(classId)); + plan.setCourseId(String.valueOf(courseId)); + plan.setTeacherId(String.valueOf(teacherId)); + plan.setDayOfWeek(schedule[0]); + plan.setPeriod(schedule[1]); + plan.setStartTime(LocalTime.of(9, 0)); + plan.setEndTime(LocalTime.of(9, 30)); + plan.setStartDate(LocalDate.now()); + plan.setEndDate(LocalDate.now().plusMonths(4)); + plan.setLocation("大一班教室"); + plan.setStatus("active"); + + schedulePlanMapper.insert(plan); + } + System.out.println(" ✓ 创建课表计划:" + schedules.length + " 个课程安排"); + } + + /** + * 创建成长记录 + */ + private void createGrowthRecords(Long tenantId, Long studentId) { + System.out.println("【16】创建成长记录..."); + + String[][] records = { + {"reading", "第一次独立阅读", "今天小明第一次独立读完了一本绘本,非常棒!", "阅读进步"}, + {"behavior", "帮助同学", "小明主动帮助摔倒的同学,很有爱心", "品德表现"}, + {"achievement", "绘画比赛获奖", "在幼儿园绘画比赛中获得一等奖", "荣誉奖项"} + }; + + for (String[] record : records) { + GrowthRecord gr = new GrowthRecord(); + gr.setTenantId(String.valueOf(tenantId)); + gr.setStudentId(String.valueOf(studentId)); + gr.setType(record[0]); + gr.setTitle(record[1]); + gr.setContent(record[2]); + gr.setRecordedBy("1"); // 设置记录人 ID + gr.setRecorderRole("teacher"); // 设置记录人角色 + gr.setRecordDate(LocalDate.now()); + gr.setTags("[\"" + record[3] + "\"]"); + + growthRecordMapper.insert(gr); + } + System.out.println(" ✓ 创建成长记录:" + records.length + " 条记录"); + } +} diff --git a/reading-platform-java/test-data.sql b/reading-platform-java/test-data.sql new file mode 100644 index 0000000..18a9ca4 --- /dev/null +++ b/reading-platform-java/test-data.sql @@ -0,0 +1,752 @@ +-- ============================================ +-- Reading Platform 完整测试数据 SQL +-- ============================================ +-- 说明:包含完整的测试数据,涵盖所有主要业务实体 +-- 执行方式:mysql -h localhost -u root -p reading_platform < test-data.sql +-- ============================================ + +USE reading_platform; + +-- ============================================ +-- 密码哈希说明 (BCrypt) +-- ============================================ +-- 密码 "123456" 哈希:$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK +-- 密码 "admin123" 哈希:$2a$10$DyHiv85Fy.yoslnuxVtw/OmsK5gqEAuy1801h6CqyyJnvrecd6VB2 +-- ============================================ + +-- ============================================ +-- 1. 主题数据 (t_theme) +-- ============================================ +DELETE FROM t_theme; + +INSERT INTO t_theme (id, name, display_name, color, icon, sort_order, is_enabled, created_at, deleted) VALUES +('theme001', 'language', '语言与文字', '#FF6B6B', 'icon-language', 1, 1, NOW(), 0), +('theme002', 'math', '数学与逻辑', '#4ECDC4', 'icon-math', 2, 1, NOW(), 0), +('theme003', 'science', '科学探索', '#45B7D1', 'icon-science', 3, 1, NOW(), 0), +('theme004', 'art', '艺术与创造', '#FFA07A', 'icon-art', 4, 1, NOW(), 0), +('theme005', 'social', '社会情感', '#98D8C8', 'icon-social', 5, 1, NOW(), 0), +('theme006', 'health', '健康运动', '#F7DC6F', 'icon-health', 6, 1, NOW(), 0), +('theme007', 'nature', '自然认知', '#82E0AA', 'icon-nature', 7, 1, NOW(), 0); + +-- ============================================ +-- 2. 管理员账户 (t_admin_user) +-- ============================================ +DELETE FROM t_admin_user WHERE username = 'admin'; + +INSERT INTO t_admin_user (id, username, password, name, email, phone, status, created_at, updated_at, deleted) VALUES +('admin00000000000000000000000001', 'admin', '$2a$10$DyHiv85Fy.yoslnuxVtw/OmsK5gqEAuy1801h6CqyyJnvrecd6VB2', '系统管理员', 'admin@reading.com', '13800138000', 'active', NOW(), NOW(), 0); + +-- ============================================ +-- 3. 租户数据 (t_tenant) - 幼儿园/机构 +-- ============================================ +DELETE FROM t_tenant WHERE code IN ('sunshine_kinder', 'hope_kinder', 'star_kinder'); + +INSERT INTO t_tenant ( + id, name, code, contact_name, contact_phone, contact_email, + address, logo_url, status, expire_at, max_students, max_teachers, + created_at, updated_at, deleted +) VALUES +('tenant00000000000000000000001', '阳光幼儿园', 'sunshine_kinder', '张园长', '13800138001', 'sunshine@kinder.com', + '北京市朝阳区阳光路 100 号', '/uploads/logos/sunshine.png', 'active', DATE_ADD(NOW(), INTERVAL 1 YEAR), 500, 50, + NOW(), NOW(), 0), +('tenant00000000000000000000002', '希望幼儿园', 'hope_kinder', '李园长', '13800138002', 'hope@kinder.com', + '北京市海淀区希望路 200 号', '/uploads/logos/hope.png', 'active', DATE_ADD(NOW(), INTERVAL 1 YEAR), 300, 30, + NOW(), NOW(), 0), +('tenant00000000000000000000003', '星星幼儿园', 'star_kinder', '王园长', '13800138003', 'star@kinder.com', + '上海市浦东新区星星路 300 号', '/uploads/logos/star.png', 'active', DATE_ADD(NOW(), INTERVAL 1 YEAR), 400, 40, + NOW(), NOW(), 0); + +-- ============================================ +-- 4. 教师用户 (t_teacher) +-- ============================================ +DELETE FROM t_teacher WHERE username IN ('teacher_wang', 'teacher_li', 'teacher_zhang', 'sunshine_kinder', 'hope_kinder', 'star_kinder'); + +-- 阳光幼儿园的教师 +INSERT INTO t_teacher ( + id, tenant_id, username, password, name, phone, email, gender, bio, status, + created_at, updated_at, deleted +) VALUES +('teacher000000000000000000001', 'tenant00000000000000000000001', 'teacher_wang', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '王老师', '13900139001', 'wang@kinder.com', 'female', '资深幼儿教师,擅长语言教学', 'active', NOW(), NOW(), 0), +('teacher000000000000000000002', 'tenant00000000000000000000001', 'teacher_li', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '李老师', '13900139002', 'li@kinder.com', 'male', '体育教师,擅长运动游戏', 'active', NOW(), NOW(), 0), +-- 阳光幼儿园学校账号 +('school000000000000000000001', 'tenant00000000000000000000001', 'sunshine_kinder', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '阳光幼儿园 - 学校账号', '13800138001', 'sunshine@kinder.com', 'female', NULL, 'active', NOW(), NOW(), 0); + +-- 希望幼儿园的教师 +INSERT INTO t_teacher ( + id, tenant_id, username, password, name, phone, email, gender, bio, status, + created_at, updated_at, deleted +) VALUES +('teacher000000000000000000003', 'tenant00000000000000000000002', 'teacher_zhang', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '张老师', '13900139003', 'zhang@kinder.com', 'female', '美术教师,擅长创意绘画', 'active', NOW(), NOW(), 0), +-- 希望幼儿园学校账号 +('school000000000000000000002', 'tenant00000000000000000000002', 'hope_kinder', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '希望幼儿园 - 学校账号', '13800138002', 'hope@kinder.com', 'male', NULL, 'active', NOW(), NOW(), 0); + +-- 星星幼儿园的教师 +INSERT INTO t_teacher ( + id, tenant_id, username, password, name, phone, email, gender, bio, status, + created_at, updated_at, deleted +) VALUES +('teacher000000000000000000004', 'tenant00000000000000000000003', 'teacher_chen', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '陈老师', '13900139004', 'chen@kinder.com', 'female', '音乐教师,擅长儿歌教学', 'active', NOW(), NOW(), 0), +-- 星星幼儿园学校账号 +('school000000000000000000003', 'tenant00000000000000000000003', 'star_kinder', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '星星幼儿园 - 学校账号', '13800138003', 'star@kinder.com', 'female', NULL, 'active', NOW(), NOW(), 0); + +-- ============================================ +-- 5. 家长用户 (t_parent) +-- ============================================ +DELETE FROM t_parent WHERE username IN ('parent_zhang', 'parent_liu', 'parent_wang', 'parent_chen', 'parent_lin'); + +INSERT INTO t_parent ( + id, tenant_id, username, password, name, phone, email, gender, status, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园的家长 +('parent000000000000000000001', 'tenant00000000000000000000001', 'parent_zhang', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '张先生', '13700137001', 'zhang@qq.com', 'male', 'active', NOW(), NOW(), 0), +('parent000000000000000000002', 'tenant00000000000000000000001', 'parent_liu', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '刘女士', '13700137002', 'liu@qq.com', 'female', 'active', NOW(), NOW(), 0), +('parent000000000000000000003', 'tenant00000000000000000000001', 'parent_wang', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '王女士', '13700137003', 'wang@qq.com', 'female', 'active', NOW(), NOW(), 0), +-- 希望幼儿园的家长 +('parent000000000000000000004', 'tenant00000000000000000000002', 'parent_chen', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '陈先生', '13700137004', 'chen@qq.com', 'male', 'active', NOW(), NOW(), 0), +-- 星星幼儿园的家长 +('parent000000000000000000005', 'tenant00000000000000000000003', 'parent_lin', '$2a$10$RmNcSVt0dBD7uYIuAcbUpuY74jTLFYo8dUOUi6NXRSf4UmGxCaxCK', + '林女士', '13700137005', 'lin@qq.com', 'female', 'active', NOW(), NOW(), 0); + +-- ============================================ +-- 6. 班级数据 (t_clazz) +-- ============================================ +DELETE FROM t_clazz WHERE tenant_id IN ('tenant00000000000000000000001', 'tenant00000000000000000000002', 'tenant00000000000000000000003'); + +-- 阳光幼儿园的班级 +INSERT INTO t_clazz ( + id, tenant_id, name, grade, description, capacity, status, + created_at, updated_at, deleted +) VALUES +('class000000000000000000001', 'tenant00000000000000000000001', '大(一)班', '大班', '2019 年出生的小朋友', 35, 'active', NOW(), NOW(), 0), +('class000000000000000000002', 'tenant00000000000000000000001', '大(二)班', '大班', '2019 年出生的小朋友', 30, 'active', NOW(), NOW(), 0), +('class000000000000000000003', 'tenant00000000000000000000001', '中(一)班', '中班', '2020 年出生的小朋友', 30, 'active', NOW(), NOW(), 0), +('class000000000000000000004', 'tenant00000000000000000000001', '小(一)班', '小班', '2021 年出生的小朋友', 25, 'active', NOW(), NOW(), 0), +-- 希望幼儿园的班级 +('class000000000000000000005', 'tenant00000000000000000000002', '大(一)班', '大班', '2019 年出生的小朋友', 32, 'active', NOW(), NOW(), 0), +('class000000000000000000006', 'tenant00000000000000000000002', '中(一)班', '中班', '2020 年出生的小朋友', 28, 'active', NOW(), NOW(), 0), +-- 星星幼儿园的班级 +('class000000000000000000007', 'tenant00000000000000000000003', '大(一)班', '大班', '2019 年出生的小朋友', 30, 'active', NOW(), NOW(), 0), +('class000000000000000000008', 'tenant00000000000000000000003', '中(一)班', '中班', '2020 年出生的小朋友', 28, 'active', NOW(), NOW(), 0); + +-- ============================================ +-- 7. 班级 - 教师关联 (t_class_teacher) +-- ============================================ +DELETE FROM t_class_teacher; + +INSERT INTO t_class_teacher ( + id, class_id, teacher_id, role, is_primary, sort_order, + created_at, updated_at, deleted +) VALUES +-- 大(一)班 - 王老师(班主任) +('ct000000000000000000001', 'class000000000000000000001', 'teacher000000000000000000001', 'head_teacher', 1, 1, NOW(), NOW(), 0), +-- 中(一)班 - 李老师(班主任) +('ct000000000000000000002', 'class000000000000000000003', 'teacher000000000000000000002', 'head_teacher', 1, 1, NOW(), NOW(), 0), +-- 希望幼儿园 +('ct000000000000000000003', 'class000000000000000000005', 'teacher000000000000000000003', 'head_teacher', 1, 1, NOW(), NOW(), 0), +-- 星星幼儿园 +('ct000000000000000000004', 'class000000000000000000007', 'teacher000000000000000000004', 'head_teacher', 1, 1, NOW(), NOW(), 0); + +-- ============================================ +-- 8. 学生数据 (t_student) +-- ============================================ +DELETE FROM t_student WHERE tenant_id IN ('tenant00000000000000000000001', 'tenant00000000000000000000002', 'tenant00000000000000000000003'); + +-- 阳光幼儿园的学生 +INSERT INTO t_student ( + id, tenant_id, name, gender, birth_date, avatar_url, grade, student_no, + reading_level, interests, notes, status, class_id, parent_name, parent_phone, + reading_count, lesson_count, + created_at, updated_at, deleted +) VALUES +-- 大(一)班学生 +('student00000000000000000001', 'tenant00000000000000000000001', '小明', 'male', '2019-05-15', '/uploads/avatars/student1.png', + '大班', 'S2024001', '中级', '阅读、画画、积木', '活泼好动,喜欢提问', 'active', 'class000000000000000000001', '张先生', '13700137001', 0, 0, NOW(), NOW(), 0), +('student00000000000000000002', 'tenant00000000000000000000001', '小红', 'female', '2019-08-20', '/uploads/avatars/student2.png', + '大班', 'S2024002', '高级', '阅读、唱歌、跳舞', '文静乖巧,记忆力好', 'active', 'class000000000000000000001', '刘女士', '13700137002', 0, 0, NOW(), NOW(), 0), +-- 中(一)班学生 +('student00000000000000000003', 'tenant00000000000000000000001', '小强', 'male', '2020-02-10', '/uploads/avatars/student3.png', + '中班', 'S2024003', '初级', '运动、游戏', '性格开朗,喜欢集体活动', 'active', 'class000000000000000000003', '王女士', '13700137003', 0, 0, NOW(), NOW(), 0), +('student00000000000000000004', 'tenant00000000000000000000001', '小丽', 'female', '2020-06-18', '/uploads/avatars/student4.png', + '中班', 'S2024004', '中级', '画画、手工', '细心认真', 'active', 'class000000000000000000003', '刘女士', '13700137002', 0, 0, NOW(), NOW(), 0), +-- 希望幼儿园的学生 +('student00000000000000000005', 'tenant00000000000000000000002', '小刚', 'male', '2019-11-05', '/uploads/avatars/student5.png', + '大班', 'S2024005', '中级', '足球、跑步', '运动能力强', 'active', 'class000000000000000000005', '陈先生', '13700137004', 0, 0, NOW(), NOW(), 0), +-- 星星幼儿园的学生 +('student00000000000000000006', 'tenant00000000000000000000003', '小美', 'female', '2020-03-22', '/uploads/avatars/student6.png', + '中班', 'S2024006', '高级', '音乐、舞蹈', '节奏感好', 'active', 'class000000000000000000007', '林女士', '13700137005', 0, 0, NOW(), NOW(), 0); + +-- ============================================ +-- 9. 家长 - 学生关联 (t_parent_student) +-- ============================================ +DELETE FROM t_parent_student; + +INSERT INTO t_parent_student ( + id, parent_id, student_id, relationship, is_primary, + created_at, deleted, created_by +) VALUES +-- 张先生 - 小明(父子) +('ps000000000000000000001', 'parent000000000000000000001', 'student00000000000000000001', 'father', 1, NOW(), 0, 'system'), +-- 刘女士 - 小红、小强、小丽(母子) +('ps000000000000000000002', 'parent000000000000000000002', 'student00000000000000000002', 'mother', 1, NOW(), 0, 'system'), +('ps000000000000000000003', 'parent000000000000000000002', 'student00000000000000000004', 'mother', 1, NOW(), 0, 'system'), +-- 王女士 - 小强(母子) +('ps000000000000000000004', 'parent000000000000000000003', 'student00000000000000000003', 'mother', 1, NOW(), 0, 'system'), +-- 陈先生 - 小刚(父子) +('ps000000000000000000005', 'parent000000000000000000004', 'student00000000000000000005', 'father', 1, NOW(), 0, 'system'), +-- 林女士 - 小美(母子) +('ps000000000000000000006', 'parent000000000000000000005', 'student00000000000000000006', 'mother', 1, NOW(), 0, 'system'); + +-- ============================================ +-- 10. 课程数据 (t_course) +-- ============================================ +DELETE FROM t_course WHERE tenant_id IN ('tenant00000000000000000000001', 'tenant00000000000000000000002', 'tenant00000000000000000000003'); + +INSERT INTO t_course ( + id, tenant_id, name, code, description, cover_url, category, age_range, + difficulty_level, duration_minutes, objectives, status, is_system, + theme_id, picture_book_name, version, is_latest, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园的课程 +('course00000000000000000001', 'tenant00000000000000000000001', + '绘本阅读入门', 'READ001', + '适合大班幼儿的绘本阅读课程,培养孩子的阅读兴趣和基础阅读能力', + '/uploads/courses/reading101.png', 'language', '5-6 岁', + 'beginner', 30, + '培养阅读兴趣、提升语言表达能力、增强想象力', 'published', 0, + 'theme001', '《猜猜我有多爱你》', '1.0', 1, + NOW(), NOW(), 0), + +('course00000000000000000002', 'tenant00000000000000000000001', + '趣味数学游戏', 'MATH001', + '通过游戏的方式学习基础数学概念', + '/uploads/courses/math101.png', 'math', '4-5 岁', + 'beginner', 25, + '认识数字、学习简单加减法、培养逻辑思维', 'published', 0, + 'theme002', NULL, '1.0', 1, + NOW(), NOW(), 0), + +('course00000000000000000003', 'tenant00000000000000000000001', + '创意美术工坊', 'ART001', + '激发孩子创造力的美术课程', + '/uploads/courses/art101.png', 'art', '4-6 岁', + 'beginner', 40, + '培养审美能力、提升创造力、锻炼动手能力', 'published', 0, + 'theme004', NULL, '1.0', 1, + NOW(), NOW(), 0), + +-- 希望幼儿园的课程 +('course00000000000000000004', 'tenant00000000000000000000002', + '科学小实验', 'SCI001', + '有趣的科学启蒙实验课程', + '/uploads/courses/science101.png', 'science', '5-6 岁', + 'beginner', 35, + '培养科学兴趣、锻炼观察能力、学习科学方法', 'published', 0, + 'theme003', NULL, '1.0', 1, + NOW(), NOW(), 0); + +-- ============================================ +-- 11. 课程课时数据 (t_course_lesson) +-- ============================================ +DELETE FROM t_course_lesson WHERE course_id IN ('course00000000000000000001', 'course00000000000000000002'); + +INSERT INTO t_course_lesson ( + id, course_id, title, description, content, sort_order, lesson_order, duration_minutes, status, + created_at, updated_at, deleted +) VALUES +-- 绘本阅读入门 - 6 个课时 +('lesson00000000000000000001', 'course00000000000000000001', '第一讲:认识绘本', '了解绘本的结构和特点', '绘本是由图画和文字组成的儿童读物...', 1, 1, 15, 'published', NOW(), NOW(), 0), +('lesson00000000000000000002', 'course00000000000000000001', '第二讲:封面故事', '从封面猜测故事内容', '封面是绘本的第一页,通常包含书名...', 2, 2, 15, 'published', NOW(), NOW(), 0), +('lesson00000000000000000003', 'course00000000000000000001', '第三讲:角色认知', '认识故事中的主要角色', '每个故事都有主角和配角...', 3, 3, 15, 'published', NOW(), NOW(), 0), +('lesson00000000000000000004', 'course00000000000000000001', '第四讲:情节理解', '理解故事的发展脉络', '故事通常有开始、发展、高潮和结局...', 4, 4, 15, 'published', NOW(), NOW(), 0), +('lesson00000000000000000005', 'course00000000000000000001', '第五讲:情感体验', '感受故事中的情感表达', '故事中的角色会有各种情感...', 5, 5, 15, 'published', NOW(), NOW(), 0), +('lesson00000000000000000006', 'course00000000000000000001', '第六讲:创意延伸', '发挥想象,创编故事结局', '如果你是作者,会给故事一个什么样的结局?...', 6, 6, 15, 'published', NOW(), NOW(), 0), +-- 趣味数学游戏 - 5 个课时 +('lesson00000000000000000007', 'course00000000000000000002', '第一讲:数字歌', '学习数字 1-10', '1 像铅笔细又长,2 像小鸭水上漂...', 1, 1, 12, 'published', NOW(), NOW(), 0), +('lesson00000000000000000008', 'course00000000000000000002', '第二讲:比大小', '认识大小概念', '哪个苹果大?哪个橘子小?...', 2, 2, 12, 'published', NOW(), NOW(), 0), +('lesson00000000000000000009', 'course00000000000000000002', '第三讲:数一数', '练习点数', '一起数一数有几个苹果...', 3, 3, 12, 'published', NOW(), NOW(), 0), +('lesson00000000000000000010', 'course00000000000000000002', '第四讲:简单加法', '学习 5 以内加法', '1 个苹果加上 2 个苹果等于几个苹果?...', 4, 4, 12, 'published', NOW(), NOW(), 0), +('lesson00000000000000000011', 'course00000000000000000002', '第五讲:简单减法', '学习 5 以内减法', '5 个苹果吃掉了 2 个,还剩几个?...', 5, 5, 12, 'published', NOW(), NOW(), 0); + +-- ============================================ +-- 12. 课时教学活动 (t_lesson) +-- ============================================ +DELETE FROM t_lesson WHERE tenant_id = 'tenant00000000000000000000001'; + +INSERT INTO t_lesson ( + id, tenant_id, course_id, class_id, teacher_id, title, lesson_date, start_time, end_time, + location, status, notes, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园 - 大(一)班的课时 +('tlesson0000000000000000001', 'tenant00000000000000000000001', 'course00000000000000000001', 'class000000000000000000001', 'teacher000000000000000000001', + '绘本阅读 - 第 1 课', DATE_ADD(NOW(), INTERVAL 1 DAY), '09:00:00', '09:30:00', + '大一班教室', 'scheduled', '请小朋友们提前准备好绘本', + NOW(), NOW(), 0), +('tlesson0000000000000000002', 'tenant00000000000000000000001', 'course00000000000000000001', 'class000000000000000000001', 'teacher000000000000000000001', + '绘本阅读 - 第 2 课', DATE_ADD(NOW(), INTERVAL 8 DAY), '09:00:00', '09:30:00', + '大一班教室', 'scheduled', '请小朋友们提前准备好绘本', + NOW(), NOW(), 0), +('tlesson0000000000000000003', 'tenant00000000000000000000001', 'course00000000000000000001', 'class000000000000000000001', 'teacher000000000000000000001', + '绘本阅读 - 第 3 课', DATE_ADD(NOW(), INTERVAL 15 DAY), '09:00:00', '09:30:00', + '大一班教室', 'scheduled', '请小朋友们提前准备好绘本', + NOW(), NOW(), 0), +('tlesson0000000000000000004', 'tenant00000000000000000000001', 'course00000000000000000002', 'class000000000000000000001', 'teacher000000000000000000001', + '趣味数学 - 第 1 课', DATE_ADD(NOW(), INTERVAL 2 DAY), '10:00:00', '10:25:00', + '大一班教室', 'scheduled', '请准备好数字卡片', + NOW(), NOW(), 0); + +-- ============================================ +-- 13. 任务数据 (t_task) +-- ============================================ +DELETE FROM t_task WHERE tenant_id = 'tenant00000000000000000000001'; + +INSERT INTO t_task ( + id, tenant_id, title, name, description, type, course_id, creator_id, creator_role, + start_date, due_date, status, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园的任务 +('task000000000000000000001', 'tenant00000000000000000000001', + '阅读打卡第 1 周', '阅读打卡', + '请家长陪同孩子每天阅读 15 分钟,并记录阅读内容', 'reading', + 'course00000000000000000001', 'teacher000000000000000000001', 'teacher', + DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_ADD(NOW(), INTERVAL 7 DAY), 'published', + NOW(), NOW(), 0), + +('task000000000000000000002', 'tenant00000000000000000000001', + '绘画作业:我喜欢的故事角色', '绘画作业', + '画出你最喜欢的故事角色,并说明理由', 'homework', + 'course00000000000000000001', 'teacher000000000000000000001', 'teacher', + DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_ADD(NOW(), INTERVAL 5 DAY), 'published', + NOW(), NOW(), 0), + +('task000000000000000000003', 'tenant00000000000000000000001', + '周末亲子活动', '亲子活动', + '周末和孩子一起去图书馆或书店', 'activity', + 'course00000000000000000001', 'teacher000000000000000000001', 'teacher', + DATE_ADD(NOW(), INTERVAL 5 DAY), DATE_ADD(NOW(), INTERVAL 7 DAY), 'published', + NOW(), NOW(), 0); + +-- ============================================ +-- 14. 任务模板 (t_task_template) +-- ============================================ +DELETE FROM t_task_template WHERE tenant_id = 'tenant00000000000000000000001'; + +INSERT INTO t_task_template ( + id, tenant_id, name, description, type, content, is_public, + created_at, updated_at, deleted +) VALUES +('template000000000000000001', 'tenant00000000000000000000001', + '阅读打卡模板', '用于日常阅读打卡记录', 'reading', + '请记录今天的阅读内容:\n1. 书名:\n2. 阅读时间:\n3. 最喜欢的情节:\n4. 收获:', 1, + NOW(), NOW(), 0), + +('template000000000000000002', 'tenant00000000000000000000001', + '绘画作业模板', '用于美术类作业', 'homework', + '请上传孩子的绘画作品,并附上说明:\n1. 作品名称:\n2. 创作灵感:\n3. 使用的材料:', 1, + NOW(), NOW(), 0), + +('template000000000000000003', 'tenant00000000000000000000001', + '亲子活动模板', '用于记录亲子活动', 'activity', + '请分享活动过程和感受:\n1. 活动名称:\n2. 活动时间:\n3. 活动内容:\n4. 孩子收获:\n5. 家长感受:', 1, + NOW(), NOW(), 0), + +('template000000000000000004', 'tenant00000000000000000000001', + '观察记录模板', '用于观察类作业', 'homework', + '请记录观察到的现象:\n1. 观察对象:\n2. 观察时间:\n3. 观察地点:\n4. 发现:\n5. 思考:', 1, + NOW(), NOW(), 0); + +-- ============================================ +-- 15. 通知数据 (t_notification) +-- ============================================ +DELETE FROM t_notification WHERE tenant_id = 'tenant00000000000000000000001'; + +INSERT INTO t_notification ( + id, tenant_id, title, content, type, sender_id, sender_role, recipient_type, recipient_id, is_read, + created_at, deleted +) VALUES +('notify0000000000000000001', 'tenant00000000000000000000001', + '新学期开始通知', '亲爱的家长们,新学期即将开始,请做好入园准备。', 'system', + NULL, NULL, 'all', NULL, 0, + NOW(), 0), + +('notify0000000000000000002', 'tenant00000000000000000000001', + '绘本阅读课程更新', '《猜猜我有多爱你》课程已更新,请查看。', 'course', + 'teacher000000000000000000001', 'teacher', 'all', NULL, 0, + NOW(), 0), + +('notify0000000000000000003', 'tenant00000000000000000000001', + '新任务发布', '本周的阅读打卡任务已发布,请家长陪同完成。', 'task', + 'teacher000000000000000000001', 'teacher', 'parent', 'parent000000000000000000001', 0, + NOW(), 0); + +-- ============================================ +-- 16. 课表计划 (t_schedule_plan) +-- ============================================ +DELETE FROM t_schedule_plan WHERE tenant_id = 'tenant00000000000000000000001'; + +INSERT INTO t_schedule_plan ( + id, tenant_id, name, class_id, course_id, teacher_id, + day_of_week, period, start_time, end_time, + start_date, end_date, location, status, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园 - 大(一)班课表 +('schedule000000000000000001', 'tenant00000000000000000000001', + '绘本阅读课', 'class000000000000000000001', 'course00000000000000000001', 'teacher000000000000000000001', + 1, 1, '09:00:00', '09:30:00', + DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_ADD(NOW(), INTERVAL 120 DAY), '大一班教室', 'active', + NOW(), NOW(), 0), + +('schedule000000000000000002', 'tenant00000000000000000000001', + '绘本阅读课', 'class000000000000000000001', 'course00000000000000000001', 'teacher000000000000000000001', + 3, 2, '10:00:00', '10:30:00', + DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_ADD(NOW(), INTERVAL 120 DAY), '大一班教室', 'active', + NOW(), NOW(), 0), + +('schedule000000000000000003', 'tenant00000000000000000000001', + '趣味数学', 'class000000000000000000001', 'course00000000000000000002', 'teacher000000000000000000001', + 2, 1, '09:00:00', '09:25:00', + DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_ADD(NOW(), INTERVAL 120 DAY), '大一班教室', 'active', + NOW(), NOW(), 0), + +('schedule000000000000000004', 'tenant00000000000000000000001', + '创意美术', 'class000000000000000000001', 'course00000000000000000003', 'teacher000000000000000000001', + 5, 1, '09:00:00', '09:40:00', + DATE_ADD(NOW(), INTERVAL 1 DAY), DATE_ADD(NOW(), INTERVAL 120 DAY), '大一班教室', 'active', + NOW(), NOW(), 0); + +-- ============================================ +-- 17. 成长记录 (t_growth_record) +-- ============================================ +DELETE FROM t_growth_record WHERE tenant_id = 'tenant00000000000000000000001'; + +INSERT INTO t_growth_record ( + id, tenant_id, student_id, type, title, content, images, + recorded_by, recorder_role, record_date, tags, + created_at, updated_at, deleted +) VALUES +('growth000000000000000001', 'tenant00000000000000000000001', 'student00000000000000000001', + 'reading', '第一次独立阅读', '今天小明第一次独立读完了一本绘本,非常棒!', NULL, + 'teacher000000000000000000001', 'teacher', DATE_ADD(NOW(), INTERVAL -1 DAY), + '["阅读进步"]', + NOW(), NOW(), 0), + +('growth000000000000000002', 'tenant00000000000000000000001', 'student00000000000000000001', + 'behavior', '帮助同学', '小明主动帮助摔倒的同学,很有爱心', NULL, + 'teacher000000000000000000001', 'teacher', DATE_ADD(NOW(), INTERVAL -2 DAY), + '["品德表现"]', + NOW(), NOW(), 0), + +('growth000000000000000003', 'tenant00000000000000000000001', 'student00000000000000000002', + 'achievement', '绘画比赛获奖', '在幼儿园绘画比赛中获得一等奖', NULL, + 'teacher000000000000000000001', 'teacher', DATE_ADD(NOW(), INTERVAL -3 DAY), + '["荣誉奖项"]', + NOW(), NOW(), 0), + +('growth000000000000000004', 'tenant00000000000000000000001', 'student00000000000000000003', + 'reading', '阅读小达人', '本月累计阅读 20 本绘本', NULL, + 'teacher000000000000000000002', 'teacher', DATE_ADD(NOW(), INTERVAL -1 DAY), + '["阅读进步"]', + NOW(), NOW(), 0); + +-- ============================================ +-- 18. 资源库 (t_resource_library) +-- ============================================ +DELETE FROM t_resource_library WHERE tenant_id IN ('tenant00000000000000000000001', 'tenant00000000000000000000002', 'tenant00000000000000000000003'); + +INSERT INTO t_resource_library ( + id, tenant_id, name, description, type, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园的资源库 +('lib000000000000000000001', 'tenant00000000000000000000001', '绘本图书馆', '幼儿园绘本电子资源库', 'book', NOW(), NOW(), 0), +('lib000000000000000000002', 'tenant00000000000000000000001', '教学材料库', '教学活动所需材料库', 'material', NOW(), NOW(), 0), +('lib000000000000000000003', 'tenant00000000000000000000001', '体育器材库', '户外运动器材库', 'equipment', NOW(), NOW(), 0), +-- 希望幼儿园的资源库 +('lib000000000000000000004', 'tenant00000000000000000000002', '绘本图书馆', '幼儿园绘本电子资源库', 'book', NOW(), NOW(), 0), +('lib000000000000000000005', 'tenant00000000000000000000002', '科学实验库', '科学实验材料库', 'material', NOW(), NOW(), 0), +-- 星星幼儿园的资源库 +('lib000000000000000000006', 'tenant00000000000000000000003', '绘本图书馆', '幼儿园绘本电子资源库', 'book', NOW(), NOW(), 0), +('lib000000000000000000007', 'tenant00000000000000000000003', '音乐资源库', '儿歌和音乐资源', 'material', NOW(), NOW(), 0); + +-- ============================================ +-- 19. 资源项 (t_resource_item) +-- ============================================ +DELETE FROM t_resource_item WHERE library_id IN ('lib000000000000000000001', 'lib000000000000000000002', 'lib000000000000000000004'); + +INSERT INTO t_resource_item ( + id, library_id, tenant_id, type, name, code, description, quantity, available_quantity, location, status, + created_at, updated_at, deleted +) VALUES +-- 绘本图书馆的资源 +('item00000000000000000001', 'lib000000000000000000001', 'tenant00000000000000000000001', 'book', + '《猜猜我有多爱你》', 'BOOK001', '经典绘本,表达爱意', 5, 3, 'A 区 -1 架', 'available', NOW(), NOW(), 0), +('item00000000000000000002', 'lib000000000000000000001', 'tenant00000000000000000000001', 'book', + '《好饿的毛毛虫》', 'BOOK002', '成长主题绘本', 5, 5, 'A 区 -1 架', 'available', NOW(), NOW(), 0), +('item00000000000000000003', 'lib000000000000000000001', 'tenant00000000000000000000001', 'book', + '《大卫上学去》', 'BOOK003', '校园生活绘本', 4, 2, 'A 区 -2 架', 'available', NOW(), NOW(), 0), +('item00000000000000000004', 'lib000000000000000000001', 'tenant00000000000000000000001', 'book', + '《我爸爸》', 'BOOK004', '亲情主题绘本', 6, 6, 'A 区 -2 架', 'available', NOW(), NOW(), 0), +('item00000000000000000005', 'lib000000000000000000001', 'tenant00000000000000000000001', 'book', + '《我妈妈》', 'BOOK005', '亲情主题绘本', 6, 4, 'A 区 -2 架', 'available', NOW(), NOW(), 0), +-- 教学材料库的资源 +('item00000000000000000006', 'lib000000000000000000002', 'tenant00000000000000000000001', 'material', + '彩色卡纸', 'MAT001', '美工课用彩色卡纸', 100, 80, 'B 区 -1 柜', 'available', NOW(), NOW(), 0), +('item00000000000000000007', 'lib000000000000000000002', 'tenant00000000000000000000001', 'material', + '儿童安全剪刀', 'MAT002', '圆头安全剪刀', 35, 30, 'B 区 -1 柜', 'available', NOW(), NOW(), 0), +('item00000000000000000008', 'lib000000000000000000002', 'tenant00000000000000000000001', 'material', + '水彩笔', 'MAT003', '12 色水彩笔', 50, 45, 'B 区 -2 柜', 'available', NOW(), NOW(), 0), +-- 希望幼儿园绘本馆 +('item00000000000000000009', 'lib000000000000000000004', 'tenant00000000000000000000002', 'book', + '《猜猜我有多爱你》', 'BOOK001', '经典绘本,表达爱意', 5, 5, 'A 区 -1 架', 'available', NOW(), NOW(), 0), +('item00000000000000000010', 'lib000000000000000000004', 'tenant00000000000000000000002', 'book', + '《蚯蚓的日记》', 'BOOK006', '有趣的生命教育绘本', 4, 4, 'A 区 -1 架', 'available', NOW(), NOW(), 0); + +-- ============================================ +-- 20. 课程包 (t_course_package) +-- ============================================ +DELETE FROM t_course_package; + +INSERT INTO t_course_package ( + id, name, description, cover_url, course_count, price, status, is_system, + created_at, updated_at, deleted +) VALUES +-- 系统课程包 +('pkg000000000000000000001', '语言启蒙课程包', '适合 3-6 岁幼儿的语言启蒙课程,包含绘本阅读、儿歌、故事等内容', + '/uploads/packages/lang_pack.png', 12, 299.00, 'active', 1, + NOW(), NOW(), 0), +('pkg000000000000000000002', '数学思维课程包', '培养幼儿数学思维能力,包含数概念、图形、逻辑等内容', + '/uploads/packages/math_pack.png', 10, 269.00, 'active', 1, + NOW(), NOW(), 0), +('pkg000000000000000000003', '艺术创想课程包', '激发幼儿艺术创造力,包含绘画、手工、音乐等内容', + '/uploads/packages/art_pack.png', 8, 239.00, 'active', 1, + NOW(), NOW(), 0), +('pkg000000000000000000004', '科学探索课程包', '培养幼儿科学探索精神,包含实验、观察、发现等内容', + '/uploads/packages/science_pack.png', 10, 279.00, 'active', 1, + NOW(), NOW(), 0), +('pkg000000000000000000005', '社交情感课程包', '帮助幼儿发展社交情感能力,包含情绪管理、人际交往等内容', + '/uploads/packages/social_pack.png', 6, 199.00, 'active', 1, + NOW(), NOW(), 0), +-- 幼儿园自定义课程包 +('pkg000000000000000000006', '阳光幼儿园 - 大班语言包', '阳光幼儿园大班专用语言课程包', + '/uploads/packages/sunshine_lang.png', 8, 199.00, 'active', 0, + NOW(), NOW(), 0), +('pkg000000000000000000007', '希望幼儿园 - 科学启蒙包', '希望幼儿园特色科学启蒙课程包', + '/uploads/packages/hope_science.png', 6, 169.00, 'active', 0, + NOW(), NOW(), 0); + +-- ============================================ +-- 21. 租户 - 课程关联 (t_tenant_course) +-- ============================================ +DELETE FROM t_tenant_course; + +INSERT INTO t_tenant_course ( + id, tenant_id, course_id, enabled, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园启用的课程 +('tc00000000000000000001', 'tenant00000000000000000000001', 'course00000000000000000001', 1, NOW(), NOW(), 0), +('tc00000000000000000002', 'tenant00000000000000000000001', 'course00000000000000000002', 1, NOW(), NOW(), 0), +('tc00000000000000000003', 'tenant00000000000000000000001', 'course00000000000000000003', 1, NOW(), NOW(), 0), +-- 希望幼儿园启用的课程 +('tc00000000000000000004', 'tenant00000000000000000000002', 'course00000000000000000004', 1, NOW(), NOW(), 0), +-- 星星幼儿园启用的课程 +('tc00000000000000000005', 'tenant00000000000000000000003', 'course00000000000000000001', 1, NOW(), NOW(), 0); + +-- ============================================ +-- 22. 任务目标 (t_task_target) +-- ============================================ +DELETE FROM t_task_target WHERE task_id IN ('task000000000000000000001', 'task000000000000000000002', 'task000000000000000000003'); + +INSERT INTO t_task_target ( + id, task_id, target_type, target_id, + created_at, deleted +) VALUES +-- 阅读打卡任务 - 面向大(一)班 +('tt000000000000000000001', 'task000000000000000000001', 'class', 'class000000000000000000001', NOW(), 0), +-- 绘画作业 - 面向特定学生 +('tt000000000000000000002', 'task000000000000000000002', 'student', 'student00000000000000000001', NOW(), 0), +('tt000000000000000000003', 'task000000000000000000002', 'student', 'student00000000000000000002', NOW(), 0), +-- 亲子活动 - 面向大(一)班 +('tt000000000000000000004', 'task000000000000000000003', 'class', 'class000000000000000000001', NOW(), 0); + +-- ============================================ +-- 23. 任务完成记录 (t_task_completion) +-- ============================================ +DELETE FROM t_task_completion; + +INSERT INTO t_task_completion ( + id, task_id, student_id, status, completed_at, content, attachments, rating, feedback, + created_at, updated_at, deleted +) VALUES +-- 小明的阅读打卡 +('tc000000000000000000001', 'task000000000000000000001', 'student00000000000000000001', + 'completed', DATE_ADD(NOW(), INTERVAL -1 DAY), + '今天阅读了《猜猜我有多爱你》,小明很喜欢这个故事', + '["/uploads/task/reading_photo1.jpg"]', 5, '读得很认真,继续加油!', + NOW(), NOW(), 0), +-- 小红的绘画作业 +('tc000000000000000000002', 'task000000000000000000002', 'student00000000000000000002', + 'completed', DATE_ADD(NOW(), INTERVAL -2 DAY), + '画的是《我爸爸》,爸爸是我心中的超人', + '["/uploads/task/painting1.jpg"]', 5, '画得很棒,色彩搭配很好!', + NOW(), NOW(), 0); + +-- ============================================ +-- 24. 学生评价记录 (t_student_record) +-- ============================================ +DELETE FROM t_student_record; + +INSERT INTO t_student_record ( + id, lesson_id, student_id, attendance, performance, notes, + focus, participation, interest, understanding, + created_at, updated_at, deleted +) VALUES +-- 绘本阅读第 1 课的学生记录 +('sr000000000000000000001', 'tlesson0000000000000000001', 'student00000000000000000001', + 'present', '表现积极,踊跃发言', '对故事很感兴趣', + 4, 5, 5, 4, + NOW(), NOW(), 0), +('sr000000000000000000002', 'tlesson0000000000000000001', 'student00000000000000000002', + 'present', '安静听讲,认真记录', '能理解故事内涵', + 5, 4, 4, 5, + NOW(), NOW(), 0), +('sr000000000000000000003', 'tlesson0000000000000000001', 'student000000000000000000003', + 'present', '参与度一般', '需要更多引导', + 3, 3, 3, 3, + NOW(), NOW(), 0); + +-- ============================================ +-- 25. 课时反馈 (t_lesson_feedback) +-- ============================================ +DELETE FROM t_lesson_feedback; + +INSERT INTO t_lesson_feedback ( + id, lesson_id, course_id, tenant_id, teacher_id, + design_quality, participation, goal_achievement, overall_rating, + step_feedbacks, pros, suggestions, activities_done, + created_at, updated_at, deleted +) VALUES +('lf000000000000000000001', 'tlesson0000000000000000001', 'course00000000000000000001', 'tenant00000000000000000000001', 'teacher000000000000000000001', + 5, 4, 5, 5, + '{"step1": "导入环节很好", "step2": "互动充分", "step3": "总结到位"}', + '课程设计合理,学生参与度高,目标达成好', + '可以增加更多小组讨论环节', + '{"activities": ["角色扮演", "分组讨论", "分享感受"]}', + NOW(), NOW(), 0); + +-- ============================================ +-- 26. 系统设置 (t_system_setting) +-- ============================================ +DELETE FROM t_system_setting WHERE tenant_id IN ('tenant00000000000000000000001', 'tenant00000000000000000000002', 'tenant00000000000000000000003'); + +INSERT INTO t_system_setting ( + id, tenant_id, setting_key, setting_value, description, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园设置 +('setting000000000000000001', 'tenant00000000000000000000001', 'school_logo', '/uploads/logos/sunshine.png', '学校 Logo', NOW(), NOW(), 0), +('setting000000000000000002', 'tenant00000000000000000000001', 'school_motto', '阳光教育,快乐成长', '校训', NOW(), NOW(), 0), +('setting000000000000000003', 'tenant00000000000000000000001', 'contact_info', '北京市朝阳区阳光路 100 号 | 010-12345678', '联系方式', NOW(), NOW(), 0), +('setting000000000000000004', 'tenant00000000000000000000001', 'enrollment_age', '3-6', '招生年龄范围', NOW(), NOW(), 0), +-- 希望幼儿园设置 +('setting000000000000000005', 'tenant00000000000000000000002', 'school_logo', '/uploads/logos/hope.png', '学校 Logo', NOW(), NOW(), 0), +('setting000000000000000006', 'tenant00000000000000000000002', 'school_motto', '希望之光,点亮未来', '校训', NOW(), NOW(), 0), +-- 星星幼儿园设置 +('setting000000000000000007', 'tenant00000000000000000000003', 'school_logo', '/uploads/logos/star.png', '学校 Logo', NOW(), NOW(), 0), +('setting000000000000000008', 'tenant00000000000000000000003', 'school_motto', '星星之火,可以燎原', '校训', NOW(), NOW(), 0); + +-- ============================================ +-- 27. 标签 (t_tag) +-- ============================================ +DELETE FROM t_tag WHERE tenant_id IN ('tenant00000000000000000000001', 'tenant00000000000000000000002', 'tenant00000000000000000000003'); + +INSERT INTO t_tag ( + id, tenant_id, name, type, color, + created_at, updated_at, deleted +) VALUES +-- 阳光幼儿园标签 +('tag000000000000000000001', 'tenant00000000000000000000001', '阅读小达人', 'student', '#FF6B6B', NOW(), NOW(), 0), +('tag000000000000000000002', 'tenant00000000000000000000001', '运动健将', 'student', '#4ECDC4', NOW(), NOW(), 0), +('tag000000000000000000003', 'tenant00000000000000000000001', '艺术之星', 'student', '#FFA07A', NOW(), NOW(), 0), +('tag000000000000000000004', 'tenant00000000000000000000001', '语言类', 'course', '#98D8C8', NOW(), NOW(), 0), +('tag000000000000000000005', 'tenant00000000000000000000001', '科学类', 'course', '#45B7D1', NOW(), NOW(), 0), +-- 希望幼儿园标签 +('tag000000000000000000006', 'tenant00000000000000000000002', '阅读小达人', 'student', '#FF6B6B', NOW(), NOW(), 0), +('tag000000000000000000007', 'tenant00000000000000000000002', '科学小能手', 'student', '#4ECDC4', NOW(), NOW(), 0), +-- 星星幼儿园标签 +('tag000000000000000000008', 'tenant00000000000000000000003', '音乐小天才', 'student', '#F7DC6F', NOW(), NOW(), 0), +('tag000000000000000000009', 'tenant00000000000000000000003', '舞蹈之星', 'student', '#FFA07A', NOW(), NOW(), 0); + +-- ============================================ +-- 28. 通知数据补充 +-- ============================================ +INSERT INTO t_notification ( + id, tenant_id, title, content, type, sender_id, sender_role, recipient_type, recipient_id, is_read, + created_at, deleted +) VALUES +('notify0000000000000000004', 'tenant00000000000000000000001', + '本周食谱已更新', '请家长查看本周幼儿园食谱,了解孩子饮食情况', 'system', + NULL, NULL, 'all', NULL, 0, + NOW(), 0), +('notify0000000000000000005', 'tenant00000000000000000000001', + '运动会通知', '幼儿园将于下周五举办春季运动会,请家长为孩子准备运动服装', 'system', + NULL, NULL, 'all', NULL, 0, + NOW(), 0); + +-- ============================================ +-- 数据验证查询 +-- ============================================ +SELECT '========== 测试数据概览 ==========' AS ''; + +SELECT '主题数据:' AS ''; +SELECT id, name, display_name FROM t_theme; + +SELECT '租户数据:' AS ''; +SELECT id, name, code, status FROM t_tenant; + +SELECT '教师用户:' AS ''; +SELECT id, tenant_id, username, name, status FROM t_teacher WHERE username NOT LIKE '%kinder%'; + +SELECT '家长用户:' AS ''; +SELECT id, tenant_id, username, name, status FROM t_parent; + +SELECT '班级数据:' AS ''; +SELECT id, tenant_id, name, grade, status FROM t_clazz; + +SELECT '学生数据:' AS ''; +SELECT id, tenant_id, name, grade, class_id, status FROM t_student; + +SELECT '课程数据:' AS ''; +SELECT id, tenant_id, name, code, status FROM t_course; + +SELECT '课程包数据:' AS ''; +SELECT id, name, course_count, price, status FROM t_course_package; + +SELECT '资源库数据:' AS ''; +SELECT id, tenant_id, name, type FROM t_resource_library; + +SELECT '资源项数据:' AS ''; +SELECT id, library_id, name, quantity, available_quantity FROM t_resource_item; + +SELECT '租户 - 课程关联:' AS ''; +SELECT id, tenant_id, course_id, enabled FROM t_tenant_course; + +SELECT '任务数据:' AS ''; +SELECT id, tenant_id, title, type, status FROM t_task; + +SELECT '========== 数据验证完成 ==========' AS ''; \ No newline at end of file