From 67068a03b6473a7dd7d0af64ca10d331c24e4a93 Mon Sep 17 00:00:00 2001 From: GoCo Date: Sun, 31 Aug 2025 11:55:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=20=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jeecg-module-aiol/pom.xml | 36 + .../aiol/constant/EntityLinkConst.java | 51 ++ .../controller/AiolCommentController.java | 182 +++++ .../AiolCourseCategoryController.java | 182 +++++ .../aiol/controller/AiolCourseController.java | 412 +++++++++++ .../AiolCourseSectionController.java | 182 +++++ .../AiolCourseSignupController.java | 182 +++++ .../AiolCourseTeacherController.java | 182 +++++ .../controller/AiolEntityLinkController.java | 182 +++++ .../controller/AiolHomeworkController.java | 182 +++++ .../AiolLearnProgressController.java | 182 +++++ .../controller/AiolQuestionController.java | 182 +++++ .../controller/AiolResourceController.java | 182 +++++ .../controller/AiolUserInfoController.java | 182 +++++ .../modules/aiol/dto/CommentWithUserInfo.java | 20 + .../aiol/dto/CourseWithTeacherInfo.java | 16 + .../modules/aiol/dto/QuestionAnswerDTO.java | 17 + .../aiol/dto/StudentSubmitHomework.java | 25 + .../jeecg/modules/aiol/dto/TeacherInfo.java | 26 + .../modules/aiol/dto/UserInfoResponse.java | 74 ++ .../modules/aiol/entity/AiolComment.java | 84 +++ .../jeecg/modules/aiol/entity/AiolCourse.java | 140 ++++ .../aiol/entity/AiolCourseCategory.java | 64 ++ .../aiol/entity/AiolCourseSection.java | 82 +++ .../modules/aiol/entity/AiolCourseSignup.java | 64 ++ .../aiol/entity/AiolCourseTeacher.java | 73 ++ .../modules/aiol/entity/AiolEntityLink.java | 68 ++ .../modules/aiol/entity/AiolHomework.java | 93 +++ .../aiol/entity/AiolLearnProgress.java | 80 +++ .../modules/aiol/entity/AiolQuestion.java | 82 +++ .../modules/aiol/entity/AiolResource.java | 103 +++ .../modules/aiol/entity/AiolUserInfo.java | 84 +++ .../aiol/mapper/AiolCommentMapper.java | 17 + .../aiol/mapper/AiolCourseCategoryMapper.java | 17 + .../modules/aiol/mapper/AiolCourseMapper.java | 17 + .../aiol/mapper/AiolCourseSectionMapper.java | 17 + .../aiol/mapper/AiolCourseSignupMapper.java | 17 + .../aiol/mapper/AiolCourseTeacherMapper.java | 17 + .../aiol/mapper/AiolEntityLinkMapper.java | 17 + .../aiol/mapper/AiolHomeworkMapper.java | 17 + .../aiol/mapper/AiolLearnProgressMapper.java | 17 + .../aiol/mapper/AiolQuestionMapper.java | 17 + .../aiol/mapper/AiolResourceMapper.java | 17 + .../aiol/mapper/AiolUserInfoMapper.java | 17 + .../aiol/mapper/xml/AiolCommentMapper.xml | 5 + .../mapper/xml/AiolCourseCategoryMapper.xml | 5 + .../aiol/mapper/xml/AiolCourseMapper.xml | 5 + .../mapper/xml/AiolCourseSectionMapper.xml | 5 + .../mapper/xml/AiolCourseSignupMapper.xml | 5 + .../mapper/xml/AiolCourseTeacherMapper.xml | 5 + .../aiol/mapper/xml/AiolEntityLinkMapper.xml | 5 + .../aiol/mapper/xml/AiolHomeworkMapper.xml | 5 + .../mapper/xml/AiolLearnProgressMapper.xml | 5 + .../aiol/mapper/xml/AiolQuestionMapper.xml | 5 + .../aiol/mapper/xml/AiolResourceMapper.xml | 5 + .../aiol/mapper/xml/AiolUserInfoMapper.xml | 5 + .../aiol/service/IAiolCommentService.java | 14 + .../service/IAiolCourseCategoryService.java | 14 + .../service/IAiolCourseSectionService.java | 14 + .../aiol/service/IAiolCourseService.java | 97 +++ .../service/IAiolCourseSignupService.java | 14 + .../service/IAiolCourseTeacherService.java | 14 + .../aiol/service/IAiolEntityLinkService.java | 32 + .../aiol/service/IAiolHomeworkService.java | 14 + .../service/IAiolLearnProgressService.java | 14 + .../aiol/service/IAiolQuestionService.java | 14 + .../aiol/service/IAiolResourceService.java | 14 + .../aiol/service/IAiolUserInfoService.java | 14 + .../service/impl/AiolCommentServiceImpl.java | 19 + .../impl/AiolCourseCategoryServiceImpl.java | 19 + .../impl/AiolCourseSectionServiceImpl.java | 19 + .../service/impl/AiolCourseServiceImpl.java | 664 ++++++++++++++++++ .../impl/AiolCourseSignupServiceImpl.java | 19 + .../impl/AiolCourseTeacherServiceImpl.java | 19 + .../impl/AiolEntityLinkServiceImpl.java | 44 ++ .../service/impl/AiolHomeworkServiceImpl.java | 19 + .../impl/AiolLearnProgressServiceImpl.java | 19 + .../service/impl/AiolQuestionServiceImpl.java | 19 + .../service/impl/AiolResourceServiceImpl.java | 19 + .../service/impl/AiolUserInfoServiceImpl.java | 19 + .../modules/aiol/uniapp/AiolCommentForm.vue | 119 ++++ .../modules/aiol/uniapp/AiolCommentList.vue | 44 ++ .../aiol/uniapp/AiolCourseCategoryForm.vue | 89 +++ .../aiol/uniapp/AiolCourseCategoryList.vue | 44 ++ .../modules/aiol/uniapp/AiolCourseForm.vue | 181 +++++ .../modules/aiol/uniapp/AiolCourseList.vue | 44 ++ .../aiol/uniapp/AiolCourseSectionForm.vue | 113 +++ .../aiol/uniapp/AiolCourseSectionList.vue | 44 ++ .../aiol/uniapp/AiolCourseSignupForm.vue | 89 +++ .../aiol/uniapp/AiolCourseSignupList.vue | 44 ++ .../aiol/uniapp/AiolCourseTeacherForm.vue | 101 +++ .../aiol/uniapp/AiolCourseTeacherList.vue | 44 ++ .../aiol/uniapp/AiolEntityLinkForm.vue | 107 +++ .../aiol/uniapp/AiolEntityLinkList.vue | 44 ++ .../modules/aiol/uniapp/AiolHomeworkForm.vue | 115 +++ .../modules/aiol/uniapp/AiolHomeworkList.vue | 44 ++ .../aiol/uniapp/AiolLearnProgressForm.vue | 113 +++ .../aiol/uniapp/AiolLearnProgressList.vue | 44 ++ .../modules/aiol/uniapp/AiolQuestionForm.vue | 113 +++ .../modules/aiol/uniapp/AiolQuestionList.vue | 44 ++ .../modules/aiol/uniapp/AiolResourceForm.vue | 137 ++++ .../modules/aiol/uniapp/AiolResourceList.vue | 44 ++ .../modules/aiol/uniapp/AiolUserInfoForm.vue | 119 ++++ .../modules/aiol/uniapp/AiolUserInfoList.vue | 44 ++ .../modules/aiol/uniapp3/AiolCommentData.ts | 39 + .../modules/aiol/uniapp3/AiolCommentForm.vue | 289 ++++++++ .../modules/aiol/uniapp3/AiolCommentList.vue | 148 ++++ .../aiol/uniapp3/AiolCourseCategoryData.ts | 14 + .../aiol/uniapp3/AiolCourseCategoryForm.vue | 223 ++++++ .../aiol/uniapp3/AiolCourseCategoryList.vue | 148 ++++ .../modules/aiol/uniapp3/AiolCourseData.ts | 100 +++ .../modules/aiol/uniapp3/AiolCourseForm.vue | 422 +++++++++++ .../modules/aiol/uniapp3/AiolCourseList.vue | 148 ++++ .../aiol/uniapp3/AiolCourseSectionData.ts | 34 + .../aiol/uniapp3/AiolCourseSectionForm.vue | 269 +++++++ .../aiol/uniapp3/AiolCourseSectionList.vue | 148 ++++ .../aiol/uniapp3/AiolCourseSignupData.ts | 14 + .../aiol/uniapp3/AiolCourseSignupForm.vue | 222 ++++++ .../aiol/uniapp3/AiolCourseSignupList.vue | 148 ++++ .../aiol/uniapp3/AiolCourseTeacherData.ts | 24 + .../aiol/uniapp3/AiolCourseTeacherForm.vue | 246 +++++++ .../aiol/uniapp3/AiolCourseTeacherList.vue | 148 ++++ .../aiol/uniapp3/AiolEntityLinkData.ts | 29 + .../aiol/uniapp3/AiolEntityLinkForm.vue | 262 +++++++ .../aiol/uniapp3/AiolEntityLinkList.vue | 148 ++++ .../modules/aiol/uniapp3/AiolHomeworkData.ts | 44 ++ .../modules/aiol/uniapp3/AiolHomeworkForm.vue | 291 ++++++++ .../modules/aiol/uniapp3/AiolHomeworkList.vue | 148 ++++ .../aiol/uniapp3/AiolLearnProgressData.ts | 34 + .../aiol/uniapp3/AiolLearnProgressForm.vue | 277 ++++++++ .../aiol/uniapp3/AiolLearnProgressList.vue | 148 ++++ .../modules/aiol/uniapp3/AiolQuestionData.ts | 34 + .../modules/aiol/uniapp3/AiolQuestionForm.vue | 267 +++++++ .../modules/aiol/uniapp3/AiolQuestionList.vue | 148 ++++ .../modules/aiol/uniapp3/AiolResourceData.ts | 54 ++ .../modules/aiol/uniapp3/AiolResourceForm.vue | 319 +++++++++ .../modules/aiol/uniapp3/AiolResourceList.vue | 148 ++++ .../modules/aiol/uniapp3/AiolUserInfoData.ts | 39 + .../modules/aiol/uniapp3/AiolUserInfoForm.vue | 288 ++++++++ .../modules/aiol/uniapp3/AiolUserInfoList.vue | 148 ++++ .../modules/aiol/vue3/AiolComment.api.ts | 64 ++ .../modules/aiol/vue3/AiolComment.data.ts | 111 +++ .../modules/aiol/vue3/AiolCommentList.vue | 206 ++++++ .../jeecg/modules/aiol/vue3/AiolCourse.api.ts | 64 ++ .../modules/aiol/vue3/AiolCourse.data.ts | 271 +++++++ .../aiol/vue3/AiolCourseCategory.api.ts | 64 ++ .../aiol/vue3/AiolCourseCategory.data.ts | 56 ++ .../aiol/vue3/AiolCourseCategoryList.vue | 206 ++++++ .../modules/aiol/vue3/AiolCourseList.vue | 223 ++++++ .../aiol/vue3/AiolCourseSection.api.ts | 64 ++ .../aiol/vue3/AiolCourseSection.data.ts | 119 ++++ .../aiol/vue3/AiolCourseSectionList.vue | 206 ++++++ .../modules/aiol/vue3/AiolCourseSignup.api.ts | 64 ++ .../aiol/vue3/AiolCourseSignup.data.ts | 56 ++ .../aiol/vue3/AiolCourseSignupList.vue | 206 ++++++ .../aiol/vue3/AiolCourseTeacher.api.ts | 64 ++ .../aiol/vue3/AiolCourseTeacher.data.ts | 82 +++ .../aiol/vue3/AiolCourseTeacherList.vue | 206 ++++++ .../modules/aiol/vue3/AiolEntityLink.api.ts | 64 ++ .../modules/aiol/vue3/AiolEntityLink.data.ts | 89 +++ .../modules/aiol/vue3/AiolEntityLinkList.vue | 206 ++++++ .../modules/aiol/vue3/AiolHomework.api.ts | 64 ++ .../modules/aiol/vue3/AiolHomework.data.ts | 136 ++++ .../modules/aiol/vue3/AiolHomeworkList.vue | 215 ++++++ .../aiol/vue3/AiolLearnProgress.api.ts | 64 ++ .../aiol/vue3/AiolLearnProgress.data.ts | 100 +++ .../aiol/vue3/AiolLearnProgressList.vue | 206 ++++++ .../modules/aiol/vue3/AiolQuestion.api.ts | 64 ++ .../modules/aiol/vue3/AiolQuestion.data.ts | 106 +++ .../modules/aiol/vue3/AiolQuestionList.vue | 214 ++++++ .../modules/aiol/vue3/AiolResource.api.ts | 64 ++ .../modules/aiol/vue3/AiolResource.data.ts | 155 ++++ .../modules/aiol/vue3/AiolResourceList.vue | 206 ++++++ .../modules/aiol/vue3/AiolUserInfo.api.ts | 64 ++ .../modules/aiol/vue3/AiolUserInfo.data.ts | 111 +++ .../modules/aiol/vue3/AiolUserInfoList.vue | 206 ++++++ .../V20250831_1__menu_insert_AiolComment.sql | 26 + .../V20250831_1__menu_insert_AiolCourse.sql | 26 + ...0831_1__menu_insert_AiolCourseCategory.sql | 26 + ...50831_1__menu_insert_AiolCourseSection.sql | 26 + ...250831_1__menu_insert_AiolCourseSignup.sql | 26 + ...50831_1__menu_insert_AiolCourseTeacher.sql | 26 + ...20250831_1__menu_insert_AiolEntityLink.sql | 26 + .../V20250831_1__menu_insert_AiolHomework.sql | 26 + ...50831_1__menu_insert_AiolLearnProgress.sql | 26 + .../V20250831_1__menu_insert_AiolQuestion.sql | 26 + .../V20250831_1__menu_insert_AiolResource.sql | 26 + .../V20250831_1__menu_insert_AiolUserInfo.sql | 26 + .../aiol/vue3/components/AiolCommentForm.vue | 70 ++ .../aiol/vue3/components/AiolCommentModal.vue | 99 +++ .../components/AiolCourseCategoryForm.vue | 70 ++ .../components/AiolCourseCategoryModal.vue | 99 +++ .../aiol/vue3/components/AiolCourseForm.vue | 70 ++ .../aiol/vue3/components/AiolCourseModal.vue | 99 +++ .../vue3/components/AiolCourseSectionForm.vue | 70 ++ .../components/AiolCourseSectionModal.vue | 99 +++ .../vue3/components/AiolCourseSignupForm.vue | 70 ++ .../vue3/components/AiolCourseSignupModal.vue | 99 +++ .../vue3/components/AiolCourseTeacherForm.vue | 70 ++ .../components/AiolCourseTeacherModal.vue | 99 +++ .../vue3/components/AiolEntityLinkForm.vue | 70 ++ .../vue3/components/AiolEntityLinkModal.vue | 99 +++ .../aiol/vue3/components/AiolHomeworkForm.vue | 70 ++ .../vue3/components/AiolHomeworkModal.vue | 99 +++ .../vue3/components/AiolLearnProgressForm.vue | 70 ++ .../components/AiolLearnProgressModal.vue | 99 +++ .../aiol/vue3/components/AiolQuestionForm.vue | 70 ++ .../vue3/components/AiolQuestionModal.vue | 99 +++ .../aiol/vue3/components/AiolResourceForm.vue | 70 ++ .../vue3/components/AiolResourceModal.vue | 99 +++ .../aiol/vue3/components/AiolUserInfoForm.vue | 70 ++ .../vue3/components/AiolUserInfoModal.vue | 99 +++ jeecg-boot/jeecg-boot-module/pom.xml | 1 + .../jeecg-system-start/pom.xml | 7 + .../src/main/resources/application-dev.yml | 6 +- .../src/views/aiol/AiolComment.api.ts | 64 ++ .../src/views/aiol/AiolComment.data.ts | 111 +++ .../src/views/aiol/AiolCommentList.vue | 206 ++++++ .../src/views/aiol/AiolCourse.api.ts | 64 ++ .../src/views/aiol/AiolCourse.data.ts | 271 +++++++ .../src/views/aiol/AiolCourseCategory.api.ts | 64 ++ .../src/views/aiol/AiolCourseCategory.data.ts | 56 ++ .../src/views/aiol/AiolCourseCategoryList.vue | 206 ++++++ .../src/views/aiol/AiolCourseList.vue | 223 ++++++ .../src/views/aiol/AiolCourseSection.api.ts | 64 ++ .../src/views/aiol/AiolCourseSection.data.ts | 119 ++++ .../src/views/aiol/AiolCourseSectionList.vue | 206 ++++++ .../src/views/aiol/AiolCourseSignup.api.ts | 64 ++ .../src/views/aiol/AiolCourseSignup.data.ts | 56 ++ .../src/views/aiol/AiolCourseSignupList.vue | 206 ++++++ .../src/views/aiol/AiolCourseTeacher.api.ts | 64 ++ .../src/views/aiol/AiolCourseTeacher.data.ts | 82 +++ .../src/views/aiol/AiolCourseTeacherList.vue | 206 ++++++ .../src/views/aiol/AiolEntityLink.api.ts | 64 ++ .../src/views/aiol/AiolEntityLink.data.ts | 89 +++ .../src/views/aiol/AiolEntityLinkList.vue | 206 ++++++ .../src/views/aiol/AiolHomework.api.ts | 64 ++ .../src/views/aiol/AiolHomework.data.ts | 136 ++++ .../src/views/aiol/AiolHomeworkList.vue | 215 ++++++ .../src/views/aiol/AiolLearnProgress.api.ts | 64 ++ .../src/views/aiol/AiolLearnProgress.data.ts | 100 +++ .../src/views/aiol/AiolLearnProgressList.vue | 206 ++++++ .../src/views/aiol/AiolQuestion.api.ts | 64 ++ .../src/views/aiol/AiolQuestion.data.ts | 106 +++ .../src/views/aiol/AiolQuestionList.vue | 214 ++++++ .../src/views/aiol/AiolResource.api.ts | 64 ++ .../src/views/aiol/AiolResource.data.ts | 155 ++++ .../src/views/aiol/AiolResourceList.vue | 206 ++++++ .../src/views/aiol/AiolUserInfo.api.ts | 64 ++ .../src/views/aiol/AiolUserInfo.data.ts | 111 +++ .../src/views/aiol/AiolUserInfoList.vue | 206 ++++++ .../V20250831_1__menu_insert_AiolComment.sql | 26 + .../V20250831_1__menu_insert_AiolCourse.sql | 26 + ...0831_1__menu_insert_AiolCourseCategory.sql | 26 + ...50831_1__menu_insert_AiolCourseSection.sql | 26 + ...250831_1__menu_insert_AiolCourseSignup.sql | 26 + ...50831_1__menu_insert_AiolCourseTeacher.sql | 26 + ...20250831_1__menu_insert_AiolEntityLink.sql | 26 + .../V20250831_1__menu_insert_AiolHomework.sql | 26 + ...50831_1__menu_insert_AiolLearnProgress.sql | 26 + .../V20250831_1__menu_insert_AiolQuestion.sql | 26 + .../V20250831_1__menu_insert_AiolResource.sql | 26 + .../V20250831_1__menu_insert_AiolUserInfo.sql | 26 + .../views/aiol/components/AiolCommentForm.vue | 70 ++ .../aiol/components/AiolCommentModal.vue | 99 +++ .../components/AiolCourseCategoryForm.vue | 70 ++ .../components/AiolCourseCategoryModal.vue | 99 +++ .../views/aiol/components/AiolCourseForm.vue | 70 ++ .../views/aiol/components/AiolCourseModal.vue | 99 +++ .../aiol/components/AiolCourseSectionForm.vue | 70 ++ .../components/AiolCourseSectionModal.vue | 99 +++ .../aiol/components/AiolCourseSignupForm.vue | 70 ++ .../aiol/components/AiolCourseSignupModal.vue | 99 +++ .../aiol/components/AiolCourseTeacherForm.vue | 70 ++ .../components/AiolCourseTeacherModal.vue | 99 +++ .../aiol/components/AiolEntityLinkForm.vue | 70 ++ .../aiol/components/AiolEntityLinkModal.vue | 99 +++ .../aiol/components/AiolHomeworkForm.vue | 70 ++ .../aiol/components/AiolHomeworkModal.vue | 99 +++ .../aiol/components/AiolLearnProgressForm.vue | 70 ++ .../components/AiolLearnProgressModal.vue | 99 +++ .../aiol/components/AiolQuestionForm.vue | 70 ++ .../aiol/components/AiolQuestionModal.vue | 99 +++ .../aiol/components/AiolResourceForm.vue | 70 ++ .../aiol/components/AiolResourceModal.vue | 99 +++ .../aiol/components/AiolUserInfoForm.vue | 70 ++ .../aiol/components/AiolUserInfoModal.vue | 99 +++ 287 files changed, 26684 insertions(+), 3 deletions(-) create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/pom.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/constant/EntityLinkConst.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCommentController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseCategoryController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSectionController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSignupController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseTeacherController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolEntityLinkController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolLearnProgressController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolResourceController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserInfoController.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CommentWithUserInfo.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CourseWithTeacherInfo.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/QuestionAnswerDTO.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/StudentSubmitHomework.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/TeacherInfo.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserInfoResponse.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolComment.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseCategory.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSection.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSignup.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseTeacher.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolEntityLink.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolHomework.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolLearnProgress.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolQuestion.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolResource.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserInfo.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCommentMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseCategoryMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSectionMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSignupMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseTeacherMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolEntityLinkMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolHomeworkMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolLearnProgressMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolQuestionMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolResourceMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserInfoMapper.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCommentMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseCategoryMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSectionMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSignupMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseTeacherMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolEntityLinkMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolHomeworkMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolLearnProgressMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolQuestionMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolResourceMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserInfoMapper.xml create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCommentService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseCategoryService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSectionService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSignupService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseTeacherService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolEntityLinkService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolHomeworkService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolLearnProgressService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolResourceService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserInfoService.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCommentServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseCategoryServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSectionServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSignupServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseTeacherServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolEntityLinkServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolHomeworkServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolLearnProgressServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolResourceServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserInfoServiceImpl.java create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoData.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCommentList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategoryList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSectionList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignupList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacherList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLinkList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomeworkList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgressList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestionList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResourceList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.api.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.data.ts create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfoList.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolComment.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourse.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseCategory.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSection.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSignup.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseTeacher.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolEntityLink.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolHomework.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolLearnProgress.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolQuestion.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolResource.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolUserInfo.sql create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceModal.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoForm.vue create mode 100644 jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolComment.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolComment.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCommentList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourse.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseCategory.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseCategory.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseCategoryList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseSection.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseSection.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseSectionList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseSignup.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseSignup.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseSignupList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolCourseTeacherList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolEntityLink.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolEntityLink.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolEntityLinkList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolHomework.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolHomework.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolHomeworkList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolLearnProgress.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolLearnProgress.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolLearnProgressList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolQuestion.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolQuestion.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolQuestionList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolResource.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolResource.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolResourceList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/AiolUserInfo.api.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolUserInfo.data.ts create mode 100644 jeecgboot-vue3/src/views/aiol/AiolUserInfoList.vue create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolComment.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourse.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseCategory.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSection.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSignup.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseTeacher.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolEntityLink.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolHomework.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolLearnProgress.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolQuestion.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolResource.sql create mode 100644 jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolUserInfo.sql create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCommentForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCommentModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolHomeworkForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolHomeworkModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolQuestionForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolQuestionModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolResourceForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolResourceModal.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolUserInfoForm.vue create mode 100644 jeecgboot-vue3/src/views/aiol/components/AiolUserInfoModal.vue diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/pom.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/pom.xml new file mode 100644 index 00000000..c85e37c7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/pom.xml @@ -0,0 +1,36 @@ + + 4.0.0 + + org.jeecgframework.boot + jeecg-boot-module + 3.8.2 + + + jeecg-module-aiol + jar + + jeecg-module-aiol + http://maven.apache.org + + + UTF-8 + + + + + org.jeecgframework.boot + jeecg-boot-base-core + + + + org.jeecgframework.boot + jeecg-system-local-api + + + + org.jeecgframework.boot + jeecg-system-biz + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/constant/EntityLinkConst.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/constant/EntityLinkConst.java new file mode 100644 index 00000000..14b7205f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/constant/EntityLinkConst.java @@ -0,0 +1,51 @@ +package org.jeecg.modules.aiol.constant; + +/** + * entity_link 表类型常量定义 + * source_type:主体类型 + * target_type:内容类型 + */ +public final class EntityLinkConst { + + private EntityLinkConst() {} + + /** 主体类型 */ + public static final class SourceType { + private SourceType() {} + // 课程 + public static final String COURSE = "course"; + // 课程分类 + public static final String COURSE_CATEGORY = "course_category"; + // 课程章节 + public static final String COURSE_SECTION = "course_section"; + // 专题(字典/专题) + public static final String SUBJECT = "subject"; + // 活动 + public static final String ACTIVITY = "activity"; + } + + /** 内容类型 */ + public static final class TargetType { + private TargetType() {} + // 资源(对应资源表) + public static final String RESOURCE = "resource"; + // 作业(对应作业表) + public static final String HOMEWORK = "homework"; + // 考试(对应考试表) + public static final String EXAM = "exam"; + // 课程 + public static final String COURSE = "course"; + // 题库 + public static final String REPO = "repo"; + } + + /** 资源类型 0:视频,1:图片,2:文档 */ + public static final class ResourceType { + private ResourceType() {} + public static final int VIDEO = 0; + public static final int IMAGE = 1; + public static final int DOCUMENT = 2; + } +} + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCommentController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCommentController.java new file mode 100644 index 00000000..983cdc37 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCommentController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolComment; +import org.jeecg.modules.aiol.service.IAiolCommentService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 评论 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="评论") +@RestController +@RequestMapping("/aiol/aiolComment") +@Slf4j +public class AiolCommentController extends JeecgController { + @Autowired + private IAiolCommentService aiolCommentService; + + /** + * 分页列表查询 + * + * @param aiolComment + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "评论-分页列表查询") + @Operation(summary="评论-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolComment aiolComment, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolComment, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolCommentService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolComment + * @return + */ + @AutoLog(value = "评论-添加") + @Operation(summary="评论-添加") + @RequiresPermissions("aiol:aiol_comment:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolComment aiolComment) { + aiolCommentService.save(aiolComment); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolComment + * @return + */ + @AutoLog(value = "评论-编辑") + @Operation(summary="评论-编辑") + @RequiresPermissions("aiol:aiol_comment:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolComment aiolComment) { + aiolCommentService.updateById(aiolComment); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "评论-通过id删除") + @Operation(summary="评论-通过id删除") + @RequiresPermissions("aiol:aiol_comment:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolCommentService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "评论-批量删除") + @Operation(summary="评论-批量删除") + @RequiresPermissions("aiol:aiol_comment:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolCommentService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "评论-通过id查询") + @Operation(summary="评论-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolComment aiolComment = aiolCommentService.getById(id); + if(aiolComment==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolComment); + } + + /** + * 导出excel + * + * @param request + * @param aiolComment + */ + @RequiresPermissions("aiol:aiol_comment:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolComment aiolComment) { + return super.exportXls(request, aiolComment, AiolComment.class, "评论"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_comment:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolComment.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseCategoryController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseCategoryController.java new file mode 100644 index 00000000..1ff03d62 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseCategoryController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolCourseCategory; +import org.jeecg.modules.aiol.service.IAiolCourseCategoryService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 课程分类 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="课程分类") +@RestController +@RequestMapping("/aiol/aiolCourseCategory") +@Slf4j +public class AiolCourseCategoryController extends JeecgController { + @Autowired + private IAiolCourseCategoryService aiolCourseCategoryService; + + /** + * 分页列表查询 + * + * @param aiolCourseCategory + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "课程分类-分页列表查询") + @Operation(summary="课程分类-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolCourseCategory aiolCourseCategory, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolCourseCategory, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolCourseCategoryService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolCourseCategory + * @return + */ + @AutoLog(value = "课程分类-添加") + @Operation(summary="课程分类-添加") + @RequiresPermissions("aiol:aiol_course_category:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolCourseCategory aiolCourseCategory) { + aiolCourseCategoryService.save(aiolCourseCategory); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolCourseCategory + * @return + */ + @AutoLog(value = "课程分类-编辑") + @Operation(summary="课程分类-编辑") + @RequiresPermissions("aiol:aiol_course_category:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolCourseCategory aiolCourseCategory) { + aiolCourseCategoryService.updateById(aiolCourseCategory); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "课程分类-通过id删除") + @Operation(summary="课程分类-通过id删除") + @RequiresPermissions("aiol:aiol_course_category:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolCourseCategoryService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "课程分类-批量删除") + @Operation(summary="课程分类-批量删除") + @RequiresPermissions("aiol:aiol_course_category:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolCourseCategoryService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "课程分类-通过id查询") + @Operation(summary="课程分类-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolCourseCategory aiolCourseCategory = aiolCourseCategoryService.getById(id); + if(aiolCourseCategory==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolCourseCategory); + } + + /** + * 导出excel + * + * @param request + * @param aiolCourseCategory + */ + @RequiresPermissions("aiol:aiol_course_category:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolCourseCategory aiolCourseCategory) { + return super.exportXls(request, aiolCourseCategory, AiolCourseCategory.class, "课程分类"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_course_category:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolCourseCategory.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseController.java new file mode 100644 index 00000000..ed2fd762 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseController.java @@ -0,0 +1,412 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.*; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.api.ISysBaseAPI; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.config.shiro.IgnoreAuth; +import org.jeecg.modules.aiol.dto.CourseWithTeacherInfo; +import org.jeecg.modules.aiol.dto.TeacherInfo; +import org.jeecg.modules.aiol.entity.*; +import org.jeecg.modules.aiol.service.IAiolCourseService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + +/** + * @Description: 课程 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name = "课程") +@RestController +@RequestMapping("/aiol/aiolCourse") +@Slf4j +public class AiolCourseController extends JeecgController { + @Autowired + private IAiolCourseService aiolCourseService; + + /** + * 分页列表查询 + * + * @param aiolCourse + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "课程-分页列表查询") + @Operation(summary = "课程-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolCourse aiolCourse, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolCourse, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolCourseService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolCourse + * @return + */ + @AutoLog(value = "课程-添加") + @Operation(summary = "课程-添加") + @RequiresPermissions("aiol:aiol_course:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolCourse aiolCourse) { + aiolCourseService.save(aiolCourse); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolCourse + * @return + */ + @AutoLog(value = "课程-编辑") + @Operation(summary = "课程-编辑") + @RequiresPermissions("aiol:aiol_course:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result edit(@RequestBody AiolCourse aiolCourse) { + aiolCourseService.updateById(aiolCourse); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "课程-通过id删除") + @Operation(summary = "课程-通过id删除") + @RequiresPermissions("aiol:aiol_course:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name = "id", required = true) String id) { + aiolCourseService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "课程-批量删除") + @Operation(summary = "课程-批量删除") + @RequiresPermissions("aiol:aiol_course:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.aiolCourseService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "课程-通过id查询") + @Operation(summary = "课程-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name = "id", required = true) String id) { + AiolCourse aiolCourse = aiolCourseService.getById(id); + if (aiolCourse == null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolCourse); + } + + /** + * 导出excel + * + * @param request + * @param aiolCourse + */ + @RequiresPermissions("aiol:aiol_course:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolCourse aiolCourse) { + return super.exportXls(request, aiolCourse, AiolCourse.class, "课程"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_course:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolCourse.class); + } + + @Autowired + private ISysBaseAPI sysBaseApi; + + @GetMapping("/query_list") + @Operation(summary = "学员端-查询课程列表", description = "可根据分类、难度、专题进行检索,三个参数可任意传递其中之一、之二或全部,每个参数可传递多个值,用英文逗号分割,不传参或传递all则查询所有课程,携带讲师信息") + @IgnoreAuth + public Result> queryCourseList( + @RequestParam(value = "categoryId", required = false) String categoryId, + @RequestParam(value = "difficulty", required = false) String difficulty, + @RequestParam(value = "subject", required = false) String topic, + @RequestParam(value = "sort", required = false) String sort) { + List list = aiolCourseService.getCourseList(categoryId, difficulty, topic); + if (sort != null) { + switch (sort) { + case "hottest": + list = list.stream() + .sorted(Comparator.comparing(AiolCourse::getEnrollCount, Comparator.nullsLast(Integer::compareTo)).reversed()) + .collect(Collectors.toList()); + break; + case "latest": + list = list.stream() + .sorted(Comparator.comparing(AiolCourse::getCreateTime, Comparator.nullsLast(java.util.Date::compareTo)).reversed()) + .collect(Collectors.toList()); + break; + case "recommend": + default: + // 不处理,直接返回 + break; + } + } + return Result.OK(list); + } + + @GetMapping("/detail") + @Operation(summary = "查询课程详情", description = "根据课程ID查询课程详情") + @IgnoreAuth + public Result queryCourseDetail(@RequestParam(value = "id") String id) { + AiolCourse course = aiolCourseService.getById(id); + return Result.OK(course); + } + + @GetMapping("/subject/list") + @Operation(summary = "查询课程专题列表", description = "返回字典值") + @IgnoreAuth + public Result> querySubjectList() { + List list = sysBaseApi.getDictItems("course_subject"); + List simple = list.stream() + .map(d -> new LabelValue(d.getValue(), d.getLabel() != null ? d.getLabel() : d.getText())) + .collect(Collectors.toList()); + return Result.OK(simple); + } + + /** + * 仅返回 value、label 的简单对象 + */ + private static record LabelValue(String value, String label) { + } + + @GetMapping("/difficulty/list") + @Operation(summary = "查询课程难度列表", description = "返回字典值") + @IgnoreAuth + public Result> queryDifficultyList() { + List list = sysBaseApi.getDictItems("course_difficulty"); + List simple = list.stream() + .map(d -> new LabelValue(d.getValue(), d.getLabel() != null ? d.getLabel() : d.getText())) + .collect(Collectors.toList()); + return Result.OK(simple); + } + + @GetMapping("/category/list") + @Operation(summary = "查询课程分类列表", description = "根据sortOrder降序排序") + @IgnoreAuth + public Result> queryCategoryList() { + List list = aiolCourseService.getCourseCategoryList(); + return Result.OK(list); + } + + @GetMapping("/{courseId}/section") + @Operation(summary = "查询课程章节列表", description = "根据课程id查询章节列表,type表示章节类型:0=视频、1=资料、2=考试、3=作业;level表示章节层级,0=一级章节、1=二级章节,通过parentId记录父子关系,前端需自行组织树形结构;当前层级的顺序通过sortOrder排序") + @IgnoreAuth + public Result> querySectionList(@PathVariable(value = "courseId") String courseId) { + List list = aiolCourseService.getCourseSectionList(courseId); + return Result.OK(list); + } + + @GetMapping("/{courseId}/section_video/{sectionId}") + @Operation(summary = "查询视频章节详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情,不同类型的章节,返回的内容不同") + public Result> querySectionDetail(@PathVariable(value = "courseId") String courseId, @PathVariable(value = "sectionId") String sectionId) { + // TODO GC 获取用户id,根据courseId判断当前用户是否报名课程,只有已报名的课程才能查看章节详情 + + List list = aiolCourseService.getCourseSectionDetail(0, sectionId, AiolResource.class); + return Result.OK(list); + } + + @GetMapping("/{courseId}/section_document/{sectionId}") + @Operation(summary = "查询文档章节详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情,不同类型的章节,返回的内容不同") + public Result> querySectionDocumentDetail(@PathVariable(value = "courseId") String courseId, @PathVariable(value = "sectionId") String sectionId) { + // TODO GC 获取用户id,根据courseId判断当前用户是否报名课程,只有已报名的课程才能查看章节详情 + + List list = aiolCourseService.getCourseSectionDetail(1, sectionId, AiolResource.class); + return Result.OK(list); + } + + @GetMapping("/{courseId}/section_homework/{sectionId}") + @Operation(summary = "查询作业章节详情", description = "该接口需要携带用户登录token。根据章节id查询章节详情,不同类型的章节,返回的内容不同") + public Result> querySectionHomeworkDetail(@PathVariable(value = "courseId") String courseId, @PathVariable(value = "sectionId") String sectionId) { + // TODO GC 获取用户id,根据courseId判断当前用户是否报名课程,只有已报名的课程才能查看章节详情 + + List list = aiolCourseService.getCourseSectionDetail(3, sectionId, AiolHomework.class); + return Result.OK(list); + } + + @GetMapping("/{courseId}/teachers") + @Operation(summary = "查询课程的授课教师") + @IgnoreAuth + public Result> queryTeacherList(@PathVariable(value = "courseId") String courseId) { + List list = aiolCourseService.getCourseTeacherList(courseId); + return Result.OK(list); + } + + @PostMapping("/{courseId}/enroll") + @Operation(summary = "报名课程", description = "该接口需要携带用户登录token。根据课程id报名课程。返回值为报名结果,报名成功返回success") + public Result enrollCourse(@PathVariable(value = "courseId") String courseId, HttpServletRequest request, HttpServletResponse response) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + String result = aiolCourseService.enrollCourse(courseId, sysUser.getId()); + return Result.OK(result); + } + + @GetMapping("/{courseId}/is_enrolled") + @Operation(summary = "查询课程是否已报名", description = "该接口需要携带用户登录token。根据课程id查询课程是否已报名。判断返回值的result是否为true") + public Result isEnrolled(@PathVariable(value = "courseId") String courseId, HttpServletRequest request, HttpServletResponse response) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + + boolean isEnrolled = aiolCourseService.isEnrolled(courseId, sysUser.getId()); + return Result.OK(isEnrolled); + } + + @GetMapping("/teacher_list") + @Operation(summary = "查询当前教师创建的课程") + public Result> queryTeacherCourseList( + @RequestParam(value = "keyword", required = false) String keyword, + @RequestParam(value = "status", required = false) Integer status, + HttpServletRequest request, HttpServletResponse response) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + + QueryWrapper wrapper = new QueryWrapper().eq("create_by", sysUser.getUsername()); + + // 课程名关键词检索 + if (keyword != null && !keyword.trim().isEmpty()) { + wrapper.like("name", keyword.trim()); + } + + // 状态检索:0 未开始;1进行中;2已结束 + if (status != null) { + wrapper.eq("status", status); + } + + List list = aiolCourseService.list(wrapper); + return Result.OK(list); + } + + @PostMapping("/{courseId}/add_students") + @Operation(summary = "批量导入学生", description = "请求体为JSON格式,包含ids字段,ids为逗号分隔的学生ID字符串") + public Result> addStudents(@PathVariable(value = "courseId") String courseId, @RequestBody Map requestBody, HttpServletRequest request) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + + // 从Map中获取ids字段 + String ids = (String) requestBody.get("ids"); + if (ids == null || ids.trim().isEmpty()) { + return Result.error("ids字段不能为空"); + } + + return Result.OK(aiolCourseService.addStudents(courseId, ids, sysUser)); + } + + @GetMapping("/{courseId}/progress") + @Operation(summary = "查询课程学习进度") + public Result> queryCourseProgress(@PathVariable(value = "courseId") String courseId, HttpServletRequest request, HttpServletResponse response) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + + Map progress = aiolCourseService.getCourseProgress(courseId, sysUser.getId()); + return Result.OK(progress); + } + + @GetMapping("/count") + @Operation(summary = "查询课程总数", description = "返回系统中所有课程的总数量") + @IgnoreAuth + public Result queryCourseCount() { + long count = aiolCourseService.count(); + return Result.OK(count); + } + + + @GetMapping("/test") + @IgnoreAuth + public Result test() { + return Result.OK("test"); + } + + @GetMapping("/test2") + public Result test2(HttpServletRequest request, HttpServletResponse response) { + String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN); + String username = JwtUtil.getUsername(token); + LoginUser sysUser = sysBaseApi.getUserByName(username); + return Result.OK(sysUser.toString()); + } + + @GetMapping("/test3") + @IgnoreAuth + public Result test3() { + long count = aiolCourseService.count(); + return Result.OK(count); + } +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSectionController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSectionController.java new file mode 100644 index 00000000..fbf78c5e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSectionController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolCourseSection; +import org.jeecg.modules.aiol.service.IAiolCourseSectionService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 课程章节 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="课程章节") +@RestController +@RequestMapping("/aiol/aiolCourseSection") +@Slf4j +public class AiolCourseSectionController extends JeecgController { + @Autowired + private IAiolCourseSectionService aiolCourseSectionService; + + /** + * 分页列表查询 + * + * @param aiolCourseSection + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "课程章节-分页列表查询") + @Operation(summary="课程章节-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolCourseSection aiolCourseSection, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolCourseSection, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolCourseSectionService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolCourseSection + * @return + */ + @AutoLog(value = "课程章节-添加") + @Operation(summary="课程章节-添加") + @RequiresPermissions("aiol:aiol_course_section:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolCourseSection aiolCourseSection) { + aiolCourseSectionService.save(aiolCourseSection); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolCourseSection + * @return + */ + @AutoLog(value = "课程章节-编辑") + @Operation(summary="课程章节-编辑") + @RequiresPermissions("aiol:aiol_course_section:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolCourseSection aiolCourseSection) { + aiolCourseSectionService.updateById(aiolCourseSection); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "课程章节-通过id删除") + @Operation(summary="课程章节-通过id删除") + @RequiresPermissions("aiol:aiol_course_section:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolCourseSectionService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "课程章节-批量删除") + @Operation(summary="课程章节-批量删除") + @RequiresPermissions("aiol:aiol_course_section:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolCourseSectionService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "课程章节-通过id查询") + @Operation(summary="课程章节-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolCourseSection aiolCourseSection = aiolCourseSectionService.getById(id); + if(aiolCourseSection==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolCourseSection); + } + + /** + * 导出excel + * + * @param request + * @param aiolCourseSection + */ + @RequiresPermissions("aiol:aiol_course_section:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolCourseSection aiolCourseSection) { + return super.exportXls(request, aiolCourseSection, AiolCourseSection.class, "课程章节"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_course_section:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolCourseSection.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSignupController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSignupController.java new file mode 100644 index 00000000..716326dd --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseSignupController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolCourseSignup; +import org.jeecg.modules.aiol.service.IAiolCourseSignupService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 课程报名 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="课程报名") +@RestController +@RequestMapping("/aiol/aiolCourseSignup") +@Slf4j +public class AiolCourseSignupController extends JeecgController { + @Autowired + private IAiolCourseSignupService aiolCourseSignupService; + + /** + * 分页列表查询 + * + * @param aiolCourseSignup + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "课程报名-分页列表查询") + @Operation(summary="课程报名-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolCourseSignup aiolCourseSignup, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolCourseSignup, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolCourseSignupService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolCourseSignup + * @return + */ + @AutoLog(value = "课程报名-添加") + @Operation(summary="课程报名-添加") + @RequiresPermissions("aiol:aiol_course_signup:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolCourseSignup aiolCourseSignup) { + aiolCourseSignupService.save(aiolCourseSignup); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolCourseSignup + * @return + */ + @AutoLog(value = "课程报名-编辑") + @Operation(summary="课程报名-编辑") + @RequiresPermissions("aiol:aiol_course_signup:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolCourseSignup aiolCourseSignup) { + aiolCourseSignupService.updateById(aiolCourseSignup); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "课程报名-通过id删除") + @Operation(summary="课程报名-通过id删除") + @RequiresPermissions("aiol:aiol_course_signup:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolCourseSignupService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "课程报名-批量删除") + @Operation(summary="课程报名-批量删除") + @RequiresPermissions("aiol:aiol_course_signup:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolCourseSignupService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "课程报名-通过id查询") + @Operation(summary="课程报名-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolCourseSignup aiolCourseSignup = aiolCourseSignupService.getById(id); + if(aiolCourseSignup==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolCourseSignup); + } + + /** + * 导出excel + * + * @param request + * @param aiolCourseSignup + */ + @RequiresPermissions("aiol:aiol_course_signup:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolCourseSignup aiolCourseSignup) { + return super.exportXls(request, aiolCourseSignup, AiolCourseSignup.class, "课程报名"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_course_signup:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolCourseSignup.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseTeacherController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseTeacherController.java new file mode 100644 index 00000000..7c9a9164 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolCourseTeacherController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolCourseTeacher; +import org.jeecg.modules.aiol.service.IAiolCourseTeacherService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="授课教师") +@RestController +@RequestMapping("/aiol/aiolCourseTeacher") +@Slf4j +public class AiolCourseTeacherController extends JeecgController { + @Autowired + private IAiolCourseTeacherService aiolCourseTeacherService; + + /** + * 分页列表查询 + * + * @param aiolCourseTeacher + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "授课教师-分页列表查询") + @Operation(summary="授课教师-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolCourseTeacher aiolCourseTeacher, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolCourseTeacher, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolCourseTeacherService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolCourseTeacher + * @return + */ + @AutoLog(value = "授课教师-添加") + @Operation(summary="授课教师-添加") + @RequiresPermissions("aiol:aiol_course_teacher:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolCourseTeacher aiolCourseTeacher) { + aiolCourseTeacherService.save(aiolCourseTeacher); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolCourseTeacher + * @return + */ + @AutoLog(value = "授课教师-编辑") + @Operation(summary="授课教师-编辑") + @RequiresPermissions("aiol:aiol_course_teacher:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolCourseTeacher aiolCourseTeacher) { + aiolCourseTeacherService.updateById(aiolCourseTeacher); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "授课教师-通过id删除") + @Operation(summary="授课教师-通过id删除") + @RequiresPermissions("aiol:aiol_course_teacher:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolCourseTeacherService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "授课教师-批量删除") + @Operation(summary="授课教师-批量删除") + @RequiresPermissions("aiol:aiol_course_teacher:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolCourseTeacherService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "授课教师-通过id查询") + @Operation(summary="授课教师-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolCourseTeacher aiolCourseTeacher = aiolCourseTeacherService.getById(id); + if(aiolCourseTeacher==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolCourseTeacher); + } + + /** + * 导出excel + * + * @param request + * @param aiolCourseTeacher + */ + @RequiresPermissions("aiol:aiol_course_teacher:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolCourseTeacher aiolCourseTeacher) { + return super.exportXls(request, aiolCourseTeacher, AiolCourseTeacher.class, "授课教师"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_course_teacher:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolCourseTeacher.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolEntityLinkController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolEntityLinkController.java new file mode 100644 index 00000000..7e38f854 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolEntityLinkController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolEntityLink; +import org.jeecg.modules.aiol.service.IAiolEntityLinkService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 主体绑定 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="主体绑定") +@RestController +@RequestMapping("/aiol/aiolEntityLink") +@Slf4j +public class AiolEntityLinkController extends JeecgController { + @Autowired + private IAiolEntityLinkService aiolEntityLinkService; + + /** + * 分页列表查询 + * + * @param aiolEntityLink + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "主体绑定-分页列表查询") + @Operation(summary="主体绑定-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolEntityLink aiolEntityLink, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolEntityLink, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolEntityLinkService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolEntityLink + * @return + */ + @AutoLog(value = "主体绑定-添加") + @Operation(summary="主体绑定-添加") + @RequiresPermissions("aiol:aiol_entity_link:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolEntityLink aiolEntityLink) { + aiolEntityLinkService.save(aiolEntityLink); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolEntityLink + * @return + */ + @AutoLog(value = "主体绑定-编辑") + @Operation(summary="主体绑定-编辑") + @RequiresPermissions("aiol:aiol_entity_link:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolEntityLink aiolEntityLink) { + aiolEntityLinkService.updateById(aiolEntityLink); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "主体绑定-通过id删除") + @Operation(summary="主体绑定-通过id删除") + @RequiresPermissions("aiol:aiol_entity_link:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolEntityLinkService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "主体绑定-批量删除") + @Operation(summary="主体绑定-批量删除") + @RequiresPermissions("aiol:aiol_entity_link:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolEntityLinkService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "主体绑定-通过id查询") + @Operation(summary="主体绑定-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolEntityLink aiolEntityLink = aiolEntityLinkService.getById(id); + if(aiolEntityLink==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolEntityLink); + } + + /** + * 导出excel + * + * @param request + * @param aiolEntityLink + */ + @RequiresPermissions("aiol:aiol_entity_link:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolEntityLink aiolEntityLink) { + return super.exportXls(request, aiolEntityLink, AiolEntityLink.class, "主体绑定"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_entity_link:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolEntityLink.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java new file mode 100644 index 00000000..ebd7bf00 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolHomeworkController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolHomework; +import org.jeecg.modules.aiol.service.IAiolHomeworkService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 作业 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="作业") +@RestController +@RequestMapping("/aiol/aiolHomework") +@Slf4j +public class AiolHomeworkController extends JeecgController { + @Autowired + private IAiolHomeworkService aiolHomeworkService; + + /** + * 分页列表查询 + * + * @param aiolHomework + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "作业-分页列表查询") + @Operation(summary="作业-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolHomework aiolHomework, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolHomework, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolHomeworkService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolHomework + * @return + */ + @AutoLog(value = "作业-添加") + @Operation(summary="作业-添加") + @RequiresPermissions("aiol:aiol_homework:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolHomework aiolHomework) { + aiolHomeworkService.save(aiolHomework); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolHomework + * @return + */ + @AutoLog(value = "作业-编辑") + @Operation(summary="作业-编辑") + @RequiresPermissions("aiol:aiol_homework:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolHomework aiolHomework) { + aiolHomeworkService.updateById(aiolHomework); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "作业-通过id删除") + @Operation(summary="作业-通过id删除") + @RequiresPermissions("aiol:aiol_homework:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolHomeworkService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "作业-批量删除") + @Operation(summary="作业-批量删除") + @RequiresPermissions("aiol:aiol_homework:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolHomeworkService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "作业-通过id查询") + @Operation(summary="作业-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolHomework aiolHomework = aiolHomeworkService.getById(id); + if(aiolHomework==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolHomework); + } + + /** + * 导出excel + * + * @param request + * @param aiolHomework + */ + @RequiresPermissions("aiol:aiol_homework:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolHomework aiolHomework) { + return super.exportXls(request, aiolHomework, AiolHomework.class, "作业"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_homework:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolHomework.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolLearnProgressController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolLearnProgressController.java new file mode 100644 index 00000000..55174ba4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolLearnProgressController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolLearnProgress; +import org.jeecg.modules.aiol.service.IAiolLearnProgressService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 学习进度 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="学习进度") +@RestController +@RequestMapping("/aiol/aiolLearnProgress") +@Slf4j +public class AiolLearnProgressController extends JeecgController { + @Autowired + private IAiolLearnProgressService aiolLearnProgressService; + + /** + * 分页列表查询 + * + * @param aiolLearnProgress + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "学习进度-分页列表查询") + @Operation(summary="学习进度-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolLearnProgress aiolLearnProgress, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolLearnProgress, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolLearnProgressService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolLearnProgress + * @return + */ + @AutoLog(value = "学习进度-添加") + @Operation(summary="学习进度-添加") + @RequiresPermissions("aiol:aiol_learn_progress:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolLearnProgress aiolLearnProgress) { + aiolLearnProgressService.save(aiolLearnProgress); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolLearnProgress + * @return + */ + @AutoLog(value = "学习进度-编辑") + @Operation(summary="学习进度-编辑") + @RequiresPermissions("aiol:aiol_learn_progress:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolLearnProgress aiolLearnProgress) { + aiolLearnProgressService.updateById(aiolLearnProgress); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "学习进度-通过id删除") + @Operation(summary="学习进度-通过id删除") + @RequiresPermissions("aiol:aiol_learn_progress:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolLearnProgressService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "学习进度-批量删除") + @Operation(summary="学习进度-批量删除") + @RequiresPermissions("aiol:aiol_learn_progress:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolLearnProgressService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "学习进度-通过id查询") + @Operation(summary="学习进度-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolLearnProgress aiolLearnProgress = aiolLearnProgressService.getById(id); + if(aiolLearnProgress==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolLearnProgress); + } + + /** + * 导出excel + * + * @param request + * @param aiolLearnProgress + */ + @RequiresPermissions("aiol:aiol_learn_progress:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolLearnProgress aiolLearnProgress) { + return super.exportXls(request, aiolLearnProgress, AiolLearnProgress.class, "学习进度"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_learn_progress:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolLearnProgress.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java new file mode 100644 index 00000000..912e6420 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolQuestionController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolQuestion; +import org.jeecg.modules.aiol.service.IAiolQuestionService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 题目 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="题目") +@RestController +@RequestMapping("/aiol/aiolQuestion") +@Slf4j +public class AiolQuestionController extends JeecgController { + @Autowired + private IAiolQuestionService aiolQuestionService; + + /** + * 分页列表查询 + * + * @param aiolQuestion + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "题目-分页列表查询") + @Operation(summary="题目-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolQuestion aiolQuestion, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolQuestion, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolQuestionService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolQuestion + * @return + */ + @AutoLog(value = "题目-添加") + @Operation(summary="题目-添加") + @RequiresPermissions("aiol:aiol_question:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolQuestion aiolQuestion) { + aiolQuestionService.save(aiolQuestion); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolQuestion + * @return + */ + @AutoLog(value = "题目-编辑") + @Operation(summary="题目-编辑") + @RequiresPermissions("aiol:aiol_question:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolQuestion aiolQuestion) { + aiolQuestionService.updateById(aiolQuestion); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "题目-通过id删除") + @Operation(summary="题目-通过id删除") + @RequiresPermissions("aiol:aiol_question:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolQuestionService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "题目-批量删除") + @Operation(summary="题目-批量删除") + @RequiresPermissions("aiol:aiol_question:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolQuestionService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "题目-通过id查询") + @Operation(summary="题目-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolQuestion aiolQuestion = aiolQuestionService.getById(id); + if(aiolQuestion==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolQuestion); + } + + /** + * 导出excel + * + * @param request + * @param aiolQuestion + */ + @RequiresPermissions("aiol:aiol_question:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolQuestion aiolQuestion) { + return super.exportXls(request, aiolQuestion, AiolQuestion.class, "题目"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_question:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolQuestion.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolResourceController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolResourceController.java new file mode 100644 index 00000000..dd708d3d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolResourceController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolResource; +import org.jeecg.modules.aiol.service.IAiolResourceService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 资源 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="资源") +@RestController +@RequestMapping("/aiol/aiolResource") +@Slf4j +public class AiolResourceController extends JeecgController { + @Autowired + private IAiolResourceService aiolResourceService; + + /** + * 分页列表查询 + * + * @param aiolResource + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "资源-分页列表查询") + @Operation(summary="资源-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolResource aiolResource, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolResource, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolResourceService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolResource + * @return + */ + @AutoLog(value = "资源-添加") + @Operation(summary="资源-添加") + @RequiresPermissions("aiol:aiol_resource:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolResource aiolResource) { + aiolResourceService.save(aiolResource); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolResource + * @return + */ + @AutoLog(value = "资源-编辑") + @Operation(summary="资源-编辑") + @RequiresPermissions("aiol:aiol_resource:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolResource aiolResource) { + aiolResourceService.updateById(aiolResource); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "资源-通过id删除") + @Operation(summary="资源-通过id删除") + @RequiresPermissions("aiol:aiol_resource:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolResourceService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "资源-批量删除") + @Operation(summary="资源-批量删除") + @RequiresPermissions("aiol:aiol_resource:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolResourceService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "资源-通过id查询") + @Operation(summary="资源-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolResource aiolResource = aiolResourceService.getById(id); + if(aiolResource==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolResource); + } + + /** + * 导出excel + * + * @param request + * @param aiolResource + */ + @RequiresPermissions("aiol:aiol_resource:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolResource aiolResource) { + return super.exportXls(request, aiolResource, AiolResource.class, "资源"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_resource:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolResource.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserInfoController.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserInfoController.java new file mode 100644 index 00000000..3ee1446b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/controller/AiolUserInfoController.java @@ -0,0 +1,182 @@ +package org.jeecg.modules.aiol.controller; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.common.system.query.QueryRuleEnum; +import org.jeecg.common.util.oConvertUtils; +import org.jeecg.modules.aiol.entity.AiolUserInfo; +import org.jeecg.modules.aiol.service.IAiolUserInfoService; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.extern.slf4j.Slf4j; + +import org.jeecgframework.poi.excel.ExcelImportUtil; +import org.jeecgframework.poi.excel.def.NormalExcelConstants; +import org.jeecgframework.poi.excel.entity.ExportParams; +import org.jeecgframework.poi.excel.entity.ImportParams; +import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; +import org.jeecg.common.system.base.controller.JeecgController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.multipart.MultipartHttpServletRequest; +import org.springframework.web.servlet.ModelAndView; +import com.alibaba.fastjson.JSON; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.apache.shiro.authz.annotation.RequiresPermissions; + /** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Tag(name="用户信息") +@RestController +@RequestMapping("/aiol/aiolUserInfo") +@Slf4j +public class AiolUserInfoController extends JeecgController { + @Autowired + private IAiolUserInfoService aiolUserInfoService; + + /** + * 分页列表查询 + * + * @param aiolUserInfo + * @param pageNo + * @param pageSize + * @param req + * @return + */ + //@AutoLog(value = "用户信息-分页列表查询") + @Operation(summary="用户信息-分页列表查询") + @GetMapping(value = "/list") + public Result> queryPageList(AiolUserInfo aiolUserInfo, + @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, + @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, + HttpServletRequest req) { + + + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(aiolUserInfo, req.getParameterMap()); + Page page = new Page(pageNo, pageSize); + IPage pageList = aiolUserInfoService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 添加 + * + * @param aiolUserInfo + * @return + */ + @AutoLog(value = "用户信息-添加") + @Operation(summary="用户信息-添加") + @RequiresPermissions("aiol:aiol_user_info:add") + @PostMapping(value = "/add") + public Result add(@RequestBody AiolUserInfo aiolUserInfo) { + aiolUserInfoService.save(aiolUserInfo); + + return Result.OK("添加成功!"); + } + + /** + * 编辑 + * + * @param aiolUserInfo + * @return + */ + @AutoLog(value = "用户信息-编辑") + @Operation(summary="用户信息-编辑") + @RequiresPermissions("aiol:aiol_user_info:edit") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) + public Result edit(@RequestBody AiolUserInfo aiolUserInfo) { + aiolUserInfoService.updateById(aiolUserInfo); + return Result.OK("编辑成功!"); + } + + /** + * 通过id删除 + * + * @param id + * @return + */ + @AutoLog(value = "用户信息-通过id删除") + @Operation(summary="用户信息-通过id删除") + @RequiresPermissions("aiol:aiol_user_info:delete") + @DeleteMapping(value = "/delete") + public Result delete(@RequestParam(name="id",required=true) String id) { + aiolUserInfoService.removeById(id); + return Result.OK("删除成功!"); + } + + /** + * 批量删除 + * + * @param ids + * @return + */ + @AutoLog(value = "用户信息-批量删除") + @Operation(summary="用户信息-批量删除") + @RequiresPermissions("aiol:aiol_user_info:deleteBatch") + @DeleteMapping(value = "/deleteBatch") + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids) { + this.aiolUserInfoService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("批量删除成功!"); + } + + /** + * 通过id查询 + * + * @param id + * @return + */ + //@AutoLog(value = "用户信息-通过id查询") + @Operation(summary="用户信息-通过id查询") + @GetMapping(value = "/queryById") + public Result queryById(@RequestParam(name="id",required=true) String id) { + AiolUserInfo aiolUserInfo = aiolUserInfoService.getById(id); + if(aiolUserInfo==null) { + return Result.error("未找到对应数据"); + } + return Result.OK(aiolUserInfo); + } + + /** + * 导出excel + * + * @param request + * @param aiolUserInfo + */ + @RequiresPermissions("aiol:aiol_user_info:exportXls") + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, AiolUserInfo aiolUserInfo) { + return super.exportXls(request, aiolUserInfo, AiolUserInfo.class, "用户信息"); + } + + /** + * 通过excel导入数据 + * + * @param request + * @param response + * @return + */ + @RequiresPermissions("aiol:aiol_user_info:importExcel") + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, AiolUserInfo.class); + } + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CommentWithUserInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CommentWithUserInfo.java new file mode 100644 index 00000000..cb7a0f4f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CommentWithUserInfo.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.aiol.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.jeecg.modules.aiol.entity.AiolComment; + +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(description = "评论信息(包含用户信息)") +public class CommentWithUserInfo extends AiolComment { + @Schema(description = "用户姓名") + private String userName; + + @Schema(description = "用户头像") + private String userAvatar; + + @Schema(description = "用户标签") + private String userTag; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CourseWithTeacherInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CourseWithTeacherInfo.java new file mode 100644 index 00000000..97d1fa21 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/CourseWithTeacherInfo.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.aiol.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.jeecg.modules.aiol.entity.AiolCourse; + +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +@Schema(description = "课程信息(包含讲师信息)") +public class CourseWithTeacherInfo extends AiolCourse { + @Schema(description = "授课讲师列表") + private List teacherList; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/QuestionAnswerDTO.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/QuestionAnswerDTO.java new file mode 100644 index 00000000..4bac3ac3 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/QuestionAnswerDTO.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.dto; + +import lombok.Data; +import org.jeecg.modules.aiol.entity.AiolQuestion; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class QuestionAnswerDTO { + //题目内容 + private AiolQuestion question; + //答案 + private List answer; + //子题目列表 + private List children = new ArrayList<>(); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/StudentSubmitHomework.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/StudentSubmitHomework.java new file mode 100644 index 00000000..62ce226c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/StudentSubmitHomework.java @@ -0,0 +1,25 @@ +package org.jeecg.modules.aiol.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "学生提交作业") +public class StudentSubmitHomework { + /**作业id*/ + @Schema(description = "作业id") + private String homeworkId; + /**学生id*/ + @Schema(description = "学生id") + private String studentId; + /**作业内容*/ + @Schema(description = "作业内容") + private String content; + /**附件*/ + @Schema(description = "附件") + private String attachment; + /**状态*/ + @Schema(description = "状态") + private Integer status; + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/TeacherInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/TeacherInfo.java new file mode 100644 index 00000000..f6745dc7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/TeacherInfo.java @@ -0,0 +1,26 @@ +package org.jeecg.modules.aiol.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "讲师信息") +public class TeacherInfo { + @Schema(description = "讲师ID") + private String id; + + @Schema(description = "讲师姓名") + private String name; + + @Schema(description = "讲师头像") + private String avatar; + + @Schema(description = "职称") + private String title; + + @Schema(description = "标签") + private String tag; + + @Schema(description = "显示顺序") + private Integer sortOrder; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserInfoResponse.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserInfoResponse.java new file mode 100644 index 00000000..10f510a9 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/dto/UserInfoResponse.java @@ -0,0 +1,74 @@ +package org.jeecg.modules.aiol.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@Schema(description = "用户信息响应对象") +public class UserInfoResponse { + + @Schema(description = "用户基本信息") + private BaseInfo baseInfo; + + @Schema(description = "用户角色列表") + private List roles; + + @Schema(description = "扩展用户信息") + private ExtendedInfo extendedInfo; + + @Data + @Schema(description = "用户基本信息") + public static class BaseInfo { + @Schema(description = "用户ID") + private String id; + + @Schema(description = "用户名") + private String username; + + @Schema(description = "真实姓名") + private String realname; + + @Schema(description = "头像") + private String avatar; + + @Schema(description = "手机号") + private String phone; + + @Schema(description = "邮箱") + private String email; + + @Schema(description = "性别(1-男,2-女)") + private Integer sex; + + @Schema(description = "生日") + private Date birthday; + + @Schema(description = "状态(1-正常,2-冻结)") + private Integer status; + } + + @Data + @Schema(description = "扩展用户信息") + public static class ExtendedInfo { + @Schema(description = "专业") + private String major; + + @Schema(description = "学院") + private String college; + + @Schema(description = "学历") + private String education; + + @Schema(description = "职称") + private String title; + + @Schema(description = "标签") + private String tag; + + @Schema(description = "显示顺序") + private Integer sortOrder; + } +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolComment.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolComment.java new file mode 100644 index 00000000..48e31439 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolComment.java @@ -0,0 +1,84 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 评论 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_comment") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="评论") +public class AiolComment implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @Schema(description = "用户id") + private java.lang.String userId; + /**目标类型*/ + @Excel(name = "目标类型", width = 15) + @Schema(description = "目标类型") + private java.lang.String targetType; + /**目标id*/ + @Excel(name = "目标id", width = 15) + @Schema(description = "目标id") + private java.lang.String targetId; + /**内容*/ + @Excel(name = "内容", width = 15) + @Schema(description = "内容") + private java.lang.String content; + /**图片*/ + @Excel(name = "图片", width = 15) + @Schema(description = "图片") + private java.lang.String imgs; + /**是否置顶*/ + @Excel(name = "是否置顶", width = 15) + @Schema(description = "是否置顶") + private java.lang.Integer izTop; + /**点赞数*/ + @Excel(name = "点赞数", width = 15) + @Schema(description = "点赞数") + private java.lang.Integer likeCount; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java new file mode 100644 index 00000000..36701124 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourse.java @@ -0,0 +1,140 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 课程 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_course") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="课程") +public class AiolCourse implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private String id; + /**课程名*/ + @Excel(name = "课程名", width = 15) + @Schema(description = "课程名") + private String name; + /**封面图*/ + @Excel(name = "封面图", width = 15) + @Schema(description = "封面图") + private String cover; + /**介绍视频*/ + @Excel(name = "介绍视频", width = 15) + @Schema(description = "介绍视频") + private String video; + /**学校*/ + @Excel(name = "学校", width = 15) + @Schema(description = "学校") + private String school; + /**课程概述*/ + @Excel(name = "课程概述", width = 15) + @Schema(description = "课程概述") + private String description; + /**课程类型*/ + @Excel(name = "课程类型", width = 15, dicCode = "course_type") + @Dict(dicCode = "course_type") + @Schema(description = "课程类型") + private Integer type; + /**授课目标*/ + @Excel(name = "授课目标", width = 15) + @Schema(description = "授课目标") + private String target; + /**课程难度*/ + @Excel(name = "课程难度", width = 15, dicCode = "course_difficulty") + @Dict(dicCode = "course_difficulty") + @Schema(description = "课程难度") + private Integer difficulty; + /**所属专题*/ + @Excel(name = "所属专题", width = 15, dicCode = "course_subject") + @Dict(dicCode = "course_subject") + @Schema(description = "所属专题") + private String subject; + /**课程大纲*/ + @Excel(name = "课程大纲", width = 15) + @Schema(description = "课程大纲") + private String outline; + /**预备知识*/ + @Excel(name = "预备知识", width = 15) + @Schema(description = "预备知识") + private String prerequisite; + /**参考资料*/ + @Excel(name = "参考资料", width = 15) + @Schema(description = "参考资料") + private String reference; + /**学时安排*/ + @Excel(name = "学时安排", width = 15) + @Schema(description = "学时安排") + private String arrangement; + /**开课时间*/ + @Excel(name = "开课时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "开课时间") + private Date startTime; + /**结课时间*/ + @Excel(name = "结课时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "结课时间") + private Date endTime; + /**已报名人数*/ + @Excel(name = "已报名人数", width = 15) + @Schema(description = "已报名人数") + private Integer enrollCount; + /**最大报名人数*/ + @Excel(name = "最大报名人数", width = 15) + @Schema(description = "最大报名人数") + private Integer maxEnroll; + /**状态*/ + @Excel(name = "状态", width = 15, dicCode = "course_status") + @Dict(dicCode = "course_status") + @Schema(description = "状态") + private Integer status; + /**常见问题*/ + @Excel(name = "常见问题", width = 15) + @Schema(description = "常见问题") + private String question; + /**创建人*/ + @Schema(description = "创建人") + private String createBy; + /**创建时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建时间") + private Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private String updateBy; + /**更新时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新时间") + private Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseCategory.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseCategory.java new file mode 100644 index 00000000..cf37138d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseCategory.java @@ -0,0 +1,64 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 课程分类 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_course_category") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="课程分类") +public class AiolCourseCategory implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**分类名*/ + @Excel(name = "分类名", width = 15) + @Schema(description = "分类名") + private java.lang.String name; + /**排序*/ + @Excel(name = "排序", width = 15) + @Schema(description = "排序") + private java.lang.Integer sortOrder; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建时间") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新时间*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新时间") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSection.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSection.java new file mode 100644 index 00000000..a0e07e91 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSection.java @@ -0,0 +1,82 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 课程章节 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_course_section") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="课程章节") +public class AiolCourseSection implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**课程id*/ + @Excel(name = "课程id", width = 15) + @Schema(description = "课程id") + private java.lang.String courseId; + /**章节名*/ + @Excel(name = "章节名", width = 15) + @Schema(description = "章节名") + private java.lang.String name; + /**章节类型*/ + @Excel(name = "章节类型", width = 15, dicCode = "course_section_type") + @Dict(dicCode = "course_section_type") + @Schema(description = "章节类型") + private java.lang.Integer type; + /**排序号*/ + @Excel(name = "排序号", width = 15) + @Schema(description = "排序号") + private java.lang.Integer sortOrder; + /**父章节id*/ + @Excel(name = "父章节id", width = 15) + @Schema(description = "父章节id") + private java.lang.String parentId; + /**章节层级*/ + @Excel(name = "章节层级", width = 15, dicCode = "course_section_level") + @Dict(dicCode = "course_section_level") + @Schema(description = "章节层级") + private java.lang.Integer level; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSignup.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSignup.java new file mode 100644 index 00000000..a2a0c5bb --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseSignup.java @@ -0,0 +1,64 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 课程报名 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_course_signup") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="课程报名") +public class AiolCourseSignup implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @Schema(description = "用户id") + private java.lang.String userId; + /**课程id*/ + @Excel(name = "课程id", width = 15) + @Schema(description = "课程id") + private java.lang.String courseId; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseTeacher.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseTeacher.java new file mode 100644 index 00000000..853f97be --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolCourseTeacher.java @@ -0,0 +1,73 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_course_teacher") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="授课教师") +public class AiolCourseTeacher implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**课程id*/ + @Excel(name = "课程id", width = 15) + @Schema(description = "课程id") + private java.lang.String courseId; + /**教师id*/ + @Excel(name = "教师id", width = 15) + @Schema(description = "教师id") + private java.lang.String teacherId; + /**授课角色*/ + @Excel(name = "授课角色", width = 15, dicCode = "course_role") + @Dict(dicCode = "course_role") + @Schema(description = "授课角色") + private java.lang.String role; + /**显示顺序*/ + @Excel(name = "显示顺序", width = 15) + @Schema(description = "显示顺序") + private java.lang.Integer sortOrder; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolEntityLink.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolEntityLink.java new file mode 100644 index 00000000..29815d06 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolEntityLink.java @@ -0,0 +1,68 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 主体绑定 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_entity_link") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="主体绑定") +public class AiolEntityLink implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**主体类型*/ + @Excel(name = "主体类型", width = 15) + @Schema(description = "主体类型") + private java.lang.String sourceType; + /**主体id*/ + @Excel(name = "主体id", width = 15) + @Schema(description = "主体id") + private java.lang.String sourceId; + /**内容类型*/ + @Excel(name = "内容类型", width = 15) + @Schema(description = "内容类型") + private java.lang.String targetType; + /**内容id*/ + @Excel(name = "内容id", width = 15) + @Schema(description = "内容id") + private java.lang.String targetId; + /**排序*/ + @Excel(name = "排序", width = 15) + @Schema(description = "排序") + private java.lang.Integer sortOrder; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolHomework.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolHomework.java new file mode 100644 index 00000000..acbd53d4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolHomework.java @@ -0,0 +1,93 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 作业 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_homework") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="作业") +public class AiolHomework implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**标题*/ + @Excel(name = "标题", width = 15) + @Schema(description = "标题") + private java.lang.String title; + /**说明*/ + @Excel(name = "说明", width = 15) + @Schema(description = "说明") + private java.lang.String description; + /**附件*/ + @Excel(name = "附件", width = 15) + @Schema(description = "附件") + private java.lang.String attachment; + /**满分*/ + @Excel(name = "满分", width = 15) + @Schema(description = "满分") + private java.lang.Integer maxScore; + /**及格分数*/ + @Excel(name = "及格分数", width = 15) + @Schema(description = "及格分数") + private java.lang.Integer passScore; + /**开始时间*/ + @Excel(name = "开始时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "开始时间") + private java.util.Date startTime; + /**结束时间*/ + @Excel(name = "结束时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "结束时间") + private java.util.Date endTime; + /**状态*/ + @Excel(name = "状态", width = 15, dicCode = "course_status") + @Dict(dicCode = "course_status") + @Schema(description = "状态") + private java.lang.Integer status; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolLearnProgress.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolLearnProgress.java new file mode 100644 index 00000000..813fd886 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolLearnProgress.java @@ -0,0 +1,80 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 学习进度 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_learn_progress") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="学习进度") +public class AiolLearnProgress implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @Schema(description = "用户id") + private java.lang.String userId; + /**课程id*/ + @Excel(name = "课程id", width = 15) + @Schema(description = "课程id") + private java.lang.String courseId; + /**章节id*/ + @Excel(name = "章节id", width = 15) + @Schema(description = "章节id") + private java.lang.String sectionId; + /**进度*/ + @Excel(name = "进度", width = 15) + @Schema(description = "进度") + private java.lang.Integer progress; + /**时长*/ + @Excel(name = "时长", width = 15) + @Schema(description = "时长") + private java.lang.Integer duration; + /**状态*/ + @Excel(name = "状态", width = 15) + @Schema(description = "状态") + private java.lang.Integer status; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolQuestion.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolQuestion.java new file mode 100644 index 00000000..c1bd1a59 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolQuestion.java @@ -0,0 +1,82 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 题目 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_question") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="题目") +public class AiolQuestion implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**父题目id*/ + @Excel(name = "父题目id", width = 15) + @Schema(description = "父题目id") + private java.lang.String parentId; + /**题目类型*/ + @Excel(name = "题目类型", width = 15, dicCode = "question_type") + @Dict(dicCode = "question_type") + @Schema(description = "题目类型") + private java.lang.Integer type; + /**题干*/ + @Excel(name = "题干", width = 15) + @Schema(description = "题干") + private java.lang.String content; + /**题目解析*/ + @Excel(name = "题目解析", width = 15) + @Schema(description = "题目解析") + private java.lang.String analysis; + /**难度*/ + @Excel(name = "难度", width = 15, dicCode = "question_difficulty") + @Dict(dicCode = "question_difficulty") + @Schema(description = "难度") + private java.lang.Integer difficulty; + /**分值*/ + @Excel(name = "分值", width = 15) + @Schema(description = "分值") + private java.lang.Integer score; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolResource.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolResource.java new file mode 100644 index 00000000..7e0de7a9 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolResource.java @@ -0,0 +1,103 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 资源 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_resource") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="资源") +public class AiolResource implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**资源名*/ + @Excel(name = "资源名", width = 15) + @Schema(description = "资源名") + private java.lang.String name; + /**描述*/ + @Excel(name = "描述", width = 15) + @Schema(description = "描述") + private java.lang.String description; + /**资源类型*/ + @Excel(name = "资源类型", width = 15, dicCode = "resource_type") + @Dict(dicCode = "resource_type") + @Schema(description = "资源类型") + private java.lang.Integer type; + /**文件url*/ + @Excel(name = "文件url", width = 15) + @Schema(description = "文件url") + private java.lang.String fileUrl; + /**缩略图url*/ + @Excel(name = "缩略图url", width = 15) + @Schema(description = "缩略图url") + private java.lang.String thumbnailUrl; + /**时长*/ + @Excel(name = "时长", width = 15) + @Schema(description = "时长") + private java.lang.Integer duration; + /**文件大小*/ + @Excel(name = "文件大小", width = 15) + @Schema(description = "文件大小") + private java.lang.Integer fileSize; + /**文件元数据*/ + @Excel(name = "文件元数据", width = 15) + @Schema(description = "文件元数据") + private java.lang.String metadata; + /**是否精选*/ + @Excel(name = "是否精选", width = 15, dicCode = "resource_iz_featured") + @Dict(dicCode = "resource_iz_featured") + @Schema(description = "是否精选") + private java.lang.Integer izFeatured; + /**状态*/ + @Excel(name = "状态", width = 15, dicCode = "resource_status") + @Dict(dicCode = "resource_status") + @Schema(description = "状态") + private java.lang.Integer status; + /**创建人*/ + @Excel(name = "创建人", width = 15) + @Schema(description = "创建人") + private java.lang.String createdBy; + /**创建时间*/ + @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建时间") + private java.util.Date createdTime; + /**更新人*/ + @Excel(name = "更新人", width = 15) + @Schema(description = "更新人") + private java.lang.String updatedBy; + /**更新时间*/ + @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新时间") + private java.util.Date updatedTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserInfo.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserInfo.java new file mode 100644 index 00000000..2e03fa04 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/entity/AiolUserInfo.java @@ -0,0 +1,84 @@ +package org.jeecg.modules.aiol.entity; + +import java.io.Serializable; +import java.io.UnsupportedEncodingException; +import java.util.Date; +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.TableLogic; +import org.jeecg.common.constant.ProvinceCityArea; +import org.jeecg.common.util.SpringContextUtils; +import lombok.Data; +import com.fasterxml.jackson.annotation.JsonFormat; +import org.springframework.format.annotation.DateTimeFormat; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.jeecg.common.aspect.annotation.Dict; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Data +@TableName("aiol_user_info") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@Schema(description="用户信息") +public class AiolUserInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /**主键*/ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键") + private java.lang.String id; + /**用户id*/ + @Excel(name = "用户id", width = 15) + @Schema(description = "用户id") + private java.lang.String userId; + /**专业*/ + @Excel(name = "专业", width = 15) + @Schema(description = "专业") + private java.lang.String major; + /**学院*/ + @Excel(name = "学院", width = 15) + @Schema(description = "学院") + private java.lang.String college; + /**学历*/ + @Excel(name = "学历", width = 15) + @Schema(description = "学历") + private java.lang.String education; + /**职称*/ + @Excel(name = "职称", width = 15) + @Schema(description = "职称") + private java.lang.String title; + /**标签*/ + @Excel(name = "标签", width = 15) + @Schema(description = "标签") + private java.lang.String tag; + /**显示顺序*/ + @Excel(name = "显示顺序", width = 15) + @Schema(description = "显示顺序") + private java.lang.Integer sortOrder; + /**创建人*/ + @Schema(description = "创建人") + private java.lang.String createBy; + /**创建日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "创建日期") + private java.util.Date createTime; + /**更新人*/ + @Schema(description = "更新人") + private java.lang.String updateBy; + /**更新日期*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @Schema(description = "更新日期") + private java.util.Date updateTime; +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCommentMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCommentMapper.java new file mode 100644 index 00000000..524c8afe --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCommentMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolComment; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 评论 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolCommentMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseCategoryMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseCategoryMapper.java new file mode 100644 index 00000000..ed2f3895 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseCategoryMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolCourseCategory; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 课程分类 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolCourseCategoryMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseMapper.java new file mode 100644 index 00000000..d69e13f8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolCourse; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 课程 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolCourseMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSectionMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSectionMapper.java new file mode 100644 index 00000000..a0f44607 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSectionMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolCourseSection; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 课程章节 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolCourseSectionMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSignupMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSignupMapper.java new file mode 100644 index 00000000..3c73adac --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseSignupMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolCourseSignup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 课程报名 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolCourseSignupMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseTeacherMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseTeacherMapper.java new file mode 100644 index 00000000..bd8da31c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolCourseTeacherMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolCourseTeacher; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolCourseTeacherMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolEntityLinkMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolEntityLinkMapper.java new file mode 100644 index 00000000..cfbc2aac --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolEntityLinkMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolEntityLink; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 主体绑定 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolEntityLinkMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolHomeworkMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolHomeworkMapper.java new file mode 100644 index 00000000..73fddaf5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolHomeworkMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolHomework; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 作业 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolHomeworkMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolLearnProgressMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolLearnProgressMapper.java new file mode 100644 index 00000000..c276560d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolLearnProgressMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolLearnProgress; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 学习进度 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolLearnProgressMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolQuestionMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolQuestionMapper.java new file mode 100644 index 00000000..1b6b70a4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolQuestionMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolQuestion; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 题目 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolQuestionMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolResourceMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolResourceMapper.java new file mode 100644 index 00000000..da6e8da3 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolResourceMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolResource; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 资源 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolResourceMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserInfoMapper.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserInfoMapper.java new file mode 100644 index 00000000..12ab856f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/AiolUserInfoMapper.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.aiol.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.aiol.entity.AiolUserInfo; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface AiolUserInfoMapper extends BaseMapper { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCommentMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCommentMapper.xml new file mode 100644 index 00000000..3a14e7e8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCommentMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseCategoryMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseCategoryMapper.xml new file mode 100644 index 00000000..05a91dc6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseCategoryMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseMapper.xml new file mode 100644 index 00000000..fa67816b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSectionMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSectionMapper.xml new file mode 100644 index 00000000..a4096620 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSectionMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSignupMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSignupMapper.xml new file mode 100644 index 00000000..86d2e25e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseSignupMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseTeacherMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseTeacherMapper.xml new file mode 100644 index 00000000..02faa11a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolCourseTeacherMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolEntityLinkMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolEntityLinkMapper.xml new file mode 100644 index 00000000..34851b5a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolEntityLinkMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolHomeworkMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolHomeworkMapper.xml new file mode 100644 index 00000000..451a556f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolHomeworkMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolLearnProgressMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolLearnProgressMapper.xml new file mode 100644 index 00000000..eca82d40 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolLearnProgressMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolQuestionMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolQuestionMapper.xml new file mode 100644 index 00000000..20412110 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolQuestionMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolResourceMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolResourceMapper.xml new file mode 100644 index 00000000..fe2c9592 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolResourceMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserInfoMapper.xml b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserInfoMapper.xml new file mode 100644 index 00000000..222ff40e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/mapper/xml/AiolUserInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCommentService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCommentService.java new file mode 100644 index 00000000..d299dbb0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCommentService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolComment; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 评论 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolCommentService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseCategoryService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseCategoryService.java new file mode 100644 index 00000000..0303747f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseCategoryService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolCourseCategory; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 课程分类 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolCourseCategoryService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSectionService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSectionService.java new file mode 100644 index 00000000..1c5c244e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSectionService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolCourseSection; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 课程章节 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolCourseSectionService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseService.java new file mode 100644 index 00000000..3a16c0d4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseService.java @@ -0,0 +1,97 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.aiol.dto.CourseWithTeacherInfo; +import org.jeecg.modules.aiol.dto.TeacherInfo; +import org.jeecg.modules.aiol.entity.AiolCourse; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.aiol.entity.AiolCourseCategory; +import org.jeecg.modules.aiol.entity.AiolCourseSection; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +/** + * @Description: 课程 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolCourseService extends IService { + /** + * 上传视频并切片为 HLS(m3u8+ts),按配置(local|minio|alioss)上传,返回 m3u8 的路径/URL + * @param file 上传的视频文件 + * @param request 用于读取 header 或环境配置 + * @return m3u8 路径/URL + * @throws Exception 处理异常 + */ + String uploadHls(MultipartFile file, HttpServletRequest request) throws Exception; + + /** + * 根据分类、难度、专题查询课程列表(包含讲师信息) + * @param categoryId + * @param difficulty + * @param topic + * @return + */ + List getCourseList(String categoryId, String difficulty, String topic); + + /** + * 查询课程分类列表 + * @return + */ + List getCourseCategoryList(); + + /** + * 查询指定课程下的章节列表 + * @param courseId + * @return + */ + List getCourseSectionList(String courseId); + + /** + * 查询章节详情(泛型) + * @param type 章节类型:0=视频、1=资料、2=考试、3=作业 + * @param sectionId 章节ID + * @param clazz 期望返回的实体类型 + * @return 指定类型的列表 + */ + List getCourseSectionDetail(Integer type, String sectionId, Class clazz); + + /** + * 查询课程的授课教师 + * @param courseId + * @return + */ + List getCourseTeacherList(String courseId); + + /** + * 报名课程 + * @param courseId + * @param id + * @return + */ + String enrollCourse(String courseId, String id); + + /** + * 查询课程是否已报名 + * @param courseId + * @param id + * @return + */ + boolean isEnrolled(String courseId, String id); + + /** + * 批量导入学生 + * @param courseId + * @param ids + * @param sysUser + * @return + */ + Map addStudents(String courseId, String ids, LoginUser sysUser); + + + Map getCourseProgress(String courseId, String id); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSignupService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSignupService.java new file mode 100644 index 00000000..ceaa5d8a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseSignupService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolCourseSignup; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 课程报名 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolCourseSignupService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseTeacherService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseTeacherService.java new file mode 100644 index 00000000..7290f8ae --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolCourseTeacherService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolCourseTeacher; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolCourseTeacherService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolEntityLinkService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolEntityLinkService.java new file mode 100644 index 00000000..28c1f48f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolEntityLinkService.java @@ -0,0 +1,32 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolEntityLink; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @Description: 主体绑定 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolEntityLinkService extends IService { + /** + * 根据主体与内容类型查询绑定的 target_id 列表 + * @param sourceType 主体类型 + * @param sourceId 主体ID + * @param targetType 内容类型 + * @return target_id 列表(去重) + */ + List listTargetIds(String sourceType, String sourceId, String targetType); + + /** + * 保存主体与内容类型的绑定关系 + * @param sourceType 主体类型 + * @param sourceId 主体ID + * @param targetType 内容类型 + * @param targetId 内容ID + */ + void save(String sourceType, String sourceId, String targetType, String targetId); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolHomeworkService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolHomeworkService.java new file mode 100644 index 00000000..5aad4dc8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolHomeworkService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolHomework; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 作业 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolHomeworkService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolLearnProgressService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolLearnProgressService.java new file mode 100644 index 00000000..80c81cc1 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolLearnProgressService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolLearnProgress; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 学习进度 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolLearnProgressService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java new file mode 100644 index 00000000..c8d0c8c0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolQuestionService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolQuestion; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 题目 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolQuestionService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolResourceService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolResourceService.java new file mode 100644 index 00000000..09744f42 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolResourceService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolResource; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 资源 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolResourceService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserInfoService.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserInfoService.java new file mode 100644 index 00000000..6e5c1624 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/IAiolUserInfoService.java @@ -0,0 +1,14 @@ +package org.jeecg.modules.aiol.service; + +import org.jeecg.modules.aiol.entity.AiolUserInfo; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +public interface IAiolUserInfoService extends IService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCommentServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCommentServiceImpl.java new file mode 100644 index 00000000..fded3e86 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCommentServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolComment; +import org.jeecg.modules.aiol.mapper.AiolCommentMapper; +import org.jeecg.modules.aiol.service.IAiolCommentService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 评论 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolCommentServiceImpl extends ServiceImpl implements IAiolCommentService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseCategoryServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseCategoryServiceImpl.java new file mode 100644 index 00000000..656e030e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseCategoryServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolCourseCategory; +import org.jeecg.modules.aiol.mapper.AiolCourseCategoryMapper; +import org.jeecg.modules.aiol.service.IAiolCourseCategoryService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 课程分类 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolCourseCategoryServiceImpl extends ServiceImpl implements IAiolCourseCategoryService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSectionServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSectionServiceImpl.java new file mode 100644 index 00000000..2f7d2837 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSectionServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolCourseSection; +import org.jeecg.modules.aiol.mapper.AiolCourseSectionMapper; +import org.jeecg.modules.aiol.service.IAiolCourseSectionService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 课程章节 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolCourseSectionServiceImpl extends ServiceImpl implements IAiolCourseSectionService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseServiceImpl.java new file mode 100644 index 00000000..22960727 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseServiceImpl.java @@ -0,0 +1,664 @@ +package org.jeecg.modules.aiol.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.common.util.CommonUtils; +import org.jeecg.common.util.MinioUtil; +import org.jeecg.common.util.SpringContextUtils; +import org.jeecg.common.util.oss.OssBootUtil; +import org.jeecg.modules.aiol.constant.EntityLinkConst; +import org.jeecg.modules.aiol.dto.CourseWithTeacherInfo; +import org.jeecg.modules.aiol.dto.TeacherInfo; +import org.jeecg.modules.aiol.entity.*; +import org.jeecg.modules.aiol.mapper.*; +import org.jeecg.modules.aiol.service.IAiolCourseService; +import org.jeecg.modules.aiol.service.IAiolEntityLinkService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.mapper.SysUserMapper; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Description: 课程 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolCourseServiceImpl extends ServiceImpl implements IAiolCourseService { + @Autowired + private AiolCourseMapper courseMapper; + + @Autowired + private AiolCourseCategoryMapper courseCategoryMapper; + + @Autowired + private AiolCourseSectionMapper courseSectionMapper; + + @Autowired + private IAiolEntityLinkService entityLinkBizService; + + @Autowired + private AiolResourceMapper resourceMapper; + + @Autowired + private AiolCourseTeacherMapper courseTeacherMapper; + + @Autowired + private AiolUserInfoMapper userInfoMapper; + + @Autowired + private SysUserMapper sysUserMapper; + + @Autowired + private AiolHomeworkMapper homeworkMapper; + + @Autowired + private AiolCourseSignupMapper courseSignupMapper; + + @Autowired + private AiolLearnProgressMapper learnProgressMapper; + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + /** + * 将Map转换为JSON字符串 + */ + private String toJsonString(Map map) { + try { + return objectMapper.writeValueAsString(map); + } catch (Exception e) { + log.error("JSON转换失败", e); + return map.toString(); + } + } + + @Override + public List getCourseSectionDetail(Integer type, String sectionId, Class clazz) { + // 1. 查询章节是否存在 + // 2. 根据章节类型,查询entitylink表,获取关联的实体id + // 3. 根据实体id,查询实体表,获取实体详情 + // 4. 返回实体详情 + + // 1. 查询章节是否存在 + AiolCourseSection section = courseSectionMapper.selectById(sectionId); + if (section == null) { + throw new RuntimeException("章节不存在"); + } + + // 2. 根据章节类型,查询entitylink表,获取关联的实体id + String sourceType = EntityLinkConst.SourceType.COURSE_SECTION; + String sourceId = section.getId(); + String targetType = null; + // 和数据字典对应 + // 视频和资料章节的区别在于资料可能存在多份资料,而视频只有一份 + switch (type) { + case 0: + // 视频章节 + targetType = EntityLinkConst.TargetType.RESOURCE; + break; + case 1: + // 资料章节 + targetType = EntityLinkConst.TargetType.RESOURCE; + break; + case 2: + // 考试章节 + targetType = EntityLinkConst.TargetType.EXAM; + break; + case 3: + // 作业章节 + targetType = EntityLinkConst.TargetType.HOMEWORK; + break; + default: + break; + } + + List targetIds = entityLinkBizService.listTargetIds(sourceType, sourceId, targetType); + if (targetIds.isEmpty()) { + throw new RuntimeException("章节没有关联的实体"); + } + + // 3. 根据实体id,查询实体表,获取实体详情 + List result = new ArrayList<>(); + for (String targetId : targetIds) { + switch (type) { + case 0: + // 视频章节 + result.add(clazz.cast(resourceMapper.selectById(targetId))); + break; + case 1: + // 资料章节 + result.add(clazz.cast(resourceMapper.selectById(targetId))); + break; + case 2: + // TODO 考试章节 + break; + case 3: + // 作业章节 + result.add(clazz.cast(homeworkMapper.selectById(targetId))); + break; + } + } + + // 4. 返回实体详情 + return result; + } + + @Override + public List getCourseSectionList(String courseId) { + return courseSectionMapper.selectList(new QueryWrapper().eq("course_id", courseId)); + } + + @Override + public List getCourseCategoryList() { + return courseCategoryMapper.selectList(null); + } + + @Override + public List getCourseList(String categoryId, String difficulty, String topic) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + + // 根据分类查询 - 支持多个分类ID,用逗号分隔 + if (!"all".equals(categoryId) && categoryId != null) { + String[] categoryIds = categoryId.split(","); + Set allCourseIds = new HashSet<>(); + + for (String catId : categoryIds) { + catId = catId.trim(); + if (!catId.isEmpty()) { + List courseIds = entityLinkBizService.listTargetIds( + EntityLinkConst.SourceType.COURSE_CATEGORY, catId, EntityLinkConst.TargetType.COURSE); + allCourseIds.addAll(courseIds); + } + } + + if (!allCourseIds.isEmpty()) { + queryWrapper.in("id", allCourseIds); + } + } + + // 根据专题查询 - 支持多个专题值,用逗号分隔 + if (!"all".equals(topic) && topic != null) { + String[] topics = topic.split(","); + List validTopics = new ArrayList<>(); + for (String topicValue : topics) { + topicValue = topicValue.trim(); + if (!topicValue.isEmpty()) { + validTopics.add(topicValue); + } + } + + if (!validTopics.isEmpty()) { + queryWrapper.and(wrapper -> { + for (int i = 0; i < validTopics.size(); i++) { + String topicValue = validTopics.get(i); + if (i == 0) { + // 第一个条件,直接开始 + wrapper.and(subWrapper -> { + subWrapper.like("subject", topicValue + ",") // 开头匹配 + .or().like("subject", "," + topicValue + ",") // 中间匹配 + .or().like("subject", "," + topicValue) // 结尾匹配 + .or().eq("subject", topicValue); // 单独匹配 + }); + } else { + // 后续条件用OR连接,表示任一专题匹配即可 + wrapper.or(subWrapper -> { + subWrapper.like("subject", topicValue + ",") // 开头匹配 + .or().like("subject", "," + topicValue + ",") // 中间匹配 + .or().like("subject", "," + topicValue) // 结尾匹配 + .or().eq("subject", topicValue); // 单独匹配 + }); + } + } + }); + } + } + + // 根据难度查询 - 支持多个难度值,用逗号分隔 + if (!"all".equals(difficulty) && difficulty != null) { + String[] difficulties = difficulty.split(","); + List difficultyList = new ArrayList<>(); + for (String diff : difficulties) { + diff = diff.trim(); + if (!diff.isEmpty()) { + difficultyList.add(diff); + } + } + if (!difficultyList.isEmpty()) { + queryWrapper.in("difficulty", difficultyList); + } + } + List courseList = courseMapper.selectList(queryWrapper); + + // 构建包含讲师信息的课程列表 + List result = new ArrayList<>(); + for (AiolCourse course : courseList) { + CourseWithTeacherInfo courseWithTeacher = new CourseWithTeacherInfo(); + // 复制课程基本信息 + BeanUtils.copyProperties(course, courseWithTeacher); + + // 获取讲师信息 + List teacherList = getCourseTeacherList(course.getId()); + courseWithTeacher.setTeacherList(teacherList); + + result.add(courseWithTeacher); + } + + return result; + } + + @Override + public String uploadHls(MultipartFile file, HttpServletRequest request) throws Exception { + // 读取上传类型(header 优先) + String headerUploadType = request.getHeader("uploadType"); + String configUploadType = SpringContextUtils.getApplicationContext().getEnvironment().getProperty("jeecg.uploadType", "minio"); + String uploadType = (headerUploadType != null && headerUploadType.trim().length() > 0) ? headerUploadType : configUploadType; + + // 1) 保存临时原始视频 + String uuid = UUID.randomUUID().toString(); + String tmpRoot = System.getProperty("java.io.tmpdir"); + Path tmpVideoDir = Path.of(tmpRoot, "jeecg", "video", uuid); + Path hlsDir = Path.of(tmpRoot, "jeecg", "hls", uuid); + Files.createDirectories(tmpVideoDir); + Files.createDirectories(hlsDir); + + String original = CommonUtils.getFileName(Objects.requireNonNull(file.getOriginalFilename())); + Path tmpVideoFile = tmpVideoDir.resolve(original); + Files.copy(file.getInputStream(), tmpVideoFile, StandardCopyOption.REPLACE_EXISTING); + + // 2) ffmpeg 切片 + Path m3u8Path = hlsDir.resolve(uuid + ".m3u8"); + List cmd = Arrays.asList( + "ffmpeg", "-i", tmpVideoFile.toString(), + "-c:v", "libx264", "-c:a", "aac", + "-hls_time", "10", "-hls_playlist_type", "vod", + m3u8Path.toString()); + Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start(); + boolean ok = p.waitFor(10, TimeUnit.MINUTES) && p.exitValue() == 0; + if (!ok) { + deleteQuietly(hlsDir.toFile()); + deleteQuietly(tmpVideoDir.toFile()); + throw new RuntimeException("ffmpeg切片超时"); + } + + // 3) 上传切片 + String m3u8Url = ""; + String base = "video/hls/" + uuid; + try (Stream paths = Files.list(hlsDir)) { + for (Path f : (Iterable) paths::iterator) { + if (!Files.isRegularFile(f)) continue; + String rel = base + "/" + f.getFileName().toString(); + try (InputStream in = Files.newInputStream(f)) { + if ("minio".equals(uploadType)) { + String tmpUrl = MinioUtil.upload(in, rel); + if (f.getFileName().toString().endsWith(".m3u8")) { + m3u8Url = tmpUrl; + } + } else if ("alioss".equals(uploadType)) { + OssBootUtil.upload(in, rel); + if (f.getFileName().toString().endsWith(".m3u8")) { + m3u8Url = rel; // 可在网关拼域名 + } + } else { + String uploadpath = SpringContextUtils.getApplicationContext().getEnvironment().getProperty("jeecg.path.upload"); + Path target = Path.of(uploadpath, rel); + Files.createDirectories(target.getParent()); + Files.copy(f, target, StandardCopyOption.REPLACE_EXISTING); + if (f.getFileName().toString().endsWith(".m3u8")) { + m3u8Url = rel; // local 返回相对路径 + } + } + } + } + } finally { + deleteQuietly(hlsDir.toFile()); + deleteQuietly(tmpVideoDir.toFile()); + } + + return m3u8Url; + } + + /** 删除临时目录文件 */ + private static void deleteQuietly(File file) { + try { + if (file == null || !file.exists()) return; + if (file.isDirectory()) { + File[] children = file.listFiles(); + if (children != null) { + for (File c : children) deleteQuietly(c); + } + } + file.delete(); + } catch (Exception ignored) {} + } + + @Override + public List getCourseTeacherList(String courseId) { + List list = courseTeacherMapper.selectList(new QueryWrapper().eq("course_id", courseId)); + + List result = new ArrayList<>(); + for (AiolCourseTeacher item : list) { + AiolUserInfo userInfo = userInfoMapper.selectOne(new QueryWrapper().eq("user_id", item.getTeacherId())); + SysUser sysUser = sysUserMapper.selectById(item.getTeacherId()); + + TeacherInfo teacherInfo = new TeacherInfo(); + teacherInfo.setId(item.getTeacherId()); + teacherInfo.setName(sysUser.getRealname()); + teacherInfo.setAvatar(sysUser.getAvatar()); + teacherInfo.setTitle(userInfo.getTitle()); + teacherInfo.setTag(userInfo.getTag()); + teacherInfo.setSortOrder(userInfo.getSortOrder()); + result.add(teacherInfo); + } + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String enrollCourse(String courseId, String userId) { + // 1. 参数校验 + if (courseId == null || courseId.trim().isEmpty()) { + throw new RuntimeException("课程ID不能为空"); + } + if (userId == null || userId.trim().isEmpty()) { + throw new RuntimeException("用户ID不能为空"); + } + + // 2. 查询课程是否存在 + AiolCourse course = courseMapper.selectById(courseId); + if (course == null) { + throw new RuntimeException("课程不存在"); + } + + // 3. 检查用户是否已报名 + QueryWrapper signupQuery = new QueryWrapper<>(); + signupQuery.eq("user_id", userId).eq("course_id", courseId); + AiolCourseSignup existingSignup = courseSignupMapper.selectOne(signupQuery); + if (existingSignup != null) { + Map result = new HashMap<>(); + result.put("success", true); + result.put("code", "already_enrolled"); + result.put("message", "用户已经报名该课程"); + return toJsonString(result); + } + + // 4. 检查课程是否可以报名 + if (course.getStatus() != null && course.getStatus() != 1) { + throw new RuntimeException("课程当前状态不允许报名"); + } + + // 5. 检查报名人数是否已满 + if (course.getMaxEnroll() != null && course.getEnrollCount() != null) { + if (course.getEnrollCount() >= course.getMaxEnroll()) { + throw new RuntimeException("报名人数已满"); + } + } + + // 6. 创建报名记录 + AiolCourseSignup signup = new AiolCourseSignup(); + signup.setUserId(userId); + signup.setCourseId(courseId); + signup.setCreateTime(new Date()); + signup.setCreateBy(userId); + + int insertResult = courseSignupMapper.insert(signup); + if (insertResult <= 0) { + throw new RuntimeException("报名失败"); + } + + // 7. 更新课程报名人数 + int currentEnrollCount = course.getEnrollCount() == null ? 0 : course.getEnrollCount(); + course.setEnrollCount(currentEnrollCount + 1); + courseMapper.updateById(course); + + Map result = new HashMap<>(); + result.put("success", true); + result.put("code", "success"); + result.put("message", "报名成功"); + return toJsonString(result); + } + + @Override + public boolean isEnrolled(String courseId, String userId) { + QueryWrapper signupQuery = new QueryWrapper<>(); + signupQuery.eq("user_id", userId).eq("course_id", courseId); + AiolCourseSignup existingSignup = courseSignupMapper.selectOne(signupQuery); + return existingSignup != null; + } + + @Override + @Transactional + public Map addStudents(String courseId, String ids, LoginUser teacher) { + // 1. 参数校验 + if (courseId == null || courseId.trim().isEmpty()) { + throw new RuntimeException("课程ID不能为空"); + } + if (ids == null || ids.isEmpty()) { + throw new RuntimeException("学生ID列表不能为空"); + } + if (teacher == null || teacher.getId() == null) { + throw new RuntimeException("教师信息不能为空"); + } + + // 2. 查询课程是否存在 + AiolCourse course = courseMapper.selectById(courseId); + if (course == null) { + throw new RuntimeException("课程不存在"); + } + + // 3. 权限校验 - 检查当前登录用户是否是课程的创建人 + if (!teacher.getUsername().equals(course.getCreateBy())) { + throw new RuntimeException("只有课程创建者才能添加学生"); + } + + // 4. 过滤有效的学生ID + List validStudentIds = new ArrayList<>(); + for (String studentId : ids.split(",")) { + if (studentId != null && !studentId.trim().isEmpty()) { + validStudentIds.add(studentId.trim()); + } + } + + if (validStudentIds.isEmpty()) { + throw new RuntimeException("没有有效的学生ID"); + } + + // 5. 检查哪些学生已经报名 + QueryWrapper existingQuery = new QueryWrapper<>(); + existingQuery.eq("course_id", courseId).in("user_id", validStudentIds); + List existingSignups = courseSignupMapper.selectList(existingQuery); + + Set alreadyEnrolledIds = new HashSet<>(); + for (AiolCourseSignup signup : existingSignups) { + alreadyEnrolledIds.add(signup.getUserId()); + } + + // 6. 过滤出需要新增的学生ID + List newStudentIds = new ArrayList<>(); + for (String studentId : validStudentIds) { + if (!alreadyEnrolledIds.contains(studentId)) { + newStudentIds.add(studentId); + } + } + + if (newStudentIds.isEmpty()) { + Map result = new HashMap<>(); + result.put("success", false); + result.put("code", "all_already_enrolled"); + result.put("message", "所有学生都已经报名"); + result.put("addedCount", 0); + result.put("alreadyEnrolledCount", alreadyEnrolledIds.size()); + return result; + } + + // 7. 检查报名人数限制 + int currentEnrollCount = course.getEnrollCount() == null ? 0 : course.getEnrollCount(); + if (course.getMaxEnroll() != null) { + if (currentEnrollCount + newStudentIds.size() > course.getMaxEnroll()) { + throw new RuntimeException("添加学生后将超过最大报名人数限制,当前:" + currentEnrollCount + ",最大:" + course.getMaxEnroll() + ",新增:" + newStudentIds.size()); + } + } + + // 8. 批量创建报名记录 + List newSignups = new ArrayList<>(); + Date now = new Date(); + for (String studentId : newStudentIds) { + AiolCourseSignup signup = new AiolCourseSignup(); + signup.setUserId(studentId); + signup.setCourseId(courseId); + signup.setCreateTime(now); + signup.setCreateBy(teacher.getId()); + newSignups.add(signup); + } + + // 9. 批量插入报名记录 + for (AiolCourseSignup signup : newSignups) { + int insertResult = courseSignupMapper.insert(signup); + if (insertResult <= 0) { + throw new RuntimeException("插入报名记录失败,学生ID: " + signup.getUserId()); + } + } + + // 10. 更新课程报名人数 + course.setEnrollCount(currentEnrollCount + newStudentIds.size()); + courseMapper.updateById(course); + + // 11. 返回结果 + Map result = new HashMap<>(); + if (alreadyEnrolledIds.isEmpty()) { + result.put("success", true); + result.put("code", "success"); + result.put("message", "所有学生都成功添加"); + result.put("addedCount", newStudentIds.size()); + result.put("alreadyEnrolledCount", 0); + } else { + result.put("success", true); + result.put("code", "partial_success"); + result.put("message", "部分学生添加成功,部分学生已经报名"); + result.put("addedCount", newStudentIds.size()); + result.put("alreadyEnrolledCount", alreadyEnrolledIds.size()); + } + return result; + } + + @Override + public Map getCourseProgress(String courseId, String userId) { + // 1. 参数校验 + if (courseId == null || courseId.trim().isEmpty()) { + throw new RuntimeException("课程ID不能为空"); + } + if (userId == null || userId.trim().isEmpty()) { + throw new RuntimeException("用户ID不能为空"); + } + + // 2. 分别查询视频、考试、作业章节 + List videoSections = getCourseSectionsByType(courseId, 0); // 视频 + List examSections = getCourseSectionsByType(courseId, 2); // 考试 + List homeworkSections = getCourseSectionsByType(courseId, 3); // 作业 + + // 3. 分别查询各类型章节的完成情况 + int videoCompleted = getCompletedSectionCount(courseId, userId, videoSections); + int examCompleted = getCompletedSectionCount(courseId, userId, examSections); + int homeworkCompleted = getCompletedSectionCount(courseId, userId, homeworkSections); + + // 4. 计算各类型进度百分比 + int videoProgress = calculateProgress(videoCompleted, videoSections.size()); + int examProgress = calculateProgress(examCompleted, examSections.size()); + int homeworkProgress = calculateProgress(homeworkCompleted, homeworkSections.size()); + + // 5. 计算总进度 + int totalSections = videoSections.size() + examSections.size() + homeworkSections.size(); + int totalCompleted = videoCompleted + examCompleted + homeworkCompleted; + int totalProgress = calculateProgress(totalCompleted, totalSections); + + // 6. 构建返回结果 + Map result = new HashMap<>(); + + // 视频进度 + Map videoInfo = new HashMap<>(); + videoInfo.put("total", videoSections.size()); + videoInfo.put("completed", videoCompleted); + videoInfo.put("progress", videoProgress); + result.put("video", videoInfo); + + // 考试进度 + Map examInfo = new HashMap<>(); + examInfo.put("total", examSections.size()); + examInfo.put("completed", examCompleted); + examInfo.put("progress", examProgress); + result.put("exam", examInfo); + + // 作业进度 + Map homeworkInfo = new HashMap<>(); + homeworkInfo.put("total", homeworkSections.size()); + homeworkInfo.put("completed", homeworkCompleted); + homeworkInfo.put("progress", homeworkProgress); + result.put("homework", homeworkInfo); + + // 总进度 + Map totalInfo = new HashMap<>(); + totalInfo.put("total", totalSections); + totalInfo.put("completed", totalCompleted); + totalInfo.put("progress", totalProgress); + result.put("total", totalInfo); + + return result; + } + + /** + * 根据类型查询课程章节 + */ + private List getCourseSectionsByType(String courseId, Integer type) { + QueryWrapper query = new QueryWrapper<>(); + query.eq("course_id", courseId).eq("type", type).eq("level", 2); + return courseSectionMapper.selectList(query); + } + + /** + * 获取已完成的章节数量 + */ + private int getCompletedSectionCount(String courseId, String userId, List sections) { + if (sections.isEmpty()) { + return 0; + } + + List sectionIds = sections.stream() + .map(AiolCourseSection::getId) + .collect(Collectors.toList()); + + QueryWrapper progressQuery = new QueryWrapper<>(); + progressQuery.eq("user_id", userId) + .eq("course_id", courseId) + .in("section_id", sectionIds) + .eq("status", 2); // status=2表示学习完成 + + return Math.toIntExact(learnProgressMapper.selectCount(progressQuery)); + } + + /** + * 计算进度百分比 + */ + private int calculateProgress(int completed, int total) { + if (total == 0) { + return 100; // 如果没有章节,认为已完成 + } + return Math.round((float) completed / total * 100); + } +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSignupServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSignupServiceImpl.java new file mode 100644 index 00000000..3cd5380c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseSignupServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolCourseSignup; +import org.jeecg.modules.aiol.mapper.AiolCourseSignupMapper; +import org.jeecg.modules.aiol.service.IAiolCourseSignupService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 课程报名 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolCourseSignupServiceImpl extends ServiceImpl implements IAiolCourseSignupService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseTeacherServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseTeacherServiceImpl.java new file mode 100644 index 00000000..2ddc7509 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolCourseTeacherServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolCourseTeacher; +import org.jeecg.modules.aiol.mapper.AiolCourseTeacherMapper; +import org.jeecg.modules.aiol.service.IAiolCourseTeacherService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 授课教师 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolCourseTeacherServiceImpl extends ServiceImpl implements IAiolCourseTeacherService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolEntityLinkServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolEntityLinkServiceImpl.java new file mode 100644 index 00000000..82f8c3c0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolEntityLinkServiceImpl.java @@ -0,0 +1,44 @@ +package org.jeecg.modules.aiol.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.jeecg.modules.aiol.entity.AiolEntityLink; +import org.jeecg.modules.aiol.mapper.AiolEntityLinkMapper; +import org.jeecg.modules.aiol.service.IAiolEntityLinkService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Description: 主体绑定 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolEntityLinkServiceImpl extends ServiceImpl implements IAiolEntityLinkService { + @Override + public List listTargetIds(String sourceType, String sourceId, String targetType) { + LambdaQueryWrapper qw = new LambdaQueryWrapper<>(); + qw.eq(AiolEntityLink::getSourceType, sourceType) + .eq(AiolEntityLink::getSourceId, sourceId) + .eq(AiolEntityLink::getTargetType, targetType) + .select(AiolEntityLink::getTargetId); + return this.list(qw).stream() + .map(AiolEntityLink::getTargetId) + .distinct() + .collect(Collectors.toList()); + } + + @Override + public void save(String sourceType, String sourceId, String targetType, String targetId) { + AiolEntityLink entityLink = new AiolEntityLink(); + entityLink.setSourceType(sourceType); + entityLink.setSourceId(sourceId); + entityLink.setTargetType(targetType); + entityLink.setTargetId(targetId); + this.save(entityLink); + } +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolHomeworkServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolHomeworkServiceImpl.java new file mode 100644 index 00000000..847955dd --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolHomeworkServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolHomework; +import org.jeecg.modules.aiol.mapper.AiolHomeworkMapper; +import org.jeecg.modules.aiol.service.IAiolHomeworkService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 作业 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolHomeworkServiceImpl extends ServiceImpl implements IAiolHomeworkService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolLearnProgressServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolLearnProgressServiceImpl.java new file mode 100644 index 00000000..b97c9f96 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolLearnProgressServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolLearnProgress; +import org.jeecg.modules.aiol.mapper.AiolLearnProgressMapper; +import org.jeecg.modules.aiol.service.IAiolLearnProgressService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 学习进度 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolLearnProgressServiceImpl extends ServiceImpl implements IAiolLearnProgressService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java new file mode 100644 index 00000000..782e18d8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolQuestionServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolQuestion; +import org.jeecg.modules.aiol.mapper.AiolQuestionMapper; +import org.jeecg.modules.aiol.service.IAiolQuestionService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 题目 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolQuestionServiceImpl extends ServiceImpl implements IAiolQuestionService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolResourceServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolResourceServiceImpl.java new file mode 100644 index 00000000..d71bf717 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolResourceServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolResource; +import org.jeecg.modules.aiol.mapper.AiolResourceMapper; +import org.jeecg.modules.aiol.service.IAiolResourceService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 资源 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolResourceServiceImpl extends ServiceImpl implements IAiolResourceService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserInfoServiceImpl.java b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserInfoServiceImpl.java new file mode 100644 index 00000000..a08f6365 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/service/impl/AiolUserInfoServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.aiol.service.impl; + +import org.jeecg.modules.aiol.entity.AiolUserInfo; +import org.jeecg.modules.aiol.mapper.AiolUserInfoMapper; +import org.jeecg.modules.aiol.service.IAiolUserInfoService; +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +/** + * @Description: 用户信息 + * @Author: jeecg-boot + * @Date: 2025-08-31 + * @Version: V1.0 + */ +@Service +public class AiolUserInfoServiceImpl extends ServiceImpl implements IAiolUserInfoService { + +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentForm.vue new file mode 100644 index 00000000..94c1e500 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentForm.vue @@ -0,0 +1,119 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentList.vue new file mode 100644 index 00000000..a48cde50 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCommentList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryForm.vue new file mode 100644 index 00000000..678ad8d5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryForm.vue @@ -0,0 +1,89 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryList.vue new file mode 100644 index 00000000..26164430 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseCategoryList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseForm.vue new file mode 100644 index 00000000..866d4b60 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseForm.vue @@ -0,0 +1,181 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseList.vue new file mode 100644 index 00000000..368933b8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionForm.vue new file mode 100644 index 00000000..fa5fd635 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionForm.vue @@ -0,0 +1,113 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionList.vue new file mode 100644 index 00000000..6abc082a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSectionList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupForm.vue new file mode 100644 index 00000000..27a7828b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupForm.vue @@ -0,0 +1,89 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupList.vue new file mode 100644 index 00000000..5d0cdccc --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseSignupList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherForm.vue new file mode 100644 index 00000000..ade7b46e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherForm.vue @@ -0,0 +1,101 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherList.vue new file mode 100644 index 00000000..b4ff4401 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolCourseTeacherList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkForm.vue new file mode 100644 index 00000000..2766d8f6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkForm.vue @@ -0,0 +1,107 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkList.vue new file mode 100644 index 00000000..37ac13ac --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolEntityLinkList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkForm.vue new file mode 100644 index 00000000..b92ceace --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkForm.vue @@ -0,0 +1,115 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkList.vue new file mode 100644 index 00000000..4a7f947e --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolHomeworkList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressForm.vue new file mode 100644 index 00000000..62bbb385 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressForm.vue @@ -0,0 +1,113 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressList.vue new file mode 100644 index 00000000..734bb5bf --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolLearnProgressList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionForm.vue new file mode 100644 index 00000000..b2add171 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionForm.vue @@ -0,0 +1,113 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionList.vue new file mode 100644 index 00000000..85c0839d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolQuestionList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceForm.vue new file mode 100644 index 00000000..e407ad9b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceForm.vue @@ -0,0 +1,137 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceList.vue new file mode 100644 index 00000000..49d0e122 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolResourceList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoForm.vue new file mode 100644 index 00000000..85282d0b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoForm.vue @@ -0,0 +1,119 @@ + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoList.vue new file mode 100644 index 00000000..30f02853 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp/AiolUserInfoList.vue @@ -0,0 +1,44 @@ + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentData.ts new file mode 100644 index 00000000..81adbcfe --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentData.ts @@ -0,0 +1,39 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '目标类型', + align:"center", + dataIndex: 'targetType' + }, + { + title: '目标id', + align:"center", + dataIndex: 'targetId' + }, + { + title: '内容', + align:"center", + dataIndex: 'content' + }, + { + title: '图片', + align:"center", + dataIndex: 'imgs' + }, + { + title: '是否置顶', + align:"center", + dataIndex: 'izTop' + }, + { + title: '点赞数', + align:"center", + dataIndex: 'likeCount' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentForm.vue new file mode 100644 index 00000000..cbf576e1 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentForm.vue @@ -0,0 +1,289 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '评论', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentList.vue new file mode 100644 index 00000000..22ad9247 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCommentList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '评论', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryData.ts new file mode 100644 index 00000000..9c566e87 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryData.ts @@ -0,0 +1,14 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '分类名', + align:"center", + dataIndex: 'name' + }, + { + title: '排序', + align:"center", + dataIndex: 'sortOrder' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryForm.vue new file mode 100644 index 00000000..edd9e610 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryForm.vue @@ -0,0 +1,223 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '课程分类', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryList.vue new file mode 100644 index 00000000..f2b900b8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseCategoryList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '课程分类', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseData.ts new file mode 100644 index 00000000..5901b81a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseData.ts @@ -0,0 +1,100 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '课程名', + align:"center", + dataIndex: 'name' + }, + { + title: '封面图', + align:"center", + dataIndex: 'cover', + customRender:render.renderImage, + }, + { + title: '介绍视频', + align:"center", + dataIndex: 'video', + }, + { + title: '学校', + align:"center", + dataIndex: 'school' + }, + { + title: '课程概述', + align:"center", + dataIndex: 'description', + }, + { + title: '课程类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '授课目标', + align:"center", + dataIndex: 'target' + }, + { + title: '课程难度', + align:"center", + dataIndex: 'difficulty_dictText' + }, + { + title: '所属专题', + align:"center", + dataIndex: 'subject_dictText' + }, + { + title: '课程大纲', + align:"center", + dataIndex: 'outline', + }, + { + title: '预备知识', + align:"center", + dataIndex: 'prerequisite' + }, + { + title: '参考资料', + align:"center", + dataIndex: 'reference' + }, + { + title: '学时安排', + align:"center", + dataIndex: 'arrangement' + }, + { + title: '开课时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结课时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '已报名人数', + align:"center", + dataIndex: 'enrollCount' + }, + { + title: '最大报名人数', + align:"center", + dataIndex: 'maxEnroll' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, + { + title: '常见问题', + align:"center", + dataIndex: 'question', + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseForm.vue new file mode 100644 index 00000000..66592b43 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseForm.vue @@ -0,0 +1,422 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '课程', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseList.vue new file mode 100644 index 00000000..821d0671 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '课程', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionData.ts new file mode 100644 index 00000000..82c4e9d8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionData.ts @@ -0,0 +1,34 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '章节名', + align:"center", + dataIndex: 'name' + }, + { + title: '章节类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '排序号', + align:"center", + dataIndex: 'sortOrder' + }, + { + title: '父章节id', + align:"center", + dataIndex: 'parentId' + }, + { + title: '章节层级', + align:"center", + dataIndex: 'level_dictText' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionForm.vue new file mode 100644 index 00000000..30bde80c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionForm.vue @@ -0,0 +1,269 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '课程章节', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionList.vue new file mode 100644 index 00000000..d5e1ab27 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSectionList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '课程章节', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupData.ts new file mode 100644 index 00000000..ab372e81 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupData.ts @@ -0,0 +1,14 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupForm.vue new file mode 100644 index 00000000..5202a17c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupForm.vue @@ -0,0 +1,222 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '课程报名', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupList.vue new file mode 100644 index 00000000..a89d8b80 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseSignupList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '课程报名', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherData.ts new file mode 100644 index 00000000..e716dc10 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherData.ts @@ -0,0 +1,24 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '教师id', + align:"center", + dataIndex: 'teacherId' + }, + { + title: '授课角色', + align:"center", + dataIndex: 'role_dictText' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherForm.vue new file mode 100644 index 00000000..9e1c2425 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherForm.vue @@ -0,0 +1,246 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '授课教师', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherList.vue new file mode 100644 index 00000000..a92e3d06 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolCourseTeacherList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '授课教师', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkData.ts new file mode 100644 index 00000000..993cd7d8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkData.ts @@ -0,0 +1,29 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '主体类型', + align:"center", + dataIndex: 'sourceType' + }, + { + title: '主体id', + align:"center", + dataIndex: 'sourceId' + }, + { + title: '内容类型', + align:"center", + dataIndex: 'targetType' + }, + { + title: '内容id', + align:"center", + dataIndex: 'targetId' + }, + { + title: '排序', + align:"center", + dataIndex: 'sortOrder' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkForm.vue new file mode 100644 index 00000000..abf3e237 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkForm.vue @@ -0,0 +1,262 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '主体绑定', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkList.vue new file mode 100644 index 00000000..74e1bb74 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolEntityLinkList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '主体绑定', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkData.ts new file mode 100644 index 00000000..3a3371d1 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkData.ts @@ -0,0 +1,44 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '标题', + align:"center", + dataIndex: 'title' + }, + { + title: '说明', + align:"center", + dataIndex: 'description', + }, + { + title: '附件', + align:"center", + dataIndex: 'attachment', + }, + { + title: '满分', + align:"center", + dataIndex: 'maxScore' + }, + { + title: '及格分数', + align:"center", + dataIndex: 'passScore' + }, + { + title: '开始时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结束时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkForm.vue new file mode 100644 index 00000000..363200c2 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkForm.vue @@ -0,0 +1,291 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '作业', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkList.vue new file mode 100644 index 00000000..e72b0021 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolHomeworkList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '作业', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressData.ts new file mode 100644 index 00000000..289d5dea --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressData.ts @@ -0,0 +1,34 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '章节id', + align:"center", + dataIndex: 'sectionId' + }, + { + title: '进度', + align:"center", + dataIndex: 'progress' + }, + { + title: '时长', + align:"center", + dataIndex: 'duration' + }, + { + title: '状态', + align:"center", + dataIndex: 'status' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressForm.vue new file mode 100644 index 00000000..839fd23c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressForm.vue @@ -0,0 +1,277 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '学习进度', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressList.vue new file mode 100644 index 00000000..c4298213 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolLearnProgressList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '学习进度', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionData.ts new file mode 100644 index 00000000..8a3bf09d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionData.ts @@ -0,0 +1,34 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '父题目id', + align:"center", + dataIndex: 'parentId' + }, + { + title: '题目类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '题干', + align:"center", + dataIndex: 'content', + }, + { + title: '题目解析', + align:"center", + dataIndex: 'analysis', + }, + { + title: '难度', + align:"center", + dataIndex: 'difficulty_dictText' + }, + { + title: '分值', + align:"center", + dataIndex: 'score' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionForm.vue new file mode 100644 index 00000000..c6cac0bd --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionForm.vue @@ -0,0 +1,267 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '题目', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionList.vue new file mode 100644 index 00000000..5a9e4b55 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolQuestionList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '题目', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceData.ts new file mode 100644 index 00000000..fdc69bb7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceData.ts @@ -0,0 +1,54 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '资源名', + align:"center", + dataIndex: 'name' + }, + { + title: '描述', + align:"center", + dataIndex: 'description' + }, + { + title: '资源类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '文件url', + align:"center", + dataIndex: 'fileUrl' + }, + { + title: '缩略图url', + align:"center", + dataIndex: 'thumbnailUrl' + }, + { + title: '时长', + align:"center", + dataIndex: 'duration' + }, + { + title: '文件大小', + align:"center", + dataIndex: 'fileSize' + }, + { + title: '文件元数据', + align:"center", + dataIndex: 'metadata' + }, + { + title: '是否精选', + align:"center", + dataIndex: 'izFeatured_dictText' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceForm.vue new file mode 100644 index 00000000..428bf3a4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceForm.vue @@ -0,0 +1,319 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '资源', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceList.vue new file mode 100644 index 00000000..76082c66 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolResourceList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '资源', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoData.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoData.ts new file mode 100644 index 00000000..fbfd0262 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoData.ts @@ -0,0 +1,39 @@ +import { render } from '@/common/renderUtils'; +//列表数据 +export const columns = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '专业', + align:"center", + dataIndex: 'major' + }, + { + title: '学院', + align:"center", + dataIndex: 'college' + }, + { + title: '学历', + align:"center", + dataIndex: 'education' + }, + { + title: '职称', + align:"center", + dataIndex: 'title' + }, + { + title: '标签', + align:"center", + dataIndex: 'tag' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoForm.vue new file mode 100644 index 00000000..7c601a06 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoForm.vue @@ -0,0 +1,288 @@ + +{ +layout: 'default', +style: { +navigationStyle: 'custom', +navigationBarTitleText: '用户信息', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoList.vue new file mode 100644 index 00000000..f45fcdcb --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/uniapp3/AiolUserInfoList.vue @@ -0,0 +1,148 @@ + +{ +layout: 'default', +style: { +navigationBarTitleText: '用户信息', +navigationStyle: 'custom', +}, +} + + + + + + diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.api.ts new file mode 100644 index 00000000..1f1cb223 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolComment/list', + save='/aiol/aiolComment/add', + edit='/aiol/aiolComment/edit', + deleteOne = '/aiol/aiolComment/delete', + deleteBatch = '/aiol/aiolComment/deleteBatch', + importExcel = '/aiol/aiolComment/importExcel', + exportXls = '/aiol/aiolComment/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.data.ts new file mode 100644 index 00000000..518c2c96 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolComment.data.ts @@ -0,0 +1,111 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '目标类型', + align:"center", + dataIndex: 'targetType' + }, + { + title: '目标id', + align:"center", + dataIndex: 'targetId' + }, + { + title: '内容', + align:"center", + dataIndex: 'content' + }, + { + title: '图片', + align:"center", + dataIndex: 'imgs' + }, + { + title: '是否置顶', + align:"center", + dataIndex: 'izTop' + }, + { + title: '点赞数', + align:"center", + dataIndex: 'likeCount' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '目标类型', + field: 'targetType', + component: 'Input', + }, + { + label: '目标id', + field: 'targetId', + component: 'Input', + }, + { + label: '内容', + field: 'content', + component: 'Input', + }, + { + label: '图片', + field: 'imgs', + component: 'Input', + }, + { + label: '是否置顶', + field: 'izTop', + component: 'InputNumber', + }, + { + label: '点赞数', + field: 'likeCount', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + targetType: {title: '目标类型',order: 1,view: 'text', type: 'string',}, + targetId: {title: '目标id',order: 2,view: 'text', type: 'string',}, + content: {title: '内容',order: 3,view: 'text', type: 'string',}, + imgs: {title: '图片',order: 4,view: 'text', type: 'string',}, + izTop: {title: '是否置顶',order: 5,view: 'number', type: 'number',}, + likeCount: {title: '点赞数',order: 6,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCommentList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCommentList.vue new file mode 100644 index 00000000..eadf9245 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCommentList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.api.ts new file mode 100644 index 00000000..e958ce90 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourse/list', + save='/aiol/aiolCourse/add', + edit='/aiol/aiolCourse/edit', + deleteOne = '/aiol/aiolCourse/delete', + deleteBatch = '/aiol/aiolCourse/deleteBatch', + importExcel = '/aiol/aiolCourse/importExcel', + exportXls = '/aiol/aiolCourse/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.data.ts new file mode 100644 index 00000000..9e8d25c5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourse.data.ts @@ -0,0 +1,271 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程名', + align:"center", + dataIndex: 'name' + }, + { + title: '封面图', + align:"center", + dataIndex: 'cover', + customRender:render.renderImage, + }, + { + title: '介绍视频', + align:"center", + dataIndex: 'video', + }, + { + title: '学校', + align:"center", + dataIndex: 'school' + }, + { + title: '课程概述', + align:"center", + dataIndex: 'description', + }, + { + title: '课程类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '授课目标', + align:"center", + dataIndex: 'target' + }, + { + title: '课程难度', + align:"center", + dataIndex: 'difficulty_dictText' + }, + { + title: '所属专题', + align:"center", + dataIndex: 'subject_dictText' + }, + { + title: '课程大纲', + align:"center", + dataIndex: 'outline', + }, + { + title: '预备知识', + align:"center", + dataIndex: 'prerequisite' + }, + { + title: '参考资料', + align:"center", + dataIndex: 'reference' + }, + { + title: '学时安排', + align:"center", + dataIndex: 'arrangement' + }, + { + title: '开课时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结课时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '已报名人数', + align:"center", + dataIndex: 'enrollCount' + }, + { + title: '最大报名人数', + align:"center", + dataIndex: 'maxEnroll' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, + { + title: '常见问题', + align:"center", + dataIndex: 'question', + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程名', + field: 'name', + component: 'Input', + }, + { + label: '封面图', + field: 'cover', + component: 'JImageUpload', + componentProps:{ + fileMax: 0 + }, + }, + { + label: '介绍视频', + field: 'video', + component: 'JUpload', + componentProps:{ + }, + }, + { + label: '学校', + field: 'school', + component: 'Input', + }, + { + label: '课程概述', + field: 'description', + component: 'JEditor', + }, + { + label: '课程类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_type", + type: "radio" + }, + }, + { + label: '授课目标', + field: 'target', + component: 'Input', + }, + { + label: '课程难度', + field: 'difficulty', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_difficulty" + }, + }, + { + label: '所属专题', + field: 'subject', + component: 'JSelectMultiple', + componentProps:{ + dictCode:"course_subject" + }, + }, + { + label: '课程大纲', + field: 'outline', + component: 'JEditor', + }, + { + label: '预备知识', + field: 'prerequisite', + component: 'Input', + }, + { + label: '参考资料', + field: 'reference', + component: 'Input', + }, + { + label: '学时安排', + field: 'arrangement', + component: 'Input', + }, + { + label: '开课时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '结课时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '已报名人数', + field: 'enrollCount', + component: 'InputNumber', + }, + { + label: '最大报名人数', + field: 'maxEnroll', + component: 'InputNumber', + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_status", + type: "radio" + }, + }, + { + label: '常见问题', + field: 'question', + component: 'JEditor', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '课程名',order: 0,view: 'text', type: 'string',}, + cover: {title: '封面图',order: 1,view: 'image', type: 'string',}, + video: {title: '介绍视频',order: 2,view: 'file', type: 'string',}, + school: {title: '学校',order: 3,view: 'text', type: 'string',}, + description: {title: '课程概述',order: 4,view: 'umeditor', type: 'string',}, + type: {title: '课程类型',order: 5,view: 'number', type: 'number',dictCode: 'course_type',}, + target: {title: '授课目标',order: 6,view: 'text', type: 'string',}, + difficulty: {title: '课程难度',order: 7,view: 'number', type: 'number',dictCode: 'course_difficulty',}, + subject: {title: '所属专题',order: 8,view: 'list_multi', type: 'string',dictCode: 'course_subject',}, + outline: {title: '课程大纲',order: 9,view: 'umeditor', type: 'string',}, + prerequisite: {title: '预备知识',order: 10,view: 'text', type: 'string',}, + reference: {title: '参考资料',order: 11,view: 'text', type: 'string',}, + arrangement: {title: '学时安排',order: 12,view: 'text', type: 'string',}, + startTime: {title: '开课时间',order: 13,view: 'datetime', type: 'string',}, + endTime: {title: '结课时间',order: 14,view: 'datetime', type: 'string',}, + enrollCount: {title: '已报名人数',order: 15,view: 'number', type: 'number',}, + maxEnroll: {title: '最大报名人数',order: 16,view: 'number', type: 'number',}, + status: {title: '状态',order: 17,view: 'number', type: 'number',dictCode: 'course_status',}, + question: {title: '常见问题',order: 18,view: 'umeditor', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.api.ts new file mode 100644 index 00000000..6d07d860 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseCategory/list', + save='/aiol/aiolCourseCategory/add', + edit='/aiol/aiolCourseCategory/edit', + deleteOne = '/aiol/aiolCourseCategory/delete', + deleteBatch = '/aiol/aiolCourseCategory/deleteBatch', + importExcel = '/aiol/aiolCourseCategory/importExcel', + exportXls = '/aiol/aiolCourseCategory/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.data.ts new file mode 100644 index 00000000..13dc9bac --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategory.data.ts @@ -0,0 +1,56 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '分类名', + align:"center", + dataIndex: 'name' + }, + { + title: '排序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '分类名', + field: 'name', + component: 'Input', + }, + { + label: '排序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '分类名',order: 0,view: 'text', type: 'string',}, + sortOrder: {title: '排序',order: 1,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategoryList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategoryList.vue new file mode 100644 index 00000000..7d7eebf7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseCategoryList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseList.vue new file mode 100644 index 00000000..7ba370ba --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseList.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.api.ts new file mode 100644 index 00000000..1ac3095f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseSection/list', + save='/aiol/aiolCourseSection/add', + edit='/aiol/aiolCourseSection/edit', + deleteOne = '/aiol/aiolCourseSection/delete', + deleteBatch = '/aiol/aiolCourseSection/deleteBatch', + importExcel = '/aiol/aiolCourseSection/importExcel', + exportXls = '/aiol/aiolCourseSection/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.data.ts new file mode 100644 index 00000000..64fb81af --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSection.data.ts @@ -0,0 +1,119 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '章节名', + align:"center", + dataIndex: 'name' + }, + { + title: '章节类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '排序号', + align:"center", + dataIndex: 'sortOrder' + }, + { + title: '父章节id', + align:"center", + dataIndex: 'parentId' + }, + { + title: '章节层级', + align:"center", + dataIndex: 'level_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程id', + field: 'courseId', + component: 'JPopup', + componentProps: ({ formActionType }) => { + const {setFieldsValue} = formActionType; + return{ + setFieldsValue:setFieldsValue, + code:"course_list", + fieldConfig: [ + { source: 'name', target: 'courseId' }, + ], + multi:false + } + }, + + }, + { + label: '章节名', + field: 'name', + component: 'Input', + }, + { + label: '章节类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_section_type" + }, + }, + { + label: '排序号', + field: 'sortOrder', + component: 'InputNumber', + }, + { + label: '父章节id', + field: 'parentId', + component: 'Input', + }, + { + label: '章节层级', + field: 'level', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_section_level", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + courseId: {title: '课程id',order: 0,view: 'popup', type: 'string',code: 'course_list', orgFields: 'name', destFields: 'courseId', popupMulti: false,}, + name: {title: '章节名',order: 1,view: 'text', type: 'string',}, + type: {title: '章节类型',order: 2,view: 'number', type: 'number',dictCode: 'course_section_type',}, + sortOrder: {title: '排序号',order: 3,view: 'number', type: 'number',}, + parentId: {title: '父章节id',order: 4,view: 'text', type: 'string',}, + level: {title: '章节层级',order: 5,view: 'number', type: 'number',dictCode: 'course_section_level',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSectionList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSectionList.vue new file mode 100644 index 00000000..3658c5d2 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSectionList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.api.ts new file mode 100644 index 00000000..fe6de808 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseSignup/list', + save='/aiol/aiolCourseSignup/add', + edit='/aiol/aiolCourseSignup/edit', + deleteOne = '/aiol/aiolCourseSignup/delete', + deleteBatch = '/aiol/aiolCourseSignup/deleteBatch', + importExcel = '/aiol/aiolCourseSignup/importExcel', + exportXls = '/aiol/aiolCourseSignup/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.data.ts new file mode 100644 index 00000000..1fe1ff73 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignup.data.ts @@ -0,0 +1,56 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '课程id', + field: 'courseId', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + courseId: {title: '课程id',order: 1,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignupList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignupList.vue new file mode 100644 index 00000000..06562a09 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseSignupList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.api.ts new file mode 100644 index 00000000..b16cd198 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseTeacher/list', + save='/aiol/aiolCourseTeacher/add', + edit='/aiol/aiolCourseTeacher/edit', + deleteOne = '/aiol/aiolCourseTeacher/delete', + deleteBatch = '/aiol/aiolCourseTeacher/deleteBatch', + importExcel = '/aiol/aiolCourseTeacher/importExcel', + exportXls = '/aiol/aiolCourseTeacher/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.data.ts new file mode 100644 index 00000000..44749707 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacher.data.ts @@ -0,0 +1,82 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '教师id', + align:"center", + dataIndex: 'teacherId' + }, + { + title: '授课角色', + align:"center", + dataIndex: 'role_dictText' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程id', + field: 'courseId', + component: 'Input', + }, + { + label: '教师id', + field: 'teacherId', + component: 'Input', + }, + { + label: '授课角色', + field: 'role', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_role", + type: "radio" + }, + }, + { + label: '显示顺序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + courseId: {title: '课程id',order: 0,view: 'text', type: 'string',}, + teacherId: {title: '教师id',order: 1,view: 'text', type: 'string',}, + role: {title: '授课角色',order: 2,view: 'radio', type: 'string',dictCode: 'course_role',}, + sortOrder: {title: '显示顺序',order: 3,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacherList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacherList.vue new file mode 100644 index 00000000..24bc55f0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolCourseTeacherList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.api.ts new file mode 100644 index 00000000..1068d236 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolEntityLink/list', + save='/aiol/aiolEntityLink/add', + edit='/aiol/aiolEntityLink/edit', + deleteOne = '/aiol/aiolEntityLink/delete', + deleteBatch = '/aiol/aiolEntityLink/deleteBatch', + importExcel = '/aiol/aiolEntityLink/importExcel', + exportXls = '/aiol/aiolEntityLink/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.data.ts new file mode 100644 index 00000000..94931d1f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLink.data.ts @@ -0,0 +1,89 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '主体类型', + align:"center", + dataIndex: 'sourceType' + }, + { + title: '主体id', + align:"center", + dataIndex: 'sourceId' + }, + { + title: '内容类型', + align:"center", + dataIndex: 'targetType' + }, + { + title: '内容id', + align:"center", + dataIndex: 'targetId' + }, + { + title: '排序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '主体类型', + field: 'sourceType', + component: 'Input', + }, + { + label: '主体id', + field: 'sourceId', + component: 'Input', + }, + { + label: '内容类型', + field: 'targetType', + component: 'Input', + }, + { + label: '内容id', + field: 'targetId', + component: 'Input', + }, + { + label: '排序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + sourceType: {title: '主体类型',order: 0,view: 'text', type: 'string',}, + sourceId: {title: '主体id',order: 1,view: 'text', type: 'string',}, + targetType: {title: '内容类型',order: 2,view: 'text', type: 'string',}, + targetId: {title: '内容id',order: 3,view: 'text', type: 'string',}, + sortOrder: {title: '排序',order: 4,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLinkList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLinkList.vue new file mode 100644 index 00000000..0a3cecbf --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolEntityLinkList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.api.ts new file mode 100644 index 00000000..a28d5de3 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolHomework/list', + save='/aiol/aiolHomework/add', + edit='/aiol/aiolHomework/edit', + deleteOne = '/aiol/aiolHomework/delete', + deleteBatch = '/aiol/aiolHomework/deleteBatch', + importExcel = '/aiol/aiolHomework/importExcel', + exportXls = '/aiol/aiolHomework/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.data.ts new file mode 100644 index 00000000..4ee7f9c2 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomework.data.ts @@ -0,0 +1,136 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '标题', + align:"center", + dataIndex: 'title' + }, + { + title: '说明', + align:"center", + dataIndex: 'description', + }, + { + title: '附件', + align:"center", + dataIndex: 'attachment', + }, + { + title: '满分', + align:"center", + dataIndex: 'maxScore' + }, + { + title: '及格分数', + align:"center", + dataIndex: 'passScore' + }, + { + title: '开始时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结束时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '标题', + field: 'title', + component: 'Input', + }, + { + label: '说明', + field: 'description', + component: 'JEditor', + }, + { + label: '附件', + field: 'attachment', + component: 'JUpload', + componentProps:{ + }, + }, + { + label: '满分', + field: 'maxScore', + component: 'InputNumber', + }, + { + label: '及格分数', + field: 'passScore', + component: 'InputNumber', + }, + { + label: '开始时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '结束时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_status", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + title: {title: '标题',order: 0,view: 'text', type: 'string',}, + description: {title: '说明',order: 1,view: 'umeditor', type: 'string',}, + attachment: {title: '附件',order: 2,view: 'file', type: 'string',}, + maxScore: {title: '满分',order: 3,view: 'number', type: 'number',}, + passScore: {title: '及格分数',order: 4,view: 'number', type: 'number',}, + startTime: {title: '开始时间',order: 5,view: 'datetime', type: 'string',}, + endTime: {title: '结束时间',order: 6,view: 'datetime', type: 'string',}, + status: {title: '状态',order: 7,view: 'number', type: 'number',dictCode: 'course_status',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomeworkList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomeworkList.vue new file mode 100644 index 00000000..a5b3bea3 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolHomeworkList.vue @@ -0,0 +1,215 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.api.ts new file mode 100644 index 00000000..4e392a60 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolLearnProgress/list', + save='/aiol/aiolLearnProgress/add', + edit='/aiol/aiolLearnProgress/edit', + deleteOne = '/aiol/aiolLearnProgress/delete', + deleteBatch = '/aiol/aiolLearnProgress/deleteBatch', + importExcel = '/aiol/aiolLearnProgress/importExcel', + exportXls = '/aiol/aiolLearnProgress/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.data.ts new file mode 100644 index 00000000..ee5b6156 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgress.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '章节id', + align:"center", + dataIndex: 'sectionId' + }, + { + title: '进度', + align:"center", + dataIndex: 'progress' + }, + { + title: '时长', + align:"center", + dataIndex: 'duration' + }, + { + title: '状态', + align:"center", + dataIndex: 'status' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '课程id', + field: 'courseId', + component: 'Input', + }, + { + label: '章节id', + field: 'sectionId', + component: 'Input', + }, + { + label: '进度', + field: 'progress', + component: 'InputNumber', + }, + { + label: '时长', + field: 'duration', + component: 'InputNumber', + }, + { + label: '状态', + field: 'status', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + courseId: {title: '课程id',order: 1,view: 'text', type: 'string',}, + sectionId: {title: '章节id',order: 2,view: 'text', type: 'string',}, + progress: {title: '进度',order: 3,view: 'number', type: 'number',}, + duration: {title: '时长',order: 4,view: 'number', type: 'number',}, + status: {title: '状态',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgressList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgressList.vue new file mode 100644 index 00000000..5172108f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolLearnProgressList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.api.ts new file mode 100644 index 00000000..d983ceda --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolQuestion/list', + save='/aiol/aiolQuestion/add', + edit='/aiol/aiolQuestion/edit', + deleteOne = '/aiol/aiolQuestion/delete', + deleteBatch = '/aiol/aiolQuestion/deleteBatch', + importExcel = '/aiol/aiolQuestion/importExcel', + exportXls = '/aiol/aiolQuestion/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.data.ts new file mode 100644 index 00000000..88a27ad2 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestion.data.ts @@ -0,0 +1,106 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '父题目id', + align:"center", + dataIndex: 'parentId' + }, + { + title: '题目类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '题干', + align:"center", + dataIndex: 'content', + }, + { + title: '题目解析', + align:"center", + dataIndex: 'analysis', + }, + { + title: '难度', + align:"center", + dataIndex: 'difficulty_dictText' + }, + { + title: '分值', + align:"center", + dataIndex: 'score' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '父题目id', + field: 'parentId', + component: 'Input', + }, + { + label: '题目类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"question_type" + }, + }, + { + label: '题干', + field: 'content', + component: 'JEditor', + }, + { + label: '题目解析', + field: 'analysis', + component: 'JEditor', + }, + { + label: '难度', + field: 'difficulty', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"question_difficulty" + }, + }, + { + label: '分值', + field: 'score', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + parentId: {title: '父题目id',order: 0,view: 'text', type: 'string',}, + type: {title: '题目类型',order: 1,view: 'number', type: 'number',dictCode: 'question_type',}, + content: {title: '题干',order: 2,view: 'umeditor', type: 'string',}, + analysis: {title: '题目解析',order: 3,view: 'umeditor', type: 'string',}, + difficulty: {title: '难度',order: 4,view: 'number', type: 'number',dictCode: 'question_difficulty',}, + score: {title: '分值',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestionList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestionList.vue new file mode 100644 index 00000000..4cd787ef --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolQuestionList.vue @@ -0,0 +1,214 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.api.ts new file mode 100644 index 00000000..777b3c2b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolResource/list', + save='/aiol/aiolResource/add', + edit='/aiol/aiolResource/edit', + deleteOne = '/aiol/aiolResource/delete', + deleteBatch = '/aiol/aiolResource/deleteBatch', + importExcel = '/aiol/aiolResource/importExcel', + exportXls = '/aiol/aiolResource/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.data.ts new file mode 100644 index 00000000..3e907ca5 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResource.data.ts @@ -0,0 +1,155 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '资源名', + align:"center", + dataIndex: 'name' + }, + { + title: '描述', + align:"center", + dataIndex: 'description' + }, + { + title: '资源类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '文件url', + align:"center", + dataIndex: 'fileUrl' + }, + { + title: '缩略图url', + align:"center", + dataIndex: 'thumbnailUrl' + }, + { + title: '时长', + align:"center", + dataIndex: 'duration' + }, + { + title: '文件大小', + align:"center", + dataIndex: 'fileSize' + }, + { + title: '文件元数据', + align:"center", + dataIndex: 'metadata' + }, + { + title: '是否精选', + align:"center", + dataIndex: 'izFeatured_dictText' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '资源名', + field: 'name', + component: 'Input', + }, + { + label: '描述', + field: 'description', + component: 'Input', + }, + { + label: '资源类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"resource_type" + }, + }, + { + label: '文件url', + field: 'fileUrl', + component: 'Input', + }, + { + label: '缩略图url', + field: 'thumbnailUrl', + component: 'Input', + }, + { + label: '时长', + field: 'duration', + component: 'InputNumber', + }, + { + label: '文件大小', + field: 'fileSize', + component: 'InputNumber', + }, + { + label: '文件元数据', + field: 'metadata', + component: 'Input', + }, + { + label: '是否精选', + field: 'izFeatured', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"resource_iz_featured", + type: "radio" + }, + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"resource_status", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '资源名',order: 0,view: 'text', type: 'string',}, + description: {title: '描述',order: 1,view: 'text', type: 'string',}, + type: {title: '资源类型',order: 2,view: 'number', type: 'number',dictCode: 'resource_type',}, + fileUrl: {title: '文件url',order: 3,view: 'text', type: 'string',}, + thumbnailUrl: {title: '缩略图url',order: 4,view: 'text', type: 'string',}, + duration: {title: '时长',order: 5,view: 'number', type: 'number',}, + fileSize: {title: '文件大小',order: 6,view: 'number', type: 'number',}, + metadata: {title: '文件元数据',order: 7,view: 'text', type: 'string',}, + izFeatured: {title: '是否精选',order: 8,view: 'number', type: 'number',dictCode: 'resource_iz_featured',}, + status: {title: '状态',order: 9,view: 'number', type: 'number',dictCode: 'resource_status',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResourceList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResourceList.vue new file mode 100644 index 00000000..f6969755 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolResourceList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.api.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.api.ts new file mode 100644 index 00000000..f4e6d38c --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolUserInfo/list', + save='/aiol/aiolUserInfo/add', + edit='/aiol/aiolUserInfo/edit', + deleteOne = '/aiol/aiolUserInfo/delete', + deleteBatch = '/aiol/aiolUserInfo/deleteBatch', + importExcel = '/aiol/aiolUserInfo/importExcel', + exportXls = '/aiol/aiolUserInfo/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.data.ts b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.data.ts new file mode 100644 index 00000000..a0ecfb73 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfo.data.ts @@ -0,0 +1,111 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '专业', + align:"center", + dataIndex: 'major' + }, + { + title: '学院', + align:"center", + dataIndex: 'college' + }, + { + title: '学历', + align:"center", + dataIndex: 'education' + }, + { + title: '职称', + align:"center", + dataIndex: 'title' + }, + { + title: '标签', + align:"center", + dataIndex: 'tag' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '专业', + field: 'major', + component: 'Input', + }, + { + label: '学院', + field: 'college', + component: 'Input', + }, + { + label: '学历', + field: 'education', + component: 'Input', + }, + { + label: '职称', + field: 'title', + component: 'Input', + }, + { + label: '标签', + field: 'tag', + component: 'Input', + }, + { + label: '显示顺序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + major: {title: '专业',order: 1,view: 'text', type: 'string',}, + college: {title: '学院',order: 2,view: 'text', type: 'string',}, + education: {title: '学历',order: 3,view: 'text', type: 'string',}, + title: {title: '职称',order: 4,view: 'text', type: 'string',}, + tag: {title: '标签',order: 5,view: 'text', type: 'string',}, + sortOrder: {title: '显示顺序',order: 6,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfoList.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfoList.vue new file mode 100644 index 00000000..fc79c4a8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/AiolUserInfoList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolComment.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolComment.sql new file mode 100644 index 00000000..563e4221 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolComment.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111242990370', NULL, '评论', '/aiol/aiolCommentList', 'aiol/AiolCommentList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990371', '2025083111242990370', '添加评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990372', '2025083111242990370', '编辑评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990373', '2025083111242990370', '删除评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990374', '2025083111242990370', '批量删除评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990375', '2025083111242990370', '导出excel_评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990376', '2025083111242990370', '导入excel_评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourse.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourse.sql new file mode 100644 index 00000000..9537c37a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourse.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('202508311047420240', NULL, '课程', '/aiol/aiolCourseList', 'aiol/AiolCourseList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047420241', '202508311047420240', '添加课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047420242', '202508311047420240', '编辑课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430243', '202508311047420240', '删除课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430244', '202508311047420240', '批量删除课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430245', '202508311047420240', '导出excel_课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430246', '202508311047420240', '导入excel_课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseCategory.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseCategory.sql new file mode 100644 index 00000000..f9ee91f4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseCategory.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111037180400', NULL, '课程分类', '/aiol/aiolCourseCategoryList', 'aiol/AiolCourseCategoryList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037180401', '2025083111037180400', '添加课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037180402', '2025083111037180400', '编辑课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190403', '2025083111037180400', '删除课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190404', '2025083111037180400', '批量删除课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190405', '2025083111037180400', '导出excel_课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190406', '2025083111037180400', '导入excel_课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSection.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSection.sql new file mode 100644 index 00000000..522c3afb --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSection.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111057470590', NULL, '课程章节', '/aiol/aiolCourseSectionList', 'aiol/AiolCourseSectionList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470591', '2025083111057470590', '添加课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470592', '2025083111057470590', '编辑课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470593', '2025083111057470590', '删除课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470594', '2025083111057470590', '批量删除课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470595', '2025083111057470590', '导出excel_课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470596', '2025083111057470590', '导入excel_课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSignup.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSignup.sql new file mode 100644 index 00000000..86712ee0 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseSignup.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111136370150', NULL, '课程报名', '/aiol/aiolCourseSignupList', 'aiol/AiolCourseSignupList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370151', '2025083111136370150', '添加课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370152', '2025083111136370150', '编辑课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370153', '2025083111136370150', '删除课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370154', '2025083111136370150', '批量删除课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370155', '2025083111136370150', '导出excel_课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370156', '2025083111136370150', '导入excel_课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseTeacher.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseTeacher.sql new file mode 100644 index 00000000..f06653d4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolCourseTeacher.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111116810040', NULL, '授课教师', '/aiol/aiolCourseTeacherList', 'aiol/AiolCourseTeacherList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810041', '2025083111116810040', '添加授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810042', '2025083111116810040', '编辑授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810043', '2025083111116810040', '删除授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810044', '2025083111116810040', '批量删除授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810045', '2025083111116810040', '导出excel_授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810046', '2025083111116810040', '导入excel_授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolEntityLink.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolEntityLink.sql new file mode 100644 index 00000000..1af62d7d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolEntityLink.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111083310370', NULL, '主体绑定', '/aiol/aiolEntityLinkList', 'aiol/AiolEntityLinkList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310371', '2025083111083310370', '添加主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310372', '2025083111083310370', '编辑主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310373', '2025083111083310370', '删除主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310374', '2025083111083310370', '批量删除主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310375', '2025083111083310370', '导出excel_主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310376', '2025083111083310370', '导入excel_主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolHomework.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolHomework.sql new file mode 100644 index 00000000..58406730 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolHomework.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111126660310', NULL, '作业', '/aiol/aiolHomeworkList', 'aiol/AiolHomeworkList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660311', '2025083111126660310', '添加作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660312', '2025083111126660310', '编辑作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660313', '2025083111126660310', '删除作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660314', '2025083111126660310', '批量删除作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660315', '2025083111126660310', '导出excel_作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660316', '2025083111126660310', '导入excel_作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolLearnProgress.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolLearnProgress.sql new file mode 100644 index 00000000..4d4ff4ab --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolLearnProgress.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111146440130', NULL, '学习进度', '/aiol/aiolLearnProgressList', 'aiol/AiolLearnProgressList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440131', '2025083111146440130', '添加学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440132', '2025083111146440130', '编辑学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440133', '2025083111146440130', '删除学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440134', '2025083111146440130', '批量删除学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440135', '2025083111146440130', '导出excel_学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440136', '2025083111146440130', '导入excel_学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolQuestion.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolQuestion.sql new file mode 100644 index 00000000..5596831b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolQuestion.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111243810300', NULL, '题目', '/aiol/aiolQuestionList', 'aiol/AiolQuestionList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810301', '2025083111243810300', '添加题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810302', '2025083111243810300', '编辑题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810303', '2025083111243810300', '删除题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810304', '2025083111243810300', '批量删除题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810305', '2025083111243810300', '导出excel_题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810306', '2025083111243810300', '导入excel_题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolResource.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolResource.sql new file mode 100644 index 00000000..11de6d1f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolResource.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111101570120', NULL, '资源', '/aiol/aiolResourceList', 'aiol/AiolResourceList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570121', '2025083111101570120', '添加资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570122', '2025083111101570120', '编辑资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570123', '2025083111101570120', '删除资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570124', '2025083111101570120', '批量删除资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570125', '2025083111101570120', '导出excel_资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570126', '2025083111101570120', '导入excel_资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolUserInfo.sql b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolUserInfo.sql new file mode 100644 index 00000000..cb6216a6 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/V20250831_1__menu_insert_AiolUserInfo.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111119310460', NULL, '用户信息', '/aiol/aiolUserInfoList', 'aiol/AiolUserInfoList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310461', '2025083111119310460', '添加用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310462', '2025083111119310460', '编辑用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310463', '2025083111119310460', '删除用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310464', '2025083111119310460', '批量删除用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310465', '2025083111119310460', '导出excel_用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310466', '2025083111119310460', '导入excel_用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentForm.vue new file mode 100644 index 00000000..80ea779f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentModal.vue new file mode 100644 index 00000000..53d6029a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCommentModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryForm.vue new file mode 100644 index 00000000..4f48c1be --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryModal.vue new file mode 100644 index 00000000..5eed03a4 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseCategoryModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseForm.vue new file mode 100644 index 00000000..ea1968f8 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseModal.vue new file mode 100644 index 00000000..d26db804 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionForm.vue new file mode 100644 index 00000000..10706d8f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionModal.vue new file mode 100644 index 00000000..f28713de --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSectionModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupForm.vue new file mode 100644 index 00000000..2e79ea46 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupModal.vue new file mode 100644 index 00000000..7cf6ed8d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseSignupModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherForm.vue new file mode 100644 index 00000000..8072ee04 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherModal.vue new file mode 100644 index 00000000..a162ca9b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolCourseTeacherModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkForm.vue new file mode 100644 index 00000000..3da87b15 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkModal.vue new file mode 100644 index 00000000..72c5d3a7 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolEntityLinkModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkForm.vue new file mode 100644 index 00000000..ffd69d6b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkModal.vue new file mode 100644 index 00000000..fd76a568 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolHomeworkModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressForm.vue new file mode 100644 index 00000000..3682fc54 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressModal.vue new file mode 100644 index 00000000..1b502b0a --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolLearnProgressModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionForm.vue new file mode 100644 index 00000000..abea580f --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionModal.vue new file mode 100644 index 00000000..71c921ba --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolQuestionModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceForm.vue new file mode 100644 index 00000000..f47aef5b --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceModal.vue new file mode 100644 index 00000000..b8d4ad9d --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolResourceModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoForm.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoForm.vue new file mode 100644 index 00000000..4557e909 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoModal.vue b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoModal.vue new file mode 100644 index 00000000..64861334 --- /dev/null +++ b/jeecg-boot/jeecg-boot-module/jeecg-module-aiol/src/main/java/org/jeecg/modules/aiol/vue3/components/AiolUserInfoModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecg-boot/jeecg-boot-module/pom.xml b/jeecg-boot/jeecg-boot-module/pom.xml index e712b006..b6b9403d 100644 --- a/jeecg-boot/jeecg-boot-module/pom.xml +++ b/jeecg-boot/jeecg-boot-module/pom.xml @@ -16,6 +16,7 @@ jeecg-module-demo jeecg-boot-module-airag jeecg-module-learn + jeecg-module-aiol diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml b/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml index cf8df1ae..79b6452d 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/pom.xml @@ -37,6 +37,13 @@ jeecg-module-learn ${jeecgboot.version} + + + + org.jeecgframework.boot + jeecg-module-aiol + ${jeecgboot.version} + diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml index 2384f2a1..a172b84c 100644 --- a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml +++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml @@ -151,10 +151,10 @@ spring: slow-sql-millis: 5000 datasource: master: -# url: jdbc:mysql://127.0.0.1:33061/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai - url: jdbc:mysql://103.40.14.23:25523/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai + url: jdbc:mysql://127.0.0.1:33061/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +# url: jdbc:mysql://103.40.14.23:25523/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root - password: root + password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver # 多数据源配置 #multi-datasource1: diff --git a/jeecgboot-vue3/src/views/aiol/AiolComment.api.ts b/jeecgboot-vue3/src/views/aiol/AiolComment.api.ts new file mode 100644 index 00000000..1f1cb223 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolComment.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolComment/list', + save='/aiol/aiolComment/add', + edit='/aiol/aiolComment/edit', + deleteOne = '/aiol/aiolComment/delete', + deleteBatch = '/aiol/aiolComment/deleteBatch', + importExcel = '/aiol/aiolComment/importExcel', + exportXls = '/aiol/aiolComment/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolComment.data.ts b/jeecgboot-vue3/src/views/aiol/AiolComment.data.ts new file mode 100644 index 00000000..518c2c96 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolComment.data.ts @@ -0,0 +1,111 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '目标类型', + align:"center", + dataIndex: 'targetType' + }, + { + title: '目标id', + align:"center", + dataIndex: 'targetId' + }, + { + title: '内容', + align:"center", + dataIndex: 'content' + }, + { + title: '图片', + align:"center", + dataIndex: 'imgs' + }, + { + title: '是否置顶', + align:"center", + dataIndex: 'izTop' + }, + { + title: '点赞数', + align:"center", + dataIndex: 'likeCount' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '目标类型', + field: 'targetType', + component: 'Input', + }, + { + label: '目标id', + field: 'targetId', + component: 'Input', + }, + { + label: '内容', + field: 'content', + component: 'Input', + }, + { + label: '图片', + field: 'imgs', + component: 'Input', + }, + { + label: '是否置顶', + field: 'izTop', + component: 'InputNumber', + }, + { + label: '点赞数', + field: 'likeCount', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + targetType: {title: '目标类型',order: 1,view: 'text', type: 'string',}, + targetId: {title: '目标id',order: 2,view: 'text', type: 'string',}, + content: {title: '内容',order: 3,view: 'text', type: 'string',}, + imgs: {title: '图片',order: 4,view: 'text', type: 'string',}, + izTop: {title: '是否置顶',order: 5,view: 'number', type: 'number',}, + likeCount: {title: '点赞数',order: 6,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCommentList.vue b/jeecgboot-vue3/src/views/aiol/AiolCommentList.vue new file mode 100644 index 00000000..eadf9245 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCommentList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourse.api.ts b/jeecgboot-vue3/src/views/aiol/AiolCourse.api.ts new file mode 100644 index 00000000..e958ce90 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourse.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourse/list', + save='/aiol/aiolCourse/add', + edit='/aiol/aiolCourse/edit', + deleteOne = '/aiol/aiolCourse/delete', + deleteBatch = '/aiol/aiolCourse/deleteBatch', + importExcel = '/aiol/aiolCourse/importExcel', + exportXls = '/aiol/aiolCourse/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts b/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts new file mode 100644 index 00000000..9e8d25c5 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourse.data.ts @@ -0,0 +1,271 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程名', + align:"center", + dataIndex: 'name' + }, + { + title: '封面图', + align:"center", + dataIndex: 'cover', + customRender:render.renderImage, + }, + { + title: '介绍视频', + align:"center", + dataIndex: 'video', + }, + { + title: '学校', + align:"center", + dataIndex: 'school' + }, + { + title: '课程概述', + align:"center", + dataIndex: 'description', + }, + { + title: '课程类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '授课目标', + align:"center", + dataIndex: 'target' + }, + { + title: '课程难度', + align:"center", + dataIndex: 'difficulty_dictText' + }, + { + title: '所属专题', + align:"center", + dataIndex: 'subject_dictText' + }, + { + title: '课程大纲', + align:"center", + dataIndex: 'outline', + }, + { + title: '预备知识', + align:"center", + dataIndex: 'prerequisite' + }, + { + title: '参考资料', + align:"center", + dataIndex: 'reference' + }, + { + title: '学时安排', + align:"center", + dataIndex: 'arrangement' + }, + { + title: '开课时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结课时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '已报名人数', + align:"center", + dataIndex: 'enrollCount' + }, + { + title: '最大报名人数', + align:"center", + dataIndex: 'maxEnroll' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, + { + title: '常见问题', + align:"center", + dataIndex: 'question', + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程名', + field: 'name', + component: 'Input', + }, + { + label: '封面图', + field: 'cover', + component: 'JImageUpload', + componentProps:{ + fileMax: 0 + }, + }, + { + label: '介绍视频', + field: 'video', + component: 'JUpload', + componentProps:{ + }, + }, + { + label: '学校', + field: 'school', + component: 'Input', + }, + { + label: '课程概述', + field: 'description', + component: 'JEditor', + }, + { + label: '课程类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_type", + type: "radio" + }, + }, + { + label: '授课目标', + field: 'target', + component: 'Input', + }, + { + label: '课程难度', + field: 'difficulty', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_difficulty" + }, + }, + { + label: '所属专题', + field: 'subject', + component: 'JSelectMultiple', + componentProps:{ + dictCode:"course_subject" + }, + }, + { + label: '课程大纲', + field: 'outline', + component: 'JEditor', + }, + { + label: '预备知识', + field: 'prerequisite', + component: 'Input', + }, + { + label: '参考资料', + field: 'reference', + component: 'Input', + }, + { + label: '学时安排', + field: 'arrangement', + component: 'Input', + }, + { + label: '开课时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '结课时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '已报名人数', + field: 'enrollCount', + component: 'InputNumber', + }, + { + label: '最大报名人数', + field: 'maxEnroll', + component: 'InputNumber', + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_status", + type: "radio" + }, + }, + { + label: '常见问题', + field: 'question', + component: 'JEditor', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '课程名',order: 0,view: 'text', type: 'string',}, + cover: {title: '封面图',order: 1,view: 'image', type: 'string',}, + video: {title: '介绍视频',order: 2,view: 'file', type: 'string',}, + school: {title: '学校',order: 3,view: 'text', type: 'string',}, + description: {title: '课程概述',order: 4,view: 'umeditor', type: 'string',}, + type: {title: '课程类型',order: 5,view: 'number', type: 'number',dictCode: 'course_type',}, + target: {title: '授课目标',order: 6,view: 'text', type: 'string',}, + difficulty: {title: '课程难度',order: 7,view: 'number', type: 'number',dictCode: 'course_difficulty',}, + subject: {title: '所属专题',order: 8,view: 'list_multi', type: 'string',dictCode: 'course_subject',}, + outline: {title: '课程大纲',order: 9,view: 'umeditor', type: 'string',}, + prerequisite: {title: '预备知识',order: 10,view: 'text', type: 'string',}, + reference: {title: '参考资料',order: 11,view: 'text', type: 'string',}, + arrangement: {title: '学时安排',order: 12,view: 'text', type: 'string',}, + startTime: {title: '开课时间',order: 13,view: 'datetime', type: 'string',}, + endTime: {title: '结课时间',order: 14,view: 'datetime', type: 'string',}, + enrollCount: {title: '已报名人数',order: 15,view: 'number', type: 'number',}, + maxEnroll: {title: '最大报名人数',order: 16,view: 'number', type: 'number',}, + status: {title: '状态',order: 17,view: 'number', type: 'number',dictCode: 'course_status',}, + question: {title: '常见问题',order: 18,view: 'umeditor', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseCategory.api.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseCategory.api.ts new file mode 100644 index 00000000..6d07d860 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseCategory.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseCategory/list', + save='/aiol/aiolCourseCategory/add', + edit='/aiol/aiolCourseCategory/edit', + deleteOne = '/aiol/aiolCourseCategory/delete', + deleteBatch = '/aiol/aiolCourseCategory/deleteBatch', + importExcel = '/aiol/aiolCourseCategory/importExcel', + exportXls = '/aiol/aiolCourseCategory/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseCategory.data.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseCategory.data.ts new file mode 100644 index 00000000..13dc9bac --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseCategory.data.ts @@ -0,0 +1,56 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '分类名', + align:"center", + dataIndex: 'name' + }, + { + title: '排序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '分类名', + field: 'name', + component: 'Input', + }, + { + label: '排序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '分类名',order: 0,view: 'text', type: 'string',}, + sortOrder: {title: '排序',order: 1,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseCategoryList.vue b/jeecgboot-vue3/src/views/aiol/AiolCourseCategoryList.vue new file mode 100644 index 00000000..7d7eebf7 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseCategoryList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseList.vue b/jeecgboot-vue3/src/views/aiol/AiolCourseList.vue new file mode 100644 index 00000000..7ba370ba --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseList.vue @@ -0,0 +1,223 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseSection.api.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseSection.api.ts new file mode 100644 index 00000000..1ac3095f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseSection.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseSection/list', + save='/aiol/aiolCourseSection/add', + edit='/aiol/aiolCourseSection/edit', + deleteOne = '/aiol/aiolCourseSection/delete', + deleteBatch = '/aiol/aiolCourseSection/deleteBatch', + importExcel = '/aiol/aiolCourseSection/importExcel', + exportXls = '/aiol/aiolCourseSection/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseSection.data.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseSection.data.ts new file mode 100644 index 00000000..64fb81af --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseSection.data.ts @@ -0,0 +1,119 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '章节名', + align:"center", + dataIndex: 'name' + }, + { + title: '章节类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '排序号', + align:"center", + dataIndex: 'sortOrder' + }, + { + title: '父章节id', + align:"center", + dataIndex: 'parentId' + }, + { + title: '章节层级', + align:"center", + dataIndex: 'level_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程id', + field: 'courseId', + component: 'JPopup', + componentProps: ({ formActionType }) => { + const {setFieldsValue} = formActionType; + return{ + setFieldsValue:setFieldsValue, + code:"course_list", + fieldConfig: [ + { source: 'name', target: 'courseId' }, + ], + multi:false + } + }, + + }, + { + label: '章节名', + field: 'name', + component: 'Input', + }, + { + label: '章节类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_section_type" + }, + }, + { + label: '排序号', + field: 'sortOrder', + component: 'InputNumber', + }, + { + label: '父章节id', + field: 'parentId', + component: 'Input', + }, + { + label: '章节层级', + field: 'level', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_section_level", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + courseId: {title: '课程id',order: 0,view: 'popup', type: 'string',code: 'course_list', orgFields: 'name', destFields: 'courseId', popupMulti: false,}, + name: {title: '章节名',order: 1,view: 'text', type: 'string',}, + type: {title: '章节类型',order: 2,view: 'number', type: 'number',dictCode: 'course_section_type',}, + sortOrder: {title: '排序号',order: 3,view: 'number', type: 'number',}, + parentId: {title: '父章节id',order: 4,view: 'text', type: 'string',}, + level: {title: '章节层级',order: 5,view: 'number', type: 'number',dictCode: 'course_section_level',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseSectionList.vue b/jeecgboot-vue3/src/views/aiol/AiolCourseSectionList.vue new file mode 100644 index 00000000..3658c5d2 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseSectionList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseSignup.api.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseSignup.api.ts new file mode 100644 index 00000000..fe6de808 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseSignup.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseSignup/list', + save='/aiol/aiolCourseSignup/add', + edit='/aiol/aiolCourseSignup/edit', + deleteOne = '/aiol/aiolCourseSignup/delete', + deleteBatch = '/aiol/aiolCourseSignup/deleteBatch', + importExcel = '/aiol/aiolCourseSignup/importExcel', + exportXls = '/aiol/aiolCourseSignup/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseSignup.data.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseSignup.data.ts new file mode 100644 index 00000000..1fe1ff73 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseSignup.data.ts @@ -0,0 +1,56 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '课程id', + field: 'courseId', + component: 'Input', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + courseId: {title: '课程id',order: 1,view: 'text', type: 'string',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseSignupList.vue b/jeecgboot-vue3/src/views/aiol/AiolCourseSignupList.vue new file mode 100644 index 00000000..06562a09 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseSignupList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.api.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.api.ts new file mode 100644 index 00000000..b16cd198 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolCourseTeacher/list', + save='/aiol/aiolCourseTeacher/add', + edit='/aiol/aiolCourseTeacher/edit', + deleteOne = '/aiol/aiolCourseTeacher/delete', + deleteBatch = '/aiol/aiolCourseTeacher/deleteBatch', + importExcel = '/aiol/aiolCourseTeacher/importExcel', + exportXls = '/aiol/aiolCourseTeacher/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.data.ts b/jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.data.ts new file mode 100644 index 00000000..44749707 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseTeacher.data.ts @@ -0,0 +1,82 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '教师id', + align:"center", + dataIndex: 'teacherId' + }, + { + title: '授课角色', + align:"center", + dataIndex: 'role_dictText' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '课程id', + field: 'courseId', + component: 'Input', + }, + { + label: '教师id', + field: 'teacherId', + component: 'Input', + }, + { + label: '授课角色', + field: 'role', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_role", + type: "radio" + }, + }, + { + label: '显示顺序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + courseId: {title: '课程id',order: 0,view: 'text', type: 'string',}, + teacherId: {title: '教师id',order: 1,view: 'text', type: 'string',}, + role: {title: '授课角色',order: 2,view: 'radio', type: 'string',dictCode: 'course_role',}, + sortOrder: {title: '显示顺序',order: 3,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolCourseTeacherList.vue b/jeecgboot-vue3/src/views/aiol/AiolCourseTeacherList.vue new file mode 100644 index 00000000..24bc55f0 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolCourseTeacherList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolEntityLink.api.ts b/jeecgboot-vue3/src/views/aiol/AiolEntityLink.api.ts new file mode 100644 index 00000000..1068d236 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolEntityLink.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolEntityLink/list', + save='/aiol/aiolEntityLink/add', + edit='/aiol/aiolEntityLink/edit', + deleteOne = '/aiol/aiolEntityLink/delete', + deleteBatch = '/aiol/aiolEntityLink/deleteBatch', + importExcel = '/aiol/aiolEntityLink/importExcel', + exportXls = '/aiol/aiolEntityLink/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolEntityLink.data.ts b/jeecgboot-vue3/src/views/aiol/AiolEntityLink.data.ts new file mode 100644 index 00000000..94931d1f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolEntityLink.data.ts @@ -0,0 +1,89 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '主体类型', + align:"center", + dataIndex: 'sourceType' + }, + { + title: '主体id', + align:"center", + dataIndex: 'sourceId' + }, + { + title: '内容类型', + align:"center", + dataIndex: 'targetType' + }, + { + title: '内容id', + align:"center", + dataIndex: 'targetId' + }, + { + title: '排序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '主体类型', + field: 'sourceType', + component: 'Input', + }, + { + label: '主体id', + field: 'sourceId', + component: 'Input', + }, + { + label: '内容类型', + field: 'targetType', + component: 'Input', + }, + { + label: '内容id', + field: 'targetId', + component: 'Input', + }, + { + label: '排序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + sourceType: {title: '主体类型',order: 0,view: 'text', type: 'string',}, + sourceId: {title: '主体id',order: 1,view: 'text', type: 'string',}, + targetType: {title: '内容类型',order: 2,view: 'text', type: 'string',}, + targetId: {title: '内容id',order: 3,view: 'text', type: 'string',}, + sortOrder: {title: '排序',order: 4,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolEntityLinkList.vue b/jeecgboot-vue3/src/views/aiol/AiolEntityLinkList.vue new file mode 100644 index 00000000..0a3cecbf --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolEntityLinkList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolHomework.api.ts b/jeecgboot-vue3/src/views/aiol/AiolHomework.api.ts new file mode 100644 index 00000000..a28d5de3 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolHomework.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolHomework/list', + save='/aiol/aiolHomework/add', + edit='/aiol/aiolHomework/edit', + deleteOne = '/aiol/aiolHomework/delete', + deleteBatch = '/aiol/aiolHomework/deleteBatch', + importExcel = '/aiol/aiolHomework/importExcel', + exportXls = '/aiol/aiolHomework/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolHomework.data.ts b/jeecgboot-vue3/src/views/aiol/AiolHomework.data.ts new file mode 100644 index 00000000..4ee7f9c2 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolHomework.data.ts @@ -0,0 +1,136 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '标题', + align:"center", + dataIndex: 'title' + }, + { + title: '说明', + align:"center", + dataIndex: 'description', + }, + { + title: '附件', + align:"center", + dataIndex: 'attachment', + }, + { + title: '满分', + align:"center", + dataIndex: 'maxScore' + }, + { + title: '及格分数', + align:"center", + dataIndex: 'passScore' + }, + { + title: '开始时间', + align:"center", + dataIndex: 'startTime' + }, + { + title: '结束时间', + align:"center", + dataIndex: 'endTime' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '标题', + field: 'title', + component: 'Input', + }, + { + label: '说明', + field: 'description', + component: 'JEditor', + }, + { + label: '附件', + field: 'attachment', + component: 'JUpload', + componentProps:{ + }, + }, + { + label: '满分', + field: 'maxScore', + component: 'InputNumber', + }, + { + label: '及格分数', + field: 'passScore', + component: 'InputNumber', + }, + { + label: '开始时间', + field: 'startTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '结束时间', + field: 'endTime', + component: 'DatePicker', + componentProps: { + showTime: true, + valueFormat: 'YYYY-MM-DD HH:mm:ss' + }, + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"course_status", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + title: {title: '标题',order: 0,view: 'text', type: 'string',}, + description: {title: '说明',order: 1,view: 'umeditor', type: 'string',}, + attachment: {title: '附件',order: 2,view: 'file', type: 'string',}, + maxScore: {title: '满分',order: 3,view: 'number', type: 'number',}, + passScore: {title: '及格分数',order: 4,view: 'number', type: 'number',}, + startTime: {title: '开始时间',order: 5,view: 'datetime', type: 'string',}, + endTime: {title: '结束时间',order: 6,view: 'datetime', type: 'string',}, + status: {title: '状态',order: 7,view: 'number', type: 'number',dictCode: 'course_status',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolHomeworkList.vue b/jeecgboot-vue3/src/views/aiol/AiolHomeworkList.vue new file mode 100644 index 00000000..a5b3bea3 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolHomeworkList.vue @@ -0,0 +1,215 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolLearnProgress.api.ts b/jeecgboot-vue3/src/views/aiol/AiolLearnProgress.api.ts new file mode 100644 index 00000000..4e392a60 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolLearnProgress.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolLearnProgress/list', + save='/aiol/aiolLearnProgress/add', + edit='/aiol/aiolLearnProgress/edit', + deleteOne = '/aiol/aiolLearnProgress/delete', + deleteBatch = '/aiol/aiolLearnProgress/deleteBatch', + importExcel = '/aiol/aiolLearnProgress/importExcel', + exportXls = '/aiol/aiolLearnProgress/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolLearnProgress.data.ts b/jeecgboot-vue3/src/views/aiol/AiolLearnProgress.data.ts new file mode 100644 index 00000000..ee5b6156 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolLearnProgress.data.ts @@ -0,0 +1,100 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '课程id', + align:"center", + dataIndex: 'courseId' + }, + { + title: '章节id', + align:"center", + dataIndex: 'sectionId' + }, + { + title: '进度', + align:"center", + dataIndex: 'progress' + }, + { + title: '时长', + align:"center", + dataIndex: 'duration' + }, + { + title: '状态', + align:"center", + dataIndex: 'status' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '课程id', + field: 'courseId', + component: 'Input', + }, + { + label: '章节id', + field: 'sectionId', + component: 'Input', + }, + { + label: '进度', + field: 'progress', + component: 'InputNumber', + }, + { + label: '时长', + field: 'duration', + component: 'InputNumber', + }, + { + label: '状态', + field: 'status', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + courseId: {title: '课程id',order: 1,view: 'text', type: 'string',}, + sectionId: {title: '章节id',order: 2,view: 'text', type: 'string',}, + progress: {title: '进度',order: 3,view: 'number', type: 'number',}, + duration: {title: '时长',order: 4,view: 'number', type: 'number',}, + status: {title: '状态',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolLearnProgressList.vue b/jeecgboot-vue3/src/views/aiol/AiolLearnProgressList.vue new file mode 100644 index 00000000..5172108f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolLearnProgressList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolQuestion.api.ts b/jeecgboot-vue3/src/views/aiol/AiolQuestion.api.ts new file mode 100644 index 00000000..d983ceda --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolQuestion.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolQuestion/list', + save='/aiol/aiolQuestion/add', + edit='/aiol/aiolQuestion/edit', + deleteOne = '/aiol/aiolQuestion/delete', + deleteBatch = '/aiol/aiolQuestion/deleteBatch', + importExcel = '/aiol/aiolQuestion/importExcel', + exportXls = '/aiol/aiolQuestion/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolQuestion.data.ts b/jeecgboot-vue3/src/views/aiol/AiolQuestion.data.ts new file mode 100644 index 00000000..88a27ad2 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolQuestion.data.ts @@ -0,0 +1,106 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '父题目id', + align:"center", + dataIndex: 'parentId' + }, + { + title: '题目类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '题干', + align:"center", + dataIndex: 'content', + }, + { + title: '题目解析', + align:"center", + dataIndex: 'analysis', + }, + { + title: '难度', + align:"center", + dataIndex: 'difficulty_dictText' + }, + { + title: '分值', + align:"center", + dataIndex: 'score' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '父题目id', + field: 'parentId', + component: 'Input', + }, + { + label: '题目类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"question_type" + }, + }, + { + label: '题干', + field: 'content', + component: 'JEditor', + }, + { + label: '题目解析', + field: 'analysis', + component: 'JEditor', + }, + { + label: '难度', + field: 'difficulty', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"question_difficulty" + }, + }, + { + label: '分值', + field: 'score', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + parentId: {title: '父题目id',order: 0,view: 'text', type: 'string',}, + type: {title: '题目类型',order: 1,view: 'number', type: 'number',dictCode: 'question_type',}, + content: {title: '题干',order: 2,view: 'umeditor', type: 'string',}, + analysis: {title: '题目解析',order: 3,view: 'umeditor', type: 'string',}, + difficulty: {title: '难度',order: 4,view: 'number', type: 'number',dictCode: 'question_difficulty',}, + score: {title: '分值',order: 5,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolQuestionList.vue b/jeecgboot-vue3/src/views/aiol/AiolQuestionList.vue new file mode 100644 index 00000000..4cd787ef --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolQuestionList.vue @@ -0,0 +1,214 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolResource.api.ts b/jeecgboot-vue3/src/views/aiol/AiolResource.api.ts new file mode 100644 index 00000000..777b3c2b --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolResource.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolResource/list', + save='/aiol/aiolResource/add', + edit='/aiol/aiolResource/edit', + deleteOne = '/aiol/aiolResource/delete', + deleteBatch = '/aiol/aiolResource/deleteBatch', + importExcel = '/aiol/aiolResource/importExcel', + exportXls = '/aiol/aiolResource/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolResource.data.ts b/jeecgboot-vue3/src/views/aiol/AiolResource.data.ts new file mode 100644 index 00000000..3e907ca5 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolResource.data.ts @@ -0,0 +1,155 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '资源名', + align:"center", + dataIndex: 'name' + }, + { + title: '描述', + align:"center", + dataIndex: 'description' + }, + { + title: '资源类型', + align:"center", + dataIndex: 'type_dictText' + }, + { + title: '文件url', + align:"center", + dataIndex: 'fileUrl' + }, + { + title: '缩略图url', + align:"center", + dataIndex: 'thumbnailUrl' + }, + { + title: '时长', + align:"center", + dataIndex: 'duration' + }, + { + title: '文件大小', + align:"center", + dataIndex: 'fileSize' + }, + { + title: '文件元数据', + align:"center", + dataIndex: 'metadata' + }, + { + title: '是否精选', + align:"center", + dataIndex: 'izFeatured_dictText' + }, + { + title: '状态', + align:"center", + dataIndex: 'status_dictText' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '资源名', + field: 'name', + component: 'Input', + }, + { + label: '描述', + field: 'description', + component: 'Input', + }, + { + label: '资源类型', + field: 'type', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"resource_type" + }, + }, + { + label: '文件url', + field: 'fileUrl', + component: 'Input', + }, + { + label: '缩略图url', + field: 'thumbnailUrl', + component: 'Input', + }, + { + label: '时长', + field: 'duration', + component: 'InputNumber', + }, + { + label: '文件大小', + field: 'fileSize', + component: 'InputNumber', + }, + { + label: '文件元数据', + field: 'metadata', + component: 'Input', + }, + { + label: '是否精选', + field: 'izFeatured', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"resource_iz_featured", + type: "radio" + }, + }, + { + label: '状态', + field: 'status', + component: 'JDictSelectTag', + componentProps:{ + dictCode:"resource_status", + type: "radio" + }, + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + name: {title: '资源名',order: 0,view: 'text', type: 'string',}, + description: {title: '描述',order: 1,view: 'text', type: 'string',}, + type: {title: '资源类型',order: 2,view: 'number', type: 'number',dictCode: 'resource_type',}, + fileUrl: {title: '文件url',order: 3,view: 'text', type: 'string',}, + thumbnailUrl: {title: '缩略图url',order: 4,view: 'text', type: 'string',}, + duration: {title: '时长',order: 5,view: 'number', type: 'number',}, + fileSize: {title: '文件大小',order: 6,view: 'number', type: 'number',}, + metadata: {title: '文件元数据',order: 7,view: 'text', type: 'string',}, + izFeatured: {title: '是否精选',order: 8,view: 'number', type: 'number',dictCode: 'resource_iz_featured',}, + status: {title: '状态',order: 9,view: 'number', type: 'number',dictCode: 'resource_status',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolResourceList.vue b/jeecgboot-vue3/src/views/aiol/AiolResourceList.vue new file mode 100644 index 00000000..f6969755 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolResourceList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolUserInfo.api.ts b/jeecgboot-vue3/src/views/aiol/AiolUserInfo.api.ts new file mode 100644 index 00000000..f4e6d38c --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolUserInfo.api.ts @@ -0,0 +1,64 @@ +import {defHttp} from '/@/utils/http/axios'; +import { useMessage } from "/@/hooks/web/useMessage"; + +const { createConfirm } = useMessage(); + +enum Api { + list = '/aiol/aiolUserInfo/list', + save='/aiol/aiolUserInfo/add', + edit='/aiol/aiolUserInfo/edit', + deleteOne = '/aiol/aiolUserInfo/delete', + deleteBatch = '/aiol/aiolUserInfo/deleteBatch', + importExcel = '/aiol/aiolUserInfo/importExcel', + exportXls = '/aiol/aiolUserInfo/exportXls', +} +/** + * 导出api + * @param params + */ +export const getExportUrl = Api.exportXls; +/** + * 导入api + */ +export const getImportUrl = Api.importExcel; +/** + * 列表接口 + * @param params + */ +export const list = (params) => + defHttp.get({url: Api.list, params}); + +/** + * 删除单个 + */ +export const deleteOne = (params,handleSuccess) => { + return defHttp.delete({url: Api.deleteOne, params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); +} +/** + * 批量删除 + * @param params + */ +export const batchDelete = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认删除', + content: '是否删除选中数据', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.delete({url: Api.deleteBatch, data: params}, {joinParamsToUrl: true}).then(() => { + handleSuccess(); + }); + } + }); +} +/** + * 保存或者更新 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({url: url, params}); +} diff --git a/jeecgboot-vue3/src/views/aiol/AiolUserInfo.data.ts b/jeecgboot-vue3/src/views/aiol/AiolUserInfo.data.ts new file mode 100644 index 00000000..a0ecfb73 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolUserInfo.data.ts @@ -0,0 +1,111 @@ +import {BasicColumn} from '/@/components/Table'; +import {FormSchema} from '/@/components/Table'; +import { rules} from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; +import { getWeekMonthQuarterYear } from '/@/utils'; +//列表数据 +export const columns: BasicColumn[] = [ + { + title: '用户id', + align:"center", + dataIndex: 'userId' + }, + { + title: '专业', + align:"center", + dataIndex: 'major' + }, + { + title: '学院', + align:"center", + dataIndex: 'college' + }, + { + title: '学历', + align:"center", + dataIndex: 'education' + }, + { + title: '职称', + align:"center", + dataIndex: 'title' + }, + { + title: '标签', + align:"center", + dataIndex: 'tag' + }, + { + title: '显示顺序', + align:"center", + dataIndex: 'sortOrder' + }, +]; +//查询数据 +export const searchFormSchema: FormSchema[] = [ +]; +//表单数据 +export const formSchema: FormSchema[] = [ + { + label: '用户id', + field: 'userId', + component: 'Input', + }, + { + label: '专业', + field: 'major', + component: 'Input', + }, + { + label: '学院', + field: 'college', + component: 'Input', + }, + { + label: '学历', + field: 'education', + component: 'Input', + }, + { + label: '职称', + field: 'title', + component: 'Input', + }, + { + label: '标签', + field: 'tag', + component: 'Input', + }, + { + label: '显示顺序', + field: 'sortOrder', + component: 'InputNumber', + }, + // TODO 主键隐藏字段,目前写死为ID + { + label: '', + field: 'id', + component: 'Input', + show: false + }, +]; + +// 高级查询数据 +export const superQuerySchema = { + userId: {title: '用户id',order: 0,view: 'text', type: 'string',}, + major: {title: '专业',order: 1,view: 'text', type: 'string',}, + college: {title: '学院',order: 2,view: 'text', type: 'string',}, + education: {title: '学历',order: 3,view: 'text', type: 'string',}, + title: {title: '职称',order: 4,view: 'text', type: 'string',}, + tag: {title: '标签',order: 5,view: 'text', type: 'string',}, + sortOrder: {title: '显示顺序',order: 6,view: 'number', type: 'number',}, +}; + +/** +* 流程表单调用这个方法获取formSchema +* @param param +*/ +export function getBpmFormSchema(_formData): FormSchema[]{ + // 默认和原始表单保持一致 如果流程中配置了权限数据,这里需要单独处理formSchema + return formSchema; +} \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/AiolUserInfoList.vue b/jeecgboot-vue3/src/views/aiol/AiolUserInfoList.vue new file mode 100644 index 00000000..fc79c4a8 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/AiolUserInfoList.vue @@ -0,0 +1,206 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolComment.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolComment.sql new file mode 100644 index 00000000..563e4221 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolComment.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111242990370', NULL, '评论', '/aiol/aiolCommentList', 'aiol/AiolCommentList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990371', '2025083111242990370', '添加评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990372', '2025083111242990370', '编辑评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990373', '2025083111242990370', '删除评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990374', '2025083111242990370', '批量删除评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990375', '2025083111242990370', '导出excel_评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111242990376', '2025083111242990370', '导入excel_评论', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_comment:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:37', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourse.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourse.sql new file mode 100644 index 00000000..9537c37a --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourse.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('202508311047420240', NULL, '课程', '/aiol/aiolCourseList', 'aiol/AiolCourseList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047420241', '202508311047420240', '添加课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047420242', '202508311047420240', '编辑课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430243', '202508311047420240', '删除课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430244', '202508311047420240', '批量删除课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430245', '202508311047420240', '导出excel_课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('202508311047430246', '202508311047420240', '导入excel_课程', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 10:47:24', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseCategory.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseCategory.sql new file mode 100644 index 00000000..f9ee91f4 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseCategory.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111037180400', NULL, '课程分类', '/aiol/aiolCourseCategoryList', 'aiol/AiolCourseCategoryList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037180401', '2025083111037180400', '添加课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037180402', '2025083111037180400', '编辑课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190403', '2025083111037180400', '删除课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190404', '2025083111037180400', '批量删除课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190405', '2025083111037180400', '导出excel_课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111037190406', '2025083111037180400', '导入excel_课程分类', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_category:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:03:40', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSection.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSection.sql new file mode 100644 index 00000000..522c3afb --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSection.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111057470590', NULL, '课程章节', '/aiol/aiolCourseSectionList', 'aiol/AiolCourseSectionList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470591', '2025083111057470590', '添加课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470592', '2025083111057470590', '编辑课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470593', '2025083111057470590', '删除课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470594', '2025083111057470590', '批量删除课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470595', '2025083111057470590', '导出excel_课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111057470596', '2025083111057470590', '导入excel_课程章节', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_section:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:05:59', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSignup.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSignup.sql new file mode 100644 index 00000000..86712ee0 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseSignup.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111136370150', NULL, '课程报名', '/aiol/aiolCourseSignupList', 'aiol/AiolCourseSignupList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370151', '2025083111136370150', '添加课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370152', '2025083111136370150', '编辑课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370153', '2025083111136370150', '删除课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370154', '2025083111136370150', '批量删除课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370155', '2025083111136370150', '导出excel_课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111136370156', '2025083111136370150', '导入excel_课程报名', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_signup:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:13:15', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseTeacher.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseTeacher.sql new file mode 100644 index 00000000..f06653d4 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolCourseTeacher.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111116810040', NULL, '授课教师', '/aiol/aiolCourseTeacherList', 'aiol/AiolCourseTeacherList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810041', '2025083111116810040', '添加授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810042', '2025083111116810040', '编辑授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810043', '2025083111116810040', '删除授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810044', '2025083111116810040', '批量删除授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810045', '2025083111116810040', '导出excel_授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111116810046', '2025083111116810040', '导入excel_授课教师', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_course_teacher:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:04', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolEntityLink.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolEntityLink.sql new file mode 100644 index 00000000..1af62d7d --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolEntityLink.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111083310370', NULL, '主体绑定', '/aiol/aiolEntityLinkList', 'aiol/AiolEntityLinkList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310371', '2025083111083310370', '添加主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310372', '2025083111083310370', '编辑主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310373', '2025083111083310370', '删除主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310374', '2025083111083310370', '批量删除主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310375', '2025083111083310370', '导出excel_主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111083310376', '2025083111083310370', '导入excel_主体绑定', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_entity_link:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:08:37', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolHomework.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolHomework.sql new file mode 100644 index 00000000..58406730 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolHomework.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111126660310', NULL, '作业', '/aiol/aiolHomeworkList', 'aiol/AiolHomeworkList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660311', '2025083111126660310', '添加作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660312', '2025083111126660310', '编辑作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660313', '2025083111126660310', '删除作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660314', '2025083111126660310', '批量删除作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660315', '2025083111126660310', '导出excel_作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111126660316', '2025083111126660310', '导入excel_作业', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_homework:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:12:31', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolLearnProgress.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolLearnProgress.sql new file mode 100644 index 00000000..4d4ff4ab --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolLearnProgress.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111146440130', NULL, '学习进度', '/aiol/aiolLearnProgressList', 'aiol/AiolLearnProgressList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440131', '2025083111146440130', '添加学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440132', '2025083111146440130', '编辑学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440133', '2025083111146440130', '删除学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440134', '2025083111146440130', '批量删除学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440135', '2025083111146440130', '导出excel_学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111146440136', '2025083111146440130', '导入excel_学习进度', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_learn_progress:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:14:13', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolQuestion.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolQuestion.sql new file mode 100644 index 00000000..5596831b --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolQuestion.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111243810300', NULL, '题目', '/aiol/aiolQuestionList', 'aiol/AiolQuestionList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810301', '2025083111243810300', '添加题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810302', '2025083111243810300', '编辑题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810303', '2025083111243810300', '删除题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810304', '2025083111243810300', '批量删除题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810305', '2025083111243810300', '导出excel_题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111243810306', '2025083111243810300', '导入excel_题目', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_question:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:24:30', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolResource.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolResource.sql new file mode 100644 index 00000000..11de6d1f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolResource.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111101570120', NULL, '资源', '/aiol/aiolResourceList', 'aiol/AiolResourceList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570121', '2025083111101570120', '添加资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570122', '2025083111101570120', '编辑资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570123', '2025083111101570120', '删除资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570124', '2025083111101570120', '批量删除资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570125', '2025083111101570120', '导出excel_资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111101570126', '2025083111101570120', '导入excel_资源', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_resource:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:10:12', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolUserInfo.sql b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolUserInfo.sql new file mode 100644 index 00000000..cb6216a6 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/V20250831_1__menu_insert_AiolUserInfo.sql @@ -0,0 +1,26 @@ +-- 注意:该页面对应的前台目录为views/aiol文件夹下 +-- 如果你想更改到其他目录,请修改sql中component字段对应的值 + + +INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external) +VALUES ('2025083111119310460', NULL, '用户信息', '/aiol/aiolUserInfoList', 'aiol/AiolUserInfoList', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0); + +-- 权限控制sql +-- 新增 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310461', '2025083111119310460', '添加用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 编辑 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310462', '2025083111119310460', '编辑用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310463', '2025083111119310460', '删除用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 批量删除 +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310464', '2025083111119310460', '批量删除用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 导出excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310465', '2025083111119310460', '导出excel_用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); +-- 导入excel +INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external) +VALUES ('2025083111119310466', '2025083111119310460', '导入excel_用户信息', NULL, NULL, 0, NULL, NULL, 2, 'aiol:aiol_user_info:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '2025-08-31 11:11:46', NULL, NULL, 0, 0, '1', 0); \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCommentForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCommentForm.vue new file mode 100644 index 00000000..80ea779f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCommentForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCommentModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCommentModal.vue new file mode 100644 index 00000000..53d6029a --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCommentModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryForm.vue new file mode 100644 index 00000000..4f48c1be --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryModal.vue new file mode 100644 index 00000000..5eed03a4 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseCategoryModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseForm.vue new file mode 100644 index 00000000..ea1968f8 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseModal.vue new file mode 100644 index 00000000..d26db804 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionForm.vue new file mode 100644 index 00000000..10706d8f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionModal.vue new file mode 100644 index 00000000..f28713de --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSectionModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupForm.vue new file mode 100644 index 00000000..2e79ea46 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupModal.vue new file mode 100644 index 00000000..7cf6ed8d --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseSignupModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherForm.vue new file mode 100644 index 00000000..8072ee04 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherModal.vue new file mode 100644 index 00000000..a162ca9b --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolCourseTeacherModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkForm.vue new file mode 100644 index 00000000..3da87b15 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkModal.vue new file mode 100644 index 00000000..72c5d3a7 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolEntityLinkModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolHomeworkForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolHomeworkForm.vue new file mode 100644 index 00000000..ffd69d6b --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolHomeworkForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolHomeworkModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolHomeworkModal.vue new file mode 100644 index 00000000..fd76a568 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolHomeworkModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressForm.vue new file mode 100644 index 00000000..3682fc54 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressModal.vue new file mode 100644 index 00000000..1b502b0a --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolLearnProgressModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolQuestionForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolQuestionForm.vue new file mode 100644 index 00000000..abea580f --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolQuestionForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolQuestionModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolQuestionModal.vue new file mode 100644 index 00000000..71c921ba --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolQuestionModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolResourceForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolResourceForm.vue new file mode 100644 index 00000000..f47aef5b --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolResourceForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolResourceModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolResourceModal.vue new file mode 100644 index 00000000..b8d4ad9d --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolResourceModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolUserInfoForm.vue b/jeecgboot-vue3/src/views/aiol/components/AiolUserInfoForm.vue new file mode 100644 index 00000000..4557e909 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolUserInfoForm.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/jeecgboot-vue3/src/views/aiol/components/AiolUserInfoModal.vue b/jeecgboot-vue3/src/views/aiol/components/AiolUserInfoModal.vue new file mode 100644 index 00000000..64861334 --- /dev/null +++ b/jeecgboot-vue3/src/views/aiol/components/AiolUserInfoModal.vue @@ -0,0 +1,99 @@ + + + + + \ No newline at end of file