From 2b31a38a8270bebc5e82f07db8833ab038aac30b Mon Sep 17 00:00:00 2001 From: youhang <2998465706@qq.com> Date: Tue, 17 Dec 2024 14:45:29 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 12 +- .../teaching/backend/common/BaseResponse.java | 2 + .../teaching/backend/common/CommonResult.java | 117 ---- .../RestAuthenticationEntryPoint.java | 5 +- .../component/RestfulAccessDeniedHandler.java | 5 +- .../NonStaticResourceHttpRequestHandler.java | 23 - .../FavourInformationController.java | 44 -- .../KnowMysql/KnowtmpController.java | 90 +++ .../{Know => KnowNeo4j}/KnowController.java | 36 +- .../KnowNeo4j/NeoForTestController.java | 521 ++++++++++++++++ .../controller/Knowtmp/KnowtmpController.java | 76 --- .../controller/chapter/ChapterController.java | 135 +++-- .../chapter/ChapterController2.java | 142 ----- .../CourseCollectionController.java | 59 ++ .../collection/KnowCollectionController.java | 56 ++ .../CourseResourceController.java | 96 --- .../courses/CourseObjectivesController.java | 80 ++- .../controller/courses/CoursesController.java | 87 +-- .../courses/CoursesController2.java | 84 --- .../ObjectiveContentKnowController.java | 50 -- .../courses/ObjectiveContentsController.java | 62 -- .../courses/ObjectivesTypeController.java | 61 -- .../courses/StudentCoursesController.java | 10 +- ...oller.java => CourseFavourController.java} | 50 +- .../favour/KnowFavourController.java | 48 ++ .../favour/ResourceFavourController.java | 72 +++ .../favour/SeKnowFavourController.java | 47 -- .../favour/SeResourceFavourController.java | 69 --- .../learn/CourseLearnController.java | 89 +++ .../controller/learn/KnowLearnController.java | 56 ++ .../message/MessagesController.java | 6 - .../records/BaseSourceApiController.java | 46 -- .../backend/controller/records/Bf.java | 56 -- .../CourseLearningRecordController.java | 16 +- .../KnowledgeLearningRecordController.java | 46 +- .../resource/ResourceController.java | 169 +++++- .../resource/ResourceGraphController.java | 78 --- .../resource/ResourceMysqlController.java | 43 -- .../system/SystemSettingsController.java | 11 +- ...roller.java => CourseThumbController.java} | 26 +- .../controller/thumb/KnowThumbController.java | 45 ++ .../thumb/ResourceThumbController.java | 49 ++ .../thumb/SeKnowThumbController.java | 44 -- .../thumb/SeResourceThumbController.java | 44 -- .../controller/umsAdmin/ReportController.java | 17 +- .../umsAdmin/UmsStudentManageController.java | 28 +- .../umsAdmin/UmsUserController.java | 86 +-- .../exception/GlobalExceptionHandler.java | 130 ++-- .../backend/exception/LyException.java | 31 - .../backend/filter/ValidateParams.java | 1 + .../mapper/Knowtemp/KnowstrMapper.java | 4 +- .../mapper/Knowtemp/KnowtmpMapper.java | 8 +- .../collection/CourseCollectionMapper.java | 15 + .../collection/KnowCollectionMapper.java | 13 + .../courses/CourseObjectivesMapper.java | 5 +- .../backend/mapper/courses/CoursesMapper.java | 4 - .../courses/ObjectiveContentKnowMapper.java | 2 +- .../mapper/courses/ObjectivesTypeMapper.java | 17 - ...ourMapper.java => CourseFavourMapper.java} | 4 +- ...avourMapper.java => KnowFavourMapper.java} | 4 +- .../mapper/favour/SeResourceFavourMapper.java | 5 +- .../backend/mapper/know/KnowRepository.java | 34 +- .../backend/mapper/know/NeoMapper.java | 161 +++++ .../mapper/learn/CourseLearnMapper.java | 12 + .../mapper/learn/KnowLerarnMapper.java | 13 + .../mapper/resource/ResourceMapper.java | 21 + ...r.java => ResourceRelationshipMapper.java} | 4 +- .../mapper/resource/ResourcesRepository.java | 33 +- ...humbMapper.java => CourseThumbMapper.java} | 4 +- ...wThumbMapper.java => KnowThumbMapper.java} | 4 +- ...mbMapper.java => ResourceThumbMapper.java} | 4 +- .../dto/Know/KnowCourseCreateRequest.java | 7 +- .../backend/model/dto/Know/KnowPageVO.java | 16 + .../backend/model/dto/Know/KnowPathDTO.java | 16 + .../backend/model/dto/Know/UserNeo.java | 12 + .../model/dto/Knowtmp/KnowObjective.java | 26 + ...wtempAdd.java => KnowPointAddRequest.java} | 7 +- ...pdate.java => KnowPointUpdateRequest.java} | 7 +- .../dto/chapter/ChapterAndNodeTreeVO.java | 53 ++ .../model/dto/chapter/ChapterChildreenVO.java | 86 +++ .../backend/model/dto/chapter/ChapterDTO.java | 48 +- .../model/dto/chapter/ChapterUpdateDTO.java | 69 +++ .../dto/collection/CourseCollectionDTO.java | 21 + .../dto/collection/KnowCollectionDTO.java | 18 + .../dto/courses/CourseObjectivesDTO.java | 40 +- .../courses/CourseObjectivesUpdateDTO.java | 33 + .../backend/model/dto/courses/CoursesDTO.java | 30 +- .../model/dto/courses/CoursesUpdateDTO.java | 113 ++++ .../model/dto/courses/StudentCoursesDTO.java | 17 +- .../courseFavour/CourseFavourAddRequest.java | 8 +- .../CourseFavourQueryRequest.java | 8 +- .../knowFavour/KnowFavourAddRequest.java | 11 +- .../ResourceFavourAddRequest.java | 7 +- .../ResourceFavourQueryRequest.java | 4 +- .../model/dto/learn/CourseLearnDTO.java | 18 + .../backend/model/dto/learn/KnowLearnDTO.java | 16 + .../dto/record/CourseLearningRecordDTO.java | 49 ++ .../dto/resource/ResourceRelationshipDTO.java | 36 ++ .../coursethumb/CourseThumbAddRequest.java | 8 +- .../thumb/knowthumb/KnowThumbAddRequest.java | 9 +- .../ResourceThumbAddRequest.java | 6 +- .../dto/umsAdmin/UmsStudentAndTeacherDTO.java | 1 + .../dto/umsAdmin/UmsStudentPageQueryDTO.java | 12 +- .../model/dto/umsAdmin/UmsUserDTO.java | 32 + .../model/dto/umsAdmin/UmsUserParam.java | 18 +- .../dto/umsAdmin/UpdateUserPasswordParam.java | 8 +- .../model/entity/ResourceRelationship.java | 29 - .../backend/model/entity/chapter/Chapter.java | 25 +- .../entity/chapter/TemporaryChapter.java | 4 +- .../entity/collection/CourseCollection.java | 35 ++ .../entity/collection/KnowCollection.java | 35 ++ .../entity/courses/CourseObjectives.java | 33 +- .../model/entity/courses/ObjectivesType.java | 38 -- .../backend/model/entity/courses/Testrr.java | 52 ++ ...{SeCourseFavour.java => CourseFavour.java} | 6 +- .../{SeKnowFavour.java => KnowFavour.java} | 12 +- ...esourceFavour.java => ResourceFavour.java} | 8 +- .../backend/model/entity/know/Edge.java | 2 + .../backend/model/entity/know/Know.java | 26 + .../model/entity/know/KnowChapter.java | 2 + .../backend/model/entity/know/KnowCourse.java | 1 + .../backend/model/entity/know/KnowStr.java | 8 +- .../model/entity/knowtmp/KnowPoint.java | 60 ++ .../backend/model/entity/knowtmp/Knowtmp.java | 39 -- .../model/entity/learn/CourseLearn.java | 48 ++ .../backend/model/entity/learn/KnowLearn.java | 45 ++ .../model/entity/resource/ResourceMysql.java | 30 +- .../entity/resource/ResourceRelationship.java | 40 ++ .../model/entity/resource/Resources.java | 11 +- .../model/entity/system/SystemSetting.java | 3 + .../{SeCourseThumb.java => CourseThumb.java} | 6 +- .../{SeKnowThumb.java => KnowThumb.java} | 8 +- ...eResourceThumb.java => ResourceThumb.java} | 8 +- .../entity/umsAdmin/UmsStudentManage.java | 5 +- .../model/entity/umsAdmin/UmsUser.java | 1 + .../backend/model/query/CourseQuery.java | 5 +- .../model/vo/courses/CourseListVO.java | 29 + .../vo/courses/CourseObjectivesTreeVO.java | 26 - .../backend/model/vo/courses/CourseVO.java | 91 +++ .../backend/model/vo/knowGraph/KnowPath.java | 15 + .../model/vo/knowGraph/KnowPathVO.java | 5 +- .../backend/model/vo/knowGraph/KnowVO.java | 5 + .../backend/model/vo/knowGraph/NodesVO.java | 61 ++ .../vo/records/CourseLearningRecordsVo.java | 2 +- .../vo/records/KnowledgeLearningRecordVo.java | 4 +- .../resources/ResourceUploadVO.java} | 4 +- .../model/vo/system/SystemSettingVO.java | 5 +- .../backend/service/Know/KnowService.java | 12 +- .../service/chapter/IChapterService.java | 11 +- .../collection/CourseCollectionService.java | 26 + .../collection/KnowCollectionService.java | 23 + .../courses/ICourseObjectivesService.java | 28 +- .../service/courses/ICoursesService.java | 26 +- .../courses/IObjectiveContentKnowService.java | 21 - .../courses/IObjectivesTypeService.java | 16 - ...rService.java => CourseFavourService.java} | 5 +- ...ourService.java => KnowFavourService.java} | 6 +- .../service/favour/ResourceFavourService.java | 30 + .../favour/SeResourceFavourService.java | 28 - .../CourseCollectionServiceImpl.java | 103 ++++ .../Collection/KnowCollectionServiceImpl.java | 99 +++ .../impl/chapter/ChapterServiceImpl.java | 228 ++++--- .../courses/CourseObjectivesServiceImpl.java | 298 ++++----- .../impl/courses/CoursesServiceImpl.java | 416 ++++++------- .../ObjectiveContentKnowServiceImpl.java | 195 ------ .../courses/ObjectiveContentsServiceImpl.java | 83 --- .../courses/ObjectivesTypeServiceImpl.java | 20 - .../courses/StudentCoursesServiceImpl.java | 10 +- ...Impl.java => CourseFavourServiceImpl.java} | 52 +- ...ceImpl.java => KnowFavourServiceImpl.java} | 36 +- .../favour/SeResourceFavourServiceImpl.java | 205 +++---- .../service/impl/know/knowServiceImpl.java | 564 +++++++++++------- .../impl/knowtmp/KnowtmpServiceImpl.java | 118 ---- .../impl/knowtmp/knowPointServiceImpl.java | 279 +++++++++ .../impl/learn/CourseLearnServiceImpl.java | 155 +++++ .../impl/learn/KnowLearnServiceImpl.java | 84 +++ .../impl/message/UserInboxServiceImpl.java | 6 +- .../CourseLearningRecordServiceImpl.java | 39 +- .../KnowledgeLearningRecordServiceImpl.java | 76 +-- .../resource/ResourceGraphServiceImpl.java | 138 +++-- .../resource/ResourceMysqlServiceImpl.java | 34 -- .../ResourceRelationshipServiceImpl.java | 93 +++ .../impl/resource/ResourceServiceImpl.java | 269 +++++++-- .../system/SystemSettingsServiceImpl.java | 37 +- ...eImpl.java => CourseThumbServiceImpl.java} | 37 +- .../impl/thumb/KnowThumbServiceImpl.java | 77 +++ .../impl/thumb/ResourceThumbServiceImpl.java | 78 +++ .../impl/thumb/SeKnowThumbServiceImpl.java | 68 --- .../thumb/SeResourceThumbServiceImpl.java | 80 --- .../umsAdmin/UmsStudentManageServiceImpl.java | 17 +- .../impl/umsAdmin/UmsUserServiceImpl.java | 26 +- .../service/knowtmp/KnowPointService.java | 46 ++ .../service/knowtmp/KnowtmpService.java | 41 -- .../service/learn/CourseLearnService.java | 31 + .../service/learn/KnowLearnService.java | 23 + .../records/ICourseLearningRecordService.java | 5 +- .../IKnowledgeLearningRecordService.java | 4 +- .../resource/IResourceMysqlService.java | 19 - .../resource/ResourceGraphService.java | 13 +- .../resource/ResourceRelationshipService.java | 30 + .../service/resource/ResourceService.java | 31 +- .../service/system/SystemSettingsService.java | 4 +- ...mbService.java => CourseThumbService.java} | 7 +- .../service/thumb/KnowThumbService.java | 23 + .../service/thumb/ResourceThumbService.java | 22 + .../service/thumb/SeKnowThumbService.java | 23 - .../service/thumb/SeResourceThumbService.java | 22 - .../umsAdmin/UmsStudentManageService.java | 6 +- .../service/umsAdmin/UmsUserService.java | 3 + .../backend/utils/AliyunOSSClientUtil.java | 354 +++++++++++ .../backend/utils/AliyunOssFileTypeEnum.java | 58 ++ .../teaching/backend/utils/MinioUtils.java | 15 +- .../com/teaching/backend/utils/Neo4jUtil.java | 111 ++++ .../backend/utils/ParamOutAspect.java | 81 --- .../backend/utils/ThreadLocalUtil.java | 26 - src/main/resources/application-local.yml | 83 +++ src/main/resources/application.yml | 69 +-- .../mapper/CourseObjectivesMapper.xml | 18 - .../mapper/ObjectiveContentKnowMapper.xml | 13 - .../mapper/ObjectiveContentsMapper.xml | 5 - .../resources/mapper/ObjectivesTypeMapper.xml | 5 - .../resources/mapper/SeCourseFavourMapper.xml | 6 +- .../resources/mapper/SeCourseThumbMapper.xml | 4 +- src/main/resources/mapper/UmsUserMapper.xml | 2 +- .../TeachingBackendApplicationTests.java | 3 + .../java/com/teaching/yh/testTryCatch.java | 29 + 226 files changed, 6873 insertions(+), 3983 deletions(-) delete mode 100644 src/main/java/com/teaching/backend/common/CommonResult.java delete mode 100644 src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java delete mode 100644 src/main/java/com/teaching/backend/controller/FavourInformation/FavourInformationController.java create mode 100644 src/main/java/com/teaching/backend/controller/KnowMysql/KnowtmpController.java rename src/main/java/com/teaching/backend/controller/{Know => KnowNeo4j}/KnowController.java (76%) create mode 100644 src/main/java/com/teaching/backend/controller/KnowNeo4j/NeoForTestController.java delete mode 100644 src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java delete mode 100644 src/main/java/com/teaching/backend/controller/chapter/ChapterController2.java create mode 100644 src/main/java/com/teaching/backend/controller/collection/CourseCollectionController.java create mode 100644 src/main/java/com/teaching/backend/controller/collection/KnowCollectionController.java delete mode 100644 src/main/java/com/teaching/backend/controller/courseResource/CourseResourceController.java delete mode 100644 src/main/java/com/teaching/backend/controller/courses/CoursesController2.java delete mode 100644 src/main/java/com/teaching/backend/controller/courses/ObjectiveContentKnowController.java delete mode 100644 src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java delete mode 100644 src/main/java/com/teaching/backend/controller/courses/ObjectivesTypeController.java rename src/main/java/com/teaching/backend/controller/favour/{SeCourseFavourController.java => CourseFavourController.java} (57%) create mode 100644 src/main/java/com/teaching/backend/controller/favour/KnowFavourController.java create mode 100644 src/main/java/com/teaching/backend/controller/favour/ResourceFavourController.java delete mode 100644 src/main/java/com/teaching/backend/controller/favour/SeKnowFavourController.java delete mode 100644 src/main/java/com/teaching/backend/controller/favour/SeResourceFavourController.java create mode 100644 src/main/java/com/teaching/backend/controller/learn/CourseLearnController.java create mode 100644 src/main/java/com/teaching/backend/controller/learn/KnowLearnController.java delete mode 100644 src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java delete mode 100644 src/main/java/com/teaching/backend/controller/records/Bf.java delete mode 100644 src/main/java/com/teaching/backend/controller/resource/ResourceGraphController.java delete mode 100644 src/main/java/com/teaching/backend/controller/resource/ResourceMysqlController.java rename src/main/java/com/teaching/backend/controller/thumb/{SeCourseThumbController.java => CourseThumbController.java} (56%) create mode 100644 src/main/java/com/teaching/backend/controller/thumb/KnowThumbController.java create mode 100644 src/main/java/com/teaching/backend/controller/thumb/ResourceThumbController.java delete mode 100644 src/main/java/com/teaching/backend/controller/thumb/SeKnowThumbController.java delete mode 100644 src/main/java/com/teaching/backend/controller/thumb/SeResourceThumbController.java delete mode 100644 src/main/java/com/teaching/backend/exception/LyException.java create mode 100644 src/main/java/com/teaching/backend/mapper/collection/CourseCollectionMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/collection/KnowCollectionMapper.java delete mode 100644 src/main/java/com/teaching/backend/mapper/courses/ObjectivesTypeMapper.java rename src/main/java/com/teaching/backend/mapper/favour/{SeCourseFavourMapper.java => CourseFavourMapper.java} (70%) rename src/main/java/com/teaching/backend/mapper/favour/{SeKnowFavourMapper.java => KnowFavourMapper.java} (52%) create mode 100644 src/main/java/com/teaching/backend/mapper/know/NeoMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/learn/CourseLearnMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/learn/KnowLerarnMapper.java create mode 100644 src/main/java/com/teaching/backend/mapper/resource/ResourceMapper.java rename src/main/java/com/teaching/backend/mapper/resource/{ResourceMysqlMapper.java => ResourceRelationshipMapper.java} (61%) rename src/main/java/com/teaching/backend/mapper/thumb/{SeCourseThumbMapper.java => CourseThumbMapper.java} (52%) rename src/main/java/com/teaching/backend/mapper/thumb/{SeKnowThumbMapper.java => KnowThumbMapper.java} (53%) rename src/main/java/com/teaching/backend/mapper/thumb/{SeResourceThumbMapper.java => ResourceThumbMapper.java} (52%) create mode 100644 src/main/java/com/teaching/backend/model/dto/Know/KnowPageVO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/Know/KnowPathDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/Know/UserNeo.java create mode 100644 src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowObjective.java rename src/main/java/com/teaching/backend/model/dto/Knowtmp/{KnowtempAdd.java => KnowPointAddRequest.java} (68%) rename src/main/java/com/teaching/backend/model/dto/Knowtmp/{KnowtempUpdate.java => KnowPointUpdateRequest.java} (69%) create mode 100644 src/main/java/com/teaching/backend/model/dto/chapter/ChapterAndNodeTreeVO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/chapter/ChapterChildreenVO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/chapter/ChapterUpdateDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/collection/CourseCollectionDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/collection/KnowCollectionDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesUpdateDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/courses/CoursesUpdateDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/learn/CourseLearnDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/learn/KnowLearnDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/record/CourseLearningRecordDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/resource/ResourceRelationshipDTO.java create mode 100644 src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserDTO.java delete mode 100644 src/main/java/com/teaching/backend/model/entity/ResourceRelationship.java create mode 100644 src/main/java/com/teaching/backend/model/entity/collection/CourseCollection.java create mode 100644 src/main/java/com/teaching/backend/model/entity/collection/KnowCollection.java delete mode 100644 src/main/java/com/teaching/backend/model/entity/courses/ObjectivesType.java create mode 100644 src/main/java/com/teaching/backend/model/entity/courses/Testrr.java rename src/main/java/com/teaching/backend/model/entity/favour/{SeCourseFavour.java => CourseFavour.java} (84%) rename src/main/java/com/teaching/backend/model/entity/favour/{SeKnowFavour.java => KnowFavour.java} (74%) rename src/main/java/com/teaching/backend/model/entity/favour/{SeResourceFavour.java => ResourceFavour.java} (79%) create mode 100644 src/main/java/com/teaching/backend/model/entity/knowtmp/KnowPoint.java delete mode 100644 src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java create mode 100644 src/main/java/com/teaching/backend/model/entity/learn/CourseLearn.java create mode 100644 src/main/java/com/teaching/backend/model/entity/learn/KnowLearn.java create mode 100644 src/main/java/com/teaching/backend/model/entity/resource/ResourceRelationship.java rename src/main/java/com/teaching/backend/model/entity/thumb/{SeCourseThumb.java => CourseThumb.java} (84%) rename src/main/java/com/teaching/backend/model/entity/thumb/{SeKnowThumb.java => KnowThumb.java} (80%) rename src/main/java/com/teaching/backend/model/entity/thumb/{SeResourceThumb.java => ResourceThumb.java} (79%) create mode 100644 src/main/java/com/teaching/backend/model/vo/courses/CourseListVO.java delete mode 100644 src/main/java/com/teaching/backend/model/vo/courses/CourseObjectivesTreeVO.java create mode 100644 src/main/java/com/teaching/backend/model/vo/courses/CourseVO.java create mode 100644 src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPath.java create mode 100644 src/main/java/com/teaching/backend/model/vo/knowGraph/NodesVO.java rename src/main/java/com/teaching/backend/model/{dto/resource/ResourceUploadDto.java => vo/resources/ResourceUploadVO.java} (79%) create mode 100644 src/main/java/com/teaching/backend/service/collection/CourseCollectionService.java create mode 100644 src/main/java/com/teaching/backend/service/collection/KnowCollectionService.java delete mode 100644 src/main/java/com/teaching/backend/service/courses/IObjectiveContentKnowService.java delete mode 100644 src/main/java/com/teaching/backend/service/courses/IObjectivesTypeService.java rename src/main/java/com/teaching/backend/service/favour/{SeCourseFavourService.java => CourseFavourService.java} (88%) rename src/main/java/com/teaching/backend/service/favour/{SeKnowFavourService.java => KnowFavourService.java} (59%) create mode 100644 src/main/java/com/teaching/backend/service/favour/ResourceFavourService.java delete mode 100644 src/main/java/com/teaching/backend/service/favour/SeResourceFavourService.java create mode 100644 src/main/java/com/teaching/backend/service/impl/Collection/CourseCollectionServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/Collection/KnowCollectionServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentsServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/courses/ObjectivesTypeServiceImpl.java rename src/main/java/com/teaching/backend/service/impl/favour/{SeCourseFavourServiceImpl.java => CourseFavourServiceImpl.java} (73%) rename src/main/java/com/teaching/backend/service/impl/favour/{SeKnowFavourServiceImpl.java => KnowFavourServiceImpl.java} (61%) delete mode 100644 src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/knowtmp/knowPointServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/learn/CourseLearnServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/learn/KnowLearnServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/resource/ResourceMysqlServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/resource/ResourceRelationshipServiceImpl.java rename src/main/java/com/teaching/backend/service/impl/thumb/{SeCourseThumbServiceImpl.java => CourseThumbServiceImpl.java} (66%) create mode 100644 src/main/java/com/teaching/backend/service/impl/thumb/KnowThumbServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/impl/thumb/ResourceThumbServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/thumb/SeKnowThumbServiceImpl.java delete mode 100644 src/main/java/com/teaching/backend/service/impl/thumb/SeResourceThumbServiceImpl.java create mode 100644 src/main/java/com/teaching/backend/service/knowtmp/KnowPointService.java delete mode 100644 src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java create mode 100644 src/main/java/com/teaching/backend/service/learn/CourseLearnService.java create mode 100644 src/main/java/com/teaching/backend/service/learn/KnowLearnService.java delete mode 100644 src/main/java/com/teaching/backend/service/resource/IResourceMysqlService.java create mode 100644 src/main/java/com/teaching/backend/service/resource/ResourceRelationshipService.java rename src/main/java/com/teaching/backend/service/thumb/{SeCourseThumbService.java => CourseThumbService.java} (69%) create mode 100644 src/main/java/com/teaching/backend/service/thumb/KnowThumbService.java create mode 100644 src/main/java/com/teaching/backend/service/thumb/ResourceThumbService.java delete mode 100644 src/main/java/com/teaching/backend/service/thumb/SeKnowThumbService.java delete mode 100644 src/main/java/com/teaching/backend/service/thumb/SeResourceThumbService.java create mode 100644 src/main/java/com/teaching/backend/utils/AliyunOSSClientUtil.java create mode 100644 src/main/java/com/teaching/backend/utils/AliyunOssFileTypeEnum.java create mode 100644 src/main/java/com/teaching/backend/utils/Neo4jUtil.java delete mode 100644 src/main/java/com/teaching/backend/utils/ParamOutAspect.java delete mode 100644 src/main/java/com/teaching/backend/utils/ThreadLocalUtil.java create mode 100644 src/main/resources/application-local.yml delete mode 100644 src/main/resources/mapper/ObjectiveContentKnowMapper.xml delete mode 100644 src/main/resources/mapper/ObjectiveContentsMapper.xml delete mode 100644 src/main/resources/mapper/ObjectivesTypeMapper.xml create mode 100644 src/test/java/com/teaching/yh/testTryCatch.java diff --git a/pom.xml b/pom.xml index 1ac3f4e..1ce92f9 100644 --- a/pom.xml +++ b/pom.xml @@ -60,12 +60,12 @@ commons-fileupload 1.3.1 - - - org.neo4j.driver - neo4j-java-driver-spring-boot-starter - 4.3.6.0 - + + + + + + org.springframework.boot diff --git a/src/main/java/com/teaching/backend/common/BaseResponse.java b/src/main/java/com/teaching/backend/common/BaseResponse.java index e562b52..0ccf507 100644 --- a/src/main/java/com/teaching/backend/common/BaseResponse.java +++ b/src/main/java/com/teaching/backend/common/BaseResponse.java @@ -3,6 +3,7 @@ package com.teaching.backend.common; import lombok.Data; import java.io.Serializable; +import java.util.HashMap; /** * 通用返回类 @@ -12,6 +13,7 @@ import java.io.Serializable; @Data public class BaseResponse implements Serializable { + private int code; private T data; diff --git a/src/main/java/com/teaching/backend/common/CommonResult.java b/src/main/java/com/teaching/backend/common/CommonResult.java deleted file mode 100644 index 192d2f0..0000000 --- a/src/main/java/com/teaching/backend/common/CommonResult.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.teaching.backend.common; - -/** - * @auther macrozheng - * @description 通用返回对象 - * @date 2019/4/19 - * @github https://github.com/macrozheng - */ -public class CommonResult { - private long code; - private String message; - private T data; - - protected CommonResult() { - } - - protected CommonResult(long code, String message, T data) { - this.code = code; - this.message = message; - this.data = data; - } - - /** - * 成功返回结果 - * - * @param data 获取的数据 - */ - public static CommonResult success(T data) { - return new CommonResult(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data); - } - - /** - * 成功返回结果 - * - * @param data 获取的数据 - * @param message 提示信息 - */ - public static CommonResult success(T data, String message) { - return new CommonResult(ResultCode.SUCCESS.getCode(), message, data); - } - - /** - * 失败返回结果 - * @param errorCode 错误码 - */ - public static CommonResult failed(IErrorCode errorCode) { - return new CommonResult(errorCode.getCode(), errorCode.getMessage(), null); - } - - /** - * 失败返回结果 - * @param message 提示信息 - */ - public static CommonResult failed(String message) { - return new CommonResult(ResultCode.FAILED.getCode(), message, null); - } - - /** - * 失败返回结果 - */ - public static CommonResult failed() { - return failed(ResultCode.FAILED); - } - - /** - * 参数验证失败返回结果 - */ - public static CommonResult validateFailed() { - return failed(ResultCode.VALIDATE_FAILED); - } - - /** - * 参数验证失败返回结果 - * @param message 提示信息 - */ - public static CommonResult validateFailed(String message) { - return new CommonResult(ResultCode.VALIDATE_FAILED.getCode(), message, null); - } - - /** - * 未登录返回结果 - */ - public static CommonResult unauthorized(T data) { - return new CommonResult(ResultCode.UNAUTHORIZED.getCode(), ResultCode.UNAUTHORIZED.getMessage(), data); - } - - /** - * 未授权返回结果 - */ - public static CommonResult forbidden(T data) { - return new CommonResult(ResultCode.FORBIDDEN.getCode(), ResultCode.FORBIDDEN.getMessage(), data); - } - - public long getCode() { - return code; - } - - public void setCode(long code) { - this.code = code; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public T getData() { - return data; - } - - public void setData(T data) { - this.data = data; - } -} diff --git a/src/main/java/com/teaching/backend/component/RestAuthenticationEntryPoint.java b/src/main/java/com/teaching/backend/component/RestAuthenticationEntryPoint.java index 869318a..bcf8f86 100644 --- a/src/main/java/com/teaching/backend/component/RestAuthenticationEntryPoint.java +++ b/src/main/java/com/teaching/backend/component/RestAuthenticationEntryPoint.java @@ -1,7 +1,8 @@ package com.teaching.backend.component; import cn.hutool.json.JSONUtil; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; @@ -21,7 +22,7 @@ public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint { response.setHeader("Cache-Control","no-cache"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); - response.getWriter().println(JSONUtil.parse(CommonResult.unauthorized(authException.getMessage()))); + response.getWriter().println(JSONUtil.parse(ResultUtils.error(ErrorCode.OPERATION_ERROR,authException.getMessage()))); response.getWriter().flush(); } } diff --git a/src/main/java/com/teaching/backend/component/RestfulAccessDeniedHandler.java b/src/main/java/com/teaching/backend/component/RestfulAccessDeniedHandler.java index 456fd19..c9b6feb 100644 --- a/src/main/java/com/teaching/backend/component/RestfulAccessDeniedHandler.java +++ b/src/main/java/com/teaching/backend/component/RestfulAccessDeniedHandler.java @@ -1,7 +1,8 @@ package com.teaching.backend.component; import cn.hutool.json.JSONUtil; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.access.AccessDeniedHandler; @@ -23,7 +24,7 @@ public class RestfulAccessDeniedHandler implements AccessDeniedHandler{ response.setHeader("Cache-Control","no-cache"); response.setCharacterEncoding("UTF-8"); response.setContentType("application/json"); - response.getWriter().println(JSONUtil.parse(CommonResult.forbidden(e.getMessage()))); + response.getWriter().println(JSONUtil.parse(ResultUtils.error(ErrorCode.OPERATION_ERROR,e.getMessage()))); response.getWriter().flush(); } } diff --git a/src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java b/src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java deleted file mode 100644 index 69b9ac9..0000000 --- a/src/main/java/com/teaching/backend/config/NonStaticResourceHttpRequestHandler.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.teaching.backend.config; - -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; -import org.springframework.stereotype.Component; -import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; - -import javax.servlet.http.HttpServletRequest; - -/** - * @author longge93 - */ -@Component -public class NonStaticResourceHttpRequestHandler extends ResourceHttpRequestHandler { - - public final static String ATTR_FILE = "NON-STATIC-FILE"; - - @Override - protected Resource getResource(HttpServletRequest request) { - String filePath = (String) request.getAttribute(ATTR_FILE); - return new FileSystemResource(filePath); - } -} diff --git a/src/main/java/com/teaching/backend/controller/FavourInformation/FavourInformationController.java b/src/main/java/com/teaching/backend/controller/FavourInformation/FavourInformationController.java deleted file mode 100644 index f6ac1c7..0000000 --- a/src/main/java/com/teaching/backend/controller/FavourInformation/FavourInformationController.java +++ /dev/null @@ -1,44 +0,0 @@ -//package com.teaching.backend.controller.FavourInformation; -// -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.PageRequest; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.model.entity.resource.CourseResources; -//import org.springframework.web.bind.annotation.*; -// -//import javax.annotation.ResourceMysql; -//import java.util.List; -// -///** -// * ClassName: Get -// * Package: com.teaching.backend.controller.FavourInformation -// * Description: -// * -// * @Author 姜钧瀚 -// * @Create 2024/6/13 18:15 -// * @Version 1.0 -// */ -//@RestController -//@RequestMapping ("/api") -//public class FavourInformationController{ -// -// -// @ResourceMysql -// CourseResourcesService courseResourcesService; -// -// -// -// @GetMapping("/Favour/get") -// public BaseResponse> getInformation2(@RequestParam List resourceIdList , @RequestParam Integer type, PageRequest pageRequest) { -// -// int page=pageRequest.getCurrent(); -// int pageSize=pageRequest.getPageSize(); -// -// Page resourcesPage=courseResourcesService.getresourceRecords(type,resourceIdList,page,pageSize); -// -// return ResultUtils.success(resourcesPage); -// -// } -// -// } diff --git a/src/main/java/com/teaching/backend/controller/KnowMysql/KnowtmpController.java b/src/main/java/com/teaching/backend/controller/KnowMysql/KnowtmpController.java new file mode 100644 index 0000000..0e0b902 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/KnowMysql/KnowtmpController.java @@ -0,0 +1,90 @@ +package com.teaching.backend.controller.KnowMysql; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.filter.ValidateParams; +import com.teaching.backend.model.dto.Knowtmp.KnowObjective; +import com.teaching.backend.model.dto.Knowtmp.KnowPointAddRequest; +import com.teaching.backend.model.dto.Knowtmp.KnowPointUpdateRequest; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.service.knowtmp.KnowPointService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-08-07-19:38 + * @Description: + */ +@RestController +@RequestMapping("/knowtmp") +@Api(tags="Mysql-知识点管理") +@Validated +public class KnowtmpController { + + @Autowired + private KnowPointService knowPointService; + + + //返回课程下所有知识点 + @ApiOperation(value = "返回课程下所有知识点") + @GetMapping("/getAllKnows") + BaseResponse getAllKnows(@RequestParam @NotBlank String courseId){ + return knowPointService.getAllKnows(courseId); + } + + + // 添加知识点 + @ApiOperation(value = "添加知识点") + @PostMapping("/addKnow") + BaseResponse add(@RequestBody KnowPointAddRequest knowPointAddRequest){ + return knowPointService.add(knowPointAddRequest); + } + + + //修改知识点 + @ApiOperation(value = "修改知识点") + @PostMapping("/updateKnow") + BaseResponse update(@RequestBody KnowPointUpdateRequest knowPointUpdateRequest){ + return knowPointService.update(knowPointUpdateRequest); + } + + //删除知识点 + @ApiOperation(value = "删除知识点") + @GetMapping("/deleteKnow") + BaseResponse delete(Long id){ + return knowPointService.delete(id); + } + + //查询通过chapterId List + @ApiOperation(value = "查询通过chapterId List") + @GetMapping("/query") + BaseResponse query(Long id){ + return knowPointService.query(id); + } + + //查询通过chapterId List + @ApiOperation(value = "查询通过chapterId List") + @GetMapping("/queryKnow") + BaseResponse> queryByChapterId(Long chapterId){ + return knowPointService.queryByChapterId(chapterId); + } + + //给知识点绑定课程目标 + @ApiOperation(value = "给知识点绑定课程目标") + @PostMapping("/objectiveaddKnow") + BaseResponse objectiveaddKnow(@RequestBody KnowObjective knowObjective){ + return knowPointService.addObjective(knowObjective.getObjectiveIds(), knowObjective.getKnowId()); + } + + @ApiOperation(value = "查询知识点下课程目标") + @PostMapping("/knowObjects") + BaseResponse> knowObjects(@RequestParam Long knowId){ + return knowPointService.knowObjects(knowId); + } +} diff --git a/src/main/java/com/teaching/backend/controller/Know/KnowController.java b/src/main/java/com/teaching/backend/controller/KnowNeo4j/KnowController.java similarity index 76% rename from src/main/java/com/teaching/backend/controller/Know/KnowController.java rename to src/main/java/com/teaching/backend/controller/KnowNeo4j/KnowController.java index ad5607d..e7587a3 100644 --- a/src/main/java/com/teaching/backend/controller/Know/KnowController.java +++ b/src/main/java/com/teaching/backend/controller/KnowNeo4j/KnowController.java @@ -1,4 +1,4 @@ -package com.teaching.backend.controller.Know; +package com.teaching.backend.controller.KnowNeo4j; /** * @Author:youhang @@ -8,16 +8,21 @@ package com.teaching.backend.controller.Know; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.dto.Know.*; import com.teaching.backend.model.entity.know.*; +import com.teaching.backend.model.query.PageQuery; import com.teaching.backend.model.vo.knowGraph.KnowPathVO; import com.teaching.backend.model.vo.knowGraph.KnowVO; +import com.teaching.backend.model.vo.knowGraph.NodesVO; import com.teaching.backend.model.vo.knowGraph.RelsNodesVO; import com.teaching.backend.service.Know.KnowService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.util.List; +import javax.validation.constraints.NotEmpty; +import java.util.List; +import java.util.Map; @RestController @@ -30,16 +35,16 @@ public class KnowController { //通过courseId 查询所有结点,存储成JSON - @ApiOperation(value = "通过courseId 查询所有结点,存储成JSON") + @ApiOperation(value = "通过courseId 查询所有知识点,存储成JSON") @GetMapping("/showGraphJson") BaseResponse showGraphJson(@RequestParam String courseId){ - return knowService.showGraphJson(courseId); + return knowService.generateGraphJson(courseId); } //通过courseId 查询 JSON 生成图 @ApiOperation(value = "通过courseId 查询 JSON 生成图") @GetMapping("/generateGraph") - BaseResponse generateGraph(@RequestParam String courseId){ + BaseResponse generateGraph(@RequestParam String courseId){ return knowService.generateGraph(courseId); } @@ -47,15 +52,22 @@ public class KnowController { //生成知识点学习路径 默认从第一个知识点到第最后个知识点 @ApiOperation(value = "生成知识点学习路径") @GetMapping("/knowLearnPath") - BaseResponse> knowLearnPath(@RequestParam String corseId){ - return knowService.knowLearnPath(corseId); + BaseResponse> knowLearnPath(@RequestParam String corseId){ + return knowService.learnpath(corseId); } + //生成知识点学习路径 默认从第一个知识点到第最后个知识点 - @ApiOperation(value = "生成知识点学习路径-图信息") - @GetMapping("/knowLearnPathGraph") - BaseResponse knowLearnPathGraph(@RequestParam String corseId){ - return knowService.knowLearnPathGraph(corseId); + @ApiOperation(value = "知识点课程知识点路径列表") + @PostMapping("/PathPage") + BaseResponse PathPage(@RequestBody KnowPathDTO knowPathDTO){ + return knowService.PathPage(knowPathDTO); } + //生成知识点学习路径 默认从第一个知识点到第最后个知识点 +// @ApiOperation(value = "生成知识点学习路径-图信息") +// @GetMapping("/knowLearnPathGraph") +// BaseResponse knowLearnPathGraph(@RequestParam String corseId){ +// return knowService.knowLearnPathGraph(corseId); +// } //返回depth层知识点 @ApiOperation(value = "返回depth层知识点") @@ -100,7 +112,7 @@ public class KnowController { } //重置 知识点下 知识图谱 - @ApiOperation(value = "重置-知识点下-知识图谱") + @ApiOperation(value = "重置-知识点下-知识图谱-二级知识点") @GetMapping("/getKnowGraphById") BaseResponse getKnowGraphById(@RequestParam Long id){ return knowService.getKnowGraphById(id); diff --git a/src/main/java/com/teaching/backend/controller/KnowNeo4j/NeoForTestController.java b/src/main/java/com/teaching/backend/controller/KnowNeo4j/NeoForTestController.java new file mode 100644 index 0000000..e397e23 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/KnowNeo4j/NeoForTestController.java @@ -0,0 +1,521 @@ +package com.teaching.backend.controller.KnowNeo4j; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.model.dto.Know.KnowPageVO; +import com.teaching.backend.mapper.know.NeoMapper; +import com.teaching.backend.model.dto.Know.UserNeo; +import com.teaching.backend.mapper.Knowtemp.KnowstrMapper; +import com.teaching.backend.mapper.chapter.ChapterMapper; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.mapper.know.KnowRepository; +import com.teaching.backend.mapper.resource.ResourceRelationshipMapper; +import com.teaching.backend.model.entity.know.Links; +import com.teaching.backend.model.entity.know.LinksVO; +import com.teaching.backend.model.vo.knowGraph.KnowVO; +import com.teaching.backend.service.Know.KnowService; + +import com.teaching.backend.service.knowtmp.KnowPointService; +import com.teaching.backend.service.resource.ResourceGraphService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.neo4j.core.Neo4jClient; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.*; + +@RestController +@RequestMapping("/api/Knowtest") +@Api(tags= "图-测试") +public class NeoForTestController { + + @Autowired + private KnowService knowService; + + @Autowired + private NeoMapper neoMapper; + + @Resource + private Neo4jClient neo4jClient; + + + @Autowired + CoursesMapper coursesMapper; + + @Autowired + private ChapterMapper chapterMapper; + + @Autowired + private KnowPointService knowPointService; + + @Autowired + private KnowstrMapper knowstrMapper; + @Autowired + private KnowRepository knowRepository; + @Autowired + private ResourceRelationshipMapper resourceRelationshipMapper; + + @Autowired + private ResourceGraphService resourceGraphService; + + + + //创建用户节点 + @ApiOperation(value = "创建用户节点") + @PostMapping ("/createUser") + BaseResponse createUser(@RequestBody UserNeo userNeo){ + Long id = neoMapper.createUser(userNeo.getUserId(), userNeo.getUsername()); + return ResultUtils.success("创建成功"+id); + } + + //创建用户学习,喜欢,收藏关系 + //创建用户节点 + @ApiOperation(value = "创建用户学习") + @GetMapping ("/UserLearned") + BaseResponse UserLearned(@RequestParam Long userId, @RequestParam Long knowId){ + Long id = neoMapper.UserLearned(userId, knowId); + return ResultUtils.success("创建成功"+id); + } + + @ApiOperation(value = "创建用户喜欢") + @GetMapping ("/UserFavour") + BaseResponse UserFavour(@RequestParam Long userId, @RequestParam Long knowId){ + Long id = neoMapper.UserFavour(userId, knowId); + return ResultUtils.success("创建成功"+id); + } + + @ApiOperation(value = "创建用户收藏") + @GetMapping ("/UserCollection") + BaseResponse UserCollection(@RequestParam Long userId, @RequestParam Long knowId){ + Long id = neoMapper.UserCollection(userId, knowId); + return ResultUtils.success("创建成功"+id); + } + + //批量修改节点关系 + @ApiOperation(value = "批量修改节点关系") + @PostMapping("/updateLinks") + BaseResponse updateLinks(@RequestBody List linksList){ + return knowService.updateLinks(linksList); + } + + + @ApiOperation(value = "pagerank") + @GetMapping ("/pagerank") + public void pagerank() { + + Collection> all = + neo4jClient.query("CALL gds.pageRank.stream('pop') YIELD nodeId, score RETURN nodeId AS id, gds.util.asNode(nodeId).name AS name, score,gds.util.asNode(nodeId).knowId AS knowId ORDER BY score DESC, name ASC").fetch().all(); + + Iterator> iterator = all.iterator(); + + KnowVO knowVO; + List node = new ArrayList<>(); + Links links; + int p = 0; + + while (iterator.hasNext()) { + Map element = iterator.next(); + Long knowId = (Long) element.get("knowId"); + if(knowId != null){ + Long id = (Long) element.get("id"); + String name = (String) element.get("name"); + Double score = (Double) element.get("score"); + KnowPageVO knowPageVO = new KnowPageVO(id,name,score); + node.add(knowPageVO); + } + } + + for (int i = 0; i < node.size(); i++) { + System.out.println(node.get(i)); + } + } + + + +// //通过courseId 查询所有结点,存储成JSON +// @ApiOperation(value = "通过courseId 查询所有知识点,存储成JSON") +// @GetMapping("/showGraphJson") +// BaseResponse showGraphJson(@RequestParam String courseId){ +// return showGraphJson1(courseId); +// } +// public BaseResponse showGraphJson1(String courseId) { +// // 创建 JSON 对象数组 +// JSONArray jsonArrayKnowNode = JSONUtil.createArray(); +// JSONArray jsonArrayCourseNode = JSONUtil.createArray(); +// JSONArray jsonArrayChapterNode = JSONUtil.createArray(); +// +// //查询数据库-课程 +// Courses courses = coursesMapper.selectById(courseId); +// if (courses == null) { +// return ResultUtils.error(ErrorCode.PARAMS_ERROR, "课程不存在"); +// } +// JSONObject obj1 = JSONUtil.createObj(); +// obj1.put("courseId", courseId); +// obj1.put("name", courses.getName()); +// obj1.put("info", courses.getDescription()); +// obj1.put("hour", courses.getClasshours()); +// jsonArrayCourseNode.add(obj1); +// +// //查询数据库-章-节 +// List chapterList = new ArrayList<>(); +// List chapterListPID = chapterMapper.selectChapterPIDByCourseId(courseId); +// +// List chapterOneIds = new ArrayList<>(); +// List chapterTwoIds = new ArrayList<>(); +// for (int i = 0; i < chapterListPID.size(); i++) { +// chapterList.add(chapterListPID.get(i)); +// chapterOneIds.add(chapterListPID.get(i).getId()); +// List chapterListSecond = chapterMapper.selectChapterChildrenOrderByNum(chapterListPID.get(i).getId()); +// for (int j = 0; j < chapterListSecond.size(); j++) { +// chapterList.add(chapterListSecond.get(j)); +// chapterTwoIds.add(chapterListSecond.get(j).getId()); +// } +// } +// for (int i = 0; i < chapterList.size(); i++) { +// Chapter chapter = chapterList.get(i); +// JSONObject obj2 = JSONUtil.createObj(); +// obj2.put("chapterId", chapter.getId()); +// obj2.put("name", chapter.getName()); +// obj2.put("info", chapter.getContent()); +// obj2.put("hour", chapter.getTotalClassHours()); +// jsonArrayChapterNode.add(obj2); +// } +// +// //查询数据库-知识点 +// for (int i = 0; i < chapterList.size(); i++) { +// Chapter chapter = chapterList.get(i); +// if (chapter.getPid() != 0) { +// List knowlist = knowPointService.queryByChapterId(chapter.getId()).getData(); +// for (int j = 0; j < knowlist.size(); j++) { +// KnowPoint knowtmp = knowlist.get(j); +// JSONObject obj3 = JSONUtil.createObj(); +// obj3.put("knowId", knowtmp.getId()); +// obj3.put("name", knowtmp.getName()); +// obj3.put("info", knowtmp.getInfo()); +// obj3.put("hour", knowtmp.getHour()); +// jsonArrayKnowNode.add(obj3); +// } +// } +// +// } +// +// +// // =======创建关系 +// JSONArray edgesArray = JSONUtil.createArray(); +// +// // 创建边列表 +// // 课程-章节 父子 +// for (int i = 0; i < chapterListPID.size(); i++) { +// Chapter chapter = chapterListPID.get(i); +// JSONObject edge = JSONUtil.createObj(); +// edge.put("source", courses.getId()); +// edge.put("target", chapter.getId()); +// edge.put("type", "contain"); +// edge.put("sta", 1); +// edgesArray.add(edge); +// } +// //章-节 父子 +// for (int i = 0; i < chapterListPID.size(); i++) { +// List chapterListSecond = chapterMapper.selectChapterChildrenOrderByNum(chapterListPID.get(i).getId()); +// for (int j = 0; j < chapterListSecond.size(); j++) { +// JSONObject edge = JSONUtil.createObj(); +// edge.put("source", chapterListPID.get(i).getId()); +// edge.put("target", chapterListSecond.get(j).getId()); +// edge.put("type", "contain"); +// edge.put("sta", 2); +// edgesArray.add(edge); +// } +// } +// //节与点父子 +// List knowIds = new ArrayList<>(); +// for (int i = 0; i < chapterTwoIds.size(); i++) { +// List knowlist = knowPointService.queryByChapterId(chapterTwoIds.get(i)).getData(); +// for (int j = 0; j < knowlist.size(); j++) { +// KnowPoint knowtmp = knowlist.get(j); +// JSONObject edge = JSONUtil.createObj(); +// edge.put("source", chapterTwoIds.get(i)); +// edge.put("target", knowtmp.getId()); +// edge.put("type", "contain"); +// edge.put("sta", 3); +// edgesArray.add(edge); +// knowIds.add(knowtmp.getId()); +// } +// } +// +// +// //章-章 顺序 +//// for (int i = 0; i < chapterOneIds.size() - 1; i++) { +//// JSONObject edge = JSONUtil.createObj(); +//// edge.put("source", chapterOneIds.get(i)); +//// edge.put("target", chapterOneIds.get(i + 1)); +//// edge.put("type", "order"); +//// edge.put("sta", 2); +//// edgesArray.add(edge); +//// } +// +// +// //节与节 顺序 +//// for (int i = 0; i < chapterTwoIds.size() - 1; i++) { +//// JSONObject edge = JSONUtil.createObj(); +//// edge.put("source", chapterTwoIds.get(i)); +//// edge.put("target", chapterTwoIds.get(i + 1)); +//// edge.put("type", "order"); +//// edge.put("sta", 2); +//// edgesArray.add(edge); +//// } +// +// +// //点-点 顺序 +//// for (int i = 0; i < knowIds.size() - 1; i++) { +//// JSONObject edge = JSONUtil.createObj(); +//// edge.put("source", knowIds.get(i)); +//// edge.put("target", knowIds.get(i + 1)); +//// edge.put("type", "order"); +//// edge.put("sta", 4); +//// edgesArray.add(edge); +//// } +// +// String jsonNodeKnow = jsonArrayKnowNode.toString(); +// String jsonNodeChapter = jsonArrayChapterNode.toString(); +// String jsonNodeCourse = jsonArrayCourseNode.toString(); +// String jsonEdges = edgesArray.toString(); +// +// +// KnowStr knowStr = new KnowStr(); +// knowStr.setCourseId(courseId); +// knowStr.setCoursestr(jsonNodeCourse); +// knowStr.setChapterstr(jsonNodeChapter); +// knowStr.setKnowstr(jsonNodeKnow); +// knowStr.setEdgestr(jsonEdges); +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("course_id", courseId); +// KnowStr knowStrOld = knowstrMapper.selectOne(queryWrapper); +// if (knowStrOld != null) { +// int f = knowstrMapper.update(knowStr, queryWrapper); +// if (f > 0) { +// return ResultUtils.success("修改成功"); +// } +// } +// int f = knowstrMapper.insert(knowStr); +// if (f > 0) { +// return ResultUtils.success("创建成功"); +// } +// //将json保存在mysql表中 +// return ResultUtils.error(ErrorCode.OPERATION_ERROR); +// } + + //通过courseId 查询 JSON 生成图 +// @ApiOperation(value = "通过courseId 查询 JSON 生成图") +// @GetMapping("/generateGraph") +// BaseResponse generateGraph(@RequestParam String courseId){ +// return generateGraph1(courseId); +// } + + public BaseResponse deleteAllByCourseId(String courseId) { + Long f = knowRepository.deleteAllByCourseId(courseId); + if (f > 0) { + return ResultUtils.success("删除成功"); + } + return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "删除失败"); + } + Long opResult(String source, String target, String type, Integer sta) { + Long res = -1L; + String weight = null; + if ("contain".equals(type)) { + weight = " {weight:5}"; + } else if ("dependent".equals(type)) { + weight = " {weight:9}"; + } else if ("order".equals(type)) { + weight = " {weight: 1}"; + } + if (sta != null && sta == 1) { + res = -1L; + Long target1 = Long.parseLong(target); + String str = "MATCH (p:Know), (j:Know) WHERE p.courseId= '" + source + "' AND j.chapterId= " + target1 + " CREATE (p)-[r: " + type + weight + " ]->(j) return count(r) as `count`;"; + Collection> result = neo4jClient.query(str).fetch().all(); + Iterator> iterator = result.iterator(); + while (iterator.hasNext()) { + Map element = iterator.next(); + res = (Long) element.get("count"); + } + if (res < 0L) { + throw new RuntimeException("添加课程-章节 包含 失败"); + } + return res; + } else if (sta != null && sta == 2) { + Long source1 = Long.parseLong(source); + Long target1 = Long.parseLong(target); + String str = "MATCH (p:Know), (j:Know) WHERE p.chapterId= " + source1 + " AND j.chapterId= " + target1 + " CREATE (p)-[r: " + type + weight + " ]->(j) return count(r) as `count`;"; + Collection> result = neo4jClient.query(str).fetch().all(); + Iterator> iterator = result.iterator(); + res = -1L; + while (iterator.hasNext()) { + Map element = iterator.next(); + res = (Long) element.get("count"); + } + if (res <= 0L) { + throw new RuntimeException("添加章节-章节" + type + "失败"); + } + return res; + + } else if (sta != null && sta == 3) { + Long source1 = Long.parseLong(source); + Long target1 = Long.parseLong(target); + String str = "MATCH (p:Know), (j:Know) WHERE p.chapterId= " + source1 + " AND j.knowId= " + target1 + " CREATE (p)-[r: " + type + weight + " ]->(j) return count(r) as `count`;"; + Collection> result = neo4jClient.query(str).fetch().all(); + Iterator> iterator = result.iterator(); + res = -1L; + while (iterator.hasNext()) { + Map element = iterator.next(); + res = (Long) element.get("count"); + } + if (res < 0) { + throw new RuntimeException("添加章节-知识点" + type + "失败"); + } + return res; + } else if (sta != null && sta == 4) { + Long source1 = Long.parseLong(source); + Long target1 = Long.parseLong(target); + String str = "MATCH (p:Know), (j:Know) WHERE p.knowId= " + source1 + " AND j.knowId= " + target1 + " CREATE (p)-[r: " + type + weight + " ]->(j) return count(r) as `count`;"; + Collection> result = neo4jClient.query(str).fetch().all(); + Iterator> iterator = result.iterator(); + res = -1L; + while (iterator.hasNext()) { + Map element = iterator.next(); + res = (Long) element.get("count"); + } + if (res < 0L) { + throw new RuntimeException("添加知识点-知识点 关系" + type + "失败"); + } + return res; + } else { + throw new RuntimeException("执行 错误"); + } + + } + + +// public BaseResponse generateGraph1(String courseId1) { +// +// //先查询课程id的节点是否存在 +// Long l = knowRepository.queryNodeByCourseId(courseId1); +// if(l != null){ +// deleteAllByCourseId(courseId1); +// } +// +// QueryWrapper queryWrapper = new QueryWrapper<>(); +// queryWrapper.eq("course_id", courseId1); +// KnowStr knowStr = knowstrMapper.selectOne(queryWrapper); +// String jsonNodeCourse = knowStr.getCoursestr(); +// String jsonNodeChapter = knowStr.getChapterstr(); +// String jsonNodeKnow = knowStr.getKnowstr(); +// String jsonEdges = knowStr.getEdgestr(); +// ArrayList idLists = new ArrayList<>(); +// //插入图 +// JSONArray jsonArrayCourse = JSONUtil.parseArray(jsonNodeCourse); +// for (Object obj : jsonArrayCourse) { +// JSONObject jsonObject = (JSONObject) obj; +// String courseId = jsonObject.getStr("courseId"); +// String name = jsonObject.getStr("name"); +// String info = jsonObject.getStr("info"); +// Integer hour = jsonObject.getInt("hour"); +// //在图数据库中插入 +// Long res = knowRepository.addCourse(courseId, name, info, hour); +// idLists.add(res); +// if (res == null) { +// return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加课程失败"); +// } +// +// } +// //插入章节 +// JSONArray jsonArray = JSONUtil.parseArray(jsonNodeChapter); +// for (Object obj : jsonArray) { +// JSONObject jsonObject = (JSONObject) obj; +// Long chapterId = jsonObject.getLong("chapterId"); +// String name = jsonObject.getStr("name"); +// String info = jsonObject.getStr("info"); +// double hour = jsonObject.getDouble("hour"); +// //在图数据库中插入 +// Long res = knowRepository.addChapter(chapterId, name, info, hour); +// idLists.add(res); +// if (res == null) { +// for (int i = 0; i < idLists.size(); i++) { +// knowRepository.deleteNode(idLists.get(i)); +// } +// return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加章节失败"); +// +// } +// +// } +// //插入知识点 +// JSONArray jsonArrayKnow = JSONUtil.parseArray(jsonNodeKnow); +// for (Object obj : jsonArrayKnow) { +// JSONObject jsonObject = (JSONObject) obj; +// Long knowId = jsonObject.getLong("knowId"); +// String name = jsonObject.getStr("name"); +// String info = jsonObject.getStr("info"); +// double hour = jsonObject.getDouble("hour"); +// //在图数据库中插入 +// Long res = knowRepository.addKnow(knowId, name, info, hour); +// idLists.add(res); +// if (res == null) { +// for (int i = 0; i < idLists.size(); i++) { +// knowRepository.deleteNode(idLists.get(i)); +// } +// return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加知识点失败"); +// } +// +// } +// //插入关系 // 1 课程-章节 2 章节 - 章节 3 章节 - 知识点 4 点 - 点 +// JSONArray jsonArrayEdges = JSONUtil.parseArray(jsonEdges); +// for (Object obj : jsonArrayEdges) { +// JSONObject jsonObject = (JSONObject) obj; +// String source = jsonObject.getStr("source"); +// String target = jsonObject.getStr("target"); +// String type = jsonObject.getStr("type"); +// Integer sta = jsonObject.getInt("sta"); +// try { +// opResult(source, target, type, sta); +// } catch (Exception e) { +// for (int i = 0; i < idLists.size(); i++) { +// knowRepository.deleteNode(idLists.get(i)); +// } +// return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "添加节点关系失败"); +// } +// } +// //根据mysql KnowId 建立资源与neo4j 节点资源关系 +// QueryWrapperqueryWrapper1 = new QueryWrapper<>(); +// queryWrapper1.eq("course_id",courseId1); +// List resourceRelationships = resourceRelationshipMapper.selectList(queryWrapper1); +// for (int i = 0; i < resourceRelationships.size(); i++) { +// ResourceRelationship resourceRelationship = resourceRelationships.get(i); +// Long knowId = resourceRelationship.getKnowId(); +// Long resourceId = resourceRelationship.getResourceId(); +// String s = resourceGraphService.addResourcesByKnowId(knowId,resourceId).getData(); +// System.out.println(s); +// } +// return ResultUtils.success("添加节点关系成功"); +// } + + + + // + //通过courseId 查询所有结点,存储成JSON +// @ApiOperation(value = "通过courseId 查询所有知识点,存储成JSON") +// @GetMapping("/showGraphJson") +// BaseResponse showGraphJson(@RequestParam String courseId){ +// return knowService.showGraphJson(courseId); +// } +// +// //通过courseId 查询 JSON 生成图 +// @ApiOperation(value = "通过courseId 查询 JSON 生成图") +// @GetMapping("/generateGraph") +// BaseResponse generateGraph(@RequestParam String courseId){ +// return knowService.generateGraph(courseId); +// } + + +} diff --git a/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java b/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java deleted file mode 100644 index 686ff1c..0000000 --- a/src/main/java/com/teaching/backend/controller/Knowtmp/KnowtmpController.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.teaching.backend.controller.Knowtmp; - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.dto.Know.BaseKnowReturn; -import com.teaching.backend.model.dto.Knowtmp.KnowtempAdd; -import com.teaching.backend.model.dto.Knowtmp.KnowtempUpdate; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; -import com.teaching.backend.service.knowtmp.KnowtmpService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * @Author:youhang - * @Date:2024-08-07-19:38 - * @Description: - */ -@RestController -@RequestMapping("/knowtmp") -@Api(tags="Mysql-知识点管理") -public class KnowtmpController { - - @Autowired - private KnowtmpService knowtmpService; - - - - - //返回课程下所有知识点 - @ApiOperation(value = "返回课程下所有知识点") - @GetMapping("/getAllKnows") - BaseResponse getAllKnows(@RequestParam String courseId){ - return knowtmpService.getAllKnows(courseId); - } - - - // 添加知识点 - @ApiOperation(value = "添加知识点") - @PostMapping("/addKnow") - BaseResponse add(@RequestBody KnowtempAdd knowtempAdd){ - return knowtmpService.add(knowtempAdd); - } - - - //修改知识点 - @ApiOperation(value = "修改知识点") - @PostMapping("/updateKnow") - BaseResponse update(@RequestBody KnowtempUpdate knowtempUpdate){ - return knowtmpService.update(knowtempUpdate); - } - - //删除知识点 - @ApiOperation(value = "删除知识点") - @GetMapping("/deleteKnow") - BaseResponse delete(Long id){ - return knowtmpService.delete(id); - } - - //查询通过chapterId List - @ApiOperation(value = "查询通过chapterId List") - @GetMapping("/query") - BaseResponse query(Long id){ - return knowtmpService.query(id); - } - - //查询通过chapterId List - @ApiOperation(value = "查询通过chapterId List") - @GetMapping("/queryKnow") - BaseResponse> queryByChapterId(Long chapterId){ - return knowtmpService.queryByChapterId(chapterId); - } -} diff --git a/src/main/java/com/teaching/backend/controller/chapter/ChapterController.java b/src/main/java/com/teaching/backend/controller/chapter/ChapterController.java index 3aee720..0e020eb 100644 --- a/src/main/java/com/teaching/backend/controller/chapter/ChapterController.java +++ b/src/main/java/com/teaching/backend/controller/chapter/ChapterController.java @@ -1,80 +1,125 @@ package com.teaching.backend.controller.chapter; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.model.dto.chapter.ChapterAndNodeTreeVO; +import com.teaching.backend.model.dto.chapter.ChapterDTO; +import com.teaching.backend.model.dto.chapter.ChapterUpdateDTO; import com.teaching.backend.model.entity.chapter.Chapter; -import com.teaching.backend.model.vo.chapter.ChapterVo; import com.teaching.backend.service.chapter.IChapterService; +import com.teaching.backend.service.impl.chapter.ChapterExcelServiceImpl; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; -import java.util.LinkedList; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.IOException; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; +/** + * ClassName: ChapterController2 + * Package: com.teaching.backend.controller.chapter + * Description: + * + * @Author 姜钧瀚 + * @Create 2024/7/23 17:16 + * @Version 1.0 + */ @Api(tags = "课程章节管理接口") +@Validated @RestController -@RequestMapping("/chapter") +@RequestMapping("/api/chapter") + public class ChapterController { @Autowired - private IChapterService chapterService; - @ApiOperation("查看所有章节") + IChapterService chapterService; + + @Autowired + ChapterExcelServiceImpl chapterExcelService; + + @ApiOperation("查询全部的章节") @GetMapping("/list") - public BaseResponse> AllList(){ - List list = chapterService.list(); - return ResultUtils.success(list); + public BaseResponse> AllList(@RequestParam(value = "page",defaultValue = "1") int page, + @RequestParam(value = "pageSize",defaultValue = "5") int pageSize){ + return ResultUtils.success(chapterService.getAllChapters(page,pageSize)); + } + + @ApiOperation("根据课程id查出对应的父子章节") + @GetMapping("/chapter") + public BaseResponse> getCourseChapters(@RequestParam @NotBlank String courseId){ + return ResultUtils.success(chapterService.getChapterTree(courseId)); } + + @ApiOperation("根据章节id查出对应的详细章节信息") + @GetMapping("/select/chapter") + public BaseResponseselectChapter(@RequestParam @NotNull Long chapterId){ + return ResultUtils.success(chapterService.selectChapter(chapterId)); + + } + @ApiOperation("添加章节") @PostMapping("/add") - public BaseResponse addChapter(@RequestBody Chapter chapter){ - chapter.setNumshow(chapterService.updateNumShow(chapter)); - System.out.println("-=-=--=-000"+chapter.getNumshow()); - boolean save = chapterService.save(chapter); - return ResultUtils.success(save); + public BaseResponse addChapter(@Validated @RequestBody ChapterDTO chapterDTO) { + BigDecimal remainingHours = chapterService.saveChapter(chapterDTO); + if (remainingHours.compareTo(BigDecimal.ZERO) == 0) { + return ResultUtils.success("添加成功!所有学时分配完成"); + } else { + return ResultUtils.success("添加成功!还剩下" + remainingHours + "学时待分配"); + } } - @ApiOperation("删除章节信息") - @DeleteMapping("/{id}") - public BaseResponse delete(@PathVariable String id){ - Boolean chapter = chapterService.deleteAfterUpdate(id); - return ResultUtils.success(chapter); + + @ApiOperation("删除章节") + @DeleteMapping("/delete/{id}") + public BaseResponse dlChapter(@PathVariable @NotNull Long id){ + chapterService.deleteChapter(id); + return ResultUtils.success("删除成功"); } - @ApiOperation("更新章节") - @PutMapping - public BaseResponse updateChapter(@RequestBody Chapter chapter){ - System.out.println(chapter); + @ApiOperation("修改章节") + @PutMapping("/update") + public BaseResponse updateChapter(@RequestBody @Validated ChapterUpdateDTO chapterUpdateDTO){ + Chapter chapter = new Chapter(); + BeanUtil.copyProperties(chapterUpdateDTO,chapter); boolean b = chapterService.updateById(chapter); - return ResultUtils.success(b); - } - @ApiOperation("查看所有章节linkedlist") - @GetMapping("/listall/{courseid}") - public BaseResponse> getAll(@PathVariable String courseid){ - LinkedList list =chapterService.getCourseChapter(courseid); - System.out.println(list); - return ResultUtils.success(list); - } + if(b){ + return ResultUtils.success("修改成功"); + } + return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"修改失败"); + } + //上移章节 + @ApiOperation("上移章节") + @GetMapping("/up") + public BaseResponse upChapter(@RequestParam @NotNull Long chapterId){ + return chapterService.upChapter(chapterId); - @ApiOperation("章节顺序linkedlist") - @GetMapping("/aaa/{courseid}") - public BaseResponse> get(@PathVariable String courseid){ - LinkedList list =chapterService.getChapterSection(courseid); - System.out.println(list); - return ResultUtils.success(list); } + //下移章节 + + @ApiOperation("下移章节") + @GetMapping("/down") + public BaseResponse downChapter(@RequestParam @NotNull Long chapterId){ + return chapterService.downChapter(chapterId); - @ApiOperation("计算章的个数") - @GetMapping("/count/{courseid}") - public BaseResponse getChapterCount(@PathVariable String courseid){ - LinkedList list =chapterService.getCourseChapter(courseid); - Long count=list.stream() - .filter( str -> !str.getNumshow().contains("-")) - .count(); - return ResultUtils.success(count); } + } + + + diff --git a/src/main/java/com/teaching/backend/controller/chapter/ChapterController2.java b/src/main/java/com/teaching/backend/controller/chapter/ChapterController2.java deleted file mode 100644 index bc5b912..0000000 --- a/src/main/java/com/teaching/backend/controller/chapter/ChapterController2.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.teaching.backend.controller.chapter; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.model.dto.chapter.ChapterDTO; -import com.teaching.backend.model.entity.chapter.Chapter; -import com.teaching.backend.service.chapter.IChapterService; -import com.teaching.backend.service.impl.chapter.ChapterExcelServiceImpl; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import javax.validation.Valid; -import java.io.IOException; -import java.math.BigDecimal; -import java.time.LocalDateTime; -import java.util.List; - -/** - * ClassName: ChapterController2 - * Package: com.teaching.backend.controller.chapter - * Description: - * - * @Author 姜钧瀚 - * @Create 2024/7/23 17:16 - * @Version 1.0 - */ -@Api(tags = "课程章节管理接口2") -@RestController -@RequestMapping("/api/chapter2") -public class ChapterController2 { - - @Autowired - IChapterService chapterService; - @Autowired - ChapterExcelServiceImpl chapterExcelService; - - @ApiOperation("查询全部的章节") - @GetMapping("/list") - public BaseResponse> AllList(@RequestParam(value = "page",defaultValue = "1") int page, - @RequestParam(value = "pageSize",defaultValue = "5") int pageSize){ - return ResultUtils.success(chapterService.getAllChapters(page,pageSize)); - } - - - @ApiOperation("根据课程id查出对应的父子章节") - @GetMapping("/chapter") -public BaseResponse> getCourseChapters2(@RequestParam String courseId){ - return ResultUtils.success(chapterService.getChapterTree(courseId)); - } - - @ApiOperation("根据课程id查出对应的详细章节信息") - @GetMapping("/select/chapter/{chapterId}") - public BaseResponseselectChapter(@PathVariable Long chapterId){ - return ResultUtils.success(chapterService.selectChapter(chapterId)); - - } - - @ApiOperation("添加章节") - @PostMapping("/add") - public BaseResponse addChapter2(@Valid @RequestBody ChapterDTO chapterDTO) { - BigDecimal remainingHours = chapterService.saveChapter(chapterDTO); - if (remainingHours.compareTo(BigDecimal.ZERO) == 0) { - return ResultUtils.success("添加成功!所有学时分配完成"); - } else { - return ResultUtils.success("添加成功!还剩下" + remainingHours + "学时待分配"); - } - } - - @ApiOperation("插入章节") - @PostMapping("/insert") - public BaseResponse addChapter3(@RequestBody ChapterDTO chapterDTO, Long chapterId1, Long chapterId2){ - chapterService.insertChapter(chapterId1,chapterId2,chapterDTO); - return ResultUtils.success("添加成功!!!!!!!!"); - } - @ApiOperation("删除章节") - @DeleteMapping("/delete/{id}") - public BaseResponse dlChapter(@PathVariable Long id){ - chapterService.deleteChapter(id); - return ResultUtils.success("删除成功"); - } - - @ApiOperation("下载Excel模版") - @GetMapping("/downExcel") - public void downExcel2(HttpServletResponse response) throws IOException { - chapterService.downExcel(response); - } - - - @ApiOperation("导入excel") - @PostMapping("/uploadExcel") - public BaseResponse addChapter3(MultipartFile file, String courseId) { - try { - List validationErrors = chapterExcelService.uploadExcel(file, courseId); - if (!validationErrors.isEmpty()) { - StringBuilder errorMessage = new StringBuilder(); - for (String error : validationErrors) { - errorMessage.append(error).append("\n"); - } - return ResultUtils.error(ErrorCode.OPERATION_ERROR, errorMessage.toString()); - } else { - return ResultUtils.success("添加成功!!!!!!!!"); - } - } catch (Exception e) { - return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "系统错误: " + e.getMessage()); - } - } - @ApiOperation("导出数据") - @GetMapping(value = "/downLoadExcel") - public void downLoadXlsx(HttpServletResponse response,String courseId) throws Exception{ - chapterService.downLoadXlsx(response,courseId); - } - @ApiOperation("修改章节") - @PutMapping("/update") - public BaseResponse udChapter(@RequestBody Chapter chapter){ - - chapter.setUpdateTime(LocalDateTime.now()); - chapterService.updateById(chapter); - return ResultUtils.success("修改成功"); - } - @ApiOperation("将章节上移") - @PostMapping("/upper") - public BaseResponse increase(@RequestParam Long chapterId){ - chapterService.upChapter(chapterId); -return ResultUtils.success("上移成功"); - } - - @ApiOperation("将章节下移") - @PostMapping("/down") - public BaseResponse decrease(@RequestParam Long chapterId){ - chapterService.downChapter(chapterId); - return ResultUtils.success("下移成功"); - } -} - - - diff --git a/src/main/java/com/teaching/backend/controller/collection/CourseCollectionController.java b/src/main/java/com/teaching/backend/controller/collection/CourseCollectionController.java new file mode 100644 index 0000000..02cf832 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/collection/CourseCollectionController.java @@ -0,0 +1,59 @@ +package com.teaching.backend.controller.collection; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.model.dto.collection.CourseCollectionDTO; +import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest; +import com.teaching.backend.service.collection.CourseCollectionService; +import com.teaching.backend.service.thumb.CourseThumbService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ + +@RestController +@RequestMapping("/api/course_collection") +@Slf4j +@Api(tags = "课程收藏接口") +@Validated +public class CourseCollectionController { + + @Resource + private CourseCollectionService courseCollectionService; + + + @PostMapping("/collection") + @ApiOperation("课程收藏") + public BaseResponse doCourseCollection(@RequestBody @Validated CourseCollectionDTO CourseCollectionDTO) { + + return courseCollectionService.doCourseCollection(CourseCollectionDTO.getCourseId(), CourseCollectionDTO.getUserId()); + + } + + + /** + * 课程收藏总数 + * + */ + @ApiOperation("某个课程收藏数") + @GetMapping("/count") + public BaseResponse collectionCount(@RequestParam @NotBlank String courseId) { + return courseCollectionService.collectionCount(courseId); + } + + + +} diff --git a/src/main/java/com/teaching/backend/controller/collection/KnowCollectionController.java b/src/main/java/com/teaching/backend/controller/collection/KnowCollectionController.java new file mode 100644 index 0000000..cdc2466 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/collection/KnowCollectionController.java @@ -0,0 +1,56 @@ +package com.teaching.backend.controller.collection; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.model.dto.collection.CourseCollectionDTO; +import com.teaching.backend.model.dto.collection.KnowCollectionDTO; +import com.teaching.backend.service.collection.CourseCollectionService; +import com.teaching.backend.service.collection.KnowCollectionService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.constraints.NotNull; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/know_collection") +@Slf4j +@Api(tags = "知识点收藏接口") +@Validated +public class KnowCollectionController { + + @Resource + private KnowCollectionService knowCollectionService; + + + @PostMapping("/collection") + @ApiOperation("课程收藏") + public BaseResponse doKnowCollection(@RequestBody @Validated KnowCollectionDTO knowCollectionDTO) { + + return knowCollectionService.doKnowCollection(knowCollectionDTO.getKnowId(), knowCollectionDTO.getUserId()); + + } + + + /** + * 课程收藏总数 + * + */ + @PostMapping("/count") + @ApiOperation("知识点收藏总数") + public BaseResponse collectionCount(@RequestParam @NotNull Long knowId) { + return knowCollectionService.collectionCount(knowId); + + } + + +} diff --git a/src/main/java/com/teaching/backend/controller/courseResource/CourseResourceController.java b/src/main/java/com/teaching/backend/controller/courseResource/CourseResourceController.java deleted file mode 100644 index fe245eb..0000000 --- a/src/main/java/com/teaching/backend/controller/courseResource/CourseResourceController.java +++ /dev/null @@ -1,96 +0,0 @@ -//package com.teaching.backend.controller.courseResource; -// -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ResultUtils; -// -//import com.teaching.backend.model.entity.resource.CourseResources; -//import io.swagger.annotations.ApiOperation; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.ArrayList; -//import java.util.List; -// -//@RestController -//@RequestMapping("/api/courses") -//public class CourseResourceController { -// @Autowired -// private CourseResourcesServiceImpl courseResourcesService; -// @ApiOperation("查询全部课程资源记录") -// @GetMapping("/all") -// public BaseResponse> All(){ -// System.out.println("学习记录:"+courseResourcesService.list()); -// return ResultUtils.success(courseResourcesService.list()); -// } -// -// @ApiOperation("按type查询课程资源") -// @GetMapping("/getall") -// public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, -// @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, -// String type) { -// -// List cs = courseResourcesService.getByType(type); -// List pageCs = new ArrayList<>(); -// //当前页面 -// for(int i = (pagenum - 1) * pagesize; i < cs.size() && i < (pagenum) * pagesize; i++){ -// pageCs.add(cs.get(i)); -// } -// long total = cs.size(); // 总记录数 -// Page pageInfo = new Page<>(pagenum,pagesize,total); -// pageInfo.setRecords(pageCs); -// pageInfo.setPages((int)(Math.ceil((double) total / pagesize)));//设置总页数 -// return ResultUtils.success(pageInfo); -// } -// -// /** -// * 根据ids删除 -// * @param ids -// * @return -// */ -// @ApiOperation("根据ids删除") -// @DeleteMapping("/delete") -// public BaseResponse deleteRecords(@RequestParam List ids){ -// courseResourcesService.removeCourseResources(ids); -//// courseResourcesService.removeBatchByIds(ids); -// return ResultUtils.success("删除成功!!"); -// } -// -// /** -// * 新增 -// * @param courseResources -// * @return -// */ -// @ApiOperation("新增课程资源") -// @PostMapping("/save") -// public BaseResponse saveCourseResource(@RequestBody CourseResources courseResources){ -// System.out.println(courseResources); -// courseResourcesService.saveCourseResource(courseResources); -// return ResultUtils.success("添加成功!"); -// } -// -// /** -// * 编辑 -// * @param resources -// * @return -// */ -// @ApiOperation("编辑课程资源") -// @PutMapping("/edit") -// public BaseResponse editCourseResource(@RequestBody CourseResources resources){ -// System.out.println(resources); -// courseResourcesService.updateById(resources); -// return ResultUtils.success("编辑成功"); -// } -// -// /** -// * 根据id查询课程资源 -// * @param resourceId -// * @return -// */ -// @ApiOperation("根据id查询课程资源") -// @PostMapping("/getone") -// public BaseResponse getOne(@RequestParam String resourceId){ -// System.out.println(resourceId); -// return ResultUtils.success(courseResourcesService.getById(resourceId)); -// } -//} diff --git a/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java b/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java index 3383eff..364aa92 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CourseObjectivesController.java @@ -2,20 +2,26 @@ package com.teaching.backend.controller.courses; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.mapper.courses.CourseObjectivesMapper; import com.teaching.backend.model.dto.courses.CourseObjectivesDTO; +import com.teaching.backend.model.dto.courses.CourseObjectivesUpdateDTO; import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; -import com.teaching.backend.model.vo.courses.CourseObjectivesVO; import com.teaching.backend.service.courses.ICourseObjectivesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.validation.constraints.NotBlank; +import java.time.LocalDateTime; +import java.util.Date; import java.util.List; /** @@ -29,6 +35,7 @@ import java.util.List; @Api(tags = "课程目标管理接口") @RestController @RequestMapping("/api/course_objectives") +@Validated public class CourseObjectivesController { @@ -38,51 +45,68 @@ public class CourseObjectivesController { @Autowired CourseObjectivesMapper courseObjectivesMapper; - @ApiOperation("新增分项目标-默认第一个必须添加思政目标") - @ValidateParams({"name","type","pid"}) + @ApiOperation("新增分项目标") @PostMapping("/addobjectives") - public BaseResponse saveCourseObjectives(@RequestBody CourseObjectivesDTO courseObjectivesDTO){ - String data = courseObjectivesService.addObjectives(courseObjectivesDTO); - return ResultUtils.success(data); + public BaseResponse saveCourseObjectives(@Validated @RequestBody CourseObjectivesDTO courseObjectivesDTO){ + return courseObjectivesService.addObjectives(courseObjectivesDTO); } - @ApiOperation("删除分项目标-只能最后一个删除思政目标-总目标只需删除关联的内容") - @ValidateParams({"id"}) + @ApiOperation("删除分项目标") @DeleteMapping("/{id}") - public BaseResponse deleteCourseObjectivesByIds(@PathVariable String id){ - String data = courseObjectivesService.deleteObjectives(id); - return ResultUtils.success(data); + public BaseResponse deleteCourseObjectivesByIds(@PathVariable @NotBlank String id){ + return courseObjectivesService.deleteObjectives(id); } /** - * @param courseObjectivesDTO + * @param * @return */ - //TODO:分项目标按理说不能编辑,只可以新增 删除 @ApiOperation("编辑分项目标") @PutMapping - public BaseResponse updateCourseObjectives(@RequestBody CourseObjectivesDTO courseObjectivesDTO){ - String pid = courseObjectivesDTO.getPid(); - CourseObjectives courseObjectives = courseObjectivesMapper.selectById(pid); - BeanUtil.copyProperties(courseObjectivesDTO, courseObjectives); + public BaseResponse updateCourseObjectives(@RequestBody @Validated CourseObjectivesUpdateDTO courseObjectivesUpdateDTO){ + QueryWrapper courseObjectivesQueryWrapper = new QueryWrapper<>(); + courseObjectivesQueryWrapper.eq("id",courseObjectivesUpdateDTO.getId()); + CourseObjectives courseObjectives = courseObjectivesMapper.selectOne(courseObjectivesQueryWrapper); + BeanUtil.copyProperties(courseObjectivesUpdateDTO,courseObjectives); + courseObjectives.setCreateTime(new DateTime().toLocalDateTime()); courseObjectivesService.updateById(courseObjectives); return ResultUtils.success("编辑成功"); } - @ApiOperation("查询课程目标内容") - @ValidateParams({"id"}) + @ApiOperation("查询一个课程下所有目标内容") @GetMapping("/list/{id}") - public BaseResponse> queryCourseObjectivesTree(@PathVariable String id){ - List courseObjectivesTreeVO = courseObjectivesService.queryCourseObjectivesTree(id); - return ResultUtils.success(courseObjectivesTreeVO); + public BaseResponse> queryCourseObjectivesTree(@PathVariable @NotBlank String id){ + List CourseObjectivesList = courseObjectivesService.selectObjectivesList(id); + return ResultUtils.success(CourseObjectivesList); } + @ApiOperation("查询一个课程下的整体目标") + @GetMapping("/top/{id}") + public BaseResponse> queryCourseObjectivesTop(@PathVariable @NotBlank String id){ + List CourseObjectivesList = courseObjectivesService.selectObjectivesTop(id); + return ResultUtils.success(CourseObjectivesList); + } + - @ApiOperation("列表显示分项目标(用于添加目标内容时选择)") - @GetMapping("/objectiveslist/{courseId}") - public BaseResponse> queryCourseObjectivesForAdd(@PathVariable String courseId){ - List courseObjectivesVOS = courseObjectivesService.queryCourseObjectivesForAdd(courseId); - return ResultUtils.success(courseObjectivesVOS); + @ApiOperation("查询目标下知识点个数") + @GetMapping("/objective/knowcount") + public BaseResponse knowcount(@RequestParam @NotBlank String id){ + return courseObjectivesService.knowcount(id); } + @ApiOperation("查询目标下学时") + @GetMapping("/objective/knowtime") + public BaseResponse knowtime(@RequestParam @NotBlank String id){ + return courseObjectivesService.knowtime(id); + } + + + @ApiOperation("查询目标下学时占总目标的百分比") + @GetMapping("/objective/knowtimepercent") + public BaseResponse knowtimepercent(@RequestParam @NotBlank String courseId , @RequestParam @NotBlank String id){ + return courseObjectivesService.knowtimepercent(courseId,id); + } + + + } diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java index d53b0c5..a2906dc 100644 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/CoursesController.java @@ -2,27 +2,25 @@ package com.teaching.backend.controller.courses; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.CommonResult; import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.model.dto.courses.CoursesDTO; +import com.teaching.backend.model.dto.courses.CoursesUpdateDTO; import com.teaching.backend.model.dto.courses.PageDTO; -import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.umsAdmin.UmsStudent; import com.teaching.backend.model.query.CourseQuery; +import com.teaching.backend.model.vo.courses.CourseVO; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.model.vo.message.CourseUserInfVO; import com.teaching.backend.service.courses.ICoursesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.util.HashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -37,6 +35,7 @@ import java.util.Map; @Api(tags = "课程管理接口") @RestController @RequestMapping("/api/coursesteacher") +@Validated public class CoursesController { @Autowired @@ -44,26 +43,10 @@ public class CoursesController { -// @ApiOperation("网站首页") -// @GetMapping("/index") -// public BaseResponse> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { -// List coursesVo = coursesService.getPagePageSize(page, pageSize); -//// System.out.println(coursesVo); -// long totalcount = coursesService.count(); -// long toatlPages = (int) Math.ceil((double)totalcount / pageSize); -// Map objectMap = new HashMap<>(); -// objectMap.put("content",coursesVo); -// objectMap.put("totalcount", totalcount); -// objectMap.put("totalPages", toatlPages); -// objectMap.put("currentPage", page); -// return ResultUtils.success(objectMap); -// } - @ApiOperation("网站首页") @GetMapping("/index") - public BaseResponse> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { - Map result = coursesService.getPagePageSize2(page, pageSize); - + public BaseResponse> getData(@RequestParam("page") @NotNull int page, @RequestParam("pageSize") @NotNull int pageSize) { + Map result = coursesService.getPagePageSize(page, pageSize); // 将结果放入新的Map对象中返回 Map objectMap = new HashMap<>(); objectMap.put("content", result.get("courses")); @@ -75,76 +58,60 @@ public class CoursesController { } - @ApiOperation("新增课程--同步新增课程的总体目标并同时添加所有的分项目标") - @ValidateParams({"teacher","img", "category", "nature","name","code","credit","classhours","assessmenttype","assessmentway"}) // 需要校验的参数 + @ApiOperation("新增课程--默认创建一个课程总目标和课程知识点") @PostMapping("/addcourse") - public BaseResponse saveCourse(@RequestBody CoursesDTO coursesDTO){ + public BaseResponse saveCourse(@RequestBody @Validated CoursesDTO coursesDTO){ String data = coursesService.saveCourseWithObjective(coursesDTO); return ResultUtils.success(data); } @ApiOperation("查询课程列表") - @ValidateParams({"userId"}) @GetMapping("/page") - public BaseResponse> getCourses(CourseQuery courseQuery){ + public BaseResponse> getCourses( @Validated CourseQuery courseQuery){ PageDTO coursesList = coursesService.queryCourses(courseQuery); return ResultUtils.success(coursesList); } @ApiOperation("根据id查询课程") - @ValidateParams({"id"}) @GetMapping("/{id}") - public BaseResponse getByIdCourse(@PathVariable String id){ - Courses course = coursesService.getById(id); - CoursesDTO coursesDTO = new CoursesDTO(); - BeanUtils.copyProperties(course,coursesDTO); - return ResultUtils.success(coursesDTO); + public BaseResponse getByIdCourse(@PathVariable @NotBlank String id){ + return coursesService.getByIdCourse(id); } @ApiOperation("根据id修改课程") - @ValidateParams({"id","teacher","img", "category", "nature","name","code","credit","classhours","assessmenttype","assessmentway"}) @PutMapping - public BaseResponse editCourse(@RequestBody CoursesDTO coursesDTO){ - coursesService.updateCourse(coursesDTO); + public BaseResponse editCourse(@RequestBody @Validated CoursesUpdateDTO coursesUpdateDTO){ + coursesService.updateCourse(coursesUpdateDTO); return ResultUtils.success("编辑成功"); } @ApiOperation("根据id删除课程") - @ValidateParams({"id"}) @DeleteMapping("/{id}") - public BaseResponse deleteCourses(@PathVariable String id){ - - coursesService.deleteBatchByIds(id); - return ResultUtils.success("删除成功"); + public BaseResponse deleteCourses(@PathVariable @NotBlank String id){ + return coursesService.deleteBatchByIds(id); } - /** - * 导出word - * @param response - * @throws Exception - */ - @ApiOperation("导出word") - @GetMapping(value = "/down") - public void test( HttpServletResponse response) throws Exception{ - //-------------------------查询课程通过课程id查 - String id = "de3100cad98f76be3176dd39aa748a9e"; - coursesService.down(response, id); - } @ApiOperation("查询学生列表") @PostMapping("/studentList") - public CommonResult> getStudentList(@RequestParam String userId){ + public BaseResponse> getStudentList(@RequestParam @NotBlank String userId){ List umsStudentList = coursesService.queryStudentList(userId); - return CommonResult.success(umsStudentList); + return ResultUtils.success(umsStudentList); } + @ApiOperation("根据用户id,查询与用户有关的课程列表,并在课程列表显示所有用户信息") - @ValidateParams({"userId"}) @GetMapping("/page/courseusers") - public BaseResponse> getUserInfByCourse(@RequestParam Long userId){ + public BaseResponse> getUserInfByCourse(@RequestParam @NotNull Long userId){ List courseUsersInfList = coursesService.getUserInfByCourse(userId); return ResultUtils.success(courseUsersInfList); } + @ApiOperation("编辑简介") + @GetMapping("/introduce/edit") + public BaseResponseeditIntroduce(@RequestParam @NotBlank String courseId ,@RequestParam @NotBlank String introduce){ + return coursesService.editIntroduce(courseId , introduce); + } + } diff --git a/src/main/java/com/teaching/backend/controller/courses/CoursesController2.java b/src/main/java/com/teaching/backend/controller/courses/CoursesController2.java deleted file mode 100644 index 3b4ef97..0000000 --- a/src/main/java/com/teaching/backend/controller/courses/CoursesController2.java +++ /dev/null @@ -1,84 +0,0 @@ -//package com.teaching.backend.controller.courses; -// -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.filter.ValidateParams; -//import com.teaching.backend.model.dto.courses.CoursesDTO; -//import com.teaching.backend.model.entity.courses.Courses; -//import com.teaching.backend.service.courses.ICoursesService; -//import io.swagger.annotations.ApiOperation; -//import org.springframework.beans.BeanUtils; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.HashMap; -//import java.util.List; -//import java.util.Map; -// -///** -// * ClassName: CoursesController2 -// * Package: com.teaching.backend.controller.courses -// * Description: -// * -// * @Author 姜钧瀚 -// * @Create 2024/7/22 17:52 -// * @Version 1.0 -// */ -//@RestController -//@RequestMapping("/api/coursesteacher2") -//public class CoursesController2 { -// @Autowired -// ICoursesService coursesService; -// -// @ApiOperation("网站首页2") -// @GetMapping("/index2") -// public BaseResponse> getData(@RequestParam("page") int page, @RequestParam("pageSize") int pageSize) { -// Map result = coursesService.getPagePageSize2(page, pageSize); -// -// // 将结果放入新的Map对象中返回 -// Map objectMap = new HashMap<>(); -// objectMap.put("content", result.get("courses")); -// objectMap.put("totalcount", result.get("totalcount")); -// objectMap.put("totalPages", result.get("totalPages")); -// objectMap.put("currentPage", result.get("currentPage")); -// -// return ResultUtils.success(objectMap); -// } -// -// -// @ApiOperation("根据id查询课程") -// @ValidateParams({"id"}) -// @GetMapping("/{id}") -// public BaseResponse getByIdCourse(@PathVariable String id){ -// if(id==null){ -// throw new BusinessException(ErrorCode.PARAMS_ERROR,"课程id为空"); -// } -// Courses course = coursesService.getById(id); -// CoursesDTO coursesDTO = new CoursesDTO(); -// BeanUtils.copyProperties(course,coursesDTO); -// return ResultUtils.success(coursesDTO); -// } -// -// @ApiOperation("点击详情课程根据id查询对应课程的资源") -// @GetMapping("/resource/{id}") -// public BaseResponse> getResource(@PathVariable String id) { -// List relatedResources = resourcesRelationshipService.getResource(id); -// return ResultUtils.success(relatedResources); -// } -// -// @ApiOperation("点击详情课程根据id和type查询对应课程的资源") -// @GetMapping("/resource/list") -// public BaseResponse> getResource2(@RequestParam String id,@RequestParam Integer type) { -// List relatedResources = resourcesRelationshipService.getResource2(id,type); -// return ResultUtils.success(relatedResources); -// } -// -// -// } -// -// -// -// -// diff --git a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentKnowController.java b/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentKnowController.java deleted file mode 100644 index bd3497b..0000000 --- a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentKnowController.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.teaching.backend.controller.courses; - - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.filter.ValidateParams; -import com.teaching.backend.model.dto.courses.CoursesDTO; -import com.teaching.backend.model.dto.courses.ObjectiveContentKnowDTO; -import com.teaching.backend.model.vo.courses.ObjectiveContentKnowVO; -import com.teaching.backend.service.courses.IObjectiveContentKnowService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import org.springframework.stereotype.Controller; - -/** - *

- * 前端控制器 - *

- * - * @author zjh - * @since 2024-06-13 - */ -@Api(tags = "目标-内容 关联的知识点接口") -@RestController -@RequestMapping("/api/objective_content_know") -public class ObjectiveContentKnowController { - @Autowired - IObjectiveContentKnowService objectiveContentKnowService; - - - @ApiOperation("给知识点关联--目标内容") - @ValidateParams({"objectiveContentId","knowId"}) - @PostMapping("/addknows") - public BaseResponse saveKnowsWithObjectiveContent(@RequestBody ObjectiveContentKnowDTO objectiveContentKnowDTO){ - String data = objectiveContentKnowService.saveKnowsWithObjectiveContent(objectiveContentKnowDTO); - return ResultUtils.success(data); - } - - @ApiOperation("针对分项目标统计,支撑分项目标知识点的个数、学时合计、占比") - @ValidateParams({"objectiveId"}) - @GetMapping("/{objectiveId}") - public BaseResponse getCountData(@PathVariable String objectiveId){ - ObjectiveContentKnowVO objectiveContentKnowVO= objectiveContentKnowService.getCountData(objectiveId); - return ResultUtils.success(objectiveContentKnowVO); - } - -} diff --git a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java b/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java deleted file mode 100644 index b18112f..0000000 --- a/src/main/java/com/teaching/backend/controller/courses/ObjectiveContentsController.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.teaching.backend.controller.courses; - - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.filter.ValidateParams; -import com.teaching.backend.model.entity.courses.ObjectiveContents; -import com.teaching.backend.service.courses.IObjectiveContentsService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -/** - *

- * 前端控制器 - *

- * - * @author zjh - * @since 2024-06-05 - */ -@RestController -@RequestMapping("/api/objective_contents") -@Api(tags = "目标内容接口") -public class ObjectiveContentsController { - - @Autowired - IObjectiveContentsService objectiveContentsService; - - @ApiOperation("添加目标内容") - @ValidateParams({"objectiveId"}) - @PostMapping("/addcontent") - public BaseResponse saveContent(@RequestBody ObjectiveContents objectiveContents){ - String data = objectiveContentsService.saveWithCheck(objectiveContents); - return ResultUtils.success(data); - } - - @ApiOperation("删除目标内容") - @ValidateParams({"id"}) - @DeleteMapping("/{id}") - public BaseResponse deleteContent(@PathVariable String id){ - String data = objectiveContentsService.deleteById(id); - return ResultUtils.success(data); - } - - @ApiOperation("修改目标内容") - @ValidateParams({"id","objectiveId"}) - @PutMapping("/update") - public BaseResponse updateContent(@RequestBody ObjectiveContents objectiveContents){ - objectiveContentsService.updateById(objectiveContents); - return ResultUtils.success("修改成功"); - } - - @ApiOperation("根据id查询目标内容") - @ValidateParams({"id"}) - @GetMapping("/{id}") - public BaseResponse updateContent(@PathVariable String id){ - ObjectiveContents objectiveContent = objectiveContentsService.getById(id); - return ResultUtils.success(objectiveContent); - } - -} diff --git a/src/main/java/com/teaching/backend/controller/courses/ObjectivesTypeController.java b/src/main/java/com/teaching/backend/controller/courses/ObjectivesTypeController.java deleted file mode 100644 index 87847f0..0000000 --- a/src/main/java/com/teaching/backend/controller/courses/ObjectivesTypeController.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.teaching.backend.controller.courses; - - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.model.entity.courses.ObjectivesType; -import com.teaching.backend.service.courses.IObjectivesTypeService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - *

- * 前端控制器 - *

- * - * @author zjh - * @since 2024-06-05 - */ -@RestController -@RequestMapping("/api/objectives_type") -@Api(tags = "项目目标类型管理接口") -public class ObjectivesTypeController { - - @Autowired - IObjectivesTypeService objectivesTypeService; - - @ApiOperation("新增目标类型") - @PostMapping("/addobjectives") - public BaseResponse saveObjectives(@RequestBody ObjectivesType objectivesType){ - objectivesTypeService.save(objectivesType); - return ResultUtils.success("添加成功"); - } - - @ApiOperation("删除目标类型") - @DeleteMapping("/deleteobjectives/{id}") - public BaseResponse deleteObjectives(@PathVariable String id){ - objectivesTypeService.removeById(id); - return ResultUtils.success("删除成功"); - } - - @ApiOperation("修改目标类型") - @PutMapping - public BaseResponse updateObjectives(@RequestBody ObjectivesType objectivesType){ - objectivesTypeService.updateById(objectivesType); - return ResultUtils.success("修改成功"); - } - - @ApiOperation("列表显示目标类型") - @GetMapping("/list") - public BaseResponse> ObjectivesList(){ - List list = objectivesTypeService.list(); - return ResultUtils.success(list); - } - - - -} diff --git a/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java b/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java index f0433f9..c68e460 100644 --- a/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java +++ b/src/main/java/com/teaching/backend/controller/courses/StudentCoursesController.java @@ -3,19 +3,14 @@ package com.teaching.backend.controller.courses; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.model.dto.courses.ObjectiveContentKnowDTO; -import com.teaching.backend.model.dto.courses.PageDTO; import com.teaching.backend.model.dto.courses.StudentCoursesDTO; -import com.teaching.backend.model.query.CourseQuery; -import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.service.courses.IStudentCoursesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import org.springframework.stereotype.Controller; - /** *

* 前端控制器 @@ -27,6 +22,7 @@ import org.springframework.stereotype.Controller; @Api(tags = "学生课程接口") @RestController @RequestMapping("/api/student_courses") +@Validated public class StudentCoursesController { @Autowired @@ -34,7 +30,7 @@ public class StudentCoursesController { @ApiOperation("给学生添加课程") @PostMapping("/addcoursess") - public BaseResponse saveCoursesToStudents(@RequestBody StudentCoursesDTO studentCoursesDTO){ + public BaseResponse saveCoursesToStudents(@RequestBody @Validated StudentCoursesDTO studentCoursesDTO){ String data = studentCoursesService.saveCoursesToStudents(studentCoursesDTO); return ResultUtils.success(data); } diff --git a/src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java b/src/main/java/com/teaching/backend/controller/favour/CourseFavourController.java similarity index 57% rename from src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java rename to src/main/java/com/teaching/backend/controller/favour/CourseFavourController.java index fe2548b..1ffd0f6 100644 --- a/src/main/java/com/teaching/backend/controller/favour/SeCourseFavourController.java +++ b/src/main/java/com/teaching/backend/controller/favour/CourseFavourController.java @@ -3,20 +3,20 @@ package com.teaching.backend.controller.favour; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.CommonResult; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAddRequest; -import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourAllRequest; import com.teaching.backend.model.dto.favour.courseFavour.CourseFavourQueryRequest; import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; -import com.teaching.backend.service.favour.SeCourseFavourService; +import com.teaching.backend.service.favour.CourseFavourService; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -30,10 +30,12 @@ import java.util.List; @RestController @RequestMapping("/api/course_favour") @Slf4j -public class SeCourseFavourController { +@Api(tags = "课程喜欢接口") +@Validated +public class CourseFavourController { @Resource - private SeCourseFavourService seCourseFavourService; + private CourseFavourService CourseFavourService; @@ -44,32 +46,27 @@ public class SeCourseFavourController { * @return result 执行情况 */ @PostMapping("/add") + @ApiOperation("课程喜欢") // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 - public BaseResponse doFavour(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { - System.out.println(courseFavourAddRequest); - //判断字段是否为空 - if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId())) { - throw new BusinessException(ErrorCode.PARAMS_ERROR); - } + public BaseResponse doFavour(@RequestBody @Validated CourseFavourAddRequest courseFavourAddRequest) { - return seCourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId()); + return CourseFavourService.doCourseFavour(courseFavourAddRequest.getCourseId(), courseFavourAddRequest.getUserId()); } /** - * 课程点赞总数 + * 课程点赞总数 课程有多少人喜欢 * - * @param courseFavourAddRequest * @return result 课程点赞总数 */ - @PostMapping("/count") - // HttpServletRequest request 在一个fitter里面进行鉴权操作 - public BaseResponse favourCount(@RequestBody CourseFavourAddRequest courseFavourAddRequest) { - if (StringUtils.isAnyBlank(courseFavourAddRequest.getCourseId())) { + @GetMapping("/count") + @ApiOperation("课程喜欢总数") + public BaseResponse favourCount(@RequestParam String courseId) { + if (StringUtils.isAnyBlank(courseId)) { throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); } - return seCourseFavourService.favourCount(courseFavourAddRequest.getCourseId()); + return CourseFavourService.favourCount(courseId); } @@ -80,15 +77,14 @@ public class SeCourseFavourController { */ @PostMapping("/list/page") public BaseResponse> listPostByPage(@RequestBody CourseFavourQueryRequest courseFavourQueryRequest) { - System.out.println(courseFavourQueryRequest); + long current = courseFavourQueryRequest.getCurrent(); long size = courseFavourQueryRequest.getPageSize(); String userId = courseFavourQueryRequest.getUserId(); - List ids = seCourseFavourService.courseList(userId); + List ids = CourseFavourService.courseList(userId); QueryWrapper courseQueryWrapper = new QueryWrapper<>(); courseQueryWrapper.in("id", ids); - Page courseFavourDetailVOPage = seCourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper); - + Page courseFavourDetailVOPage = CourseFavourService.listCourseFavourByPage(new Page<>(current, size), courseQueryWrapper); return ResultUtils.success(courseFavourDetailVOPage); } @@ -99,12 +95,12 @@ public class SeCourseFavourController { */ @ApiOperation("查询最新收藏") @PostMapping("/newCollect") - public CommonResult> newCollect(@RequestParam String userId) { - List newCoursesVO = seCourseFavourService.queryNewCollect(userId); + public BaseResponse> newCollect(@RequestParam String userId) { + List newCoursesVO = CourseFavourService.queryNewCollect(userId); if (newCoursesVO == null){ - CommonResult.failed("用户或角色错误"); + ResultUtils.error(ErrorCode.PARAMS_ERROR,"用户或角色错误"); } - return CommonResult.success(newCoursesVO); + return ResultUtils.success(newCoursesVO); } } diff --git a/src/main/java/com/teaching/backend/controller/favour/KnowFavourController.java b/src/main/java/com/teaching/backend/controller/favour/KnowFavourController.java new file mode 100644 index 0000000..7739a73 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/favour/KnowFavourController.java @@ -0,0 +1,48 @@ +package com.teaching.backend.controller.favour; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest; +import com.teaching.backend.service.favour.KnowFavourService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/know_favour") +@Slf4j +@Api(tags = "知识点喜欢接口") +@Validated +public class KnowFavourController { + + @Autowired + private KnowFavourService KnowFavourService; + + + /** + * 知识点喜欢 + * + * @param knowFavourAddRequest + * @return result 执行情况 + */ + @PostMapping("/add") + // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 + public BaseResponse doFavour(@RequestBody @Validated KnowFavourAddRequest knowFavourAddRequest) { + return KnowFavourService.doKnowFavour( knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId()); + + } + +} diff --git a/src/main/java/com/teaching/backend/controller/favour/ResourceFavourController.java b/src/main/java/com/teaching/backend/controller/favour/ResourceFavourController.java new file mode 100644 index 0000000..85839ac --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/favour/ResourceFavourController.java @@ -0,0 +1,72 @@ +package com.teaching.backend.controller.favour; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourAddRequest; +import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourQueryRequest; + +import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.service.favour.ResourceFavourService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/resource_favour") +@Slf4j +@Api(tags = "资源喜欢接口") +@Validated +public class ResourceFavourController { + + @Autowired + private ResourceFavourService seResourceFavourService; + + + /** + * 资源喜欢 + * + * @param resourceFavourAddRequest + * @return result 执行情况 + */ + @PostMapping("/add") + @ApiOperation("资源喜欢") + public BaseResponse doFavour(@RequestBody @Validated ResourceFavourAddRequest resourceFavourAddRequest) { + return seResourceFavourService.doResourceFavour(resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId()); + } + + + + + /** + * 分页获取资源列表 + * + * @return + */ + @PostMapping("/list/page") + @ApiOperation("分页获取资源列表") + public BaseResponse> listPostByPage(@RequestBody @Validated ResourceFavourQueryRequest resourceFavourQueryRequest) { + Integer current = resourceFavourQueryRequest.getCurrent(); + Integer size = resourceFavourQueryRequest.getPageSize(); + Long userId = resourceFavourQueryRequest.getUserId(); + Integer type = resourceFavourQueryRequest.getType(); + return ResultUtils.success(seResourceFavourService.listCourseFavourByPage(userId,type,current,size)); + } + + +} diff --git a/src/main/java/com/teaching/backend/controller/favour/SeKnowFavourController.java b/src/main/java/com/teaching/backend/controller/favour/SeKnowFavourController.java deleted file mode 100644 index 97d3731..0000000 --- a/src/main/java/com/teaching/backend/controller/favour/SeKnowFavourController.java +++ /dev/null @@ -1,47 +0,0 @@ -//package com.teaching.backend.controller.favour; -// -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.model.dto.favour.knowFavour.KnowFavourAddRequest; -//import com.teaching.backend.service.favour.SeKnowFavourService; -//import lombok.extern.slf4j.Slf4j; -//import org.apache.commons.lang3.StringUtils; -//import org.springframework.web.bind.annotation.PostMapping; -//import org.springframework.web.bind.annotation.RequestBody; -//import org.springframework.web.bind.annotation.RequestMapping; -//import org.springframework.web.bind.annotation.RestController; -// -//import javax.annotation.ResourceMysql; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//@RestController -//@RequestMapping("/api/know_favour") -//@Slf4j -//public class SeKnowFavourController { -// -// @ResourceMysql -// private SeKnowFavourService seKnowFavourService; -// -// -// /** -// * 知识点收藏 -// * -// * @param knowFavourAddRequest -// * @return result 执行情况 -// */ -// @PostMapping("/add") -// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 -// public BaseResponse doFavour(@RequestBody KnowFavourAddRequest knowFavourAddRequest) { -// if (StringUtils.isAnyBlank(knowFavourAddRequest.getCourseId(), knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId())) { -// throw new BusinessException(ErrorCode.PARAMS_ERROR); -// } -// return seKnowFavourService.doKnowFavour( knowFavourAddRequest.getKnowId(), knowFavourAddRequest.getUserId()); -// -// } -// -//} diff --git a/src/main/java/com/teaching/backend/controller/favour/SeResourceFavourController.java b/src/main/java/com/teaching/backend/controller/favour/SeResourceFavourController.java deleted file mode 100644 index d22bd33..0000000 --- a/src/main/java/com/teaching/backend/controller/favour/SeResourceFavourController.java +++ /dev/null @@ -1,69 +0,0 @@ -//package com.teaching.backend.controller.favour; -// -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourAddRequest; -//import com.teaching.backend.model.dto.favour.resourceFavour.ResourceFavourQueryRequest; -//import com.teaching.backend.model.entity.resource.CourseResources; -//import com.teaching.backend.service.favour.SeResourceFavourService; -//import lombok.extern.slf4j.Slf4j; -//import org.apache.commons.lang3.StringUtils; -//import org.springframework.web.bind.annotation.PostMapping; -//import org.springframework.web.bind.annotation.RequestBody; -//import org.springframework.web.bind.annotation.RequestMapping; -//import org.springframework.web.bind.annotation.RestController; -// -//import javax.annotation.ResourceMysql; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//@RestController -//@RequestMapping("/api/resource_favour") -//@Slf4j -//public class SeResourceFavourController { -// -// @ResourceMysql -// private SeResourceFavourService seResourceFavourService; -// -// -// /** -// * 资源收藏 -// * -// * @param resourceFavourAddRequest -// * @return result 执行情况 -// */ -// @PostMapping("/add") -// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 -// public BaseResponse doFavour(@RequestBody ResourceFavourAddRequest resourceFavourAddRequest) { -// if (StringUtils.isAnyBlank(resourceFavourAddRequest.getUserId())) { -// throw new BusinessException(ErrorCode.PARAMS_ERROR); -// } -// -// return seResourceFavourService.doResourceFavour(resourceFavourAddRequest.getResourceId(), resourceFavourAddRequest.getUserId()); -// } -// -// -// -// -// /** -// * 分页获取资源列表 -// * -// * @return -// */ -// @PostMapping("/list/page") -// public BaseResponse> listPostByPage(@RequestBody ResourceFavourQueryRequest resourceFavourQueryRequest) { -// Integer current = resourceFavourQueryRequest.getCurrent(); -// Integer size = resourceFavourQueryRequest.getPageSize(); -// String userId = resourceFavourQueryRequest.getUserId(); -// Integer type = resourceFavourQueryRequest.getType(); -// return ResultUtils.success(seResourceFavourService.listCourseFavourByPage(userId,type,current,size)); -// } -// -// -//} diff --git a/src/main/java/com/teaching/backend/controller/learn/CourseLearnController.java b/src/main/java/com/teaching/backend/controller/learn/CourseLearnController.java new file mode 100644 index 0000000..776a93b --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/learn/CourseLearnController.java @@ -0,0 +1,89 @@ +package com.teaching.backend.controller.learn; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.filter.ValidateParams; +import com.teaching.backend.model.dto.learn.CourseLearnDTO; +import com.teaching.backend.service.learn.CourseLearnService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/course_learn") +@Slf4j +@Api(tags = "课程学习接口") +@Validated +public class CourseLearnController { + + @Resource + private CourseLearnService courseLearnService; + + + @PostMapping("/learn") + // HttpServletRequest request 在一个fitter里面进行鉴权操作 + public BaseResponse doLearn(@RequestBody @Validated CourseLearnDTO courseLearnDTO) { + + return courseLearnService.doLearn(courseLearnDTO.getCourseId(), courseLearnDTO.getUserId()); + + } + + + /** + * 课程学习总数 + * + */ + @PostMapping("/count") + // HttpServletRequest request 在一个fitter里面进行鉴权操作 + public BaseResponse learnCount(@RequestParam String courseId) { + if(courseId == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"参数不能为空"); + } + return courseLearnService.learnCount(courseId); + + } + + /** + * 获取当前登录用户的学习知识点记录 + * @param pagenum + * @param pagesize + * @return + */ + @ApiOperation("根据用户id查询学习记录") + @ValidateParams({"userId"}) + @GetMapping("/page") + public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, + @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, + @RequestParam String userId){ + return courseLearnService.getPage(pagenum, pagesize, userId); + } + + /** + * 根据ids删除 + * @param ids + * @return + */ + @ApiOperation("学习记录删除") + @DeleteMapping("/delete") + public BaseResponse deleteRecords(@RequestParam List ids){ + return courseLearnService.removeCoursesRecords(ids); + } + + + + + + +} diff --git a/src/main/java/com/teaching/backend/controller/learn/KnowLearnController.java b/src/main/java/com/teaching/backend/controller/learn/KnowLearnController.java new file mode 100644 index 0000000..cb05173 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/learn/KnowLearnController.java @@ -0,0 +1,56 @@ +package com.teaching.backend.controller.learn; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.model.dto.collection.CourseCollectionDTO; +import com.teaching.backend.model.dto.learn.KnowLearnDTO; +import com.teaching.backend.service.collection.CourseCollectionService; +import com.teaching.backend.service.learn.KnowLearnService; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/know_learn") +@Slf4j +@Api(tags = "知识点学习接口") +@Validated +public class KnowLearnController { + + @Resource + private KnowLearnService knowLearnService; + + + @PostMapping("/learn") + // HttpServletRequest request 在一个fitter里面进行鉴权操作 + public BaseResponse doLearn(@RequestBody @Validated KnowLearnDTO knowLearnDTO) { + + return knowLearnService.doKnowLearn(knowLearnDTO.getKnowId(), knowLearnDTO.getUserId()); + + } + + + /** + * 课程收藏总数 + * + */ + @PostMapping("/count") + // HttpServletRequest request 在一个fitter里面进行鉴权操作 + public BaseResponse learnnCount(@RequestParam Long knowId) { + return knowLearnService.learnCount(knowId); + + } + + + + +} diff --git a/src/main/java/com/teaching/backend/controller/message/MessagesController.java b/src/main/java/com/teaching/backend/controller/message/MessagesController.java index bfcf1c6..25fbe6e 100644 --- a/src/main/java/com/teaching/backend/controller/message/MessagesController.java +++ b/src/main/java/com/teaching/backend/controller/message/MessagesController.java @@ -4,20 +4,14 @@ package com.teaching.backend.controller.message; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.filter.ValidateParams; -import com.teaching.backend.model.dto.courses.PageDTO; import com.teaching.backend.model.dto.message.SysMessageDTO; import com.teaching.backend.model.entity.message.SysMessages; -import com.teaching.backend.model.query.CourseQuery; -import com.teaching.backend.model.query.MessagesQuery; -import com.teaching.backend.model.vo.courses.CoursesVO; -import com.teaching.backend.model.vo.message.SysMessageVO; import com.teaching.backend.service.message.IMessagesService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.time.LocalDateTime; import java.util.List; /** diff --git a/src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java b/src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java deleted file mode 100644 index 5253649..0000000 --- a/src/main/java/com/teaching/backend/controller/records/BaseSourceApiController.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.teaching.backend.controller.records; - -import com.teaching.backend.config.NonStaticResourceHttpRequestHandler; -import org.mybatis.logging.Logger; -import org.mybatis.logging.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.nio.charset.StandardCharsets; - -@RestController -@RequestMapping(value = "/api/baseResource") -public class BaseSourceApiController { - - - @Autowired - private NonStaticResourceHttpRequestHandler nonStaticResourceHttpRequestHandler; - - - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - - @RequestMapping(value = "/video", method = RequestMethod.GET) - public void video( - HttpServletRequest request, - HttpServletResponse response - ) { - try { - String path = "D:/Users/Desktop/image/剪映/7.18/7月20.mp4"; - File file = new File(path); - if (file.exists()) { - request.setAttribute(NonStaticResourceHttpRequestHandler.ATTR_FILE, path); - nonStaticResourceHttpRequestHandler.handleRequest(request, response); - } else { - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - response.setCharacterEncoding(StandardCharsets.UTF_8.toString()); - } - } catch (Exception e) { - - } - } -} diff --git a/src/main/java/com/teaching/backend/controller/records/Bf.java b/src/main/java/com/teaching/backend/controller/records/Bf.java deleted file mode 100644 index ab83b32..0000000 --- a/src/main/java/com/teaching/backend/controller/records/Bf.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.teaching.backend.controller.records; - - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletResponse; -import java.io.FileInputStream; -import java.io.OutputStream; -import java.util.AbstractCollection; -@RestController -@RequestMapping("/api/bf") -public class Bf { - /** - * 根据本地图片全路径,响应给浏览器1个图片流 - */ - @RequestMapping("/showImage") - public void showImage(HttpServletResponse response, @RequestParam("fileName")String fileName) { - System.out.println(fileName); - show(response,fileName,"image"); - } - - /** - * 根据本地视频全路径,响应给浏览器1个视频 - */ - @RequestMapping("/showVideo") - public void showVideo(HttpServletResponse response, @RequestParam("fileName")String fileName) { - show(response,fileName,"video"); - } - - /** - * 响应文件 - * @param response - * @param fileName 文件全路径 - * @param type 响应流类型 - */ - public void show(HttpServletResponse response, String fileName,String type){ - try{ - FileInputStream fis = new FileInputStream(fileName); // 以byte流的方式打开文件 - int i=fis.available(); //得到文件大小 - System.out.println(i); - byte data[]=new byte[i]; - fis.read(data); //读数据 - response.setContentType(type+"/*"); //设置返回的文件类型 - OutputStream toClient=response.getOutputStream(); //得到向客户端输出二进制数据的对象 - toClient.write(data); //输出数据 - toClient.flush(); - toClient.close(); - fis.close(); - }catch(Exception e){ - e.printStackTrace(); - System.out.println("文件不存在"); - } - } -} diff --git a/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java index f9ad0f0..d395d46 100644 --- a/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/CourseLearningRecordController.java @@ -1,6 +1,8 @@ package com.teaching.backend.controller.records; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.model.vo.courses.CourseListVO; import com.teaching.backend.model.vo.courses.CoursesVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -63,12 +65,12 @@ public class CourseLearningRecordController { */ @ApiOperation("按新旧排序查询的课程列表") @PostMapping("/courseList") - public CommonResult> courseList(@RequestParam String userId) { - List coursesVOList = courseLearningRecordService.queryCourseList(userId); + public BaseResponse> courseList(@RequestParam String userId) { + List coursesVOList = courseLearningRecordService.queryCourseList(userId); if (coursesVOList == null){ - CommonResult.failed("用户或角色错误"); + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"用户或角色错误"); } - return CommonResult.success(coursesVOList); + return ResultUtils.success(coursesVOList); } /** @@ -77,9 +79,9 @@ public class CourseLearningRecordController { */ @ApiOperation("推荐课程") @PostMapping("/recommendCourses") - public CommonResult> recommendCourses(@RequestParam String userId) { + public BaseResponse> recommendCourses(@RequestParam String userId) { List coursesVOList = courseLearningRecordService.queryrecommendCourses(userId); - return CommonResult.success(coursesVOList); + return ResultUtils.success(coursesVOList); } } diff --git a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java index 1faff85..f3e144a 100644 --- a/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java +++ b/src/main/java/com/teaching/backend/controller/records/KnowledgeLearningRecordController.java @@ -1,14 +1,10 @@ package com.teaching.backend.controller.records; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.filter.ValidateParams; import com.teaching.backend.mapper.records.KnowledgeLearningRecordMapper; -import com.teaching.backend.model.entity.records.CourseLearningRecord; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.service.impl.records.KnowledgeLearningRecordServiceImpl; import io.swagger.annotations.ApiOperation; @@ -32,21 +28,21 @@ public class KnowledgeLearningRecordController { return knowledgeLearningRecordService.saveCoursesRecords(knowledgeLearningRecord); } - /** - * 获取当前登录用户的学习知识点记录 - * @param pagenum - * @param pagesize - * @return - */ - @ApiOperation("根据用户id查询学习记录") - @ValidateParams({"userId"}) - @GetMapping("/page") - public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, - @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, - @RequestParam String userId, - @RequestParam String courseId){ - return knowledgeLearningRecordService.getPage(pagenum, pagesize, userId, courseId); - } +// /** +// * 获取当前登录用户的学习知识点记录 +// * @param pagenum +// * @param pagesize +// * @return +// */ +// @ApiOperation("根据用户id查询学习记录") +// @ValidateParams({"userId"}) +// @GetMapping("/page") +// public BaseResponse getAll(@RequestParam(value = "pagenum", defaultValue = "1") int pagenum, +// @RequestParam(value = "pagesize", defaultValue = "10") int pagesize, +// @RequestParam String userId, +// @RequestParam String courseId){ +// return knowledgeLearningRecordService.getPage(pagenum, pagesize, userId, courseId); +// } /** * 根据ids删除 @@ -77,12 +73,12 @@ public class KnowledgeLearningRecordController { */ @ApiOperation("查询学习最多的知识点") @PostMapping("/studyMaxKnowledge") - public CommonResult> studyMaxKnowledge(@RequestParam String userId) { + public BaseResponse> studyMaxKnowledge(@RequestParam String userId) { List knowVO = knowledgeLearningRecordService.queryMaxKnowledge(userId); if (knowVO == null){ - CommonResult.failed("用户或角色错误"); + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"用户或角色错误"); } - return CommonResult.success(knowVO); + return ResultUtils.success(knowVO); } /** @@ -91,9 +87,9 @@ public class KnowledgeLearningRecordController { */ @ApiOperation("推荐知识点") @PostMapping("/recommendKnowledge") - public CommonResult> recommendCourses(@RequestParam String userId) { + public BaseResponse> recommendCourses(@RequestParam String userId) { List coursesVOList = knowledgeLearningRecordService.queryRecommendKnowledge(userId); - return CommonResult.success(coursesVOList); + return ResultUtils.success(coursesVOList); } /** diff --git a/src/main/java/com/teaching/backend/controller/resource/ResourceController.java b/src/main/java/com/teaching/backend/controller/resource/ResourceController.java index f66710d..bb40739 100644 --- a/src/main/java/com/teaching/backend/controller/resource/ResourceController.java +++ b/src/main/java/com/teaching/backend/controller/resource/ResourceController.java @@ -8,48 +8,185 @@ package com.teaching.backend.controller.resource; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.resource.ResourceRelationshipDTO; import com.teaching.backend.model.entity.resource.ResourceMysql; -import com.teaching.backend.model.entity.resource.Resources; +import com.teaching.backend.service.resource.ResourceGraphService; +import com.teaching.backend.service.resource.ResourceRelationshipService; import com.teaching.backend.service.resource.ResourceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; + @RestController @RequestMapping("/api/resource") @Api(tags= "资源管理") +@Validated public class ResourceController { @Autowired private ResourceService resourceService; + @Autowired + private ResourceGraphService resourceGraphService; + + @Autowired + private ResourceRelationshipService resourceRelationshipService; + + + + +// +// //添加知识点 +// @PostMapping("/upload") +// @ResponseBody +// @ApiOperation(value = "添加资源") +// public BaseResponse uploadFile(@RequestPart("file") MultipartFile file) { +// return resourceService.upload(file); +// } + +// //删除资源 +// @GetMapping ("/deleteFile") +// @ResponseBody +// @ApiOperation(value = "删除资源") +// public BaseResponse deleteResource(@RequestParam("filename") @NotBlank String filename) { +// return resourceService.delete(filename); +// } - //添加知识点 - @PostMapping("/upload") +// @GetMapping("/read") +// @ApiOperation(value = "查询资源") +// public ResponseEntity readFile(@RequestParam @NotBlank String filename) { +// return resourceService.readFile(filename); +// } +// + + @PostMapping("/add") @ResponseBody @ApiOperation(value = "添加资源") - public BaseResponse uploadFile(@RequestPart("file") MultipartFile file) { - return resourceService.upload(file); + public BaseResponse addResourceForMysql(@RequestPart("file") MultipartFile file,@RequestParam Long knowId){ + return resourceService.addResourceForMysql(file,knowId); } - //删除资源 - @GetMapping ("delete") - @ResponseBody + @GetMapping("/delete") @ApiOperation(value = "删除资源") - public BaseResponse deleteResource(@RequestParam("filename") String filename) { - return resourceService.delete(filename); + public BaseResponse deleteResourceForMysql(@RequestParam @NotNull long Id) throws Exception { + return resourceService.deleteResourceForMysql(Id); + } + +// @PostMapping("/add") +// @ResponseBody +// @ApiOperation(value = "添加资源-mysql-neo") +// public BaseResponse addResource(@RequestPart("file") MultipartFile file){ +// return resourceService.addResource(file); +// } + +// @GetMapping("/delete") +// @ApiOperation(value = "删除资源-mysq-neo") +// public BaseResponse deleteResource(@RequestParam @NotNull long Id) throws Exception { +// return resourceService.deleteResource(Id); +// } + + + // 添加知识点与资源 mysql表 + + @PostMapping("/addResourcesRel") + @ApiOperation(value = "添加知识点资源关系") + public BaseResponse addResourcesRel(@RequestBody @Validated ResourceRelationshipDTO resourceRelationshipDto){ + return resourceRelationshipService.addResourcesRel(resourceRelationshipDto); + } + + @GetMapping("/deleteResourcesRel") + @ApiOperation(value = "删除知识点资源关系") + public BaseResponse deleteResourcesRel(@RequestParam @NotNull Long KnowId, @RequestParam @NotNull Long resourceId){ + return resourceRelationshipService.deleteResourcesRel(KnowId,resourceId); + } + +// +// @PostMapping("/myself/recoverdata") +// @ResponseBody +// @ApiOperation(value = "recoverdatal-neo") +// public BaseResponse recoverdata(){ +// return resourceService.recoverdata(); +// } + + + + //查询课程下资源 + @GetMapping("/queryByCourseId") + @ApiOperation(value = "查询课程下所有资源") + BaseResponse> queryResourcesByCourseIdToNeo4j(@RequestParam @NotBlank String courseId){ + return resourceGraphService.queryResourcesByCourseId(courseId); + } + + //查询章节下资源 + @GetMapping("/queryByChapterId") + @ApiOperation(value = "查询章节下所有资源 -neo4j") + BaseResponse> queryResourcesByChapterId(@RequestParam @NotNull Long chapterId){ + return resourceGraphService.queryResourcesByChapterId(chapterId); + } + + //查询二级节点下资源 + @ApiOperation(value = "查询二级节点下所有资源") + @GetMapping("/queryBesidesKnow") + BaseResponse> queryBesidesKnowToResources(@RequestParam @NotNull Long knowId){ + return resourceGraphService.queryBesidesKnowToResources(knowId); } - @GetMapping("/read") - @ApiOperation(value = "查询资源") - public ResponseEntity readFile(@RequestParam String filename) { - return resourceService.readFile(filename); + //查询知识点下资源 + @GetMapping("/queryResourcesByKnowId") + @ApiOperation(value = "查询知识点下所有资源") + BaseResponse> queryResourcesById(@RequestParam @NotNull Long knowId){ + return resourceGraphService.queryResourcesById(knowId); } +// //查询知识点下资源 -mysql +// @GetMapping("/mysql/queryResourcesByKnowId") +// @ApiOperation(value = "查询知识点下所有资源 -mysql") +// BaseResponse> queryResourcesByKnowId(@RequestParam @NotNull Long knowId){ +// return resourceMysqlService.queryResourcesByKnowId(knowId); +// } + + +// //查询课程下资源 -mysql +// @GetMapping("/mysql/queryByCourseId") +// @ApiOperation(value = "查询课程下所有资源 -mysql") +// BaseResponse> queryResourcesByCourseIdToMysql(@RequestParam @NotBlank String courseId){ +// return resourceMysqlService.queryResourcesByCourseId(courseId); +// } + + + +// @PostMapping("/upload") +// @ResponseBody +// @ApiOperation(value = "添加资源") +// public BaseResponse uploadFileO(@RequestPart("file") MultipartFile file) throws IOException { +// return resourceService.uploadOSS(file); +// } +// +// //删除资源 +// @GetMapping ("/deleteFileOss") +// @ResponseBody +// @ApiOperation(value = "删除资源") +// //注意字符串是以 2024开头的 +// public BaseResponse deleteFileOss(@RequestParam("filename") String filename) { +// return resourceService.deleteFileOss(filename); +// } +// +// +// @GetMapping("/read/oss") +// @ApiOperation(value = "查询资源") +// public BaseResponse readFileOss(@RequestParam String filename) { +// return resourceService.readFile(filename); +// } + + + } diff --git a/src/main/java/com/teaching/backend/controller/resource/ResourceGraphController.java b/src/main/java/com/teaching/backend/controller/resource/ResourceGraphController.java deleted file mode 100644 index 72655fe..0000000 --- a/src/main/java/com/teaching/backend/controller/resource/ResourceGraphController.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.teaching.backend.controller.resource; - -/** - * @Author:youhang - * @Date:2024-06-09-9:55 - * @Description: - */ - - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.entity.resource.Resources; -import com.teaching.backend.service.resource.ResourceGraphService; -import com.teaching.backend.service.resource.ResourceService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiOperation; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.InputStreamResource; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.util.List; -import java.util.Set; - - -@RestController -@RequestMapping("/api/resource/graph") -@Api(tags= "资源与图管理") -public class ResourceGraphController { - - @Autowired - private ResourceGraphService resourceGraphService; - - - @GetMapping("/addRelationship/BetweenKnowAndResources") - @ApiOperation(value = "添加知识点资源关系") - public BaseResponse addResourcesByIdAndResourcesId(@RequestParam Long id,@RequestParam Long resourcesId){ - return resourceGraphService.addResourcesByIdAndResourcesId(id,resourcesId); - } - - @GetMapping("/deleteRelationship/BetweenKnowAndResources") - @ApiOperation(value = "删除知识点资源关系") - public BaseResponse deleteResourcesAndKnowById(@RequestParam Long id, @RequestParam Long resourcesId){ - return resourceGraphService.deleteResourcesAndKnowById(id,resourcesId); - } - - //查询课程下资源 - @GetMapping("/queryByCourseId") - @ApiOperation(value = "查询课程下资源") - BaseResponse> queryResourcesByCourseId(@RequestParam String courseId){ - return resourceGraphService.queryResourcesByCourseId(courseId); - } - - //查询章节下资源 - @GetMapping("/queryByChapterId") - @ApiOperation(value = "查询章节下资源") - BaseResponse> queryResourcesByChapterId(@RequestParam Long chapterId){ - return resourceGraphService.queryResourcesByChapterId(chapterId); - } - - //查询二级节点下资源 - @ApiOperation(value = "查询二级节点下资源") - @GetMapping("/queryBesidesKnow") - BaseResponse> queryBesidesKnowToResources(@RequestParam Long knowId){ - return resourceGraphService.queryBesidesKnowToResources(knowId); - } - - //查询知识点下资源 - @GetMapping("/queryResourcesByKnowId") - @ApiOperation(value = "查询知识点下资源") - BaseResponse> queryResourcesByKnowId(@RequestParam Long knowId){ - return resourceGraphService.queryResourcesByKnowId(knowId); - } - - - -} diff --git a/src/main/java/com/teaching/backend/controller/resource/ResourceMysqlController.java b/src/main/java/com/teaching/backend/controller/resource/ResourceMysqlController.java deleted file mode 100644 index 3a87e6b..0000000 --- a/src/main/java/com/teaching/backend/controller/resource/ResourceMysqlController.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.teaching.backend.controller.resource; - - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.model.entity.resource.ResourceMysql; -import com.teaching.backend.service.impl.resource.ResourceMysqlServiceImpl; -import com.teaching.backend.service.impl.resource.ResourceServiceImpl; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.*; - -import org.springframework.web.multipart.MultipartFile; - -/** - *

- * 前端控制器 - *

- * - * @author author - * @since 2024-09-02 - */ -@RestController -@RequestMapping("/resourcemysql") -@Api(tags= "数据库资源管理") -public class ResourceMysqlController { - private ResourceMysqlServiceImpl resourceMysqlService; - - private ResourceServiceImpl resourceService; - - //添加资源 - @PostMapping("/add") - @ApiOperation(value = "添加资源") - public BaseResponse addFile(@RequestPart("file") MultipartFile file, ResourceMysql resourceMysql) { - System.out.println("资源:"+ resourceMysql); - System.out.println(file); - String url = resourceService.upload(file).getData().getUrl(); - System.out.println(url); - //return ResultUtils.success("添加xx"); - return resourceMysqlService.resourceUpload(file, resourceMysql); - } - -} diff --git a/src/main/java/com/teaching/backend/controller/system/SystemSettingsController.java b/src/main/java/com/teaching/backend/controller/system/SystemSettingsController.java index d67125d..730db80 100644 --- a/src/main/java/com/teaching/backend/controller/system/SystemSettingsController.java +++ b/src/main/java/com/teaching/backend/controller/system/SystemSettingsController.java @@ -1,6 +1,7 @@ package com.teaching.backend.controller.system; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.model.entity.system.SystemSetting; import com.teaching.backend.model.vo.system.SystemSettingVO; import com.teaching.backend.service.system.SystemSettingsService; @@ -8,12 +9,14 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @RestController @Api(tags = "系统设置接口") @RequestMapping("/api/systemSettings") @Slf4j +@Validated public class SystemSettingsController { @Autowired @@ -26,9 +29,9 @@ public class SystemSettingsController { */ @GetMapping("/save") @ApiOperation("查询系统设置信息") - public CommonResult save(){ + public BaseResponse save(){ SystemSettingVO systemSettings = systemSettingsService.getSystemSettings(); - return CommonResult.success(systemSettings); + return ResultUtils.success(systemSettings); } /** @@ -38,7 +41,7 @@ public class SystemSettingsController { */ @PutMapping @ApiOperation("编辑系统设置信息") - public CommonResult update(@RequestBody SystemSetting systemSetting){ + public BaseResponse update(@RequestBody SystemSetting systemSetting){ return systemSettingsService.updateSystemSettings(systemSetting); } diff --git a/src/main/java/com/teaching/backend/controller/thumb/SeCourseThumbController.java b/src/main/java/com/teaching/backend/controller/thumb/CourseThumbController.java similarity index 56% rename from src/main/java/com/teaching/backend/controller/thumb/SeCourseThumbController.java rename to src/main/java/com/teaching/backend/controller/thumb/CourseThumbController.java index 414d475..2e142d5 100644 --- a/src/main/java/com/teaching/backend/controller/thumb/SeCourseThumbController.java +++ b/src/main/java/com/teaching/backend/controller/thumb/CourseThumbController.java @@ -5,9 +5,12 @@ import com.teaching.backend.common.ErrorCode; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAddRequest; import com.teaching.backend.model.dto.thumb.coursethumb.CourseThumbAllRequest; -import com.teaching.backend.service.thumb.SeCourseThumbService; +import com.teaching.backend.service.thumb.CourseThumbService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -23,10 +26,12 @@ import javax.annotation.Resource; @RestController @RequestMapping("/api/course_thumb") @Slf4j -public class SeCourseThumbController { +@Api(tags = "课程点赞接口") +@Validated +public class CourseThumbController { @Resource - private SeCourseThumbService seCourseThumbService; + private CourseThumbService CourseThumbService; /** @@ -36,10 +41,10 @@ public class SeCourseThumbController { * @return result 执行情况 */ @PostMapping("/") - // HttpServletRequest request 在一个fitter里面进行鉴权操作 - public BaseResponse doThumb(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { + @ApiOperation("课程点赞") + public BaseResponse doThumb(@RequestBody @Validated CourseThumbAddRequest courseThumbAddRequest) { - return seCourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId()); + return CourseThumbService.doCourseThumb(courseThumbAddRequest.getCourseId(), courseThumbAddRequest.getUserId()); } @@ -51,13 +56,10 @@ public class SeCourseThumbController { * @return result 课程点赞总数 */ @PostMapping("/count") - // HttpServletRequest request 在一个fitter里面进行鉴权操作 - public BaseResponse thumbCount(@RequestBody CourseThumbAddRequest courseThumbAddRequest) { - if (StringUtils.isAnyBlank(courseThumbAddRequest.getCourseId())) { - throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); - } + @ApiOperation("课程点赞总数") + public BaseResponse thumbCount(@RequestBody @Validated CourseThumbAddRequest courseThumbAddRequest) { - return seCourseThumbService.thumbCount(courseThumbAddRequest.getCourseId()); + return CourseThumbService.thumbCount(courseThumbAddRequest.getCourseId()); } diff --git a/src/main/java/com/teaching/backend/controller/thumb/KnowThumbController.java b/src/main/java/com/teaching/backend/controller/thumb/KnowThumbController.java new file mode 100644 index 0000000..1706ddf --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/thumb/KnowThumbController.java @@ -0,0 +1,45 @@ +package com.teaching.backend.controller.thumb; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.thumb.knowthumb.KnowThumbAddRequest; +import com.teaching.backend.service.thumb.KnowThumbService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/know_thumb") +@Slf4j +@Api(tags = "知识点点赞接口") +@Validated +public class KnowThumbController { + + @Autowired + private KnowThumbService KnowThumbService; + + + /** + * 点赞 + * + * @param knowThumbAddRequest + * @return result 执行情况 + */ + @PostMapping("/thumb") + @ApiOperation("知识点点赞") + public BaseResponse doThumb(@RequestBody @Validated KnowThumbAddRequest knowThumbAddRequest) { + return KnowThumbService.doKnowThumb(knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId()); + + } + +} diff --git a/src/main/java/com/teaching/backend/controller/thumb/ResourceThumbController.java b/src/main/java/com/teaching/backend/controller/thumb/ResourceThumbController.java new file mode 100644 index 0000000..2d7e0a9 --- /dev/null +++ b/src/main/java/com/teaching/backend/controller/thumb/ResourceThumbController.java @@ -0,0 +1,49 @@ +package com.teaching.backend.controller.thumb; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest; +import com.teaching.backend.service.thumb.ResourceThumbService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +@RestController +@RequestMapping("/api/resource_thumb") +@Slf4j +@Api(tags = "资源点赞接口") +@Validated +public class ResourceThumbController { + + @Autowired + private ResourceThumbService ResourceThumbService; + + + /** + * 点赞 + * + * @param resourceThumbAddRequest + * @return result 执行情况 + */ + @PostMapping("/thumb") + @ApiOperation("资源点赞") + public BaseResponse doThumb(@RequestBody @Validated ResourceThumbAddRequest resourceThumbAddRequest) { + return ResourceThumbService.doResourceThumb( resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId()); + + } + +} diff --git a/src/main/java/com/teaching/backend/controller/thumb/SeKnowThumbController.java b/src/main/java/com/teaching/backend/controller/thumb/SeKnowThumbController.java deleted file mode 100644 index ad287f5..0000000 --- a/src/main/java/com/teaching/backend/controller/thumb/SeKnowThumbController.java +++ /dev/null @@ -1,44 +0,0 @@ -//package com.teaching.backend.controller.thumb; -// -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.model.dto.thumb.knowthumb.KnowThumbAddRequest; -//import com.teaching.backend.service.thumb.SeKnowThumbService; -//import lombok.extern.slf4j.Slf4j; -//import org.apache.commons.lang3.StringUtils; -//import org.springframework.web.bind.annotation.PostMapping; -//import org.springframework.web.bind.annotation.RequestBody; -//import org.springframework.web.bind.annotation.RequestMapping; -//import org.springframework.web.bind.annotation.RestController; -// -//import javax.annotation.ResourceMysql; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//@RestController -//@RequestMapping("/api/know_thumb") -//@Slf4j -//public class SeKnowThumbController { -// -// @ResourceMysql -// private SeKnowThumbService seKnowThumbService; -// -// -// /** -// * 点赞 -// * -// * @param knowThumbAddRequest -// * @return result 执行情况 -// */ -// @PostMapping("/add") -// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 -// public BaseResponse doThumb(@RequestBody KnowThumbAddRequest knowThumbAddRequest) { -// return seKnowThumbService.doKnowThumb(knowThumbAddRequest.getKnowId(), knowThumbAddRequest.getUserId()); -// -// } -// -//} diff --git a/src/main/java/com/teaching/backend/controller/thumb/SeResourceThumbController.java b/src/main/java/com/teaching/backend/controller/thumb/SeResourceThumbController.java deleted file mode 100644 index 09d43a8..0000000 --- a/src/main/java/com/teaching/backend/controller/thumb/SeResourceThumbController.java +++ /dev/null @@ -1,44 +0,0 @@ -//package com.teaching.backend.controller.thumb; -// -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.model.dto.thumb.resourcethumb.ResourceThumbAddRequest; -//import com.teaching.backend.service.thumb.SeResourceThumbService; -//import lombok.extern.slf4j.Slf4j; -//import org.apache.commons.lang3.StringUtils; -//import org.springframework.web.bind.annotation.PostMapping; -//import org.springframework.web.bind.annotation.RequestBody; -//import org.springframework.web.bind.annotation.RequestMapping; -//import org.springframework.web.bind.annotation.RestController; -// -//import javax.annotation.ResourceMysql; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//@RestController -//@RequestMapping("/api/resource_thumb") -//@Slf4j -//public class SeResourceThumbController { -// -// @ResourceMysql -// private SeResourceThumbService seResourceThumbService; -// -// -// /** -// * 点赞 -// * -// * @param resourceThumbAddRequest -// * @return result 执行情况 -// */ -// @PostMapping("/add") -// // 加上 HttpServletRequest request 在一个fitter里面进行鉴权操作 -// public BaseResponse doThumb(@RequestBody ResourceThumbAddRequest resourceThumbAddRequest) { -// return seResourceThumbService.doResourceThumb( resourceThumbAddRequest.getResourceId(), resourceThumbAddRequest.getUserId()); -// -// } -// -//} diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java index 439ea74..3f9185e 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/ReportController.java @@ -1,19 +1,22 @@ package com.teaching.backend.controller.umsAdmin; -import com.teaching.backend.common.CommonResult; -import com.teaching.backend.model.dto.report.ReportDTO; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.model.vo.report.BrowseReportVO; import com.teaching.backend.service.report.ReportService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @RestController @Api(tags = "主页访问数据接口") @RequestMapping("/api/report") @Slf4j +@Validated public class ReportController { @Autowired @@ -25,8 +28,8 @@ public class ReportController { */ @GetMapping("/browseStatistics") @ApiOperation("浏览统计") - public CommonResult browseStatistics(){ - return CommonResult.success(reportService.getBrowseStatistics()); + public BaseResponse browseStatistics(){ + return ResultUtils.success(reportService.getBrowseStatistics()); } /** @@ -35,13 +38,13 @@ public class ReportController { */ @GetMapping("/receptionBrowse") @ApiOperation("接收每日浏览量") - public CommonResult receptionBrowse(){ + public BaseResponse receptionBrowse(){ boolean receptionBrowse = reportService.getReceptionBrowse(); if (receptionBrowse == false){ - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"错误"); } - return CommonResult.success(receptionBrowse); + return ResultUtils.success(receptionBrowse); } } diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsStudentManageController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsStudentManageController.java index b36cebf..a89a02c 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsStudentManageController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsStudentManageController.java @@ -1,7 +1,7 @@ package com.teaching.backend.controller.umsAdmin; -import com.teaching.backend.common.CommonResult; -import com.teaching.backend.filter.ValidateParams; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.model.dto.umsAdmin.UmsStudentPageQueryDTO; import com.teaching.backend.model.entity.umsAdmin.UmsStudentManage; import com.teaching.backend.service.umsAdmin.UmsStudentManageService; @@ -9,8 +9,10 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.validation.constraints.NotNull; import java.util.List; import java.util.Map; @@ -18,6 +20,7 @@ import java.util.Map; @Api(tags = "学生管理") @RequestMapping("/api/studentManage") @Slf4j +@Validated public class UmsStudentManageController { @Autowired @@ -29,11 +32,10 @@ public class UmsStudentManageController { * @return */ @GetMapping("/page") - @ValidateParams({"page","pageSize", "userId"}) // 需要校验的参数 @ApiOperation("学生管理分页查询") - public CommonResult> page(UmsStudentPageQueryDTO umsStudentPageQueryDTO){ + public BaseResponse> page(@Validated UmsStudentPageQueryDTO umsStudentPageQueryDTO){ Map pageResult = umsStudentManageService.pageQuery(umsStudentPageQueryDTO); - return CommonResult.success(pageResult); + return ResultUtils.success(pageResult); } /** @@ -44,9 +46,9 @@ public class UmsStudentManageController { */ @PostMapping("/status/{status}") @ApiOperation("启用禁用员工账号") - public CommonResult startOrStop(@PathVariable String status, Long id){ + public BaseResponse startOrStop(@PathVariable @NotNull String status, @NotNull Long id){ umsStudentManageService.startOrStop(status,id); - return CommonResult.success("修改成功"); + return ResultUtils.success("修改成功"); } /** @@ -56,9 +58,9 @@ public class UmsStudentManageController { */ @GetMapping("/{id}") @ApiOperation("根据id查询学生信息") - public CommonResult getById(@PathVariable Long id){ + public BaseResponse getById(@PathVariable @NotNull Long id){ UmsStudentManage umsStudentManage = umsStudentManageService.getByIdStudentAndUser(id); - return CommonResult.success(umsStudentManage); + return ResultUtils.success(umsStudentManage); } /** @@ -68,9 +70,9 @@ public class UmsStudentManageController { */ @PutMapping @ApiOperation("编辑学生信息") - public CommonResult update(@RequestBody UmsStudentManage umsStudentManage){ + public BaseResponse update(@RequestBody @Validated UmsStudentManage umsStudentManage){ umsStudentManageService.updateStudentAndUser(umsStudentManage); - return CommonResult.success("修改成功"); + return ResultUtils.success("修改成功"); } /** @@ -80,7 +82,7 @@ public class UmsStudentManageController { */ @ApiOperation("学生信息批量删除") @DeleteMapping("/batchDelete") - public CommonResult batchDelete(@RequestParam List ids){ + public BaseResponse batchDelete(@RequestParam @NotNull List ids){ return umsStudentManageService.batchRemove(ids); } @@ -91,7 +93,7 @@ public class UmsStudentManageController { */ @ApiOperation("学生信息批量初始密码") @PutMapping("/initialPassword") - public CommonResult initialPassword(@RequestParam List ids){ + public BaseResponse initialPassword(@RequestParam @NotNull List ids){ return umsStudentManageService.initialPassword(ids); } diff --git a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsUserController.java b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsUserController.java index 530f25f..2bb4b7f 100644 --- a/src/main/java/com/teaching/backend/controller/umsAdmin/UmsUserController.java +++ b/src/main/java/com/teaching/backend/controller/umsAdmin/UmsUserController.java @@ -1,9 +1,11 @@ package com.teaching.backend.controller.umsAdmin; -import com.teaching.backend.common.CommonResult; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.model.dto.umsAdmin.UmsUserDTO; import com.teaching.backend.model.dto.umsAdmin.UmsUserParam; + import com.teaching.backend.model.dto.umsAdmin.UpdateUserPasswordParam; import com.teaching.backend.model.dto.umsAdmin.UmsStudentAndTeacherDTO; import com.teaching.backend.model.entity.umsAdmin.UmsUser; @@ -18,6 +20,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.validation.constraints.NotBlank; import java.security.Principal; import java.util.HashMap; import java.util.List; @@ -30,10 +33,12 @@ import java.util.Map; * @Description:login */ @RestController -@Api(tags = "UmsUserController") +@Api(tags = "用户管理") @RequestMapping("/api/user") @Slf4j +@Validated public class UmsUserController { + @Value("${jwt.tokenHeader}") private String tokenHeader; @Value("${jwt.tokenHead}") @@ -46,38 +51,38 @@ public class UmsUserController { @ApiOperation(value = "用户注册") @PostMapping("/register") - public CommonResult register(@Validated @RequestBody UmsUserParam umsUserParam) { + public BaseResponse register(@Validated @RequestBody UmsUserParam umsUserParam) { if (umsUserParam == null) { - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"参数不能为空"); } UmsUser umsUser = umsUserService.register(umsUserParam); - return CommonResult.success(umsUser); + return ResultUtils.success(umsUser); } @ApiOperation(value = "用户名登录以后返回token") @PostMapping("/login") - public CommonResult login(@Validated @RequestBody UmsUser umsUser) { - String token = umsUserService.login(umsUser.getUsername(), umsUser.getPassword()); + public BaseResponse login(@Validated @RequestBody UmsUserDTO umsUserDTO) { + String token = umsUserService.login(umsUserDTO.getUsername(), umsUserDTO.getPassword()); if (token == null) { - return CommonResult.validateFailed("用户名或密码错误"); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"用户名或密码错误"); } Map tokenMap = new HashMap<>(); tokenMap.put("token", token); tokenMap.put("tokenHead", tokenHead); - return CommonResult.success(tokenMap); + return ResultUtils.success(tokenMap); } @ApiOperation(value = "手机号登录以后返回token") @PostMapping("/phone/login") - public CommonResult phoneLogin(@RequestParam("phone")String phone) { + public BaseResponse phoneLogin(@RequestParam("phone") @NotBlank String phone) { String token = umsUserService.phoneLogin(phone); if (token == null) { - return CommonResult.validateFailed("手机号不存在!"); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"手机号不存在!"); } Map tokenMap = new HashMap<>(); tokenMap.put("token", token); tokenMap.put("tokenHead", tokenHead); - return CommonResult.success(tokenMap); + return ResultUtils.success(tokenMap); } /** @@ -87,40 +92,40 @@ public class UmsUserController { */ @ApiOperation(value = "发送短信返回验证码") @PostMapping("/code") - public CommonResult sendVerifyCode(@RequestParam("phone")String phone){ - return CommonResult.success(umsUserService.sendVerifyCode(phone)); + public BaseResponse sendVerifyCode(@RequestParam("phone") @NotBlank String phone){ + return ResultUtils.success(umsUserService.sendVerifyCode(phone)); } @ApiOperation(value = "手机号注册") @PostMapping("/phone/register") - public CommonResult phoneRegister(@Validated @RequestBody UmsUserParam umsAdminParam) { + public BaseResponse phoneRegister(@Validated @RequestBody UmsUserParam umsAdminParam) { if (umsAdminParam == null) { - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"不能为空"); } UmsUser umsUser = umsUserService.phoneRegister(umsAdminParam); - return CommonResult.success(umsUser); + return ResultUtils.success(umsUser); } @ApiOperation(value = "刷新token") @GetMapping("/refreshToken") - public CommonResult refreshToken(HttpServletRequest request) { + public BaseResponse refreshToken(HttpServletRequest request) { String token = request.getHeader(tokenHeader); String refreshToken = umsUserService.refreshToken(token); if (refreshToken == null) { - return CommonResult.failed("token已经过期!"); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"token已经过期!"); } Map tokenMap = new HashMap<>(); tokenMap.put("token", refreshToken); tokenMap.put("tokenHead", tokenHead); - return CommonResult.success(tokenMap); + return ResultUtils.success(tokenMap); } @ApiOperation(value = "获取当前登录用户信息") @GetMapping ("/info") - public CommonResult getAdminInfo(Principal principal) { + public BaseResponse getAdminInfo(Principal principal) { if(principal == null){ - return CommonResult.unauthorized("用户名为空"); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"用户名为空"); } String username = principal.getName(); UmsUser umsUser = umsUserService.getUserByUsername(username); @@ -132,50 +137,50 @@ public class UmsUserController { data.put("nickName", umsUser.getNickName()); data.put("icon", umsUser.getIcon()); data.put("roles",umsRoleService.getRoleList(umsUser.getRoleId())); - return CommonResult.success(data); + return ResultUtils.success(data); } @ApiOperation("修改指定用户信息") @PostMapping("/update") - public CommonResult updateUms(@RequestBody UmsUser umsUser) { + public BaseResponse updateUms(@RequestBody UmsUser umsUser) { boolean count = umsUserService.updateUms(umsUser); if (count == true) { - return CommonResult.success(count); + return ResultUtils.success(count); } - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改失败"); } @ApiOperation("获取指定个人信息") @PostMapping("/personal/info") - public CommonResult getByIdPersonalInfo(@RequestParam String id) { + public BaseResponse getByIdPersonalInfo(@RequestParam String id) { if (id == null){ - return CommonResult.failed("参数为空"); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"参数为空"); } Object count = umsUserService.getByIdPersonalInfo(id); if (count == null) { - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.PARAMS_ERROR); } - return CommonResult.success(count); + return ResultUtils.success(count); } @ApiOperation("修改指定个人信息") @PostMapping("/update/PersonalInfo") - public CommonResult updatePersonalInfo(@RequestBody UmsStudentAndTeacherDTO umsStudentAndTeacherDTO) { + public BaseResponse updatePersonalInfo(@RequestBody UmsStudentAndTeacherDTO umsStudentAndTeacherDTO) { boolean count = umsUserService.updatePersonalInfo(umsStudentAndTeacherDTO); - if (count == true) { - return CommonResult.success("修改成功"); + if (count) { + return ResultUtils.success("修改成功"); } - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改失败"); } @ApiOperation("修改指定用户密码") @PostMapping("/updatePassword") - public CommonResult updatePassword(@Validated @RequestBody UpdateUserPasswordParam updatePasswordParam) { + public BaseResponse updatePassword(@Validated @RequestBody UpdateUserPasswordParam updatePasswordParam) { int status = umsUserService.updatePassword(updatePasswordParam); if (status == 1) { - return CommonResult.success(status); + return ResultUtils.success(status); } else { - return CommonResult.failed(); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"修改失败"); } } @@ -189,4 +194,11 @@ public class UmsUserController { } + @ApiOperation(value = "获取用户名称根据ID") + @GetMapping ("/getNameById") + public BaseResponse getNameById(@RequestParam String ids) { + return umsUserService.getNameById(ids); + } + + } diff --git a/src/main/java/com/teaching/backend/exception/GlobalExceptionHandler.java b/src/main/java/com/teaching/backend/exception/GlobalExceptionHandler.java index 56c5f3e..217c19a 100644 --- a/src/main/java/com/teaching/backend/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/teaching/backend/exception/GlobalExceptionHandler.java @@ -3,65 +3,117 @@ package com.teaching.backend.exception; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.T; + +import org.springframework.context.annotation.Bean; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; import org.springframework.validation.FieldError; import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestControllerAdvice; +import javax.validation.ConstraintViolationException; import java.util.HashMap; import java.util.Map; +import java.util.stream.Collectors; @RestControllerAdvice +@ControllerAdvice +@Slf4j public class GlobalExceptionHandler { - @ExceptionHandler(MethodArgumentNotValidException.class) - public ResponseEntity> handleValidationExceptions(MethodArgumentNotValidException ex) { - Map errors = new HashMap<>(); - ex.getBindingResult().getAllErrors().forEach((error) -> { - String fieldName = ((FieldError) error).getField(); - String errorMessage = error.getDefaultMessage(); - errors.put(fieldName, errorMessage); - }); - return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors); - } - @ExceptionHandler(BusinessException.class) - public ResponseEntity handleBusinessException(BusinessException ex) { - ErrorResponse errorResponse = new ErrorResponse(ex.getCode(), ex.getMessage()); - return new ResponseEntity<>(errorResponse, HttpStatus.BAD_REQUEST); - } - +// @ExceptionHandler(MethodArgumentNotValidException.class) +// //ResponseEntity> +// public BaseResponse handleValidationExceptions(MethodArgumentNotValidException ex) { +// Map errors = new HashMap<>(); +// ex.getBindingResult().getAllErrors().forEach((error) -> { +// String fieldName = ((FieldError) error).getField(); +// String errorMessage = error.getDefaultMessage(); +// errors.put(fieldName, errorMessage); +// }); +// log.info("发生异常: ",ex); +//// return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errors); +// return ResultUtils.error(ErrorCode.OPERATION_ERROR,"内部异常: "+ex); +// } // @ExceptionHandler(Exception.class) -// public BaseResponse handleException(Exception ex) { -// return ResultUtils.error(ErrorCode.UNKNOW_ERROR, ex.getMessage()); +// public BaseResponse handleBusinessException(BusinessException ex) { +// ErrorResponse errorResponse = new ErrorRespon se(ex.getCode(), ex.getMessage()); +// log.info("发生异常: ",ex); +// return ResultUtils.error(ErrorCode.OPERATION_ERROR,"内部异常:"+ex); // } - // 其他异常处理器可以按需添加 - - public static class ErrorResponse { - private int code; - private String message; - - public ErrorResponse(int code, String message) { - this.code = code; - this.message = message; + @ResponseBody + @ExceptionHandler(value = MethodArgumentNotValidException.class) + public BaseResponse handleValidException(MethodArgumentNotValidException e) { + BindingResult bindingResult = e.getBindingResult(); + String message = null; + if (bindingResult.hasErrors()) { + FieldError fieldError = bindingResult.getFieldError(); + if (fieldError != null) { + message = fieldError.getField()+" "+fieldError.getDefaultMessage(); + } } + return ResultUtils.error(ErrorCode.PARAMS_ERROR,message); + } + /** + * 处理 Get 请求中 使用 @Valid 验证路径中请求实体校验失败后抛出的异常 + */ + @ExceptionHandler(BindException.class) + public BaseResponse BindExceptionHandler(BindException e) { + log.error(e.getMessage(), e); + String message = e.getBindingResult().getAllErrors().get(0).getDefaultMessage(); + return ResultUtils.error(ErrorCode.UNKNOW_ERROR,message); + } - public int getCode() { - return code; - } - public void setCode(int code) { - this.code = code; - } - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } + @ExceptionHandler(Exception.class) + public BaseResponse handleException(Exception ex) { + log.info(ex.toString()); + log.info(ex.getMessage()); + return ResultUtils.error(ErrorCode.UNKNOW_ERROR, ex.getMessage()); + } + + @ExceptionHandler(IllegalArgumentException.class) + public BaseResponse handleIllegalArgumentException(IllegalArgumentException e) { + return ResultUtils.error(ErrorCode.UNKNOW_ERROR, e.getMessage()); } + + // 其他异常处理器可以按需添加 + +// public static class ErrorResponse { +// private int code; +// +// private T data; +// private String message; +// +// public ErrorResponse(int code, String message) { +// this.code = code; +// this.message = message; +// this.data = null; +// } +// +// public int getCode() { +// return code; +// } +// +// public void setCode(int code) { +// this.code = code; +// } +// +// public String getMessage() { +// return message; +// } +// +// public void setMessage(String message) { +// this.message = message; +// } +// } } diff --git a/src/main/java/com/teaching/backend/exception/LyException.java b/src/main/java/com/teaching/backend/exception/LyException.java deleted file mode 100644 index e544d72..0000000 --- a/src/main/java/com/teaching/backend/exception/LyException.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.teaching.backend.exception; - -import lombok.Getter; - - -@Getter -public class LyException extends RuntimeException { - /** - * 异常状态码信息 - */ - private int status; - - public LyException(int status) { - this.status = status; - } - - public LyException(int status, String message) { - super(message); - this.status = status; - } - - public LyException(int status, String message, Throwable cause) { - super(message, cause); - this.status = status; - } - - public LyException(int status, Throwable cause) { - super(cause); - this.status = status; - } -} diff --git a/src/main/java/com/teaching/backend/filter/ValidateParams.java b/src/main/java/com/teaching/backend/filter/ValidateParams.java index f582217..d1061cc 100644 --- a/src/main/java/com/teaching/backend/filter/ValidateParams.java +++ b/src/main/java/com/teaching/backend/filter/ValidateParams.java @@ -9,5 +9,6 @@ import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) public @interface ValidateParams { String[] value(); // 要校验的参数名称 + String message() default "参数校验失败"; } diff --git a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowstrMapper.java b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowstrMapper.java index 58727d0..39c46a8 100644 --- a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowstrMapper.java +++ b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowstrMapper.java @@ -2,10 +2,8 @@ package com.teaching.backend.mapper.Knowtemp; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.know.KnowStr; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; -import io.lettuce.core.dynamic.annotation.Param; import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Select; + import java.util.List; diff --git a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java index fd799d1..19dc622 100644 --- a/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java +++ b/src/main/java/com/teaching/backend/mapper/Knowtemp/KnowtmpMapper.java @@ -1,7 +1,7 @@ package com.teaching.backend.mapper.Knowtemp; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import io.lettuce.core.dynamic.annotation.Param; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -13,10 +13,10 @@ import java.util.List; * */ @Mapper -public interface KnowtmpMapper extends BaseMapper { +public interface KnowtmpMapper extends BaseMapper { - @Select("SELECT * FROM Knowtmp WHERE chapterid = #{chapterId} ORDER BY ordernum") - List queryIdByChapterId(@Param("chapterid") Long chapterId); + @Select("SELECT * FROM know WHERE chapter_id = #{chapterId} ORDER BY ordernum") + List queryIdByChapterId(@Param("chapterid") Long chapterId); } diff --git a/src/main/java/com/teaching/backend/mapper/collection/CourseCollectionMapper.java b/src/main/java/com/teaching/backend/mapper/collection/CourseCollectionMapper.java new file mode 100644 index 0000000..8499bc3 --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/collection/CourseCollectionMapper.java @@ -0,0 +1,15 @@ +package com.teaching.backend.mapper.collection; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.collection.CourseCollection; +import com.teaching.backend.model.entity.favour.CourseFavour; + +import java.util.List; + + +public interface CourseCollectionMapper extends BaseMapper { + +} + + + diff --git a/src/main/java/com/teaching/backend/mapper/collection/KnowCollectionMapper.java b/src/main/java/com/teaching/backend/mapper/collection/KnowCollectionMapper.java new file mode 100644 index 0000000..8799317 --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/collection/KnowCollectionMapper.java @@ -0,0 +1,13 @@ +package com.teaching.backend.mapper.collection; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.collection.CourseCollection; +import com.teaching.backend.model.entity.collection.KnowCollection; + + +public interface KnowCollectionMapper extends BaseMapper { + +} + + + diff --git a/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java b/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java index 4dc7e25..e4d047a 100644 --- a/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java +++ b/src/main/java/com/teaching/backend/mapper/courses/CourseObjectivesMapper.java @@ -2,7 +2,7 @@ package com.teaching.backend.mapper.courses; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; + import java.util.ArrayList; import java.util.List; @@ -17,7 +17,4 @@ import java.util.List; */ public interface CourseObjectivesMapper extends BaseMapper { - List selectTreeNodes(String courseObjectivesId); - - void insertBatch(ArrayList courseObjectivesFList); } diff --git a/src/main/java/com/teaching/backend/mapper/courses/CoursesMapper.java b/src/main/java/com/teaching/backend/mapper/courses/CoursesMapper.java index 824e963..5ece634 100644 --- a/src/main/java/com/teaching/backend/mapper/courses/CoursesMapper.java +++ b/src/main/java/com/teaching/backend/mapper/courses/CoursesMapper.java @@ -1,11 +1,7 @@ package com.teaching.backend.mapper.courses; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.teaching.backend.model.entity.chapter.Chapter; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.vo.courses.CoursesVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; diff --git a/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java b/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java index 1222d1a..02d5bd9 100644 --- a/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java +++ b/src/main/java/com/teaching/backend/mapper/courses/ObjectiveContentKnowMapper.java @@ -15,5 +15,5 @@ import java.util.List; */ public interface ObjectiveContentKnowMapper extends BaseMapper { - void insertBatchSomeColumn(List objectiveContentKnowList); +// void insertBatchSomeColumn(List objectiveContentKnowList); } diff --git a/src/main/java/com/teaching/backend/mapper/courses/ObjectivesTypeMapper.java b/src/main/java/com/teaching/backend/mapper/courses/ObjectivesTypeMapper.java deleted file mode 100644 index 9d1621b..0000000 --- a/src/main/java/com/teaching/backend/mapper/courses/ObjectivesTypeMapper.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.teaching.backend.mapper.courses; - - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.courses.ObjectivesType; - -/** - *

- * Mapper 接口 - *

- * - * @author zjh - * @since 2024-06-05 - */ -public interface ObjectivesTypeMapper extends BaseMapper { - -} diff --git a/src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java b/src/main/java/com/teaching/backend/mapper/favour/CourseFavourMapper.java similarity index 70% rename from src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java rename to src/main/java/com/teaching/backend/mapper/favour/CourseFavourMapper.java index 55adb81..f6bcaf0 100644 --- a/src/main/java/com/teaching/backend/mapper/favour/SeCourseFavourMapper.java +++ b/src/main/java/com/teaching/backend/mapper/favour/CourseFavourMapper.java @@ -2,14 +2,14 @@ package com.teaching.backend.mapper.favour; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.favour.SeCourseFavour; +import com.teaching.backend.model.entity.favour.CourseFavour; import java.util.List; /** * 课程点赞数据库操作 */ -public interface SeCourseFavourMapper extends BaseMapper { +public interface CourseFavourMapper extends BaseMapper { List queryAllNewCollectCourse(); diff --git a/src/main/java/com/teaching/backend/mapper/favour/SeKnowFavourMapper.java b/src/main/java/com/teaching/backend/mapper/favour/KnowFavourMapper.java similarity index 52% rename from src/main/java/com/teaching/backend/mapper/favour/SeKnowFavourMapper.java rename to src/main/java/com/teaching/backend/mapper/favour/KnowFavourMapper.java index 53d3a80..f96c575 100644 --- a/src/main/java/com/teaching/backend/mapper/favour/SeKnowFavourMapper.java +++ b/src/main/java/com/teaching/backend/mapper/favour/KnowFavourMapper.java @@ -2,12 +2,12 @@ package com.teaching.backend.mapper.favour; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.favour.SeKnowFavour; +import com.teaching.backend.model.entity.favour.KnowFavour; /** * 知识点赞数据库操作 */ -public interface SeKnowFavourMapper extends BaseMapper { +public interface KnowFavourMapper extends BaseMapper { } diff --git a/src/main/java/com/teaching/backend/mapper/favour/SeResourceFavourMapper.java b/src/main/java/com/teaching/backend/mapper/favour/SeResourceFavourMapper.java index eeb63f1..47f3e73 100644 --- a/src/main/java/com/teaching/backend/mapper/favour/SeResourceFavourMapper.java +++ b/src/main/java/com/teaching/backend/mapper/favour/SeResourceFavourMapper.java @@ -2,13 +2,14 @@ package com.teaching.backend.mapper.favour; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.favour.SeResourceFavour; +import com.teaching.backend.model.entity.favour.ResourceFavour; + /** * 课程资源点赞数据库操作 */ -public interface SeResourceFavourMapper extends BaseMapper { +public interface SeResourceFavourMapper extends BaseMapper { } diff --git a/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java b/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java index 653b429..b0d7d07 100644 --- a/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java +++ b/src/main/java/com/teaching/backend/mapper/know/KnowRepository.java @@ -23,6 +23,13 @@ import java.util.Set; public interface KnowRepository extends Neo4jRepository { + //查询二级节点的知识点 + @Query("MATCh (p:Know)-[*0..1]->(n:Know) WHERE ID(p) = $KnowId RETURN n") + List queryBesidesKnow(Long KnowId); + + @Query( "CALL gds.graph.list() YIELD graphName WHERE graphName = 'knowPath' RETURN count(*) > 0 AS projectionExists;") + Boolean exeGraph(); + @Query("MATCH (n:Know) WHERE n.courseId = $courseId OPTIONAL MATCH p=(n)-[*0..]->() DETACH DELETE p return count(p);") Long deleteAllByCourseId(String courseId); @@ -52,6 +59,20 @@ public interface KnowRepository extends Neo4jRepository { @Query("MATCH (p:Know) where ID(p) = $id RETURN count(p);") int queryNode(Long id); + + @Query("MATCH (p:Know) where p.knowId = $knowId RETURN ID(p);") + Long queryNodeByKnowId(Long knowId); + + @Query("MATCH (p:Know) where p.courseId = $courseId RETURN ID(p);") + Long queryNodeByCourseId(String courseId); + + @Query("MATCH (p:Know) where p.courseId = $courseId RETURN ID(p);") + List queryNodesByCourseId(String courseId); + + @Query("MATCH (p:Know) where ID(p) in $ids DETACH DELETE p RETURN count(p);") + int deleteAllById(Listids); + + @Query("MATCH (p:Know) where ID(p) = $id RETURN p;") Know queryNodeT(Long id); @@ -64,13 +85,16 @@ public interface KnowRepository extends Neo4jRepository { @Query("CREATE (n:Know {courseId: $courseId,name: $name,info:$info,hour:$hour}) return ID(n) as id") Long addCourse(String courseId, String name, String info, double hour); + @Query("CREATE (n:Know {courseId: $courseId,chapterId:$chapterId,knowId:$knowId,name: $name,info:$info,hour:$hour,tags:$tags}) return id(n) as id") + Long addNodes(String courseId,Long chapterId,Long knowId,String name, String info, double hour,String tags); + @Query("MATCH (p:Know {courseId:$courseId}) SET p.name = $name set p.info= $info RETURN count(p);") - int updateCourse(String courseId, String name, String info); + int updateCourse(String courseId,String name, String info); @Query("MATCH (p:Know {courseId:$courseId }) delete p RETURN count(p);") int deleteCourse(String courseId); - @Query("MATCH (p:Know {courseId:$courseId }) RETURN p;") + @Query("MATCH (p:Know) where p.courseId = $courseId and p.knowId is null and p.chapterId is null RETURN p;") KnowCourse queryCourse(String courseId); //==================== @@ -136,5 +160,11 @@ public interface KnowRepository extends Neo4jRepository { @Query("MATCH (p:Know), (j:Know) WHERE p.knowId= $knowId1 AND j.knowId = $knowId2 CREATE (p)-[r: $type]->(j) return count(r);") int addKnowRelationship(Long knowId1,Long knowId2,String type); + @Query("MATCH (f:User)-[r:learn]->(p:Know) where ID(p)= $knowId and f.userId= $userId RETURN count(r)") + int exesitsRels(Long knowId,Long userId); + + + @Query("MATCH (f:Know)-[r:Prior]->(p:Know) where p.knowId= $knowId RETURN ID(f)") + List relsId(Long knowId); } diff --git a/src/main/java/com/teaching/backend/mapper/know/NeoMapper.java b/src/main/java/com/teaching/backend/mapper/know/NeoMapper.java new file mode 100644 index 0000000..9724952 --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/know/NeoMapper.java @@ -0,0 +1,161 @@ +package com.teaching.backend.mapper.know; + +/** + * @Author:youhang + * @Date:2024-06-09-8:59 + * @Description: + */ + + +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.know.KnowChapter; +import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.resource.Resources; +import org.springframework.data.neo4j.repository.Neo4jRepository; +import org.springframework.data.neo4j.repository.query.Query; + +import java.util.List; +import java.util.Set; + +public interface NeoMapper extends Neo4jRepository { + + @Query("CREATE (n:User {userId: $userId,username: $username}) return ID(n);") + Long createUser(Integer userId,String username); + + + + @Query("MATCH (p:User {userId: $userId}), (c:Know {knowId: $knowId}) CREATE (p)-[r:learned{weight:5}]->(c) return count(r);") + Long UserLearned(Long userId,Long knowId); + + @Query("MATCH (p:User {userId: $userId}), (c:Know {knowId: $knowId}) CREATE (p)-[r:favour{weight:10}]->(c) return count(r);") + Long UserFavour(Long userId,Long knowId); + + @Query("MATCH (p:User {userId: $userId}), (c:Know {knowId: $knowId}) CREATE (p)-[r:collection{weight:8}]->(c) return count(r);") + Long UserCollection(Long userId,Long knowId); + + + + + +// @Query("MATCH (n:Know) WHERE n.courseId = $courseId OPTIONAL MATCH p=(n)-[*0..]->() DETACH DELETE p return count(p);") +// Long deleteAllByCourseId(String courseId); +// +// +// @Query("MATCH (n:Know) WHERE ID(n)= ${id} DETACH DELETE n;") +// Long deleteNode(Long id); +// //============= +// +// +// +// @Query("MATCH (p:Know)-[:FatherAndSon]->(n:Know) WHERE p.chapterId = $chapterId RETURN p.id ORDER BY ordernum;") +// ListqueryKnowIdByChapterId(Long chapterId); +// +// +// +// //====================== +// +// @Query("CREATE (n:Know {knowId: $KnowId,name: $name,info:$info,hour:$hour}) return ID(n);") +// Long addKnow(Long KnowId,String name,String info,double hour); +// +// +// @Query("MATCH ID(p:Know) = $id SET p.name = $name set p.info= $info RETURN count(p);") +// int updateKnow(Long id, String name, String info); +// +// @Query("MATCH ID(p:Know) = $id delete p RETURN count(p);") +// int deleteKnow(Long id); +// +// @Query("MATCH (p:Know) where ID(p) = $id RETURN count(p);") +// int queryNode(Long id); +// +// @Query("MATCH (p:Know) where p.knowId = $knowId RETURN ID(p);") +// Long queryNodeByKnowId(Long knowId); +// +// @Query("MATCH (p:Know) where p.courseId = $courseId RETURN ID(p);") +// Long queryNodeByCourseId(String courseId); +// +// @Query("MATCH (p:Know) where ID(p) = $id RETURN p;") +// Know queryNodeT(Long id); +// +// +// @Query("MATCH (p:Know) where p.knowId = $knowId RETURN p;") +// Know queryKnowByKnowId(Long knowId); +// +// //============================= +// +// @Query("CREATE (n:Know {courseId: $courseId,name: $name,info:$info,hour:$hour}) return ID(n) as id") +// Long addCourse(String courseId, String name, String info, double hour); +// +// @Query("MATCH (p:Know {courseId:$courseId}) SET p.name = $name set p.info= $info RETURN count(p);") +// int updateCourse(String courseId, String name, String info); +// +// @Query("MATCH (p:Know {courseId:$courseId }) delete p RETURN count(p);") +// int deleteCourse(String courseId); +// +// @Query("MATCH (p:Know {courseId:$courseId }) RETURN p;") +// KnowCourse queryCourse(String courseId); +// +// //==================== +// +// @Query("CREATE (n:Know {name: $name, chapterId:$chapterId,info:$info,hour:$hour}) return ID(n)") +// Long addChapter(Long chapterId, String name, String info,double hour); +// +// @Query("MATCH (p:Know {chapterId:$chapterId }) SET p.name = $name set p.info= $info RETURN count(p);") +// int updateChapter(Long chapterId, String name, String info); +// +// @Query("MATCH (p:Know {chapterId:$chapterId }) delete p RETURN count(p);") +// int deleteChapter(Long chapterId); +// +// @Query("MATCH (p:Know {chapterId:$chapterId }) RETURN p;") +// KnowChapter queryChapter(Long chapterId); +// +// //查询二级节点下资源 +// @Query("MATCH (p:Know)-[:FatherAndSon]->(n:Know)-[:resources]->(m:Resources) WHERE ID(p) = $id RETURN m") +// Set queryBesidesKnowToResources(Long id); +// +// //建立关系 课程 - 章节 +// @Query("MATCH (p:Know {courseId: $courseId}), (c:Know {chapterId: $chapterId}) CREATE (p)-[r:contain]->(c) return count(r);") +// int addContainWithCourse(String courseId,Long chapterId);UserLearned +// +// //建立关系 章节与章节 +// @Query("MATCH (p:Know {chapterId: $chapterId1}), (c:Know {chapterId: $chapterId2}) CREATE (c)-[r:contain]->(p) return count(r);") +// int addContainWithChapter(Long chapterId1,Long chapterId2); +// +// //建立关系 章节与知识点 +// @Query("MATCH (p:Know), (j:Know) WHERE p.chapterId= $chapterId AND ID(j) = $id CREATE (p)-[r:contain]->(j) return count(r);") +// int addContainWithKnow(Long id,Long chapterId); +// +// @Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND ID(c) = $ResourcesId CREATE (p)-[r:resources]->(c) return count(r)") +// int addResourceResourcesKnow(Long id, Long ResourcesId); +// +// +// //建立关系 章节与章节 顺序 Subsequent +// @Query("MATCH (p:Know), (j:Know) WHERE ID(p) = $chapterId1 AND ID(j)= $chapterId2 CREATE (p)-[r:Subsequent]->(j) return count(r);") +// int addSubsequentByChapterId(Long chapterId1,Long chapterId2); +// +// //建立关系 章节与章节 顺序 Subsequent +// @Query("MATCH (p:Know), (j:Know) WHERE ID(p)= $id1 AND ID(j)= $id2 CREATE (p)-[r:order]->(j) return count(r);") +// int addOrderById(Long id1,Long id2); +// +// //========== +// //建立关系 all -课程 +// @Query("MATCH (p:Know {courseId: $courseId}), (j:Know {chapterId: $chapterId}) CREATE (p)-[r:contain]->(j) return count(p);") +// Long addCourseRelationship(String courseId,Long chapterId); +// +// +// +// //建立关系 all -章节 +//// @Query({str}) +//// int addChapterRelationship(String str); +// +// //建立关系 all -节 - 点 +// @Query("MATCH (p:Know), (j:Know) WHERE p.chapterId= $chapterId AND j.knowId= $knowId CREATE (p)-[r: $type]->(j) return count(r);") +// int addChapterToKnowRelationship(Long chapterId,Long knowId,String type); +// +// +// +// //建立关系 all - 知识点 +// @Query("MATCH (p:Know), (j:Know) WHERE p.knowId= $knowId1 AND j.knowId = $knowId2 CREATE (p)-[r: $type]->(j) return count(r);") +// int addKnowRelationship(Long knowId1,Long knowId2,String type); + + +} diff --git a/src/main/java/com/teaching/backend/mapper/learn/CourseLearnMapper.java b/src/main/java/com/teaching/backend/mapper/learn/CourseLearnMapper.java new file mode 100644 index 0000000..51e1dfd --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/learn/CourseLearnMapper.java @@ -0,0 +1,12 @@ +package com.teaching.backend.mapper.learn; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.learn.CourseLearn; + + +public interface CourseLearnMapper extends BaseMapper { + +} + + + diff --git a/src/main/java/com/teaching/backend/mapper/learn/KnowLerarnMapper.java b/src/main/java/com/teaching/backend/mapper/learn/KnowLerarnMapper.java new file mode 100644 index 0000000..d405055 --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/learn/KnowLerarnMapper.java @@ -0,0 +1,13 @@ +package com.teaching.backend.mapper.learn; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.collection.KnowCollection; +import com.teaching.backend.model.entity.learn.KnowLearn; + + +public interface KnowLerarnMapper extends BaseMapper { + +} + + + diff --git a/src/main/java/com/teaching/backend/mapper/resource/ResourceMapper.java b/src/main/java/com/teaching/backend/mapper/resource/ResourceMapper.java new file mode 100644 index 0000000..3fa1144 --- /dev/null +++ b/src/main/java/com/teaching/backend/mapper/resource/ResourceMapper.java @@ -0,0 +1,21 @@ +package com.teaching.backend.mapper.resource; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.model.entity.resource.Resources; +import org.springframework.transaction.annotation.Transactional; + +/** + *

+ * Mapper 接口 + *

+ * + * @author author + * @since 2024-09-02 + */ + +public interface ResourceMapper extends BaseMapper { + + +} diff --git a/src/main/java/com/teaching/backend/mapper/resource/ResourceMysqlMapper.java b/src/main/java/com/teaching/backend/mapper/resource/ResourceRelationshipMapper.java similarity index 61% rename from src/main/java/com/teaching/backend/mapper/resource/ResourceMysqlMapper.java rename to src/main/java/com/teaching/backend/mapper/resource/ResourceRelationshipMapper.java index 2fc88df..dd08451 100644 --- a/src/main/java/com/teaching/backend/mapper/resource/ResourceMysqlMapper.java +++ b/src/main/java/com/teaching/backend/mapper/resource/ResourceRelationshipMapper.java @@ -3,6 +3,7 @@ package com.teaching.backend.mapper.resource; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.model.entity.resource.ResourceRelationship; /** *

@@ -12,6 +13,7 @@ import com.teaching.backend.model.entity.resource.ResourceMysql; * @author author * @since 2024-09-02 */ -public interface ResourceMysqlMapper extends BaseMapper { + +public interface ResourceRelationshipMapper extends BaseMapper { } diff --git a/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java b/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java index decc5d7..5ec64be 100644 --- a/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java +++ b/src/main/java/com/teaching/backend/mapper/resource/ResourcesRepository.java @@ -7,33 +7,52 @@ package com.teaching.backend.mapper.resource; */ +import com.sun.org.apache.xpath.internal.operations.Bool; +import com.teaching.backend.model.entity.resource.ResourceMysql; import com.teaching.backend.model.entity.resource.Resources; import org.springframework.data.neo4j.repository.Neo4jRepository; import org.springframework.data.neo4j.repository.query.Query; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Set; - +@Transactional(value="transactionManager") public interface ResourcesRepository extends Neo4jRepository { + //查询资源 @Query("MATCH (b:Resources) WHERE ID(b) = $resourceIds RETURN b") Resources queryResourcesByIds(Long resourceIds); + @Query("MATCH (b:Resources) WHERE b.resourceId = $resourceId RETURN b") + Resources queryResourcesByResourceId(Long resourceId); + //查询资源 - 知识点 @Query("MATCH (p:Know)<-[r:resources]-(c:Resources) WHERE ID(p) = $id AND ID(c) = $resourcesId return count(r)") int queryExisitRel(Long id, Long resourcesId); //添加知识点与资源关系 - @Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND ID(c) = $resourcesId CREATE (c)-[r:resources]->(p) return count(r)") + @Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND ID(c) = $resourceId CREATE (c)-[r:resources]->(p) return count(r)") int addResourcesAndKnowById(Long id, Long resourcesId); + //添加知识点与资源关系根据resourceId + @Query("MATCH (p:Know), (c:Resources) WHERE ID(p) = $id AND c.resourceId = $resourceId CREATE (c)-[r:resources]->(p) return count(r)") + int addResourcesAndKnowById2(Long id, Long resourceId); //删除资源节点 @Query("MATCH(n:Resources) where n.name = $name DETACH DELETE n RETURN COUNT(n) >0;") Boolean deleteByobjectName(String name); + //删除资源节点 + @Query("MATCH(n:Resources) where n.resourceId = $resourceId DETACH DELETE n RETURN COUNT(n) >0;") + Boolean deleteByResourceId(Long resourceId); + + //删除资源节点 + @Query("MATCH(n:Resources) where ID(n) = $id DETACH DELETE n RETURN COUNT(n) >0;") + Boolean deleteByid(Long id); + + //添加课程与资源关系 @Query("MATCH (p:Know), (c:Resources) WHERE p.courseId = $courseId AND ID(c) in $resourcesIds CREATE (c)-[r:resources]->(p) return count(r)") int addResourcesAndKnowByCourseId(String courseId, List resourcesIds); @@ -69,6 +88,16 @@ public interface ResourcesRepository extends Neo4jRepository { Set queryResourcesByKnowId(Long KnowId); +// @Query("CREATE (n:Resources {" +// +"name: $rs.getName()," +// +"resourceId: $rs.getId()+," +// +"url: $rs.getUrl()," +// +"status: $rs.getStatus()," +// +"type: $rs.getType()+," +// +"tags: $rs.getTags()," +// +"description: $rs.getDescription()}) return ID(n)") +// int recoverdata(ResourceMysql rs); + // diff --git a/src/main/java/com/teaching/backend/mapper/thumb/SeCourseThumbMapper.java b/src/main/java/com/teaching/backend/mapper/thumb/CourseThumbMapper.java similarity index 52% rename from src/main/java/com/teaching/backend/mapper/thumb/SeCourseThumbMapper.java rename to src/main/java/com/teaching/backend/mapper/thumb/CourseThumbMapper.java index 6236a4a..90feed2 100644 --- a/src/main/java/com/teaching/backend/mapper/thumb/SeCourseThumbMapper.java +++ b/src/main/java/com/teaching/backend/mapper/thumb/CourseThumbMapper.java @@ -1,12 +1,12 @@ package com.teaching.backend.mapper.thumb; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.thumb.SeCourseThumb; +import com.teaching.backend.model.entity.thumb.CourseThumb; /** * 课程点赞数据库操作 */ -public interface SeCourseThumbMapper extends BaseMapper { +public interface CourseThumbMapper extends BaseMapper { } diff --git a/src/main/java/com/teaching/backend/mapper/thumb/SeKnowThumbMapper.java b/src/main/java/com/teaching/backend/mapper/thumb/KnowThumbMapper.java similarity index 53% rename from src/main/java/com/teaching/backend/mapper/thumb/SeKnowThumbMapper.java rename to src/main/java/com/teaching/backend/mapper/thumb/KnowThumbMapper.java index 1aaf9b4..f1dd296 100644 --- a/src/main/java/com/teaching/backend/mapper/thumb/SeKnowThumbMapper.java +++ b/src/main/java/com/teaching/backend/mapper/thumb/KnowThumbMapper.java @@ -2,12 +2,12 @@ package com.teaching.backend.mapper.thumb; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.thumb.SeKnowThumb; +import com.teaching.backend.model.entity.thumb.KnowThumb; /** * 知识点赞数据库操作 */ -public interface SeKnowThumbMapper extends BaseMapper { +public interface KnowThumbMapper extends BaseMapper { } diff --git a/src/main/java/com/teaching/backend/mapper/thumb/SeResourceThumbMapper.java b/src/main/java/com/teaching/backend/mapper/thumb/ResourceThumbMapper.java similarity index 52% rename from src/main/java/com/teaching/backend/mapper/thumb/SeResourceThumbMapper.java rename to src/main/java/com/teaching/backend/mapper/thumb/ResourceThumbMapper.java index dbb4136..6adf142 100644 --- a/src/main/java/com/teaching/backend/mapper/thumb/SeResourceThumbMapper.java +++ b/src/main/java/com/teaching/backend/mapper/thumb/ResourceThumbMapper.java @@ -2,13 +2,13 @@ package com.teaching.backend.mapper.thumb; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.teaching.backend.model.entity.thumb.SeResourceThumb; +import com.teaching.backend.model.entity.thumb.ResourceThumb; /** * 课程资源点赞数据库操作 */ -public interface SeResourceThumbMapper extends BaseMapper { +public interface ResourceThumbMapper extends BaseMapper { } diff --git a/src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java index 61ade3d..e021998 100644 --- a/src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowCourseCreateRequest.java @@ -24,11 +24,6 @@ public class KnowCourseCreateRequest implements Serializable { private String info; private double hour; - - - - - - + } diff --git a/src/main/java/com/teaching/backend/model/dto/Know/KnowPageVO.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowPageVO.java new file mode 100644 index 0000000..0389d67 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowPageVO.java @@ -0,0 +1,16 @@ +package com.teaching.backend.model.dto.Know; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class KnowPageVO { + private Long id; + + private String name; + + private Double score; +} diff --git a/src/main/java/com/teaching/backend/model/dto/Know/KnowPathDTO.java b/src/main/java/com/teaching/backend/model/dto/Know/KnowPathDTO.java new file mode 100644 index 0000000..c41d46c --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/Know/KnowPathDTO.java @@ -0,0 +1,16 @@ +package com.teaching.backend.model.dto.Know; + +import com.teaching.backend.model.query.PageQuery; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +public class KnowPathDTO extends PageQuery { + + private String courseName; + + + + +} diff --git a/src/main/java/com/teaching/backend/model/dto/Know/UserNeo.java b/src/main/java/com/teaching/backend/model/dto/Know/UserNeo.java new file mode 100644 index 0000000..9ba18eb --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/Know/UserNeo.java @@ -0,0 +1,12 @@ +package com.teaching.backend.model.dto.Know; + +import lombok.Data; + +@Data +public class UserNeo { + + private Integer userId; + //用户名 + private String username; + +} diff --git a/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowObjective.java b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowObjective.java new file mode 100644 index 0000000..6a34065 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowObjective.java @@ -0,0 +1,26 @@ +package com.teaching.backend.model.dto.Knowtmp; + +import lombok.Data; +import org.springframework.web.bind.annotation.RequestParam; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-05-31 + */ +@Data +public class KnowObjective implements Serializable { + + + private List objectiveIds; + + private Long knowId; + + +} diff --git a/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempAdd.java b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowPointAddRequest.java similarity index 68% rename from src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempAdd.java rename to src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowPointAddRequest.java index 9391cfd..e2fe814 100644 --- a/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempAdd.java +++ b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowPointAddRequest.java @@ -13,16 +13,17 @@ import java.io.Serializable; * @since 2024-05-31 */ @Data -public class KnowtempAdd implements Serializable { +public class KnowPointAddRequest implements Serializable { private String name; private String info; - private Long chapterid; + private Long chapterId; - private Integer ordernum; private double hour; + private String courseId; + } diff --git a/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempUpdate.java b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowPointUpdateRequest.java similarity index 69% rename from src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempUpdate.java rename to src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowPointUpdateRequest.java index 6dcf4d6..aca39e9 100644 --- a/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowtempUpdate.java +++ b/src/main/java/com/teaching/backend/model/dto/Knowtmp/KnowPointUpdateRequest.java @@ -13,7 +13,7 @@ import java.io.Serializable; * @since 2024-05-31 */ @Data -public class KnowtempUpdate implements Serializable { +public class KnowPointUpdateRequest implements Serializable { private Long id; @@ -21,10 +21,11 @@ public class KnowtempUpdate implements Serializable { private String info; - private Long chapterid; + private Long chapterId; - private Integer ordernum; private double hour; + private String courseId; + } diff --git a/src/main/java/com/teaching/backend/model/dto/chapter/ChapterAndNodeTreeVO.java b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterAndNodeTreeVO.java new file mode 100644 index 0000000..0482d7a --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterAndNodeTreeVO.java @@ -0,0 +1,53 @@ +package com.teaching.backend.model.dto.chapter; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Digits; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-05-31 + */ +@Data +public class ChapterAndNodeTreeVO implements Serializable { + + + + @ApiModelProperty(value = "主键") + private Long id; + + @ApiModelProperty(value = "序号") + private Double orderNum; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "简介") + private String content; + + @ApiModelProperty(value = "父级节点") + private Long pid; + + + @ApiModelProperty(value = "总学时") + @Digits(integer = 10, fraction = 1, message = "总学时只能保留一位小数") + private double totalClassHours; + + @ApiModelProperty(value = "子章节") + private List children; // 用于存储子章节 + +} diff --git a/src/main/java/com/teaching/backend/model/dto/chapter/ChapterChildreenVO.java b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterChildreenVO.java new file mode 100644 index 0000000..b2f6815 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterChildreenVO.java @@ -0,0 +1,86 @@ +package com.teaching.backend.model.dto.chapter; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Digits; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-05-31 + */ +@Data +public class ChapterChildreenVO implements Serializable { + + + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建日期") + private LocalDateTime createTime; + + @ApiModelProperty(value = "更新人") + private String updateBy; + + @ApiModelProperty(value = "更新日期") + private LocalDateTime updateTime; + + @ApiModelProperty(value = "所属部门") + private String sysOrgCode; + + @ApiModelProperty(value = "序号") + private Double orderNum; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "简介") + private String content; + + @ApiModelProperty(value = "父级节点") + private Long pid; + + @ApiModelProperty(value = "课程") + + private String courseId; + + @ApiModelProperty(value = "课程目标") + private String courseObjectivesId; + + @ApiModelProperty(value = "总学时") + @Digits(integer = 10, fraction = 1, message = "总学时只能保留一位小数") + private double totalClassHours; + + @ApiModelProperty(value = "要求") + private String requirement; + + @ApiModelProperty(value = "线上学时") + private String onlineClassHours; + + @ApiModelProperty(value = "周次") + private String zc; + + @ApiModelProperty(value = "内部序号显示") + private String numshow; + + @ApiModelProperty(value = "子章节") + @TableField(exist = false) + private List children; // 用于存储子章节 + +} diff --git a/src/main/java/com/teaching/backend/model/dto/chapter/ChapterDTO.java b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterDTO.java index e05365b..055b62d 100644 --- a/src/main/java/com/teaching/backend/model/dto/chapter/ChapterDTO.java +++ b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterDTO.java @@ -9,6 +9,8 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.Digits; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Pattern; import java.io.Serializable; import java.time.LocalDateTime; @@ -23,8 +25,6 @@ import java.time.LocalDateTime; * @Version 1.0 */ @Data -@NoArgsConstructor -@AllArgsConstructor public class ChapterDTO implements Serializable { private static final long serialVersionUID = 1L; @@ -32,28 +32,12 @@ public class ChapterDTO implements Serializable { @ApiModelProperty(value = "总学时") private double totalClassHours; - @ApiModelProperty(value = "创建人") - private String createBy; - - - @ApiModelProperty(value = "创建日期") - @JsonFormat(pattern = "yyyy/M/d HH:mm:ss") - private LocalDateTime createTime; - - @ApiModelProperty(value = "更新人") - private String updateBy; - - @ApiModelProperty(value = "更新日期") - @JsonFormat(pattern = "yyyy/M/d HH-mm-ss") - private LocalDateTime updateTime; - - @ApiModelProperty(value = "所属部门") - private String sysOrgCode; @ApiModelProperty(value = "序号") private Double orderNum; @ApiModelProperty(value = "章节名称") + @NotEmpty private String name; @ApiModelProperty(value = "简介") @@ -63,32 +47,8 @@ public class ChapterDTO implements Serializable { private Long pid; @ApiModelProperty(value = "课程id") + @NotEmpty private String courseId; - @ApiModelProperty(value = "课程目标") - private String courseObjectivesId; - - - - @ApiModelProperty(value = "要求") - private String requirement; - - @ApiModelProperty(value = "线上学时") - private String onlineClassHours; - - @ApiModelProperty(value = "周次") - private String zc; - - - @ApiModelProperty(value = "内部序号显示") - private String numshow; - - @ApiModelProperty(value = "excel上级序号") - @TableField(exist = false) - private Long ParentExcelId; - - @ApiModelProperty(value = "excel序号") - @TableField(exist = false) - private Long ExcelId; } diff --git a/src/main/java/com/teaching/backend/model/dto/chapter/ChapterUpdateDTO.java b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterUpdateDTO.java new file mode 100644 index 0000000..ca0f471 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/chapter/ChapterUpdateDTO.java @@ -0,0 +1,69 @@ +package com.teaching.backend.model.dto.chapter; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import javax.validation.constraints.Digits; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-05-31 + */ +@Data +public class ChapterUpdateDTO implements Serializable { + + + + @ApiModelProperty(value = "主键") + @NotNull + private Long id; + + @ApiModelProperty(value = "创建人") + private String createBy; + + @ApiModelProperty(value = "创建日期") + private LocalDateTime createTime; + + + @ApiModelProperty(value = "序号") + private Double orderNum; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "简介") + private String content; + + @ApiModelProperty(value = "父级节点") + private Long pid; + + @ApiModelProperty(value = "课程") + @NotEmpty + private String courseId; + + + @ApiModelProperty(value = "总学时") + @Digits(integer = 10, fraction = 1, message = "总学时只能保留一位小数") + private double totalClassHours; + + + @ApiModelProperty(value = "内部序号显示") + private String numshow; + + +} diff --git a/src/main/java/com/teaching/backend/model/dto/collection/CourseCollectionDTO.java b/src/main/java/com/teaching/backend/model/dto/collection/CourseCollectionDTO.java new file mode 100644 index 0000000..2d51a28 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/collection/CourseCollectionDTO.java @@ -0,0 +1,21 @@ +package com.teaching.backend.model.dto.collection; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(description = "课程收藏实体") +public class CourseCollectionDTO { + + @NotBlank + private String courseId; + + @NotNull + private Long userId; +} diff --git a/src/main/java/com/teaching/backend/model/dto/collection/KnowCollectionDTO.java b/src/main/java/com/teaching/backend/model/dto/collection/KnowCollectionDTO.java new file mode 100644 index 0000000..921ac7b --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/collection/KnowCollectionDTO.java @@ -0,0 +1,18 @@ +package com.teaching.backend.model.dto.collection; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(description = "课程收藏实体") +public class KnowCollectionDTO { + + @NotNull + private Long knowId; + + @NotNull + private Long userId; +} diff --git a/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesDTO.java b/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesDTO.java index 9341142..b6694e2 100644 --- a/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesDTO.java +++ b/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesDTO.java @@ -1,41 +1,39 @@ package com.teaching.backend.model.dto.courses; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; import com.teaching.backend.model.entity.courses.ObjectiveContents; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.io.Serializable; import java.util.List; @Data @ApiModel(description = "分项目标参数实体") public class CourseObjectivesDTO implements Serializable { - /** - * 内部编号 - */ - @ApiModelProperty("id") - private String id; - - /** - * 分项目标名称 - */ - @ApiModelProperty(value = "分项目标名称",required = true) - private String name; - /** - * 分项目标类型 思政 知识、素质、价值 - */ - @ApiModelProperty(value = "分项目标类型",required = true) - private Integer type; - /** - * 父节点 - */ - @ApiModelProperty(value = "父节点pid",required = true) - private String pid; + @ApiModelProperty(value = "课程id") + @NotBlank(message = "不能为空") + private String courseId; + // 1 思政目标/2 知识目标/3 能力目标/4 素质目标 + @ApiModelProperty(value = "目标类型 1 /2 /3 /4") + @NotNull + private Integer type; + @ApiModelProperty(value = "目标内容") + @Size(max = 300, message = "用户名长度最大为300个字符") + private String content; + @ApiModelProperty(value = "总目标id") + @NotBlank(message = "不能为空") + private String pid; } diff --git a/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesUpdateDTO.java b/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesUpdateDTO.java new file mode 100644 index 0000000..68b7e1b --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/courses/CourseObjectivesUpdateDTO.java @@ -0,0 +1,33 @@ +package com.teaching.backend.model.dto.courses; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Data +@ApiModel(description = "分项目标参数修改实体") +public class CourseObjectivesUpdateDTO implements Serializable { + + @ApiModelProperty(value = "目标id") + @NotBlank + private String Id; + + @ApiModelProperty(value = "课程id") + @NotBlank + private String courseId; + + @ApiModelProperty(value = "目标类型") + @NotNull + private Integer type; + + + + @ApiModelProperty(value = "目标内容") + private String content; + +} diff --git a/src/main/java/com/teaching/backend/model/dto/courses/CoursesDTO.java b/src/main/java/com/teaching/backend/model/dto/courses/CoursesDTO.java index db604dd..810b13e 100644 --- a/src/main/java/com/teaching/backend/model/dto/courses/CoursesDTO.java +++ b/src/main/java/com/teaching/backend/model/dto/courses/CoursesDTO.java @@ -4,55 +4,58 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.Max; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.time.LocalDateTime; @Data @ApiModel(description = "教师创建课程参数实体") public class CoursesDTO { - /** - * 内部编号 - */ - @ApiModelProperty("id") - private String id; + + /** * 创建人 教师id */ @ApiModelProperty(value = "负责教师",required = true) + @NotEmpty private String teacher; - /** - * 创建日期 - */ - @ApiModelProperty("创建日期") - private LocalDateTime createTime; + /** * 课程封面 */ @ApiModelProperty(value = "图片",required = true) + @NotEmpty private String img; /** * 课程类别 专业教育 通识教育 */ @ApiModelProperty(value = "课程类别:专业教育1 通识教育2",required = true) + @NotEmpty private String category; /** * 课程性质 必修选修任修 */ - @ApiModelProperty(value = "课程性质:必修1 选修2 任修3",required = true) + @ApiModelProperty(value = "课程性质:必修1 限选2 任选3",required = true) + @NotEmpty private String nature; /** * 课程名称 */ @ApiModelProperty(value = "课程名称",required = true) + @NotEmpty private String name; /** * 课程编码 */ @ApiModelProperty(value = "课程编码",required = true) + @NotEmpty private String code; @@ -60,24 +63,28 @@ public class CoursesDTO { * 课程学分 */ @ApiModelProperty(value = "课程学分",required = true) + @NotNull private BigDecimal credit; /** * 课程学时 */ @ApiModelProperty(value = "课程学时",required = true) + @NotNull private Integer classhours; /** * 考核类型 考试 考查 */ @ApiModelProperty(value = "考核类型:考试1 考查2",required = true) + @NotEmpty private String assessmenttype; /** * 考核方式 开卷 闭卷 其他 */ @ApiModelProperty(value = "考核方式:开卷1 闭卷2 其他3",required = true) + @NotEmpty private String assessmentway; /** @@ -96,5 +103,6 @@ public class CoursesDTO { * 课程简介 */ @ApiModelProperty("课程简介") + @Size(min = 1,max = 300) private String description; } diff --git a/src/main/java/com/teaching/backend/model/dto/courses/CoursesUpdateDTO.java b/src/main/java/com/teaching/backend/model/dto/courses/CoursesUpdateDTO.java new file mode 100644 index 0000000..dbb6e7b --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/courses/CoursesUpdateDTO.java @@ -0,0 +1,113 @@ +package com.teaching.backend.model.dto.courses; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +@ApiModel(description = "修改课程参数实体") +public class CoursesUpdateDTO { + + /** + * 内部编号 + */ + @ApiModelProperty("id") + @NotEmpty + private String id; + + /** + * 创建人 教师id + */ + @ApiModelProperty(value = "负责教师",required = true) + @NotEmpty + private String teacher; + + /** + * 课程封面 + */ + @ApiModelProperty(value = "图片",required = true) + @NotEmpty + private String img; + + /** + * 课程类别 专业教育 通识教育 + */ + @ApiModelProperty(value = "课程类别:专业教育1 通识教育2",required = true) + @NotEmpty + private String category; + + /** + * 课程性质 必修选修任修 + */ + @ApiModelProperty(value = "课程性质:必修1 选修2 任修3",required = true) + @NotEmpty + private String nature; + + /** + * 课程名称 + */ + @ApiModelProperty(value = "课程名称",required = true) + @NotEmpty + private String name; + + /** + * 课程编码 + */ + @ApiModelProperty(value = "课程编码",required = true) + @NotEmpty + private String code; + + + /** + * 课程学分 + */ + @ApiModelProperty(value = "课程学分",required = true) + @NotNull + private BigDecimal credit; + + /** + * 课程学时 + */ + @ApiModelProperty(value = "课程学时",required = true) + @NotNull + private Integer classhours; + + /** + * 考核类型 考试 考查 + */ + @ApiModelProperty(value = "考核类型:考试1 考查2",required = true) + @NotEmpty + private String assessmenttype; + + /** + * 考核方式 开卷 闭卷 其他 + */ + @ApiModelProperty(value = "考核方式:开卷1 闭卷2 其他3",required = true) + @NotEmpty + private String assessmentway; + + /** + * 教学方法 + */ + @ApiModelProperty("教学方法") + private String teachermethod; + + /** + * 教学方式 + */ + @ApiModelProperty("教学方式") + private String teacherway; + + /** + * 课程简介 + */ + @ApiModelProperty("课程简介") + @Size(min = 1,max = 300) + private String description; +} diff --git a/src/main/java/com/teaching/backend/model/dto/courses/StudentCoursesDTO.java b/src/main/java/com/teaching/backend/model/dto/courses/StudentCoursesDTO.java index 67264a8..0422c25 100644 --- a/src/main/java/com/teaching/backend/model/dto/courses/StudentCoursesDTO.java +++ b/src/main/java/com/teaching/backend/model/dto/courses/StudentCoursesDTO.java @@ -5,6 +5,9 @@ import com.teaching.backend.model.entity.courses.StudentCourses; import io.swagger.annotations.ApiModel; import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + /** *

* @@ -15,6 +18,18 @@ import lombok.Data; */ @Data @ApiModel(description = "学生课程") -public class StudentCoursesDTO extends StudentCourses { +public class StudentCoursesDTO { + /** + * 学生的userId + */ + @NotNull + private Long studentId; + + /** + * 课程id + */ + @NotEmpty + private String courseId; + } diff --git a/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourAddRequest.java b/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourAddRequest.java index 7d377d8..e0debf8 100644 --- a/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourAddRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourAddRequest.java @@ -1,24 +1,28 @@ package com.teaching.backend.model.dto.favour.courseFavour; +import io.swagger.annotations.ApiModel; import lombok.Data; +import javax.validation.constraints.NotEmpty; import java.io.Serializable; /** * 课程点赞请求 */ @Data -public class CourseFavourAddRequest implements Serializable { +@ApiModel(description = "课程喜欢实体") +public class CourseFavourAddRequest{ /** * 帖子 id */ + @NotEmpty private String courseId; /** * user id */ + @NotEmpty private String userId; - private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourQueryRequest.java b/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourQueryRequest.java index d11aff4..5cca03f 100644 --- a/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourQueryRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/favour/courseFavour/CourseFavourQueryRequest.java @@ -2,22 +2,24 @@ package com.teaching.backend.model.dto.favour.courseFavour; import com.teaching.backend.common.PageRequest; import com.teaching.backend.constant.CommonConstant; +import io.swagger.annotations.ApiModel; import lombok.*; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** * 课程点赞请求 */ +@ApiModel(description = "课程喜欢实体") @Data -@Getter -@Setter -@ToString(callSuper = true) public class CourseFavourQueryRequest extends PageRequest implements Serializable { /** * 用户 id */ + @NotEmpty private String userId; diff --git a/src/main/java/com/teaching/backend/model/dto/favour/knowFavour/KnowFavourAddRequest.java b/src/main/java/com/teaching/backend/model/dto/favour/knowFavour/KnowFavourAddRequest.java index c3ee0d6..9b92028 100644 --- a/src/main/java/com/teaching/backend/model/dto/favour/knowFavour/KnowFavourAddRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/favour/knowFavour/KnowFavourAddRequest.java @@ -1,29 +1,36 @@ package com.teaching.backend.model.dto.favour.knowFavour; +import io.swagger.annotations.ApiModel; import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** * 知识点点赞请求 */ +@ApiModel(description = "知识点喜欢实体") @Data public class KnowFavourAddRequest implements Serializable { /** * 课程 id */ + @NotEmpty private String courseId; /** * 知识点 id */ - private String knowId; + @NotNull + private Long knowId; /** * user id */ - private String userId; + @NotNull + private Long userId; private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourAddRequest.java b/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourAddRequest.java index 1c09523..a808233 100644 --- a/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourAddRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourAddRequest.java @@ -2,6 +2,7 @@ package com.teaching.backend.model.dto.favour.resourceFavour; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -14,12 +15,14 @@ public class ResourceFavourAddRequest implements Serializable { /** * 知识点 id */ - private Integer resourceId; + @NotNull + private Long resourceId; /** * user id */ - private String userId; + @NotNull + private Long userId; private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourQueryRequest.java b/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourQueryRequest.java index 2d894b7..4179ce0 100644 --- a/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourQueryRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/favour/resourceFavour/ResourceFavourQueryRequest.java @@ -3,6 +3,7 @@ package com.teaching.backend.model.dto.favour.resourceFavour; import com.teaching.backend.common.PageRequest; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -14,7 +15,8 @@ public class ResourceFavourQueryRequest extends PageRequest implements Serializa /** * 用户 id */ - private String userId; + @NotNull + private Long userId; /** * type diff --git a/src/main/java/com/teaching/backend/model/dto/learn/CourseLearnDTO.java b/src/main/java/com/teaching/backend/model/dto/learn/CourseLearnDTO.java new file mode 100644 index 0000000..faa9e9c --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/learn/CourseLearnDTO.java @@ -0,0 +1,18 @@ +package com.teaching.backend.model.dto.learn; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(description = "课程学习实体") +public class CourseLearnDTO { + + @NotEmpty + private String courseId; + + @NotNull + private Long userId; +} diff --git a/src/main/java/com/teaching/backend/model/dto/learn/KnowLearnDTO.java b/src/main/java/com/teaching/backend/model/dto/learn/KnowLearnDTO.java new file mode 100644 index 0000000..b2fa70e --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/learn/KnowLearnDTO.java @@ -0,0 +1,16 @@ +package com.teaching.backend.model.dto.learn; + +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Data +public class KnowLearnDTO { + + @NotEmpty + private Long knowId; + + @NotNull + private Long userId; +} diff --git a/src/main/java/com/teaching/backend/model/dto/record/CourseLearningRecordDTO.java b/src/main/java/com/teaching/backend/model/dto/record/CourseLearningRecordDTO.java new file mode 100644 index 0000000..03f1dfd --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/record/CourseLearningRecordDTO.java @@ -0,0 +1,49 @@ +package com.teaching.backend.model.dto.record; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-07-24 + */ +@Data +@ApiModel(value="CourseLearningRecord对象", description="") +public class CourseLearningRecordDTO implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = " 课程记录id") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "课程id") + @TableField("course_id") + private String courseId; + + + @ApiModelProperty(value = "用户id") + @TableField("user_id") + private String userId; + + + @ApiModelProperty(value = "最近学习时间") + @TableField("times") + private LocalDateTime learnTime; + + +} diff --git a/src/main/java/com/teaching/backend/model/dto/resource/ResourceRelationshipDTO.java b/src/main/java/com/teaching/backend/model/dto/resource/ResourceRelationshipDTO.java new file mode 100644 index 0000000..1e3ae00 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/resource/ResourceRelationshipDTO.java @@ -0,0 +1,36 @@ +package com.teaching.backend.model.dto.resource; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Author:youhang + * @Date:2024-10-21-15:53 + * @Description: + */ + +@Data +@ApiModel(description = "添加知识点资源关系实体") +public class ResourceRelationshipDTO { + + @ApiModelProperty(value = "知识点Id") + @NotNull + private Long knowId; + + @ApiModelProperty(value = "资源Id") + @NotNull + private Long resourceId; + + @ApiModelProperty(value = "课程Id") + @NotBlank + private String courseId; +} diff --git a/src/main/java/com/teaching/backend/model/dto/thumb/coursethumb/CourseThumbAddRequest.java b/src/main/java/com/teaching/backend/model/dto/thumb/coursethumb/CourseThumbAddRequest.java index 021c0fd..0f038f0 100644 --- a/src/main/java/com/teaching/backend/model/dto/thumb/coursethumb/CourseThumbAddRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/thumb/coursethumb/CourseThumbAddRequest.java @@ -1,24 +1,30 @@ package com.teaching.backend.model.dto.thumb.coursethumb; +import io.swagger.annotations.ApiModel; import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** * 课程点赞请求 */ @Data +@ApiModel(description = "课程点赞实体") public class CourseThumbAddRequest implements Serializable { /** * 帖子 id */ + @NotEmpty private String courseId; /** * user id */ - private String userId; + @NotNull + private Long userId; private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/teaching/backend/model/dto/thumb/knowthumb/KnowThumbAddRequest.java b/src/main/java/com/teaching/backend/model/dto/thumb/knowthumb/KnowThumbAddRequest.java index 61556d6..e21d2c2 100644 --- a/src/main/java/com/teaching/backend/model/dto/thumb/knowthumb/KnowThumbAddRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/thumb/knowthumb/KnowThumbAddRequest.java @@ -1,25 +1,30 @@ package com.teaching.backend.model.dto.thumb.knowthumb; +import io.swagger.annotations.ApiModel; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** * 知识点点赞请求 */ @Data +@ApiModel(description = "知识点点赞实体") public class KnowThumbAddRequest implements Serializable { /** * 知识点 id */ - private Integer knowId; + @NotNull + private Long knowId; /** * user id */ - private String userId; + @NotNull + private Long userId; private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/teaching/backend/model/dto/thumb/resourcethumb/ResourceThumbAddRequest.java b/src/main/java/com/teaching/backend/model/dto/thumb/resourcethumb/ResourceThumbAddRequest.java index ded4b62..9f06246 100644 --- a/src/main/java/com/teaching/backend/model/dto/thumb/resourcethumb/ResourceThumbAddRequest.java +++ b/src/main/java/com/teaching/backend/model/dto/thumb/resourcethumb/ResourceThumbAddRequest.java @@ -1,5 +1,6 @@ package com.teaching.backend.model.dto.thumb.resourcethumb; +import io.swagger.annotations.ApiModel; import lombok.Data; import java.io.Serializable; @@ -8,18 +9,19 @@ import java.io.Serializable; * 资源点赞请求 */ @Data +@ApiModel(description = "资源点赞实体") public class ResourceThumbAddRequest implements Serializable { /** * 资源 id */ - private Integer resourceId; + private Long resourceId; /** * user id */ - private String userId; + private Long userId; private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java index b5089c6..427cee3 100644 --- a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java +++ b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentAndTeacherDTO.java @@ -3,6 +3,7 @@ package com.teaching.backend.model.dto.umsAdmin; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; diff --git a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentPageQueryDTO.java b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentPageQueryDTO.java index f0813bf..48ab9f7 100644 --- a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentPageQueryDTO.java +++ b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsStudentPageQueryDTO.java @@ -1,25 +1,35 @@ package com.teaching.backend.model.dto.umsAdmin; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.io.Serializable; @Data +@ApiModel(description = "学生信息分页实体") public class UmsStudentPageQueryDTO implements Serializable { //学生姓名 + @ApiModelProperty(value = "学生姓名") private String name; //学号 + @ApiModelProperty(value = "学号") private String number; //页码 + @ApiModelProperty(value = "页码") private int page; //每页显示记录数 + @ApiModelProperty(value = "每页显示记录数") private int pageSize; - //学号 + //用户id + @ApiModelProperty(value = "用户id") private String userId; } diff --git a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserDTO.java b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserDTO.java new file mode 100644 index 0000000..4de3cab --- /dev/null +++ b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserDTO.java @@ -0,0 +1,32 @@ +package com.teaching.backend.model.dto.umsAdmin; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import java.io.Serializable; +import java.time.LocalDateTime; + +@Data +@ApiModel(description = "用户登录参数实体") +public class UmsUserDTO { + + //用户名 + @NotEmpty + @ApiModelProperty(value = "用户名") + private String username; + + //密码 + @NotEmpty + @ApiModelProperty(value = "密码") + private String password; + + //角色id + @ApiModelProperty(value = "角色id") + private String roleId; +} diff --git a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserParam.java b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserParam.java index 43f83d6..f5fc561 100644 --- a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserParam.java +++ b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UmsUserParam.java @@ -1,27 +1,31 @@ package com.teaching.backend.model.dto.umsAdmin; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; import java.io.Serializable; @Data -@TableName("ums_user") -public class UmsUserParam implements Serializable { +@ApiModel(description = "用户注册参数实体") +public class UmsUserParam{ //用户名 + @NotEmpty + @ApiModelProperty(value = "用户名") private String username; //密码 + @NotEmpty + @ApiModelProperty(value = "密码") private String password; //手机号 + @ApiModelProperty(value = "手机号") private String phone; - //昵称 - private String nickName; - - //头像 - private String icon; } diff --git a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UpdateUserPasswordParam.java b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UpdateUserPasswordParam.java index 6f78b14..cdb635d 100644 --- a/src/main/java/com/teaching/backend/model/dto/umsAdmin/UpdateUserPasswordParam.java +++ b/src/main/java/com/teaching/backend/model/dto/umsAdmin/UpdateUserPasswordParam.java @@ -3,6 +3,8 @@ package com.teaching.backend.model.dto.umsAdmin; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotEmpty; + /** * 修改用户名密码参数 @@ -10,13 +12,13 @@ import lombok.Data; */ @Data public class UpdateUserPasswordParam { -// @NotEmpty + @NotEmpty @ApiModelProperty(value = "用户名", required = true) private String username; -// @NotEmpty + @NotEmpty @ApiModelProperty(value = "旧密码", required = true) private String oldPassword; -// @NotEmpty + @NotEmpty @ApiModelProperty(value = "新密码", required = true) private String newPassword; } diff --git a/src/main/java/com/teaching/backend/model/entity/ResourceRelationship.java b/src/main/java/com/teaching/backend/model/entity/ResourceRelationship.java deleted file mode 100644 index e8d9cad..0000000 --- a/src/main/java/com/teaching/backend/model/entity/ResourceRelationship.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.teaching.backend.model.entity; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.ToString; - -/** - * ClassName: ResourcesRelationship - * Package: com.teaching.backend.model.entity - * Description: - * - * @Author 姜钧瀚 - * @Create 2024/6/12 21:03 - * @Version 1.0 - */ -@Data -@ToString -@NoArgsConstructor -@AllArgsConstructor -public class ResourceRelationship { - private String Id; - private String courseid; - private String chapterid; - private String knowid; - private String resourceid; - - -} diff --git a/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java b/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java index 7e80163..0655c9e 100644 --- a/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java +++ b/src/main/java/com/teaching/backend/model/entity/chapter/Chapter.java @@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -42,14 +42,6 @@ public class Chapter implements Serializable { @ApiModelProperty(value = "创建日期") private LocalDateTime createTime; - @ApiModelProperty(value = "更新人") - private String updateBy; - - @ApiModelProperty(value = "更新日期") - private LocalDateTime updateTime; - - @ApiModelProperty(value = "所属部门") - private String sysOrgCode; @ApiModelProperty(value = "序号") private Double orderNum; @@ -67,21 +59,11 @@ public class Chapter implements Serializable { private String courseId; - @ApiModelProperty(value = "课程目标") - private String courseObjectivesId; @ApiModelProperty(value = "总学时") @Digits(integer = 10, fraction = 1, message = "总学时只能保留一位小数") private double totalClassHours; - @ApiModelProperty(value = "要求") - private String requirement; - - @ApiModelProperty(value = "线上学时") - private String onlineClassHours; - - @ApiModelProperty(value = "周次") - private String zc; @ApiModelProperty(value = "内部序号显示") private String numshow; @@ -90,9 +72,4 @@ public class Chapter implements Serializable { @TableField(exist = false) private List children; // 用于存储子章节 - @ApiModelProperty(value = "知识点") - @TableField(exist = false) - private List knowledgePoints; // 用于存储章节下的知识点 - - } diff --git a/src/main/java/com/teaching/backend/model/entity/chapter/TemporaryChapter.java b/src/main/java/com/teaching/backend/model/entity/chapter/TemporaryChapter.java index 756471b..66f5702 100644 --- a/src/main/java/com/teaching/backend/model/entity/chapter/TemporaryChapter.java +++ b/src/main/java/com/teaching/backend/model/entity/chapter/TemporaryChapter.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -89,7 +89,7 @@ public class TemporaryChapter implements Serializable { @ApiModelProperty(value = "知识点") @TableField(exist = false) - private List knowledgePoints; // 用于存储章节下的知识点 + private List knowledgePoints; // 用于存储章节下的知识点 } diff --git a/src/main/java/com/teaching/backend/model/entity/collection/CourseCollection.java b/src/main/java/com/teaching/backend/model/entity/collection/CourseCollection.java new file mode 100644 index 0000000..3311435 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/collection/CourseCollection.java @@ -0,0 +1,35 @@ +package com.teaching.backend.model.entity.collection; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 课程收藏 + */ +@TableName(value = "course_collection") +@Data +public class CourseCollection implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 课程 id + */ + private String courseId; + + /** + * 创建用户 id + */ + private Long userId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/teaching/backend/model/entity/collection/KnowCollection.java b/src/main/java/com/teaching/backend/model/entity/collection/KnowCollection.java new file mode 100644 index 0000000..954c648 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/collection/KnowCollection.java @@ -0,0 +1,35 @@ +package com.teaching.backend.model.entity.collection; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 课程收藏 + */ +@TableName(value = "know_collection") +@Data +public class KnowCollection implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 课程 id + */ + private Long knowId; + + /** + * 创建用户 id + */ + private Long userId; + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/teaching/backend/model/entity/courses/CourseObjectives.java b/src/main/java/com/teaching/backend/model/entity/courses/CourseObjectives.java index 383fcf9..45bab84 100644 --- a/src/main/java/com/teaching/backend/model/entity/courses/CourseObjectives.java +++ b/src/main/java/com/teaching/backend/model/entity/courses/CourseObjectives.java @@ -1,12 +1,15 @@ package com.teaching.backend.model.entity.courses; +import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.io.Serializable; @@ -14,7 +17,7 @@ import java.time.LocalDateTime; /** *

- * + * *

* * @author zjh @@ -25,6 +28,8 @@ import java.time.LocalDateTime; @Accessors(chain = true) @TableName("course_objectives") @ApiModel(value="CourseObjectives对象", description="") +@AllArgsConstructor +@NoArgsConstructor public class CourseObjectives implements Serializable { private static final long serialVersionUID = 1L; @@ -33,25 +38,29 @@ public class CourseObjectives implements Serializable { @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; - @ApiModelProperty(value = "父级节点") - private String pid; - - @ApiModelProperty(value = "是否有子节点") - private Integer hasChild; + @ApiModelProperty(value = "课程id") + private String courseId; @ApiModelProperty(value = "目标类型") private Integer type; + @ApiModelProperty(value = "排序字段") + private Integer ordernum; - @ApiModelProperty(value = "课程id") - private String courseId; - @ApiModelProperty(value = "毕业要求id") - private String requireid; + @ApiModelProperty(value = "目标名称") + private String name; + + @ApiModelProperty(value = "目标内容") + private String content; + + @ApiModelProperty(value = "总目标id") + private String pid; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; - @ApiModelProperty(value = "毕业要求") - private String temp; } diff --git a/src/main/java/com/teaching/backend/model/entity/courses/ObjectivesType.java b/src/main/java/com/teaching/backend/model/entity/courses/ObjectivesType.java deleted file mode 100644 index 62ffcf5..0000000 --- a/src/main/java/com/teaching/backend/model/entity/courses/ObjectivesType.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.teaching.backend.model.entity.courses; - -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; -import java.io.Serializable; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - *

- * - *

- * - * @author zjh - * @since 2024-06-05 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("objectives_type") -@ApiModel(value="ObjectivesType对象", description="") -public class ObjectivesType implements Serializable { - - private static final long serialVersionUID = 1L; - - @TableId(value = "id", type = IdType.AUTO) - @ApiModelProperty(value = "类型编码,不用输入,使用自动生成") - private Integer id; - - @ApiModelProperty(value = "类型名称",required = true) - private String typeName; - - -} diff --git a/src/main/java/com/teaching/backend/model/entity/courses/Testrr.java b/src/main/java/com/teaching/backend/model/entity/courses/Testrr.java new file mode 100644 index 0000000..3eebb93 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/courses/Testrr.java @@ -0,0 +1,52 @@ +package com.teaching.backend.model.entity.courses; + +import java.util.Scanner; + +/** + * @Author:youhang + * @Date:2024-10-08-19:10 + * @Description: + */ +public class Testrr { + public static void main(String[] args) { + System.out.println("jj"); + Scanner sc = new Scanner(System.in); + while (sc.hasNext()){ + String s = sc.nextLine(); + String t = reverse2(s); + System.out.println(t); + } + + } + // toCharArray + public static String reverse2(String str) { + char[] chars = str.toCharArray(); + int[] arr = new int[100]; + String reverse = ""; + int k = 0; + for(int i = 0; i < chars.length; i++){ + if(chars[i] == 'a' && chars[i+1] == 'l' && chars[i+2] == 'l'){ + arr[k++] = i+2; + } + } + int f = 1; + for (int i = chars.length - 1; i >= 0; i--) { + for (int j = 0; j < k; j++) { + if(i == arr[j]){ + reverse += Character.toLowerCase(chars[i-2]) ; + reverse += Character.toLowerCase(chars[i-1]); + reverse += Character.toLowerCase(chars[i]); + f = 0; + i--; + i--; + break; + } + } + if(f == 1){ + reverse += chars[i]; + } + f = 1; + } + return reverse; + } +} diff --git a/src/main/java/com/teaching/backend/model/entity/favour/SeCourseFavour.java b/src/main/java/com/teaching/backend/model/entity/favour/CourseFavour.java similarity index 84% rename from src/main/java/com/teaching/backend/model/entity/favour/SeCourseFavour.java rename to src/main/java/com/teaching/backend/model/entity/favour/CourseFavour.java index ea68f7a..314be1c 100644 --- a/src/main/java/com/teaching/backend/model/entity/favour/SeCourseFavour.java +++ b/src/main/java/com/teaching/backend/model/entity/favour/CourseFavour.java @@ -12,9 +12,9 @@ import java.io.Serializable; /** * 课程点赞 */ -@TableName(value = "se_course_favour") +@TableName(value = "course_favour") @Data -public class SeCourseFavour implements Serializable { +public class CourseFavour implements Serializable { /** * id */ @@ -31,6 +31,8 @@ public class SeCourseFavour implements Serializable { */ private String userId; + private DateTime createTime; + @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/teaching/backend/model/entity/favour/SeKnowFavour.java b/src/main/java/com/teaching/backend/model/entity/favour/KnowFavour.java similarity index 74% rename from src/main/java/com/teaching/backend/model/entity/favour/SeKnowFavour.java rename to src/main/java/com/teaching/backend/model/entity/favour/KnowFavour.java index 138e7ef..aa7354f 100644 --- a/src/main/java/com/teaching/backend/model/entity/favour/SeKnowFavour.java +++ b/src/main/java/com/teaching/backend/model/entity/favour/KnowFavour.java @@ -1,5 +1,6 @@ package com.teaching.backend.model.entity.favour; +import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -11,9 +12,9 @@ import java.io.Serializable; /** * 知识点点赞 */ -@TableName(value = "se_know_favour") +@TableName(value = "know_favour") @Data -public class SeKnowFavour implements Serializable { +public class KnowFavour implements Serializable { /** * id */ @@ -21,16 +22,17 @@ public class SeKnowFavour implements Serializable { private Long id; - /** * 创建知识点 id */ - private String knowId; + private Long knowId; /** * 创建用户 id */ - private String userId; + private Long userId; + + private DateTime createTime; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/teaching/backend/model/entity/favour/SeResourceFavour.java b/src/main/java/com/teaching/backend/model/entity/favour/ResourceFavour.java similarity index 79% rename from src/main/java/com/teaching/backend/model/entity/favour/SeResourceFavour.java rename to src/main/java/com/teaching/backend/model/entity/favour/ResourceFavour.java index 3e7147a..12e6c21 100644 --- a/src/main/java/com/teaching/backend/model/entity/favour/SeResourceFavour.java +++ b/src/main/java/com/teaching/backend/model/entity/favour/ResourceFavour.java @@ -11,9 +11,9 @@ import java.io.Serializable; /** * 资源点赞 */ -@TableName(value = "se_resource_favour") +@TableName(value = "resource_favour") @Data -public class SeResourceFavour implements Serializable { +public class ResourceFavour implements Serializable { /** * id */ @@ -24,12 +24,12 @@ public class SeResourceFavour implements Serializable { /** * 创建知识点 id */ - private Integer resourceId; + private Long resourceId; /** * 创建用户 id */ - private String userId; + private Long userId; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/teaching/backend/model/entity/know/Edge.java b/src/main/java/com/teaching/backend/model/entity/know/Edge.java index 47a3295..f35a1bd 100644 --- a/src/main/java/com/teaching/backend/model/entity/know/Edge.java +++ b/src/main/java/com/teaching/backend/model/entity/know/Edge.java @@ -19,3 +19,5 @@ public class Edge { private Integer sta; // 1 课程-章节 2 章节 - 章节 3 章节 - 知识点 4 点 - 点 } + + diff --git a/src/main/java/com/teaching/backend/model/entity/know/Know.java b/src/main/java/com/teaching/backend/model/entity/know/Know.java index 5342053..f6bfece 100644 --- a/src/main/java/com/teaching/backend/model/entity/know/Know.java +++ b/src/main/java/com/teaching/backend/model/entity/know/Know.java @@ -7,6 +7,7 @@ import org.springframework.data.neo4j.core.schema.Node; import org.springframework.data.neo4j.core.schema.Property; import java.io.Serializable; +import java.time.LocalDateTime; @Node @Data @@ -25,6 +26,27 @@ public class Know implements Serializable { @Property private String name; + + /** + * 课程id + */ + @Property + private String courseId; + + + /** + * chapterId + */ + @Property + private long chapterId; + + /** + * knowId + */ + @Property + private long knowId; + + /** * 信息 */ @@ -37,5 +59,9 @@ public class Know implements Serializable { @Property private double hour; + @Property + private String tags; + + } diff --git a/src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java b/src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java index 5691d8b..870e4de 100644 --- a/src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java +++ b/src/main/java/com/teaching/backend/model/entity/know/KnowChapter.java @@ -44,5 +44,7 @@ public class KnowChapter implements Serializable { private double hour; + + } diff --git a/src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java b/src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java index e856fb5..8e9a881 100644 --- a/src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java +++ b/src/main/java/com/teaching/backend/model/entity/know/KnowCourse.java @@ -35,6 +35,7 @@ public class KnowCourse implements Serializable { * 信息 */ private String info; + private double hour; diff --git a/src/main/java/com/teaching/backend/model/entity/know/KnowStr.java b/src/main/java/com/teaching/backend/model/entity/know/KnowStr.java index f648a42..5153024 100644 --- a/src/main/java/com/teaching/backend/model/entity/know/KnowStr.java +++ b/src/main/java/com/teaching/backend/model/entity/know/KnowStr.java @@ -20,11 +20,11 @@ public class KnowStr implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Long id; + private String courseId; - private String coursestr; - private String chapterstr; - private String knowstr; - private String edgestr; + private String nodes; + + private String edges; } diff --git a/src/main/java/com/teaching/backend/model/entity/knowtmp/KnowPoint.java b/src/main/java/com/teaching/backend/model/entity/knowtmp/KnowPoint.java new file mode 100644 index 0000000..b706ca5 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/knowtmp/KnowPoint.java @@ -0,0 +1,60 @@ +package com.teaching.backend.model.entity.knowtmp; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author author + * @since 2024-05-31 + */ +@Data +@TableName(value = "know") +@AllArgsConstructor +@NoArgsConstructor +public class KnowPoint implements Serializable { + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "名称") + private String name; + + @ApiModelProperty(value = "简介") + private String info; + + @ApiModelProperty(value = "排序") + private double ordernum; + + @ApiModelProperty(value = "章节id") + private Long chapterId; + + @ApiModelProperty(value = "学时") + private double hour; + + @ApiModelProperty(value = "标签") + private String tags; + + @ApiModelProperty(value = "课程id") + private String courseId; + + @ApiModelProperty(value = "创建日期") + private LocalDateTime createTime; + +} diff --git a/src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java b/src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java deleted file mode 100644 index 1e3a0ab..0000000 --- a/src/main/java/com/teaching/backend/model/entity/knowtmp/Knowtmp.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.teaching.backend.model.entity.knowtmp; - -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.Data; - -import java.io.Serializable; - -/** - *

- * - *

- * - * @author author - * @since 2024-05-31 - */ -@Data -@TableName(value = "knowtmp") -public class Knowtmp implements Serializable { - - @TableField(exist = false) - private static final long serialVersionUID = 1L; - - @TableId(type = IdType.AUTO) - private Long id; - - private String name; - - private String info; - - private Integer ordernum; - - private Long chapterid; - - private double hour; - -} diff --git a/src/main/java/com/teaching/backend/model/entity/learn/CourseLearn.java b/src/main/java/com/teaching/backend/model/entity/learn/CourseLearn.java new file mode 100644 index 0000000..cf1906b --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/learn/CourseLearn.java @@ -0,0 +1,48 @@ +package com.teaching.backend.model.entity.learn; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 课程学习 + */ +@TableName(value = "course_learn") +@Data +public class CourseLearn implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 课程 id + */ + private String courseId; + + /** + * 创建用户 id + */ + private Long userId; + + /** + * 最近学习时间 + */ + @TableField("learn_time") + private LocalDateTime learnTime; + + /** + * 状态 + */ + private Integer status; + + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/teaching/backend/model/entity/learn/KnowLearn.java b/src/main/java/com/teaching/backend/model/entity/learn/KnowLearn.java new file mode 100644 index 0000000..e63f1f7 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/learn/KnowLearn.java @@ -0,0 +1,45 @@ +package com.teaching.backend.model.entity.learn; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 课程收藏 + */ +@TableName(value = "know_learn") +@Data +public class KnowLearn implements Serializable { + /** + * id + */ + @TableId(type = IdType.AUTO) + private Long id; + + /** + * 课程 id + */ + @TableField("know_id") + private Long knowId; + + /** + * 创建用户 id + */ + @TableField("user_id") + private Long userId; + + /** + * 创建用户 id + */ + @TableField("learn_time") + private LocalDateTime learnTime; + + + @TableField(exist = false) + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/teaching/backend/model/entity/resource/ResourceMysql.java b/src/main/java/com/teaching/backend/model/entity/resource/ResourceMysql.java index a6e6b26..dace61f 100644 --- a/src/main/java/com/teaching/backend/model/entity/resource/ResourceMysql.java +++ b/src/main/java/com/teaching/backend/model/entity/resource/ResourceMysql.java @@ -1,13 +1,16 @@ package com.teaching.backend.model.entity.resource; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import java.io.Serializable; +import java.time.LocalDateTime; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.EqualsAndHashCode; +import io.swagger.models.auth.In; +import lombok.*; import lombok.experimental.Accessors; /** @@ -19,26 +22,18 @@ import lombok.experimental.Accessors; * @since 2024-09-02 */ @Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) @TableName("resource") @ApiModel(value="Resource对象", description="") +@AllArgsConstructor +@NoArgsConstructor public class ResourceMysql implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "主键") - @TableId(value = "id", type = IdType.ASSIGN_ID) - private String id; - - @ApiModelProperty(value = "课程id") - private String courseId; + @TableId(value = "id", type = IdType.AUTO) + private Long id; - @ApiModelProperty(value = "章节id") - private String chapterId; - - @ApiModelProperty(value = "知识点id") - private String knowledgeId; @ApiModelProperty(value = "资源名称") private String name; @@ -47,7 +42,7 @@ public class ResourceMysql implements Serializable { private Integer type; @ApiModelProperty(value = "资源路径") - private String path; + private String url; @ApiModelProperty(value = "资源状态") private Integer status; @@ -58,8 +53,7 @@ public class ResourceMysql implements Serializable { @ApiModelProperty(value = "简介") private String description; - @ApiModelProperty(value = "封面") - private String img; - + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; } diff --git a/src/main/java/com/teaching/backend/model/entity/resource/ResourceRelationship.java b/src/main/java/com/teaching/backend/model/entity/resource/ResourceRelationship.java new file mode 100644 index 0000000..fda4ef7 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/entity/resource/ResourceRelationship.java @@ -0,0 +1,40 @@ +package com.teaching.backend.model.entity.resource; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +/** + * @Author:youhang + * @Date:2024-10-21-15:53 + * @Description: + */ + +@Data +@TableName("resource_relationship") +@ApiModel(value="resource_relationship对象", description="") +public class ResourceRelationship { + + @ApiModelProperty(value = "主键") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + @ApiModelProperty(value = "知识点Id") + private Long knowId; + + @ApiModelProperty(value = "资源Id") + private Long resourceId; + + @ApiModelProperty(value = "课程Id") + private String courseId; + + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; +} diff --git a/src/main/java/com/teaching/backend/model/entity/resource/Resources.java b/src/main/java/com/teaching/backend/model/entity/resource/Resources.java index ab33fdb..94e0f73 100644 --- a/src/main/java/com/teaching/backend/model/entity/resource/Resources.java +++ b/src/main/java/com/teaching/backend/model/entity/resource/Resources.java @@ -1,5 +1,6 @@ package com.teaching.backend.model.entity.resource; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.data.neo4j.core.schema.GeneratedValue; import org.springframework.data.neo4j.core.schema.Id; @@ -21,14 +22,22 @@ public class Resources { @Property private String name; - @Property private Integer status; @Property private Integer type; + @Property + private Long resourceId; @Property private String url; + + @Property + private String tags; + + @Property + private String description; + } diff --git a/src/main/java/com/teaching/backend/model/entity/system/SystemSetting.java b/src/main/java/com/teaching/backend/model/entity/system/SystemSetting.java index a9c6324..91229c1 100644 --- a/src/main/java/com/teaching/backend/model/entity/system/SystemSetting.java +++ b/src/main/java/com/teaching/backend/model/entity/system/SystemSetting.java @@ -45,6 +45,9 @@ public class SystemSetting implements Serializable { //QQ private String qqNumber; + //技术支持 + private String tecNumber; + //邮箱 private String mailbox; diff --git a/src/main/java/com/teaching/backend/model/entity/thumb/SeCourseThumb.java b/src/main/java/com/teaching/backend/model/entity/thumb/CourseThumb.java similarity index 84% rename from src/main/java/com/teaching/backend/model/entity/thumb/SeCourseThumb.java rename to src/main/java/com/teaching/backend/model/entity/thumb/CourseThumb.java index e0dbbdf..7871968 100644 --- a/src/main/java/com/teaching/backend/model/entity/thumb/SeCourseThumb.java +++ b/src/main/java/com/teaching/backend/model/entity/thumb/CourseThumb.java @@ -12,9 +12,9 @@ import java.util.Date; /** * 课程点赞 */ -@TableName(value = "se_course_thumb") +@TableName(value = "course_thumb") @Data -public class SeCourseThumb implements Serializable { +public class CourseThumb implements Serializable { /** * id */ @@ -29,7 +29,7 @@ public class SeCourseThumb implements Serializable { /** * 创建用户 id */ - private String userId; + private Long userId; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/teaching/backend/model/entity/thumb/SeKnowThumb.java b/src/main/java/com/teaching/backend/model/entity/thumb/KnowThumb.java similarity index 80% rename from src/main/java/com/teaching/backend/model/entity/thumb/SeKnowThumb.java rename to src/main/java/com/teaching/backend/model/entity/thumb/KnowThumb.java index 68c8bf7..2ab2ce8 100644 --- a/src/main/java/com/teaching/backend/model/entity/thumb/SeKnowThumb.java +++ b/src/main/java/com/teaching/backend/model/entity/thumb/KnowThumb.java @@ -11,9 +11,9 @@ import java.io.Serializable; /** * 知识点点赞 */ -@TableName(value = "se_know_thumb") +@TableName(value = "know_thumb") @Data -public class SeKnowThumb implements Serializable { +public class KnowThumb implements Serializable { /** * id */ @@ -24,12 +24,12 @@ public class SeKnowThumb implements Serializable { /** * 创建知识点 id */ - private Integer knowId; + private Long knowId; /** * 创建用户 id */ - private String userId; + private Long userId; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/teaching/backend/model/entity/thumb/SeResourceThumb.java b/src/main/java/com/teaching/backend/model/entity/thumb/ResourceThumb.java similarity index 79% rename from src/main/java/com/teaching/backend/model/entity/thumb/SeResourceThumb.java rename to src/main/java/com/teaching/backend/model/entity/thumb/ResourceThumb.java index 0a82c7f..5f07c75 100644 --- a/src/main/java/com/teaching/backend/model/entity/thumb/SeResourceThumb.java +++ b/src/main/java/com/teaching/backend/model/entity/thumb/ResourceThumb.java @@ -11,9 +11,9 @@ import java.io.Serializable; /** * 资源点赞 */ -@TableName(value = "se_resource_thumb") +@TableName(value = "resource_thumb") @Data -public class SeResourceThumb implements Serializable { +public class ResourceThumb implements Serializable { /** * id */ @@ -24,12 +24,12 @@ public class SeResourceThumb implements Serializable { /** * 创建知识点 id */ - private Integer resourceId; + private Long resourceId; /** * 创建用户 id */ - private String userId; + private Long userId; @TableField(exist = false) private static final long serialVersionUID = 1L; diff --git a/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsStudentManage.java b/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsStudentManage.java index 7264566..af0ca7f 100644 --- a/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsStudentManage.java +++ b/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsStudentManage.java @@ -3,10 +3,12 @@ package com.teaching.backend.model.entity.umsAdmin; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; @@ -22,11 +24,12 @@ import java.time.LocalDateTime; @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) +@ApiModel(description = "编辑学生信息实体") public class UmsStudentManage implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "id", type = IdType.AUTO) + @NotNull private Integer id; //用户名 diff --git a/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsUser.java b/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsUser.java index bf16927..cfaeb0a 100644 --- a/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsUser.java +++ b/src/main/java/com/teaching/backend/model/entity/umsAdmin/UmsUser.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Builder; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.time.LocalDateTime; diff --git a/src/main/java/com/teaching/backend/model/query/CourseQuery.java b/src/main/java/com/teaching/backend/model/query/CourseQuery.java index 0e523dc..e9e2bf7 100644 --- a/src/main/java/com/teaching/backend/model/query/CourseQuery.java +++ b/src/main/java/com/teaching/backend/model/query/CourseQuery.java @@ -6,20 +6,21 @@ import lombok.Data; import lombok.EqualsAndHashCode; import org.springframework.web.bind.annotation.RequestParam; +import javax.validation.constraints.NotNull; import java.util.List; @EqualsAndHashCode(callSuper = true) @Data @ApiModel(description = "课程查询条件实体") public class CourseQuery extends PageQuery { + @ApiModelProperty("课程名称关键字") private String name; @ApiModelProperty(value = "用户的userId",required = true) + @NotNull private String userId; -// @ApiModelProperty(value = "用户的角色id",required = true) -// private List roleId; @ApiModelProperty("课程任课教师") private String teacher; diff --git a/src/main/java/com/teaching/backend/model/vo/courses/CourseListVO.java b/src/main/java/com/teaching/backend/model/vo/courses/CourseListVO.java new file mode 100644 index 0000000..20a80c8 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/courses/CourseListVO.java @@ -0,0 +1,29 @@ +package com.teaching.backend.model.vo.courses; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(description = "课程VO实体") +public class CourseListVO { + + /** + * 内部编号 + */ + @ApiModelProperty("id") + private String id; + + /** + * 课程封面 + */ + @ApiModelProperty("图片") + private String img; + + /** + * 课程名称 + */ + @ApiModelProperty(value = "课程名称") + private String name; + +} diff --git a/src/main/java/com/teaching/backend/model/vo/courses/CourseObjectivesTreeVO.java b/src/main/java/com/teaching/backend/model/vo/courses/CourseObjectivesTreeVO.java deleted file mode 100644 index 6fa8afd..0000000 --- a/src/main/java/com/teaching/backend/model/vo/courses/CourseObjectivesTreeVO.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.teaching.backend.model.vo.courses; - -import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.entity.courses.ObjectiveContents; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.io.Serializable; -import java.util.List; - -@Data -@ApiModel(description = "课程目标参数实体") -public class CourseObjectivesTreeVO extends CourseObjectives implements Serializable { - - - @ApiModelProperty(value = "目标名称") - private String name; - - @ApiModelProperty(value = "目标内容列表") - private List contents; - - @ApiModelProperty(value = "课程目标") - private List courseObjectivesTrees; - -} diff --git a/src/main/java/com/teaching/backend/model/vo/courses/CourseVO.java b/src/main/java/com/teaching/backend/model/vo/courses/CourseVO.java new file mode 100644 index 0000000..058e715 --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/courses/CourseVO.java @@ -0,0 +1,91 @@ +package com.teaching.backend.model.vo.courses; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(description = "课程实体类") +public class CourseVO { + + /** + * 创建人 教师id + */ + @ApiModelProperty(value = "负责教师",required = true) + private String teacher; + + /** + * 课程封面 + */ + @ApiModelProperty(value = "图片",required = true) + private String img; + + /** + * 课程类别 专业教育 通识教育 + */ + @ApiModelProperty(value = "课程类别:专业教育1 通识教育2",required = true) + private String category; + + /** + * 课程性质 必修选修任修 + */ + @ApiModelProperty(value = "课程性质:必修1 选修2 任修3",required = true) + private String nature; + + /** + * 课程名称 + */ + @ApiModelProperty(value = "课程名称",required = true) + private String name; + + /** + * 课程编码 + */ + @ApiModelProperty(value = "课程编码",required = true) + private String code; + + + /** + * 课程学分 + */ + @ApiModelProperty(value = "课程学分",required = true) + private BigDecimal credit; + + /** + * 课程学时 + */ + @ApiModelProperty(value = "课程学时",required = true) + private Integer classhours; + + /** + * 考核类型 考试 考查 + */ + @ApiModelProperty(value = "考核类型:考试1 考查2",required = true) + private String assessmenttype; + + /** + * 考核方式 开卷 闭卷 其他 + */ + @ApiModelProperty(value = "考核方式:开卷1 闭卷2 其他3",required = true) + private String assessmentway; + + /** + * 教学方法 + */ + @ApiModelProperty("教学方法") + private String teachermethod; + + /** + * 教学方式 + */ + @ApiModelProperty("教学方式") + private String teacherway; + + /** + * 课程简介 + */ + @ApiModelProperty("课程简介") + private String description; +} diff --git a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPath.java b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPath.java new file mode 100644 index 0000000..03b22fa --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPath.java @@ -0,0 +1,15 @@ +package com.teaching.backend.model.vo.knowGraph; + +import lombok.Data; + +import java.util.List; +@Data +public class KnowPath { + private String courseId; + private String courseName; + private List nodeList; + private Integer nodesCount; + private double totalHours; + + +} diff --git a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPathVO.java b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPathVO.java index f2f7b0c..f101bef 100644 --- a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPathVO.java +++ b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowPathVO.java @@ -15,7 +15,8 @@ import java.util.List; @AllArgsConstructor @NoArgsConstructor public class KnowPathVO { - private ListnodeList; - private Double weight; + private List KnowPath; + private Long totalPage; + private Long currentpage; } diff --git a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java index c6bdbc3..570220d 100644 --- a/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java +++ b/src/main/java/com/teaching/backend/model/vo/knowGraph/KnowVO.java @@ -25,6 +25,11 @@ public class KnowVO implements Serializable { */ private String color; +// /** +// * id +// */ +// private Long knowId; + } diff --git a/src/main/java/com/teaching/backend/model/vo/knowGraph/NodesVO.java b/src/main/java/com/teaching/backend/model/vo/knowGraph/NodesVO.java new file mode 100644 index 0000000..56cb3ff --- /dev/null +++ b/src/main/java/com/teaching/backend/model/vo/knowGraph/NodesVO.java @@ -0,0 +1,61 @@ +package com.teaching.backend.model.vo.knowGraph; + +import com.teaching.backend.model.entity.know.Know; +import lombok.Data; +import org.springframework.data.neo4j.core.schema.GeneratedValue; +import org.springframework.data.neo4j.core.schema.Id; +import org.springframework.data.neo4j.core.schema.Property; + +import java.io.Serializable; + + +@Data +public class NodesVO implements Serializable { + + private Long id; + + /** + * 知识点名称 + */ + + private String name; + + + /** + * 课程id + */ + + private String courseId; + + + + /** + * knowId + */ + + private long knowId; + + + /** + * 信息 + */ + + private String info; + + /** + * 学时 + */ + + private double hour; + + + private String tags; + + + private Double Score; + + private Integer cnt = 0; + + +} + diff --git a/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java b/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java index acd047f..1e4ea95 100644 --- a/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java +++ b/src/main/java/com/teaching/backend/model/vo/records/CourseLearningRecordsVo.java @@ -32,7 +32,7 @@ public class CourseLearningRecordsVo { /** * 学习人数 */ - private Integer number; + private Long number; /** * 封面 */ diff --git a/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java b/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java index 216885e..dc17749 100644 --- a/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java +++ b/src/main/java/com/teaching/backend/model/vo/records/KnowledgeLearningRecordVo.java @@ -29,7 +29,7 @@ public class KnowledgeLearningRecordVo { /** * 学习人数 */ - private Integer number; + private Long number; /** * 学习时间 */ @@ -37,5 +37,5 @@ public class KnowledgeLearningRecordVo { /** * 完成状态 */ - private Integer finish; + private Integer status; } diff --git a/src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java b/src/main/java/com/teaching/backend/model/vo/resources/ResourceUploadVO.java similarity index 79% rename from src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java rename to src/main/java/com/teaching/backend/model/vo/resources/ResourceUploadVO.java index 02fc3aa..5845362 100644 --- a/src/main/java/com/teaching/backend/model/dto/resource/ResourceUploadDto.java +++ b/src/main/java/com/teaching/backend/model/vo/resources/ResourceUploadVO.java @@ -1,4 +1,4 @@ -package com.teaching.backend.model.dto.resource; +package com.teaching.backend.model.vo.resources; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode -public class ResourceUploadDto { +public class ResourceUploadVO { private String url; diff --git a/src/main/java/com/teaching/backend/model/vo/system/SystemSettingVO.java b/src/main/java/com/teaching/backend/model/vo/system/SystemSettingVO.java index 6acc644..c79d93a 100644 --- a/src/main/java/com/teaching/backend/model/vo/system/SystemSettingVO.java +++ b/src/main/java/com/teaching/backend/model/vo/system/SystemSettingVO.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.io.Serializable; +import java.util.List; @Data public class SystemSettingVO implements Serializable { @@ -38,13 +39,15 @@ public class SystemSettingVO implements Serializable { private String recordNumber; //备案信息 - private String recordInformation; + private List recordInformation; //QQ private String qqNumber; //邮箱 private String mailbox; + //技术支持 + private String tecNumber; //手机号 private String phone; diff --git a/src/main/java/com/teaching/backend/service/Know/KnowService.java b/src/main/java/com/teaching/backend/service/Know/KnowService.java index 449317c..fbb35f8 100644 --- a/src/main/java/com/teaching/backend/service/Know/KnowService.java +++ b/src/main/java/com/teaching/backend/service/Know/KnowService.java @@ -1,12 +1,15 @@ package com.teaching.backend.service.Know; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.vo.knowGraph.KnowPathVO; +import com.teaching.backend.model.query.PageQuery; import com.teaching.backend.model.dto.Know.*; import com.teaching.backend.model.entity.know.*; +import com.teaching.backend.model.vo.knowGraph.KnowPathVO; import com.teaching.backend.model.vo.knowGraph.KnowVO; +import com.teaching.backend.model.vo.knowGraph.NodesVO; import java.util.List; +import java.util.Map; /** * @Author:youhang @@ -16,8 +19,9 @@ import java.util.List; public interface KnowService { public BaseResponse getDepthNodeByCourseId(String CourseId,Long depth); public BaseResponse getNodeByDepth(long id,Long depth); - - BaseResponse> knowLearnPath(String corseId); + BaseResponse> learnpath(String corseId); + BaseResponse PathPage(KnowPathDTO knowPathDTO); + void knowLearnPath(String corseId,Long userId); BaseResponseknowLearnPathGraph(String corseId); BaseResponse updateLinks(List linksList); @@ -26,7 +30,7 @@ public interface KnowService { //通过courseId 显示图的JSON - BaseResponse showGraphJson(String courseId); + BaseResponse generateGraphJson(String courseId); //获取课程下的所有知识点 diff --git a/src/main/java/com/teaching/backend/service/chapter/IChapterService.java b/src/main/java/com/teaching/backend/service/chapter/IChapterService.java index 491d60c..62ae4fc 100644 --- a/src/main/java/com/teaching/backend/service/chapter/IChapterService.java +++ b/src/main/java/com/teaching/backend/service/chapter/IChapterService.java @@ -3,8 +3,11 @@ package com.teaching.backend.service.chapter; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.chapter.ChapterAndNodeTreeVO; import com.teaching.backend.model.dto.chapter.ChapterDTO; import com.teaching.backend.model.dto.chapter.ChapterExcelDTO; +import com.teaching.backend.model.dto.chapter.ChapterUpdateDTO; import com.teaching.backend.model.entity.chapter.Chapter; import com.teaching.backend.model.vo.chapter.ChapterVo; @@ -31,7 +34,7 @@ public interface IChapterService extends IService { Boolean deleteAfterUpdate(String id); - List getChapterTree(String courseId); + List getChapterTree(String courseId); BigDecimal saveChapter(ChapterDTO chapterDTO); @@ -40,13 +43,12 @@ public interface IChapterService extends IService { Long saveExcelChapter2(ChapterDTO chapterDTO, boolean b); - void insertChapter(Long chapterId1, Long chapterId2, ChapterDTO newChapterDTO); void deleteChapter(Long id); - void upChapter(Long chapterId); + BaseResponse upChapter(Long chapterId); - void downChapter(Long chapterId); + BaseResponse downChapter(Long chapterId); void downLoadXlsx(HttpServletResponse response, String courseId) throws IOException; @@ -62,4 +64,5 @@ public interface IChapterService extends IService { Page getAllChapters(int page, int pageSize); Chapter selectChapter(Long chapterId); + } diff --git a/src/main/java/com/teaching/backend/service/collection/CourseCollectionService.java b/src/main/java/com/teaching/backend/service/collection/CourseCollectionService.java new file mode 100644 index 0000000..64152f3 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/collection/CourseCollectionService.java @@ -0,0 +1,26 @@ +package com.teaching.backend.service.collection; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.entity.collection.CourseCollection; +import com.teaching.backend.model.entity.thumb.KnowThumb; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface CourseCollectionService { + + /** + * 点赞 + * + + * @return + */ + BaseResponse doCourseCollection(String courseId, Long userId); + + BaseResponse collectionCount(String courseId); + + +} diff --git a/src/main/java/com/teaching/backend/service/collection/KnowCollectionService.java b/src/main/java/com/teaching/backend/service/collection/KnowCollectionService.java new file mode 100644 index 0000000..d845c47 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/collection/KnowCollectionService.java @@ -0,0 +1,23 @@ +package com.teaching.backend.service.collection; + +import com.teaching.backend.common.BaseResponse; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface KnowCollectionService { + + /** + * 点赞 + * + + * @return + */ + BaseResponse doKnowCollection(Long knowId, Long userId); + + BaseResponse collectionCount(Long knowId); + + +} diff --git a/src/main/java/com/teaching/backend/service/courses/ICourseObjectivesService.java b/src/main/java/com/teaching/backend/service/courses/ICourseObjectivesService.java index 55c1783..4670350 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICourseObjectivesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICourseObjectivesService.java @@ -1,10 +1,11 @@ package com.teaching.backend.service.courses; import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.dto.courses.CourseObjectivesDTO; import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; -import com.teaching.backend.model.vo.courses.CourseObjectivesVO; +import io.swagger.models.auth.In; + import java.util.List; @@ -23,21 +24,26 @@ public interface ICourseObjectivesService extends IService { * @param courseObjectivesDTO * @return */ - String addObjectives(CourseObjectivesDTO courseObjectivesDTO); + BaseResponse addObjectives(CourseObjectivesDTO courseObjectivesDTO); /** * 删除课程目标 * @param id * @return */ - String deleteObjectives(String id); + BaseResponse deleteObjectives(String id); - /** - * 查询课程目标以及相关内容 - * @param id - * @return - */ - List queryCourseObjectivesTree(String id); + CourseObjectives selectObjectives(String id); + + List selectObjectivesList(String id); + + List selectObjectivesTop(String id); + + + BaseResponse knowcount(String id); + + BaseResponse knowtime(String id); + + BaseResponse knowtimepercent(String courseId,String id); - List queryCourseObjectivesForAdd(String courseId); } diff --git a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java index 5f3d7d5..0bf5a40 100644 --- a/src/main/java/com/teaching/backend/service/courses/ICoursesService.java +++ b/src/main/java/com/teaching/backend/service/courses/ICoursesService.java @@ -2,21 +2,18 @@ package com.teaching.backend.service.courses; import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.dto.courses.CoursesDTO; +import com.teaching.backend.model.dto.courses.CoursesUpdateDTO; import com.teaching.backend.model.dto.courses.PageDTO; -import com.teaching.backend.model.dto.umsAdmin.UmsStudentPageQueryDTO; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.umsAdmin.UmsStudent; import com.teaching.backend.model.entity.umsAdmin.UmsStudentManage; -import com.teaching.backend.model.entity.umsAdmin.UmsUser; import com.teaching.backend.model.query.CourseQuery; +import com.teaching.backend.model.vo.courses.CourseVO; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.model.vo.message.CourseUserInfVO; -import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; -import javax.servlet.http.HttpServletResponse; -import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -36,20 +33,20 @@ public interface ICoursesService extends IService { PageDTO queryCourses(CourseQuery courseQuery); + BaseResponse getByIdCourse(String id); - void deleteBatchByIds(String id); - int countHours(String id); - - List getPagePageSize(int page, int pageSize); + BaseResponse deleteBatchByIds(String id); - void updateCourse(CoursesDTO coursesDTO); + int countHours(String id); - void down(HttpServletResponse response, String id) throws Exception; + void updateCourse(CoursesUpdateDTO coursesUpdateDTO); +// +// void down(HttpServletResponse response, String id) throws Exception; CoursesVO getByIdCourseVo(String courseid); - Map getPagePageSize2(int page, int pageSize); + Map getPagePageSize(int page, int pageSize); List queryStudentList(String userId); LinkedHashSet queryTeacherByStudentLearningRecordList(String userId); @@ -57,4 +54,7 @@ public interface ICoursesService extends IService { List queryTeacherByStudentList(String userId); List getUserInfByCourse(Long userId); + + BaseResponse editIntroduce(String courseId , String introduce); + } diff --git a/src/main/java/com/teaching/backend/service/courses/IObjectiveContentKnowService.java b/src/main/java/com/teaching/backend/service/courses/IObjectiveContentKnowService.java deleted file mode 100644 index b6b1207..0000000 --- a/src/main/java/com/teaching/backend/service/courses/IObjectiveContentKnowService.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.teaching.backend.service.courses; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.teaching.backend.model.dto.courses.ObjectiveContentKnowDTO; -import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; -import com.teaching.backend.model.vo.courses.ObjectiveContentKnowVO; - -/** - *

- * 服务类 - *

- * - * @author zjh - * @since 2024-06-13 - */ -public interface IObjectiveContentKnowService extends IService { - - String saveKnowsWithObjectiveContent(ObjectiveContentKnowDTO objectiveContentKnowDTO); - - ObjectiveContentKnowVO getCountData(String objectiveId); -} diff --git a/src/main/java/com/teaching/backend/service/courses/IObjectivesTypeService.java b/src/main/java/com/teaching/backend/service/courses/IObjectivesTypeService.java deleted file mode 100644 index 8bd1c9a..0000000 --- a/src/main/java/com/teaching/backend/service/courses/IObjectivesTypeService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.teaching.backend.service.courses; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.teaching.backend.model.entity.courses.ObjectivesType; - -/** - *

- * 服务类 - *

- * - * @author zjh - * @since 2024-06-05 - */ -public interface IObjectivesTypeService extends IService { - -} diff --git a/src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java b/src/main/java/com/teaching/backend/service/favour/CourseFavourService.java similarity index 88% rename from src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java rename to src/main/java/com/teaching/backend/service/favour/CourseFavourService.java index c748c7f..ae7a6ba 100644 --- a/src/main/java/com/teaching/backend/service/favour/SeCourseFavourService.java +++ b/src/main/java/com/teaching/backend/service/favour/CourseFavourService.java @@ -5,10 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.favour.SeCourseFavour; +import com.teaching.backend.model.entity.favour.CourseFavour; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; -import org.springframework.stereotype.Service; import java.util.List; @@ -18,7 +17,7 @@ import java.util.List; * @Description: */ -public interface SeCourseFavourService extends IService { +public interface CourseFavourService extends IService { /** * 收藏/取消收藏 diff --git a/src/main/java/com/teaching/backend/service/favour/SeKnowFavourService.java b/src/main/java/com/teaching/backend/service/favour/KnowFavourService.java similarity index 59% rename from src/main/java/com/teaching/backend/service/favour/SeKnowFavourService.java rename to src/main/java/com/teaching/backend/service/favour/KnowFavourService.java index 8d87629..29fd428 100644 --- a/src/main/java/com/teaching/backend/service/favour/SeKnowFavourService.java +++ b/src/main/java/com/teaching/backend/service/favour/KnowFavourService.java @@ -2,14 +2,14 @@ package com.teaching.backend.service.favour; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.entity.favour.SeKnowFavour; +import com.teaching.backend.model.entity.favour.KnowFavour; /** * @Author:youhang * @Date:2024-05-30-20:22 * @Description: */ -public interface SeKnowFavourService extends IService { +public interface KnowFavourService extends IService { /** * 收藏 @@ -17,6 +17,6 @@ public interface SeKnowFavourService extends IService { * @param userId * @return */ - BaseResponse doKnowFavour(String resourceId, String userId); + BaseResponse doKnowFavour(Long knowId, Long userId); } diff --git a/src/main/java/com/teaching/backend/service/favour/ResourceFavourService.java b/src/main/java/com/teaching/backend/service/favour/ResourceFavourService.java new file mode 100644 index 0000000..6965cf8 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/favour/ResourceFavourService.java @@ -0,0 +1,30 @@ +package com.teaching.backend.service.favour; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.entity.favour.ResourceFavour; +import com.teaching.backend.model.entity.resource.ResourceMysql; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface ResourceFavourService extends IService { + + /** + * 收藏 + * + * @param userId + * @return + */ + BaseResponse doResourceFavour( Long resourceId, Long userId); + + + + public Page listCourseFavourByPage(Long userId, Integer type, Integer page, Integer pageSize); + +} diff --git a/src/main/java/com/teaching/backend/service/favour/SeResourceFavourService.java b/src/main/java/com/teaching/backend/service/favour/SeResourceFavourService.java deleted file mode 100644 index 38124f3..0000000 --- a/src/main/java/com/teaching/backend/service/favour/SeResourceFavourService.java +++ /dev/null @@ -1,28 +0,0 @@ -//package com.teaching.backend.service.favour; -// -//import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -//import com.baomidou.mybatisplus.extension.service.IService; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.model.entity.resource.CourseResources; -//import com.teaching.backend.model.entity.favour.SeResourceFavour; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//public interface SeResourceFavourService extends IService { -// -// /** -// * 收藏 -// * -// * @param userId -// * @return -// */ -// BaseResponse doResourceFavour( Integer resourceId, String userId); -// -// -// -// public Page listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize); -// -//} diff --git a/src/main/java/com/teaching/backend/service/impl/Collection/CourseCollectionServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/Collection/CourseCollectionServiceImpl.java new file mode 100644 index 0000000..495fa76 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/Collection/CourseCollectionServiceImpl.java @@ -0,0 +1,103 @@ +package com.teaching.backend.service.impl.Collection; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.collection.CourseCollectionMapper; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.mapper.thumb.KnowThumbMapper; +import com.teaching.backend.model.entity.collection.CourseCollection; +import com.teaching.backend.model.entity.courses.Courses; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.entity.thumb.CourseThumb; +import com.teaching.backend.model.entity.thumb.KnowThumb; +import com.teaching.backend.service.collection.CourseCollectionService; +import com.teaching.backend.service.thumb.KnowThumbService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class CourseCollectionServiceImpl implements CourseCollectionService { + @Autowired + CoursesMapper coursesMapper; + + @Autowired + KnowtmpMapper knowtmpMapper; + + @Autowired + private CourseCollectionMapper courseCollectionMapper; + + + @Override + public BaseResponse doCourseCollection(String courseId, Long userId) { + boolean result = false; + // 查询知识点 + Courses courses = coursesMapper.selectById(courseId); + if(courses == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程不存在"); + } + CourseCollection courseCollection = new CourseCollection(); + courseCollection.setCourseId(courseId); + courseCollection.setUserId(userId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("courseId",courseId); + queryWrapper.eq("usertId",userId); + CourseCollection oldcourseCollection = courseCollectionMapper.selectOne(queryWrapper); + + //已点赞 + if (oldcourseCollection != null) { + // 取消点赞 删除记录 + int res = courseCollectionMapper.deleteById(oldcourseCollection); + if (res > 0) { + return ResultUtils.success("取消点赞成功"); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } else { + // 每个用户串行点赞 + // 锁必须要包裹住事务方法 + Lock lock = new ReentrantLock(); + lock.lock(); + try { + int res = courseCollectionMapper.insert(courseCollection); + } catch (Exception e) { + throw new BusinessException(ErrorCode.OPERATION_ERROR); + } finally { + lock.unlock(); + return ResultUtils.success("点赞成功"); + } + } + } + + @Override + public BaseResponse collectionCount(String courseId) { + //从数据库中校验是否存在courseid + Courses courses = coursesMapper.selectById(courseId); + if(courses == null){ + return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("course_id", courseId); + long count = courseCollectionMapper.selectCount(queryWrapper); + if (count == 0) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); + } else { + return ResultUtils.success(count); + } + } + +} diff --git a/src/main/java/com/teaching/backend/service/impl/Collection/KnowCollectionServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/Collection/KnowCollectionServiceImpl.java new file mode 100644 index 0000000..33105f7 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/Collection/KnowCollectionServiceImpl.java @@ -0,0 +1,99 @@ +package com.teaching.backend.service.impl.Collection; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.collection.CourseCollectionMapper; +import com.teaching.backend.mapper.collection.KnowCollectionMapper; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.model.entity.collection.CourseCollection; +import com.teaching.backend.model.entity.collection.KnowCollection; +import com.teaching.backend.model.entity.courses.Courses; +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.service.collection.CourseCollectionService; +import com.teaching.backend.service.collection.KnowCollectionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class KnowCollectionServiceImpl implements KnowCollectionService { + + @Autowired + KnowtmpMapper knowtmpMapper; + + @Autowired + private KnowCollectionMapper knowCollectionMapper; + + + @Override + public BaseResponse doKnowCollection(Long knowId, Long userId) { + // 查询知识点 + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + if(knowPoint == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + KnowCollection knowCollection = new KnowCollection(); + knowCollection.setKnowId(knowId); + knowCollection.setUserId(userId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("knowId",knowId); + queryWrapper.eq("usertId",userId); + KnowCollection oldknowCollection = knowCollectionMapper.selectOne(queryWrapper); + + //已点赞 + if (oldknowCollection != null) { + // 取消点赞 删除记录 + int res = knowCollectionMapper.deleteById(oldknowCollection); + if (res > 0) { + return ResultUtils.success("取消收藏成功"); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } else { + // 每个用户串行点赞 + // 锁必须要包裹住事务方法 + Lock lock = new ReentrantLock(); + lock.lock(); + try { + int res = knowCollectionMapper.insert(knowCollection); + } catch (Exception e) { + throw new BusinessException(ErrorCode.OPERATION_ERROR); + } finally { + lock.unlock(); + return ResultUtils.success("点赞成功"); + } + } + } + + @Override + public BaseResponse collectionCount(Long knowId) { + //从数据库中校验是否存在courseid + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + if(knowPoint == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("knowId", knowId); + long count = knowCollectionMapper.selectCount(queryWrapper); + if (count == 0) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); + } else { + return ResultUtils.success(count); + } + } + +} diff --git a/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java index db393d3..e2c39be 100644 --- a/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/chapter/ChapterServiceImpl.java @@ -6,19 +6,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; import com.teaching.backend.mapper.chapter.ChapterMapper; import com.teaching.backend.mapper.chapter.TemporaryChapterMapper; import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.model.dto.chapter.ChapterAndNodeTreeVO; import com.teaching.backend.model.dto.chapter.ChapterDTO; import com.teaching.backend.model.dto.chapter.ChapterExcelDTO; import com.teaching.backend.model.entity.chapter.Chapter; import com.teaching.backend.model.entity.chapter.TemporaryChapter; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import com.teaching.backend.model.vo.chapter.ChapterVo; import com.teaching.backend.service.chapter.IChapterService; @@ -177,61 +180,80 @@ public class ChapterServiceImpl extends ServiceImpl impl return true; } + @Override - public List getChapterTree(String courseId) { + public List getChapterTree(String courseId) { List chapters = baseMapper.selectSectionsByCourseId(courseId); - Map chapterMap = new HashMap<>(); - - List roots = new ArrayList<>(); - + List chapterAndNodeTreeVOS = new ArrayList<>(); + Map chapterAndNodeTreeVOMap = new HashMap<>(); + ChapterAndNodeTreeVO chapterAndNodeTreeVO; for (Chapter chapter : chapters) { - - chapter.setChildren(new ArrayList<>()); - chapter.setKnowledgePoints(new ArrayList<>()); - chapterMap.put(chapter.getId(), chapter); + chapterAndNodeTreeVO = new ChapterAndNodeTreeVO(); + BeanUtil.copyProperties(chapter,chapterAndNodeTreeVO); + chapter.setChildren(new ArrayList<>()); + chapterAndNodeTreeVO.setChildren(new ArrayList<>()); + chapterAndNodeTreeVOS.add(chapterAndNodeTreeVO); + chapterAndNodeTreeVOMap.put(chapterAndNodeTreeVO.getId(), chapterAndNodeTreeVO); } - for (Chapter chapter : chapters) { - Long parentId = chapter.getPid(); + for (ChapterAndNodeTreeVO ch : chapterAndNodeTreeVOS) { + chapterAndNodeTreeVOMap.put(ch.getId(), ch); + } + + //将子章节添加到父章节 + List ChapterIds = new ArrayList<>(); + for (ChapterAndNodeTreeVO ch : chapterAndNodeTreeVOS) { + Long parentId = ch.getPid(); + if (parentId != 0) { - Chapter parentChapter = chapterMap.get(parentId); - if (parentChapter != null) { - parentChapter.getChildren().add(chapter); + //代表是节 + ChapterIds.add(ch.getId()); + ChapterAndNodeTreeVO parentchapterAndNodeTree = chapterAndNodeTreeVOMap.get(parentId); + if (parentchapterAndNodeTree != null) { + parentchapterAndNodeTree.getChildren().add(ch); } - - } else { - roots.add(chapter); } } - roots = roots.stream() - .sorted(Comparator.comparing(Chapter::getOrderNum)) - .collect(Collectors.toList()); - for (Chapter root : roots) { - loadKnowledgePointsRecursively(root); + //根据Ids查询知识点 + if(ChapterIds.size() > 0){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("chapter_id", ChapterIds); + List knows = knowtmpMapper.selectList(queryWrapper); + //将子章节添加到父章节 + for (KnowPoint knowtmp : knows) { + Long id = knowtmp.getId(); + String name = knowtmp.getName(); + String info = knowtmp.getInfo(); + double ordernum = knowtmp.getOrdernum(); + double hour = knowtmp.getHour(); + Long chapterid = knowtmp.getChapterId(); + + ChapterAndNodeTreeVO chapterAndNodeTreeVO1 = new ChapterAndNodeTreeVO(); + chapterAndNodeTreeVO1.setId(id); + chapterAndNodeTreeVO1.setOrderNum(ordernum); + chapterAndNodeTreeVO1.setName(name); + chapterAndNodeTreeVO1.setContent(info); + chapterAndNodeTreeVO1.setTotalClassHours(hour); + //在Map中查询 节ID + ChapterAndNodeTreeVO parentchapterAndNodeTree = chapterAndNodeTreeVOMap.get(chapterid); + if (parentchapterAndNodeTree != null) { + parentchapterAndNodeTree.getChildren().add(chapterAndNodeTreeVO1); + } + } } - return roots; - } - - private void loadKnowledgePointsRecursively(Chapter chapter) { - List sortedChildren = chapter.getChildren().stream() - .sorted(Comparator.comparing(Chapter::getOrderNum)) + chapterAndNodeTreeVOS = chapterAndNodeTreeVOS.stream() + .filter(ch -> ch.getPid() == 0) + .sorted(Comparator.comparing(ChapterAndNodeTreeVO::getOrderNum)) .collect(Collectors.toList()); - chapter.setChildren(sortedChildren); - QueryWrapper queryWrapper = new QueryWrapper<>(); - for (Chapter child : sortedChildren) { - queryWrapper.eq("chapterId", child.getId()); - List knows = knowtmpMapper.selectList(queryWrapper); - child.setKnowledgePoints(new ArrayList<>(knows)); - - loadKnowledgePointsRecursively(child); - } + return chapterAndNodeTreeVOS; } + @Override public BigDecimal saveChapter(ChapterDTO chapterDTO) { Chapter chapter = new Chapter(); @@ -265,7 +287,7 @@ public class ChapterServiceImpl extends ServiceImpl impl if (newChapterHours.compareTo(remainingHours) <= 0) { chapter.setPid(0L); LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); - maxSortWrapper.eq(Chapter::getPid, 0).orderByDesc(Chapter::getOrderNum).last("limit 1"); + maxSortWrapper.eq(Chapter::getPid, 0).eq(Chapter::getCourseId, chapterDTO.getCourseId()).orderByDesc(Chapter::getOrderNum).last("limit 1"); Chapter maxSortChapter = this.getOne(maxSortWrapper); double newSort = 1; if (maxSortChapter != null) { @@ -273,7 +295,6 @@ public class ChapterServiceImpl extends ServiceImpl impl } chapter.setOrderNum(newSort); chapter.setCreateTime(LocalDateTime.now()); - chapter.setUpdateTime(LocalDateTime.now()); this.save(chapter); remainingHours = remainingHours.subtract(newChapterHours).setScale(1, RoundingMode.HALF_UP); } else { @@ -309,7 +330,6 @@ public class ChapterServiceImpl extends ServiceImpl impl if (parentChapter != null) { LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); maxSortWrapper.eq(Chapter::getPid, pid).orderByDesc(Chapter::getOrderNum).last("limit 1"); - parentChapter.setUpdateTime(LocalDateTime.now()); Chapter maxSortChapter = this.getOne(maxSortWrapper); double newSort = 1; if (maxSortChapter != null) { @@ -318,7 +338,6 @@ public class ChapterServiceImpl extends ServiceImpl impl chapter.setOrderNum(newSort); this.updateById(parentChapter); chapter.setCreateTime(LocalDateTime.now()); - chapter.setUpdateTime(LocalDateTime.now()); this.save(chapter); remainingHours = remainingHours.subtract(totalClassHours).setScale(1, RoundingMode.HALF_UP); } else { @@ -345,7 +364,6 @@ public class ChapterServiceImpl extends ServiceImpl impl LocalDateTime now = LocalDateTime.now(); chapter.setCreateTime(now); - chapter.setUpdateTime(now); Long pid = chapter.getPid(); if (isParent) { @@ -373,8 +391,6 @@ public class ChapterServiceImpl extends ServiceImpl impl double newSort = (maxSortChapter != null) ? maxSortChapter.getOrderNum() + 1 : 1; chapter.setOrderNum(newSort); - - parentChapter.setUpdateTime(now); this.updateById(parentChapter); this.save(chapter); @@ -388,23 +404,6 @@ public class ChapterServiceImpl extends ServiceImpl impl } - @Override - public void insertChapter(Long chapterId1, Long chapterId2, ChapterDTO newChapterDTO) { - - Chapter chapter = new Chapter(); - try { - BeanUtils.copyProperties(newChapterDTO, chapter); - } catch (Exception e) { - throw new RuntimeException("复制数据出错", e); - } - - if (chapterId1 == null && chapterId2 == null || chapterId1 != null && chapterId2 == null) { - handleRootChapterInsertion(chapter); - } else { - handleChapterInsertion(chapterId1, chapterId2, chapter); - } - - } private void handleRootChapterInsertion(Chapter chapter) { Long pid = chapter.getPid(); @@ -415,7 +414,6 @@ public class ChapterServiceImpl extends ServiceImpl impl double newOrderNum = getMaxOrderNumByPid(chapter.getPid()) + 1; chapter.setOrderNum(newOrderNum); chapter.setCreateTime(LocalDateTime.now()); - chapter.setUpdateTime(LocalDateTime.now()); this.save(chapter); } @@ -445,9 +443,6 @@ public class ChapterServiceImpl extends ServiceImpl impl newChapter.setOrderNum(newOrderNum); newChapter.setCreateTime(LocalDateTime.now()); - newChapter.setUpdateTime(LocalDateTime.now()); - - this.save(newChapter); } @@ -460,13 +455,74 @@ public class ChapterServiceImpl extends ServiceImpl impl @Override - public void upChapter(Long chapterId) { - moveChapter(chapterId, true); + public BaseResponse upChapter(Long chapterId) { + Chapter chapter = chapterMapper.selectById(chapterId); + if(chapter == null){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"章节不存在"); + } + if(chapter.getOrderNum() == 1){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"不能上移"); + } + Long pid = chapter.getPid(); + String courseId = chapter.getCourseId(); + Double orderNum = chapter.getOrderNum(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Chapter::getPid, pid) + .eq(Chapter::getCourseId, courseId) + .eq(Chapter::getOrderNum, orderNum-1); + + List siblingChapters = chapterMapper.selectList(lambdaQueryWrapper); + Chapter chapter1 = chapterMapper.selectById(chapterId); + Chapter chapter2 = siblingChapters.get(0); + if(siblingChapters.size() > 0){ + Double orderNum1 = chapter1.getOrderNum(); + Double orderNum2 = chapter2.getOrderNum(); + chapter1.setOrderNum(orderNum2); + chapter2.setOrderNum(orderNum1); + int i1 = chapterMapper.updateById(chapter1); + int i2 = chapterMapper.updateById(chapter2); + return ResultUtils.success("上移成功"); + } + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"上移失败"); +// moveChapter(chapterId, true); } @Override - public void downChapter(Long chapterId) { - moveChapter(chapterId, false); + public BaseResponse downChapter(Long chapterId) { + Chapter chapter = chapterMapper.selectById(chapterId); + if(chapter == null){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"章节不存在"); + } + + Long pid = chapter.getPid(); + String courseId = chapter.getCourseId(); + Double orderNum = chapter.getOrderNum(); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(Chapter::getPid, pid) + .eq(Chapter::getCourseId, courseId) + .orderByAsc(Chapter::getOrderNum); + + List siblingChapters = chapterMapper.selectList(lambdaQueryWrapper); + if(siblingChapters.size() > 0 && Objects.equals(siblingChapters.get(siblingChapters.size() - 1).getId(), chapterId)){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"不能下移"); + } + for (int i = 0; i < siblingChapters.size() ; i++) { + if(Objects.equals(siblingChapters.get(i).getId(), chapterId)){ + Chapter chapter1 = siblingChapters.get(i); + Chapter chapter2 = siblingChapters.get(i+1); + if(siblingChapters.size() > 0){ + Double orderNum1 = chapter1.getOrderNum(); + Double orderNum2 = chapter2.getOrderNum(); + chapter1.setOrderNum(orderNum2); + chapter2.setOrderNum(orderNum1); + int i1 = chapterMapper.updateById(chapter1); + int i2 = chapterMapper.updateById(chapter2); + return ResultUtils.success("上移成功"); + } + } + } + + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"上移失败"); } @Override @@ -668,33 +724,47 @@ public class ChapterServiceImpl extends ServiceImpl impl @Override public void deleteChapter(Long id) { - if (id == null) { - throw new BusinessException(ErrorCode.PARAMS_ERROR, "请求参数不能为空"); - } LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Chapter::getId, id); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(Chapter::getPid, id); Long count = this.count(lambdaQueryWrapper); - if (count > 0) { throw new BusinessException(ErrorCode.OPERATION_ERROR, "存在子章节,无法删除"); } - QueryWrapper queryWrapper1 = new QueryWrapper<>(); - queryWrapper1.eq("chapterId", id); - List knows = knowtmpMapper.selectList(queryWrapper1); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("chapter_id", id); + List knows = knowtmpMapper.selectList(queryWrapper1); if (!knows.isEmpty()) { throw new BusinessException(ErrorCode.OPERATION_ERROR, "子章节下存在知识点,无法删除"); } - this.remove(queryWrapper); + Chapter chapter = chapterMapper.selectById(id); + int i = chapterMapper.deleteById(chapter); + if(i < 0) { + throw new BusinessException(ErrorCode.OPERATION_ERROR, "删除失败"); + } + //修改相同pid下的章节顺序 + updateOrder(chapter.getPid(),chapter.getCourseId()); + } + + public void updateOrder(Long pid,String courseId) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Chapter::getPid, pid).eq(Chapter::getCourseId, courseId).orderByAsc(Chapter::getOrderNum); + List chapters = chapterMapper.selectList(queryWrapper); + double i = 1; + for (Chapter chapter : chapters) { + chapter.setOrderNum(i++); + chapterMapper.updateById(chapter); + } } + public void updateNumShow(String numshow, String courseid) { // 查询课程章节 getCourseChapter LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java index 1ce4255..fe35b95 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CourseObjectivesServiceImpl.java @@ -1,31 +1,34 @@ package com.teaching.backend.service.impl.courses; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; -import com.teaching.backend.mapper.courses.CourseObjectivesMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; -import com.teaching.backend.mapper.courses.ObjectivesTypeMapper; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.courses.*; import com.teaching.backend.model.dto.courses.CourseObjectivesDTO; import com.teaching.backend.model.entity.courses.CourseObjectives; +import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; import com.teaching.backend.model.entity.courses.ObjectiveContents; -import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; -import com.teaching.backend.model.vo.courses.CourseObjectivesVO; + +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import com.teaching.backend.service.courses.ICourseObjectivesService; import com.teaching.backend.utils.CourseCode; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; import static com.teaching.backend.utils.CourseCode.TOTAL_OBJECTIVE_HAS_NO_CHILD; import static com.teaching.backend.utils.CourseCode.TOTAL_OBJECTIVE_TYPE; @@ -50,188 +53,185 @@ public class CourseObjectivesServiceImpl extends ServiceImpl addObjectives(CourseObjectivesDTO courseObjectivesDTO) { + //判断课程存在 + String courseId = courseObjectivesDTO.getCourseId(); + Courses courses = coursesMapper.selectById(courseId); + if (courses == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程不存在"); + } CourseObjectives courseObjectivesNew = new CourseObjectives(); BeanUtil.copyProperties(courseObjectivesDTO,courseObjectivesNew); - String pid = courseObjectivesDTO.getPid(); - Integer type = courseObjectivesDTO.getType(); - //判断是否已经添加过该类型的目标(每个类型的目标只能有一个) - Long count = courseObjectivesMapper.selectCount(new LambdaQueryWrapper() - .eq(CourseObjectives::getPid, pid) - .eq(CourseObjectives::getType, type)); - - if (count==CourseCode.OBJECTIVE_EXIT.getValue()){ - throw new BusinessException(ErrorCode.CONTENT_EXISTS,"该类型的目标已存在,禁止重复添加!"); + courseObjectivesNew.setCreateTime(new DateTime().toLocalDateTime()); + int type = courseObjectivesDTO.getType(); + // 1 思政目标/2 知识目标/3 能力目标/4 素质目标 + String name = ""; + if(type == 4){ + name +="素质目标"; + }else if(type == 1){ + name +="思政目标"; + }else if(type == 2){ + name +="知识目标"; + }else if(type == 3){ + name +="能力目标"; + }else{ + name +="整体目标"; } - - if (!type.equals(CourseCode.SI_ZHENG_TYPE.getValue())){ - Long sz = SZ_EXIT(courseObjectivesDTO); - if (sz!=CourseCode.SI_ZHENG_EXIT.getValue()){ - throw new BusinessException(ErrorCode.PARAMS_ILLEGAL,"请在添加完思政目标以后再添加此类型目标!"); - } + //第几个目标 + QueryWrapper courseObjectivesQueryWrapper = new QueryWrapper<>(); + courseObjectivesQueryWrapper.eq("course_id", courseId); + courseObjectivesQueryWrapper.eq("type", type); + List courseObjectives = courseObjectivesMapper.selectList(courseObjectivesQueryWrapper); + courseObjectivesNew.setOrdernum(courseObjectives.size()+1); + + //合成name + name+=courseObjectivesNew.getOrdernum(); + courseObjectivesNew.setName(name); + + int ans = courseObjectivesMapper.insert(courseObjectivesNew); + if(ans>0){ + return ResultUtils.success("添加成功"); } - //插入新的课程目标 - int insert = courseObjectivesMapper.insert(courseObjectivesNew); - //插入数据以后要把总体目标那边的haschild改成1 - if (insert>0){ - CourseObjectives courseObjectivesOld = courseObjectivesMapper.selectById(pid); - if (courseObjectivesOld.getHasChild() == TOTAL_OBJECTIVE_HAS_NO_CHILD.getValue()) { - courseObjectivesOld.setHasChild(1); - courseObjectivesMapper.updateById(courseObjectivesOld); - } - } - return "添加成功"; + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"添加失败"); } - private Long SZ_EXIT(CourseObjectivesDTO courseObjectivesDTO) { - Long count = courseObjectivesMapper.selectCount(new LambdaQueryWrapper() - .eq(CourseObjectives::getPid, courseObjectivesDTO.getPid()) - .eq(CourseObjectives::getType, CourseCode.SI_ZHENG_TYPE.getValue())); - return count; - } - /** - * 删除课程目标 - * 首先检查是不是思政目标,如果是思政目标就要看此时的总目标下面有没有别的分项目标了,如果有,不准删除, - * 如果此时只有分项目标,检查分项目标下面有没有内容,如果有,禁止删除 - * 删除分项目标也要检查下面有没有内容 - * 内容还有关联的知识点也不能删(在内容管理删除那边已实现) + /**删除目标 有分目标不能删除 关联知识点不能删除 * @param id * @return */ @Override - public String deleteObjectives(String id) { + public BaseResponse deleteObjectives(String id) { CourseObjectives courseObjectives = courseObjectivesMapper.selectById(id); if (courseObjectives == null) { - throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); - } - Integer type = courseObjectives.getType(); - if (type == TOTAL_OBJECTIVE_TYPE.getValue()){ - throw new BusinessException(ErrorCode.OPERATION_ERROR,"课程总目标禁止删除!"); + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除失败,目标不存在"); } - //等到删完内容后判断还是上来就判断? - Long count = objectiveContentKnowMapper.selectCount(new LambdaQueryWrapper() - .eq(ObjectiveContentKnow::getObjectiveContentId, id)); - if(count > CourseCode.KNOWS_EXIT.getValue()){ - throw new BusinessException(ErrorCode.KNOWS_EXIT); + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("pid",id); + //有分目标不能删除 + List courseObjectivesList = courseObjectivesMapper.selectList(queryWrapper); + if(courseObjectivesList.size() > 0) { + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除失败,有子目标"); } - String pid = courseObjectives.getPid(); - if (type.equals(CourseCode.SI_ZHENG_TYPE.getValue())){ - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(CourseObjectives::getPid, pid); - Long countSZ = courseObjectivesMapper.selectCount(queryWrapper); - if (countSZ.equals(CourseCode.SI_ZHENG_EXIT.getValue())){ - Long countContentsSZ = getCount(id); - if (countContentsSZ == (CourseCode.CONTENT_EXIT.getValue())) - { - // 删除操作和更新父目标状态 - deleteObjectiveAndUpdateParent(id, pid); - return "删除成功"; - } - else { - throw new BusinessException(ErrorCode.CONTENT_EXISTS, "请删除该目标下的内容后,再删除该目标"); - } - } - else - { - throw new BusinessException(ErrorCode.OPERATION_ERROR, "请删除其他类型的分目标后,再来删除思政目标"); - } + //关联知识点不能删除 + QueryWrapper queryWrapperKNow = new QueryWrapper<>(); + queryWrapperKNow.eq("objective_content_id",id); + List objectiveContentKnows = objectiveContentKnowMapper.selectList(queryWrapperKNow); + + if(objectiveContentKnows.size() > 0) { + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除失败,有关联知识点"); } - else { - Long countContentsF = getCount(id); - if (countContentsF == CourseCode.CONTENT_EXIT.getValue()){ - courseObjectivesMapper.deleteById(id); - return "删除成功"; - } - else { - throw new BusinessException(ErrorCode.CONTENT_EXISTS, "请删除该目标下的内容后,再删除该目标"); - } + + + int ans =courseObjectivesMapper.deleteById(id); + if(ans>0){ + return ResultUtils.success("删除成功"); } + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除失败"); + } - private Long getCount(String id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(ObjectiveContents::getObjectiveId, id); - Long count = objectiveContentsMapper.selectCount(queryWrapper); - return count; + @Override + public CourseObjectives selectObjectives(String id) { + CourseObjectives courseObjectives = courseObjectivesMapper.selectById(id); + return courseObjectives; } - private void deleteObjectiveAndUpdateParent(String id, String pid) { - courseObjectivesMapper.deleteById(id); - CourseObjectives parentObjective = courseObjectivesMapper.selectById(pid); - parentObjective.setHasChild(TOTAL_OBJECTIVE_HAS_NO_CHILD.getValue()); - courseObjectivesMapper.updateById(parentObjective); + @Override + public List selectObjectivesList(String courseId) { + + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("course_id",courseId); + queryWrapper.ne("type",0); + List courseObjectives = courseObjectivesMapper.selectList(queryWrapper); + if (courseObjectives == null || courseObjectives.size()<=0) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); + } + return courseObjectives; } @Override - public List queryCourseObjectivesTree(String id) { - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(CourseObjectives::getCourseId, id); + public List selectObjectivesTop(String courseId) { - CourseObjectives courseObjectives = courseObjectivesMapper.selectOne(queryWrapper); + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("course_id",courseId); + queryWrapper.eq("type",0); + List courseObjectives = courseObjectivesMapper.selectList(queryWrapper); + if (courseObjectives == null || courseObjectives.size()<=0) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); + } + return courseObjectives; + } - String courseObjectivesId = courseObjectives.getId(); - List objectives = courseObjectivesMapper.selectTreeNodes(courseObjectivesId); - Map map = new HashMap<>(); - for (CourseObjectivesTreeVO objective : objectives) { - objective.setName(objectivesTypeMapper.selectById(objective.getType()).getTypeName()); - map.put(objective.getId(), objective); + @Override + public BaseResponse knowcount(String id) { + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("objective_content_id",id); + Long ids = objectiveContentKnowMapper.selectCount(queryWrapper); + if (ids == null || ids <= 0) { + throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); } + return ResultUtils.success(ids); + } - // 构建树结构 - List roots = new ArrayList<>(); - for (CourseObjectivesTreeVO objective : objectives) { - if ("0".equals(objective.getPid())) { - roots.add(objective); - } else { - CourseObjectivesTreeVO parent = map.get(objective.getPid()); - if (parent != null) { - if (parent.getCourseObjectivesTrees() == null) { - parent.setCourseObjectivesTrees(new ArrayList<>()); - } - parent.getCourseObjectivesTrees().add(objective); - } - } - // 填充内容 - List contents = fetchContentsForObjective(objective.getId()); - objective.setContents(contents); + @Override + public BaseResponse knowtime(String id){ + + CourseObjectives courseObjectives = courseObjectivesMapper.selectById(id); + if(courseObjectives == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程目标不存在"); } - return roots; + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("objective_content_id",id); + List list = objectiveContentKnowMapper.selectList(queryWrapper); + if (list == null || list.size() <= 0) { + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"ids不存在"); + } + List ids = list.stream().map(item -> item.getKnowId()).collect(Collectors.toList()); + List knowtmps = knowtmpMapper.selectBatchIds(ids); + + DoubleSummaryStatistics summaryStatistics = knowtmps.stream().mapToDouble(item -> item.getHour()).summaryStatistics(); + return ResultUtils.success(summaryStatistics.getSum()); } @Override - public List queryCourseObjectivesForAdd(String courseId) { - CourseObjectives courseObjectives = courseObjectivesMapper.selectOne(new LambdaQueryWrapper<>(CourseObjectives.class) - .eq(CourseObjectives::getCourseId, courseId)); - if (courseObjectives == null){ - log.error("课程相关数据不存在:{}",courseId); + public BaseResponse knowtimepercent(String courseId,String id) { + + Courses courses = coursesMapper.selectById(courseId); + double hourtotal = courses.getClasshours(); + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("objective_content_id",id); + List list = objectiveContentKnowMapper.selectList(queryWrapper); + if (list == null || list.size() <= 0) { throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); } - String courseTotalObjectiveId = courseObjectives.getId(); - List objectivesLists = courseObjectivesMapper.selectList(new LambdaQueryWrapper<>(CourseObjectives.class) - .eq(CourseObjectives::getPid, courseTotalObjectiveId) - .select(CourseObjectives::getId,CourseObjectives::getType) - .orderByAsc(CourseObjectives::getType) - ); - List courseObjectivesVOS = new ArrayList<>(objectivesLists.size()); - for (CourseObjectives objectives : objectivesLists) { - CourseObjectivesVO courseObjectivesVO = new CourseObjectivesVO(); - courseObjectivesVO.setId(objectives.getId()); - courseObjectivesVO.setName(objectivesTypeMapper.selectById(objectives.getType()).getTypeName()); - courseObjectivesVOS.add(courseObjectivesVO); - } - return courseObjectivesVOS; + + List ids = list.stream().map(item -> item.getKnowId()).collect(Collectors.toList()); + List knowtmps = knowtmpMapper.selectBatchIds(ids); + + DoubleSummaryStatistics summaryStatistics = knowtmps.stream().mapToDouble(item -> item.getHour()).summaryStatistics(); + + BigDecimal b1 = new BigDecimal(Double.toString(summaryStatistics.getSum())); + BigDecimal b2 = new BigDecimal(Double.toString(hourtotal)); + int scale = 3; + double percent = b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); //ROUND_HALF_UP:四舍五入 + return ResultUtils.success(percent); } + // 获取目标的内容列表 private List fetchContentsForObjective(String objectiveId) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java index ad6789e..965e31b 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/CoursesServiceImpl.java @@ -1,17 +1,21 @@ package com.teaching.backend.service.impl.courses; -import cn.afterturn.easypoi.word.WordExportUtil; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateTime; import cn.hutool.core.lang.UUID; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; import com.teaching.backend.mapper.chapter.ChapterMapper; import com.teaching.backend.mapper.courses.*; +import com.teaching.backend.mapper.know.KnowRepository; import com.teaching.backend.mapper.records.CourseLearningRecordMapper; import com.teaching.backend.mapper.records.LearningRecordsMapper; import com.teaching.backend.mapper.umsAdmin.UmsStudentManageMapper; @@ -19,10 +23,12 @@ import com.teaching.backend.mapper.umsAdmin.UmsStudentMapper; import com.teaching.backend.mapper.umsAdmin.UmsTeacherMapper; import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; import com.teaching.backend.model.dto.courses.CoursesDTO; +import com.teaching.backend.model.dto.courses.CoursesUpdateDTO; import com.teaching.backend.model.dto.courses.PageDTO; -import com.teaching.backend.model.dto.umsAdmin.UmsStudentPageQueryDTO; import com.teaching.backend.model.entity.chapter.Chapter; import com.teaching.backend.model.entity.courses.*; +import com.teaching.backend.model.entity.know.Know; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import com.teaching.backend.model.entity.records.CourseLearningRecord; import com.teaching.backend.model.entity.records.LearningRecords; import com.teaching.backend.model.entity.umsAdmin.UmsStudent; @@ -30,34 +36,26 @@ import com.teaching.backend.model.entity.umsAdmin.UmsStudentManage; import com.teaching.backend.model.entity.umsAdmin.UmsTeacher; import com.teaching.backend.model.entity.umsAdmin.UmsUser; import com.teaching.backend.model.query.CourseQuery; -import com.teaching.backend.model.vo.courses.CourseObjectivesTreeVO; +import com.teaching.backend.model.vo.courses.CourseVO; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.courses.PersonalCenterStudentListVO; import com.teaching.backend.model.vo.message.CourseUserInfVO; import com.teaching.backend.model.vo.message.UserReadMessageTimeVO; -import com.teaching.backend.model.vo.umsAdmin.UmsStudentVO; +import com.teaching.backend.service.Know.KnowService; import com.teaching.backend.service.courses.ICoursesService; import com.teaching.backend.utils.CourseCode; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.xwpf.usermodel.*; +import lombok.val; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.ResourceUtils; -import org.springframework.util.StringUtils; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; -import static com.teaching.backend.constant.RoleConstants.TEACHER_ROLE; - /** *

* 服务实现类 @@ -80,14 +78,18 @@ public class CoursesServiceImpl extends ServiceImpl impl @Autowired CoursesMapper coursesMapper; + @Autowired + private KnowRepository knowRepository; + + @Autowired + private KnowService knowService; + @Autowired CourseObjectivesMapper courseObjectivesMapper; @Autowired ObjectiveContentsMapper objectiveContentsMapper; @Autowired - ObjectivesTypeMapper objectivesTypeMapper; - @Autowired UmsUserMapper umsUserMapper; @Autowired UmsTeacherMapper umsTeacherMapper; @@ -104,10 +106,19 @@ public class CoursesServiceImpl extends ServiceImpl impl @Autowired private UmsStudentManageMapper umsStudentManageMapper; + @Autowired + private KnowtmpMapper knowtmpMapper; + + + + + + @Override @Transactional public String saveCourseWithObjective(CoursesDTO coursesDTO) { + // 初始化并生成新的课程ID Courses courses = new Courses(); String courseId = UUID.randomUUID().toString().replace("-", ""); @@ -127,50 +138,23 @@ public class CoursesServiceImpl extends ServiceImpl impl // 插入课程信息 int insert = coursesMapper.insert(courses); if (insert <= 0) { - throw new BusinessException(ErrorCode.OPERATION_ERROR, "课程插入失败!"); + throw new BusinessException(ErrorCode.OPERATION_ERROR, "添加失败"); } - - // 插入课程目标信息 CourseObjectives courseObjectives = new CourseObjectives(); courseObjectives.setCourseId(courseId); - courseObjectives.setType(CourseCode.TOTAL_OBJECTIVE_TYPE.getValue()); - int insertTotal = courseObjectivesMapper.insert(courseObjectives); - if (insertTotal <= 0) { - throw new BusinessException(ErrorCode.OPERATION_ERROR, "课程目标插入失败!"); - } + courseObjectives.setCreateTime(new DateTime().toLocalDateTime()); + courseObjectives.setType(0); - // 获取插入后的课程目标信息 - CourseObjectives courseTotalObjectives = courseObjectivesMapper.selectOne( - new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, courseId) - ); - String courseTotalObjectivesId = courseTotalObjectives.getId(); - - // 获取所有目标类型并插入子目标 - List objectivesTypes = objectivesTypeMapper.selectList(new LambdaQueryWrapper<>()); - ArrayList courseObjectivesFList = new ArrayList<>(); - for (ObjectivesType objectivesType : objectivesTypes) { - if (!objectivesType.getId().equals(CourseCode.TOTAL_OBJECTIVE_TYPE.getValue())) { - CourseObjectives courseObjectivesF = new CourseObjectives(); - courseObjectivesF.setType(objectivesType.getId()); - courseObjectivesF.setPid(courseTotalObjectivesId); - courseObjectivesFList.add(courseObjectivesF); - } - } - - // 批量插入子目标并更新父目标的hasChild字段 - if (!courseObjectivesFList.isEmpty()) { - courseObjectivesMapper.insertBatch(courseObjectivesFList); - courseTotalObjectives.setHasChild(1); - courseObjectivesMapper.updateById(courseTotalObjectives); - } + //默认创建一个空的课程目标 + int insert1 = courseObjectivesMapper.insert(courseObjectives); - // 在总目标里面插入一个内容 - ObjectiveContents objectiveContents = new ObjectiveContents(); - objectiveContents.setObjectiveId(courseTotalObjectivesId); - objectiveContents.setContent("请添加课程总目标"); - objectiveContentsMapper.insert(objectiveContents); + //创建一个课程的知识点图谱 + Long res = knowRepository.addNodes(courseId,null, null,courses.getName(), courses.getDescription(), courses.getClasshours(),null); - return "添加成功"; + if(insert1 > 0 && res > 0){ + return"添加成功"; + } + throw new BusinessException(ErrorCode.OPERATION_ERROR, "添加失败"); } @@ -202,6 +186,26 @@ public class CoursesServiceImpl extends ServiceImpl impl return coursesVOPageDTO; } + @Override + public BaseResponse getByIdCourse(String id) { + Courses courses = coursesMapper.selectById(id); + if(courses == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程不存在"); + } + CourseVO coursesVO = new CourseVO(); + BeanUtils.copyProperties(courses,coursesVO); +// String str = coursesVO.getTeacher(); +// String strNew = new String(); +// String[] parts = str.split(","); +// for (int i = 0; i < parts.length; i++) { +// Long num = Long.parseLong(parts[i]); +// UmsTeacher umsTeacher = umsTeacherMapper.selectByUserId(num); +// strNew += umsTeacher.getName()+" "; +// } +// coursesVO.setTeacher(strNew); + return ResultUtils.success(coursesVO); + } + private PageDTO queryForTeacher(CourseQuery courseQuery) { Page page = courseQuery.toMpPageDefaultSortByCreateTime(); Page p = lambdaQuery() @@ -267,53 +271,116 @@ public class CoursesServiceImpl extends ServiceImpl impl @Override - public void deleteBatchByIds(String id) { -// if(id==null){ -// throw new BusinessException(ErrorCode.PARAMS_ERROR,"课程id为空"); -// } - CourseObjectives courseObjectives= courseObjectivesMapper.selectOne - (new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, id)); - if(courseObjectives == null){ - coursesMapper.deleteById(id); + @Transactional + public BaseResponse deleteBatchByIds(String id) { + //查询是否有目标,删除目标 + QueryWrapper courseObjectivesQueryWrapper = new QueryWrapper(); + courseObjectivesQueryWrapper.eq("course_id", id); + List courseObjectives = courseObjectivesMapper.selectList(courseObjectivesQueryWrapper); + + if(!courseObjectives.isEmpty()){ + return ResultUtils.error(ErrorCode.CONTENT_EXISTS, "有课程目标,不能删除"); } - String objectivesId = courseObjectives.getId(); - List courseObjectivesTreeVOList = courseObjectivesMapper.selectTreeNodes(objectivesId); - int contents = 0; - int knows = 0; - List objectiveIds = new ArrayList<>(); - for (CourseObjectivesTreeVO courseObjectivesTreeVO : courseObjectivesTreeVOList) { - String objectiveId = courseObjectivesTreeVO.getId(); - objectiveIds.add(objectiveId); - Long content = objectiveContentsMapper.selectCount(new LambdaQueryWrapper() - .eq(ObjectiveContents::getObjectiveId, objectiveId)); - contents+=content; - - Long know = objectiveContentKnowMapper.selectCount(new LambdaQueryWrapper() - .eq(ObjectiveContentKnow::getObjectiveContentId, objectiveId)); - knows+=know; +// if(!courseObjectives.isEmpty()){ +// int delete1 = courseObjectivesMapper.delete(courseObjectivesQueryWrapper); +// if (delete1 <= 0) { +// throw new BusinessException(ErrorCode.CONTENT_EXISTS, "课程删除失败,课程目标删除失败"); +// } +// } + + //查询是否有章节,删除章节 + QueryWrapper chapterQueryWrapper = new QueryWrapper(); + chapterQueryWrapper.eq("course_id", id); + List chapterList= chapterMapper.selectList(chapterQueryWrapper); + + if(!chapterList.isEmpty()) { + return ResultUtils.error(ErrorCode.CONTENT_EXISTS, "有子章节,不能删除"); } - if(contents > 0){ - throw new BusinessException(ErrorCode.CONTENT_EXISTS, "该课程的目标下面还有内容,请把相关内容清空后再来删除课程"); +// if(!chapterList.isEmpty()) { +// int delete2 = chapterMapper.delete(chapterQueryWrapper); +// if (delete2 <= 0) { +// throw new BusinessException(ErrorCode.CONTENT_EXISTS, "课程删除失败,章节删除失败"); +// } +// } + + //查询是否有知识点,删除知识点 + QueryWrapper knowPointQueryWrapper = new QueryWrapper(); + knowPointQueryWrapper.eq("course_id", id); + List knowList= knowtmpMapper.selectList(knowPointQueryWrapper); + if(!knowList.isEmpty()) { + int delete3 = knowtmpMapper.delete(knowPointQueryWrapper); + if (delete3 <= 0) { + throw new BusinessException(ErrorCode.CONTENT_EXISTS, "课程删除失败,mysql-知识点删除失败"); + } } - if (knows > 0){ - throw new BusinessException(ErrorCode.KNOWS_EXISTS,"该课程的目标下面还有关联的知识点,请把相关知识点清空后再来删除课程"); + + //查询 neo4j 是否有知识点,删除知识点 + List longs = knowRepository.queryNodesByCourseId(id); + if(!longs.isEmpty()){ + int code = knowService.deleteAllByCourseId(id).getCode(); + if (code != 200) { + throw new BusinessException(ErrorCode.CONTENT_EXISTS, "课程删除失败,neo4j-知识点删除失败"); + } } - courseObjectivesMapper.deleteBatchIds(objectiveIds); - coursesMapper.deleteById(id); - - //删除课程的同时删除对应的记录 - //先通过id查出对应的记录 - System.out.println("删!"); - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(LearningRecords::getCoursesId, id).eq(LearningRecords::getType, 1);//课程的type为1 - System.out.println("学习记录删除:"+learningRecordsMapper.selectList(lambdaQueryWrapper)); - List list = learningRecordsMapper.selectList(lambdaQueryWrapper); - if (list.size() > 0){ - learningRecordsMapper.deleteBatchIds(list); + + //删除课程信息 + QueryWrapper courseQueryWrapper = new QueryWrapper(); + courseQueryWrapper.eq("id", id); + List courseList = coursesMapper.selectList(courseQueryWrapper); + if(!courseList.isEmpty()){ + int delete4 = coursesMapper.delete(courseQueryWrapper); + if (delete4 <= 0) { + throw new BusinessException(ErrorCode.CONTENT_EXISTS, "课程删除失败"); + } } - System.out.println("无记录!"); + + return ResultUtils.success("删除成功"); + } +// CourseObjectives courseObjectives= courseObjectivesMapper.selectOne +// (new LambdaQueryWrapper().eq(CourseObjectives::getCourseId, id)); +// if(courseObjectives == null){ +// coursesMapper.deleteById(id); +// } +// String objectivesId = courseObjectives.getId(); + // todo +// List courseObjectivesTreeVOList = courseObjectivesMapper.selectTreeNodes(objectivesId); +// int contents = 0; +// int knows = 0; +// List objectiveIds = new ArrayList<>(); +// for (CourseObjectivesTreeVO courseObjectivesTreeVO : courseObjectivesTreeVOList) { +// String objectiveId = courseObjectivesTreeVO.getId(); +// objectiveIds.add(objectiveId); +// Long content = objectiveContentsMapper.selectCount(new LambdaQueryWrapper() +// .eq(ObjectiveContents::getObjectiveId, objectiveId)); +// contents+=content; +// +// Long know = objectiveContentKnowMapper.selectCount(new LambdaQueryWrapper() +// .eq(ObjectiveContentKnow::getObjectiveContentId, objectiveId)); +// knows+=know; +// } +// if(contents > 0){ +// throw new BusinessException(ErrorCode.CONTENT_EXISTS, "该课程的目标下面还有内容,请把相关内容清空后再来删除课程"); +// } +// if (knows > 0){ +// throw new BusinessException(ErrorCode.KNOWS_EXISTS,"该课程的目标下面还有关联的知识点,请把相关知识点清空后再来删除课程"); +// } +// courseObjectivesMapper.deleteBatchIds(objectiveIds); +// coursesMapper.deleteById(id); +// +// //删除课程的同时删除对应的记录 +// //先通过id查出对应的记录 +// System.out.println("删!"); +// LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// lambdaQueryWrapper.eq(LearningRecords::getCoursesId, id).eq(LearningRecords::getType, 1);//课程的type为1 +// System.out.println("学习记录删除:"+learningRecordsMapper.selectList(lambdaQueryWrapper)); +// List list = learningRecordsMapper.selectList(lambdaQueryWrapper); +// if (list.size() > 0){ +// learningRecordsMapper.deleteBatchIds(list); +// } +// System.out.println("无记录!"); + @Override public CoursesVO getByIdCourseVo(String courseid) { Courses courses = coursesMapper.selectById(courseid); @@ -329,7 +396,7 @@ public class CoursesServiceImpl extends ServiceImpl impl } @Override - public Map getPagePageSize2(int page, int pageSize) { + public Map getPagePageSize(int page, int pageSize) { Page pageInfo=new Page<>(page,pageSize); LambdaQueryWrapper queryWrapper=new LambdaQueryWrapper<>(); @@ -338,12 +405,9 @@ public class CoursesServiceImpl extends ServiceImpl impl List list=pageInfo.getRecords(); + List coursesVo = BeanUtil.copyToList(list, CoursesVO.class); - List coursesVo = BeanUtil.copyToList(list, CoursesVO.class); - - - coursesVo = coursesVo.stream().map((item) -> { - + coursesVo = coursesVo.stream().map((item) -> { item.setTotalHours(countHours(item.getId())); item.setTotalchapter(countChapters(item.getId())); item.setTotalKnow(countHours(item.getId())); @@ -439,28 +503,7 @@ public class CoursesServiceImpl extends ServiceImpl impl throw new BusinessException(400,"只有老师才有此功能"); } - @Override - public List getPagePageSize(int page, int pageSize) { - int startIndex = (page-1) * pageSize; - List list = coursesMapper.getItemsByPage(startIndex, pageSize); -// List list = coursesMapper.selectList(null); - List coursesVo = BeanUtil.copyToList(list, CoursesVO.class); - coursesVo = coursesVo.stream().map((item) -> { - - item.setTotalHours(countHours(item.getId())); - item.setTotalchapter(countChapters(item.getId())); -// item.setTotalKnow(countKnow(item.getId())); - return item; - }).collect(Collectors.toList()); - return coursesVo; - } - // 计算课程知识点个数 -// public Integer countKnow(String courseid){ -// // 已修改 yh -// return knowRepository.findCountsByCourseId(courseid); -// } - // 计算课程已分配的学时 计算章的学时(即已包含了小节的学时) public int countChaptersHours(String courseid){ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(Chapter::getCourseId,courseid) @@ -521,137 +564,24 @@ public class CoursesServiceImpl extends ServiceImpl impl /** * 修改课程信息 - * @param coursesDTO + * @param coursesUpdateDTO */ @Override @Transactional - public void updateCourse(CoursesDTO coursesDTO) { - String courseId = coursesDTO.getId(); + public void updateCourse(CoursesUpdateDTO coursesUpdateDTO) { + String courseId = coursesUpdateDTO.getId(); Courses course = coursesMapper.selectById(courseId); if (course.getStatus()==CourseCode.COURSE_UPDATING.getValue()){ throw new BusinessException(ErrorCode.SYSTEM_ERROR,"课程正在修改中,请等待修改完成后再进行操作"); } course.setStatus(CourseCode.COURSE_UPDATING.getValue()); coursesMapper.updateById(course); - BeanUtil.copyProperties(coursesDTO, course); + BeanUtil.copyProperties(coursesUpdateDTO, course); course.setStatus(0); course.setUpdateTime(LocalDateTime.now()); coursesMapper.updateById(course); } - @Override - public void down(HttpServletResponse response, String id) throws Exception { - File rootPath = new File(ResourceUtils.getURL("classpath:").getPath()); //SpringBoot项目获取根目录的方式 - File templatePath = new File(rootPath.getAbsolutePath(),"/templates/courses.docx");//------------------需要模板的地址 - -// // 加载Word模板------------------路径换成服务器里文件的绝对路径(要是相对路径也行也OK) -// FileInputStream template = new FileInputStream("D:\\Users\\Desktop\\teaching-backend\\src\\main\\resources\\templates\\courses.docx"); -// new XWPFDocument(template); - XWPFDocument document; - - //准备导出数据 - //查询课程通过课程id查--课程简介 - Courses courses = this.getById(id); -// System.out.println("课程:"+courses); - //准备数据 - String course_name = courses.getName(); - String course_code = courses.getCode(); - String course_nature = courses.getNature(); - BigDecimal course_credit = courses.getCredit(); - Integer course_classhour = courses.getClasshours(); - String course_description = courses.getDescription(); - - //查询课程目标 - List courseObjectivesTreeVO = objectivesService.queryCourseObjectivesTree(id); - //准备数据 - //总目标 - StringBuilder overall_goal = new StringBuilder(); - List contents = courseObjectivesTreeVO.get(0).getContents(); - for (int i = 0; i < contents.size(); i++) { - ObjectiveContents content = contents.get(i); - overall_goal.append(content.getContent()); - } - //分项目标 - StringBuilder sub_objectives = new StringBuilder(); - //课程目标数 - int course_number = 0; - for (int i = 0; i < courseObjectivesTreeVO.get(0).getCourseObjectivesTrees().size(); i++){ - CourseObjectivesTreeVO content = courseObjectivesTreeVO.get(0).getCourseObjectivesTrees().get(i); - String name = content.getName(); - sub_objectives.append(name).append(":"); - for (int j = 0; j < content.getContents().size(); j++) { - course_number++; - sub_objectives.append("\r\n ").append("课程目标").append(course_number).append(":").append(content.getContents().get(i).getContent()); - - } - if (i != courseObjectivesTreeVO.get(0).getCourseObjectivesTrees().size() - 1){ - sub_objectives.append("\r\n "); - } - } - System.out.println("课程目标数:"+course_number); - Map params = new HashMap(); - params.put("course_name",course_name); - params.put("course_code",course_code); - params.put("course_nature",course_nature); - params.put("course_credit",course_credit); - params.put("course_classhour",course_classhour); - params.put("course_description",course_description); - - //课程目标 - params.put("overall_goal", overall_goal); - params.put("sub_objectives", sub_objectives); - - - - //根据模板+数据 导出文档 - - document = WordExportUtil.exportWord07(templatePath.getPath(), params); - - //----------------修改表格模版在导入参数之后 - - //获取第2个表格---------- - XWPFTable table = document.getTables().get(1); - - for (int i = 0; i < course_number - 1; i++) { - //新增一行单元格 - XWPFTableRow newRow = table.createRow(); - newRow.getCell(0).setText("课程目标" + (i + 2)); - newRow.getCell(0).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);//水平居中 - newRow.getCell(0).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中 - - } - - //获取第5个表格 - XWPFTable table5 = document.getTables().get(4); - - for (int i = 0; i < course_number - 1; i++) { - //新增一行单元格 - XWPFTableRow newRow = table5.createRow(); - - newRow.getCell(0).setText(Integer.valueOf(i+2).toString()); - newRow.getCell(0).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);//水平居中 - newRow.getCell(0).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中 - - //课程目标 - newRow.getCell(1).setText("课程目标" + (i + 2)); - newRow.getCell(1).getParagraphArray(0).setAlignment(ParagraphAlignment.CENTER);//水平居中 - newRow.getCell(1).setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中 - //扩四列 - for (int j = 0; j < 4; j++) { - newRow.createCell(); - } - } - - - - - String filename= courses.getName()+"课程标准.docx"; - //设置文件的打开方式和mime类型 - ServletOutputStream outputStream = response.getOutputStream(); - response.setHeader( "Content-Disposition", "attachment;filename=" + new String(filename.getBytes(),"ISO8859-1")); - response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); - document.write(outputStream); - } @Override public List getUserInfByCourse(Long userId) { @@ -676,6 +606,18 @@ public class CoursesServiceImpl extends ServiceImpl impl return courseUserInfVO; } + @Override + public BaseResponse editIntroduce(String courseId , String introduce) { + Courses courses = coursesMapper.selectById(courseId); + courses.setDescription(introduce); + int update = coursesMapper.updateById(courses); + if(update > 0){ + return ResultUtils.success("修改简介成功"); + } + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"修改失败"); + + } + private List queryCourseUserForTeacher(Long userId) { // 1. 获取该教师负责的所有课程 List teacherCoursesInf = coursesMapper.selectList(new LambdaQueryWrapper() diff --git a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java deleted file mode 100644 index 7ef7db2..0000000 --- a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentKnowServiceImpl.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.teaching.backend.service.impl.courses; - -import cn.hutool.core.lang.generator.SnowflakeGenerator; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.exception.BusinessException; -import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; -import com.teaching.backend.mapper.courses.CourseObjectivesMapper; -import com.teaching.backend.mapper.courses.CoursesMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; -import com.teaching.backend.model.dto.courses.ObjectiveContentKnowDTO; -import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; -import com.teaching.backend.model.entity.courses.ObjectiveContents; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; -import com.teaching.backend.model.vo.courses.ObjectiveContentKnowVO; -import com.teaching.backend.model.vo.knowtmp.KnowTmpVO; -import com.teaching.backend.service.courses.IObjectiveContentKnowService; -import com.teaching.backend.utils.CourseCode; -import lombok.extern.slf4j.Slf4j; -import org.neo4j.driver.internal.value.StringValue; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - *

- * 服务实现类 - *

- * - * @author zjh - * @since 2024-06-13 - */ -@Service -@Slf4j -public class ObjectiveContentKnowServiceImpl extends ServiceImpl implements IObjectiveContentKnowService { - - @Autowired - ObjectiveContentKnowMapper objectiveContentKnowMapper; - @Autowired - KnowtmpMapper knowtmpMapper; - @Autowired - CourseObjectivesMapper courseObjectivesMapper; - @Autowired - CoursesMapper coursesMapper; - @Autowired - ObjectiveContentsMapper objectiveContentsMapper; - @Autowired - SnowflakeGenerator snowflakeGenerator; - - @Override - @Transactional - public String saveKnowsWithObjectiveContent(ObjectiveContentKnowDTO objectiveContentKnowDTO) { - //暂时约定前端传过来的的knows是“1,2,3” 用 , 隔开的 -// String knows = objectiveContentKnowDTO.getKnow(); -// if (knows == null || knows.equals("")){ -// throw new BusinessException(ErrorCode.KONWID_NOT_EXIT); -// } -// List knowIds = new ArrayList<>(Arrays.asList(knows.split(","))); -// List objectiveContentKnowList = new ArrayList<>(); -// for (String knowId : knowIds) { -// ObjectiveContentKnow objectiveContentKnow = new ObjectiveContentKnow(); -//// objectiveContentKnow.setId(snowflakeGenerator.next()); -// objectiveContentKnow.setObjectiveOrContent(objectiveOrContent); -// objectiveContentKnow.setKnow(knowId); -// objectiveContentKnowList.add(objectiveContentKnow); -// } -// try { -// objectiveContentKnowMapper.insertBatchSomeColumn(objectiveContentKnowList); -// } catch (Exception e) { -// e.printStackTrace(); -// throw new BusinessException(ErrorCode.OBJECTIVE_OR_CONTENT_EXIT); -// } - - //添加逻辑变了 变成了给知识点添加关联的--课程目标 - ObjectiveContents objectiveContents = objectiveContentsMapper.selectById(objectiveContentKnowDTO.getObjectiveContentId()); - if (objectiveContents == null) { - throw new BusinessException(ErrorCode.OBJECTIVE_CONTENT_NOT_EXIT); - } - int insert = objectiveContentKnowMapper.insert(objectiveContentKnowDTO); - - return insert > 0 ? "添加成功" : "添加失败"; - } - - @Override - public ObjectiveContentKnowVO getCountData(String objectiveContentId) { - // 创建ObjectiveContentKnowVO对象,用于存储和返回计算结果 - ObjectiveContentKnowVO objectiveContentKnowVO = new ObjectiveContentKnowVO(); - - // 根据传入的目标内容ID找到课程ID和总学时 - String objectiveID = objectiveContentsMapper.selectById(objectiveContentId).getObjectiveId(); - CourseObjectives courseObjective = courseObjectivesMapper.selectOne(new LambdaQueryWrapper() - .eq(CourseObjectives::getId, objectiveID)); - String pid = courseObjective.getPid(); - //当前内容属于总目标类型的 - String courseId; - if(pid.equals(String.valueOf(CourseCode.CONTENT_BELONGS_TO_TOTAL_OBJECTIVE.getValue()))){ - courseId = courseObjective.getCourseId(); - } - else { - courseId = courseObjectivesMapper.selectOne(new LambdaQueryWrapper() - .eq(CourseObjectives::getId, pid)).getCourseId(); - } - Integer classhours = coursesMapper.selectById(courseId).getClasshours(); - - // 获取当前目标内容下关联的知识点数据 - List objectiveContentKnows = objectiveContentKnowMapper.selectList( - new LambdaQueryWrapper() - .eq(ObjectiveContentKnow::getObjectiveContentId, objectiveContentId) - ); - if(objectiveContentKnows.isEmpty()){ - log.warn("当前课程目标下面没有关联的知识点contentId:{}",objectiveContentId); - throw new BusinessException(ErrorCode.CONTENT_HAS_NO_KNOWS); - } - - // 创建并设置ObjectiveContentKnowVO对象的属性 - objectiveContentKnowVO = createObjectiveContentKnowVO(objectiveContentId, objectiveContentKnows); - - // 计算并设置该内容的知识点总学时的比例(百分比) - Double contentPercentage = calculatePercentage(objectiveContentKnowVO.getKnowsTime(), classhours); - objectiveContentKnowVO.setPersent(contentPercentage); - - // 返回最终结果 - return objectiveContentKnowVO; - } - - // 创建ObjectiveContentKnowVO对象,并计算知识点数量、总时间和关联的知识点部分数据 - private ObjectiveContentKnowVO createObjectiveContentKnowVO(String objectiveOrContentId, List objectiveContentKnows) { - ObjectiveContentKnowVO vo = new ObjectiveContentKnowVO(); - vo.setObjectiveOrContent(objectiveOrContentId); - vo.setKnowsNumber(objectiveContentKnows.size()); - - // 提取所有的 Know IDs - List knowIds = objectiveContentKnows.stream() - .map(ObjectiveContentKnow::getKnowId) - .collect(Collectors.toList()); - - // 一次性查询所有需要的 Knowtmp 数据 - List knows = knowtmpMapper.selectList(new LambdaQueryWrapper() - .in(Knowtmp::getId, knowIds)); - - // 使用 Map 来存储 Knowtmp 数据,以便快速查找 - Map knowMap = knows.stream() - .collect(Collectors.toMap(Knowtmp::getId, know -> know)); - - Double knowsTime = 0.0; - List knowTmpVOList = new ArrayList<>(); - - for (ObjectiveContentKnow contentKnow : objectiveContentKnows) { - Knowtmp know = knowMap.get(contentKnow.getKnowId()); - if (know == null) { - log.warn("知识点不存在,id:{}", contentKnow.getKnowId()); - // throw new BusinessException(ErrorCode.KNOW_NOT_EXIT); - continue; // 知识点不存在时跳过 - } - - knowsTime += know.getHour(); - - // 将当前知识点数据添加到knowTmpVOList中 - KnowTmpVO knowTmpVO = new KnowTmpVO(); - knowTmpVO.setId(know.getId()); - knowTmpVO.setName(know.getName()); - knowTmpVO.setHour(know.getHour()); - knowTmpVOList.add(knowTmpVO); - } - - vo.setKnowsTime(knowsTime); - vo.setKnowTmpVOList(knowTmpVOList); // 设置知识点的部分数据列表 - return vo; - } - - - // 计算知识点学时占总学时的比例,并返回百分比形式的结果 - private Double calculatePercentage(Double knowsTime, Integer classhours) { - if (classhours == null || classhours == 0) { - return 0.0; - } - return new BigDecimal(knowsTime) - .divide(new BigDecimal(classhours), 4, RoundingMode.HALF_UP) - .multiply(new BigDecimal(100)) - .setScale(2, RoundingMode.HALF_UP) - .doubleValue(); - } -} \ No newline at end of file diff --git a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentsServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentsServiceImpl.java deleted file mode 100644 index 6d551a9..0000000 --- a/src/main/java/com/teaching/backend/service/impl/courses/ObjectiveContentsServiceImpl.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.teaching.backend.service.impl.courses; - - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.exception.BusinessException; -import com.teaching.backend.mapper.courses.CourseObjectivesMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper; -import com.teaching.backend.mapper.courses.ObjectiveContentsMapper; -import com.teaching.backend.model.entity.courses.CourseObjectives; -import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; -import com.teaching.backend.model.entity.courses.ObjectiveContents; -import com.teaching.backend.service.courses.IObjectiveContentsService; -import com.teaching.backend.utils.CourseCode; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import static com.teaching.backend.utils.CourseCode.*; - -/** - *

- * 服务实现类 - *

- * - * @author zjh - * @since 2024-06-05 - */ -@Service -@Slf4j -public class ObjectiveContentsServiceImpl extends ServiceImpl implements IObjectiveContentsService { - - @Autowired - ObjectiveContentKnowMapper objectiveContentKnowMapper; - @Autowired - ObjectiveContentsMapper objectiveContentsMapper; - @Autowired - CourseObjectivesMapper courseObjectivesMapper; - @Override - public String deleteById(String id) { - if (id == null){ - throw new BusinessException(ErrorCode.CONTENT_NOT_EXIT); - } - Long count = objectiveContentKnowMapper.selectCount(new LambdaQueryWrapper() - .eq(ObjectiveContentKnow::getObjectiveContentId, id)); - if(count > CourseCode.KNOWS_EXIT.getValue()){ - throw new BusinessException(ErrorCode.KNOWS_EXIT); - } - String objectiveId = objectiveContentsMapper.selectById(id).getObjectiveId(); - Integer type = courseObjectivesMapper.selectById(objectiveId).getType(); - if (type == TOTAL_OBJECTIVE_TYPE.getValue()){ - throw new BusinessException(ErrorCode.TOTOAL_OBJECTIVE_CANT_DELETE); - } - int delete = objectiveContentsMapper.deleteById(id); - return delete > 0 ? "删除成功!" : "删除失败!"; - } - - /** - * 在添加内容的时候需要校验,总目标和思政目标只有一个内容 - * @param objectiveContents - * @return - */ - @Override - public String saveWithCheck(ObjectiveContents objectiveContents) { - CourseObjectives courseObjective = courseObjectivesMapper.selectOne(new LambdaQueryWrapper<>(CourseObjectives.class) - .eq(CourseObjectives::getId, objectiveContents.getObjectiveId())); - if (courseObjective == null){ - log.error("课程目标数据不存在:{}",objectiveContents.getObjectiveId()); - throw new BusinessException(ErrorCode.NOT_FOUND_ERROR); - } - if (courseObjective.getType() == SI_ZHENG_TYPE.getValue() || courseObjective.getType() == TOTAL_OBJECTIVE_TYPE.getValue()){ - Long count = objectiveContentsMapper.selectCount(new LambdaQueryWrapper<>(ObjectiveContents.class) - .eq(ObjectiveContents::getObjectiveId, objectiveContents.getObjectiveId())); - if (count>CONTENT_EXIT.getValue()){ - throw new BusinessException(ErrorCode.CONTENT_EXISTS,"该目标下面已存在一条内容,无需再次添加"); - } - } - int insert = objectiveContentsMapper.insert(objectiveContents); - return insert > 0 ? "添加内容成功" : "添加内容失败"; - } -} diff --git a/src/main/java/com/teaching/backend/service/impl/courses/ObjectivesTypeServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/ObjectivesTypeServiceImpl.java deleted file mode 100644 index ad4e8c7..0000000 --- a/src/main/java/com/teaching/backend/service/impl/courses/ObjectivesTypeServiceImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.teaching.backend.service.impl.courses; - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.mapper.courses.ObjectivesTypeMapper; -import com.teaching.backend.model.entity.courses.ObjectivesType; -import com.teaching.backend.service.courses.IObjectivesTypeService; -import org.springframework.stereotype.Service; - -/** - *

- * 服务实现类 - *

- * - * @author zjh - * @since 2024-06-05 - */ -@Service -public class ObjectivesTypeServiceImpl extends ServiceImpl implements IObjectivesTypeService { - -} diff --git a/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java index 4caa06f..e7121d8 100644 --- a/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/courses/StudentCoursesServiceImpl.java @@ -53,15 +53,9 @@ public class StudentCoursesServiceImpl extends ServiceImpl coursesIds = new ArrayList<>(Arrays.asList(courses.split(","))); List studentCoursesList = new ArrayList<>(); StudentCourses studentCourses = null; diff --git a/src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/favour/CourseFavourServiceImpl.java similarity index 73% rename from src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java rename to src/main/java/com/teaching/backend/service/impl/favour/CourseFavourServiceImpl.java index 3403412..72a6130 100644 --- a/src/main/java/com/teaching/backend/service/impl/favour/SeCourseFavourServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/favour/CourseFavourServiceImpl.java @@ -2,7 +2,6 @@ package com.teaching.backend.service.impl.favour; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -13,15 +12,15 @@ import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.mapper.courses.CoursesMapper; -import com.teaching.backend.mapper.favour.SeCourseFavourMapper; +import com.teaching.backend.mapper.favour.CourseFavourMapper; import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.favour.SeCourseFavour; +import com.teaching.backend.model.entity.favour.CourseFavour; import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.favour.CourseFavourDetailVO; import com.teaching.backend.service.courses.ICoursesService; -import com.teaching.backend.service.favour.SeCourseFavourService; -import com.teaching.backend.service.favour.SeKnowFavourService; +import com.teaching.backend.service.favour.CourseFavourService; +import com.teaching.backend.service.favour.KnowFavourService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -30,8 +29,6 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; @@ -41,12 +38,12 @@ import java.util.stream.Collectors; * @Description: */ @Service -public class SeCourseFavourServiceImpl extends ServiceImpl implements SeCourseFavourService { +public class CourseFavourServiceImpl extends ServiceImpl implements CourseFavourService { @Resource - SeKnowFavourService seKnowFavourService; + KnowFavourService KnowFavourService; @Autowired CoursesMapper coursesMapper; @@ -55,7 +52,7 @@ public class SeCourseFavourServiceImpl extends ServiceImpl doCourseFavour(String courseId, String userId) { - System.out.println("进入点赞" + courseId + userId); //从数据库中校验是否存在courseid Courses courses = coursesMapper.selectById(courseId); @@ -72,22 +68,18 @@ public class SeCourseFavourServiceImpl extends ServiceImpl lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.eq(SeCourseFavour::getCourseId, courseId) - .eq(SeCourseFavour::getUserId, userId); - - SeCourseFavour oldSeCourseFavour = seCourseFavourMapper.selectOne(lambdaQueryWrapper); - System.out.println("查询条件: courseId=" + courseId + ", userId=" + userId); - System.out.println("查询结果: " + oldSeCourseFavour); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(CourseFavour::getCourseId, courseId) + .eq(CourseFavour::getUserId, userId); + CourseFavour oldCourseFavour = CourseFavourMapper.selectOne(lambdaQueryWrapper); //已点赞 - - if (oldSeCourseFavour == null) { + if (oldCourseFavour == null) { // 如果没有记录,则添加收藏 - SeCourseFavour newSeCourseFavour = new SeCourseFavour(); - newSeCourseFavour.setCourseId(courseId); - newSeCourseFavour.setUserId(userId); - int insertResult = seCourseFavourMapper.insert(newSeCourseFavour); + CourseFavour newCourseFavour = new CourseFavour(); + newCourseFavour.setCourseId(courseId); + newCourseFavour.setUserId(userId); + int insertResult = CourseFavourMapper.insert(newCourseFavour); if (insertResult > 0) { return ResultUtils.success(true); @@ -96,7 +88,7 @@ public class SeCourseFavourServiceImpl extends ServiceImpl 0) { return ResultUtils.success(false); @@ -109,7 +101,7 @@ public class SeCourseFavourServiceImpl extends ServiceImplfavourCount(String courseId) { //从数据库中校验是否存在courseid - QueryWrapper favourQueryWrapper = new QueryWrapper<>(); + QueryWrapper favourQueryWrapper = new QueryWrapper<>(); favourQueryWrapper.eq("course_id", courseId); long result = this.count(favourQueryWrapper); if (result == 0) { @@ -128,9 +120,9 @@ public class SeCourseFavourServiceImpl extends ServiceImpl courseList(String userId) { - QueryWrapper courseQueryWrapper = new QueryWrapper<>(); + QueryWrapper courseQueryWrapper = new QueryWrapper<>(); courseQueryWrapper.eq("user_id", userId); - List list = this.list(courseQueryWrapper).stream().map(SeCourseFavour::getCourseId).collect(Collectors.toList()); + List list = this.list(courseQueryWrapper).stream().map(CourseFavour::getCourseId).collect(Collectors.toList()); return list; } @@ -160,7 +152,7 @@ public class SeCourseFavourServiceImpl extends ServiceImpl coursesList = new ArrayList<>(); if (roleId.equals("1")){ //老师 - List courseIdList = seCourseFavourMapper.queryAllNewCollectCourse(); + List courseIdList = CourseFavourMapper.queryAllNewCollectCourse(); for (String courseId : courseIdList) { Courses courses = coursesMapper.selectById(courseId); coursesList.add(courses); @@ -169,7 +161,7 @@ public class SeCourseFavourServiceImpl extends ServiceImpl courseIdList = seCourseFavourMapper.queryStudentNewCollectCourse(userId); + List courseIdList = CourseFavourMapper.queryStudentNewCollectCourse(userId); for (String courseId : courseIdList) { Courses courses = coursesMapper.selectById(courseId); coursesList.add(courses); diff --git a/src/main/java/com/teaching/backend/service/impl/favour/SeKnowFavourServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/favour/KnowFavourServiceImpl.java similarity index 61% rename from src/main/java/com/teaching/backend/service/impl/favour/SeKnowFavourServiceImpl.java rename to src/main/java/com/teaching/backend/service/impl/favour/KnowFavourServiceImpl.java index 324da73..3af6186 100644 --- a/src/main/java/com/teaching/backend/service/impl/favour/SeKnowFavourServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/favour/KnowFavourServiceImpl.java @@ -6,11 +6,13 @@ import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; import com.teaching.backend.mapper.courses.CoursesMapper; -import com.teaching.backend.mapper.favour.SeKnowFavourMapper; +import com.teaching.backend.mapper.favour.KnowFavourMapper; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.favour.SeKnowFavour; -import com.teaching.backend.service.favour.SeKnowFavourService; +import com.teaching.backend.model.entity.favour.KnowFavour; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.service.favour.KnowFavourService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -24,24 +26,30 @@ import java.util.concurrent.locks.ReentrantLock; * @Description: */ @Service -public class SeKnowFavourServiceImpl extends ServiceImpl implements SeKnowFavourService { +public class KnowFavourServiceImpl extends ServiceImpl implements KnowFavourService { @Autowired CoursesMapper coursesMapper; - @Override - public BaseResponse doKnowFavour( String knowId, String userId) { - // todo 判断知识点id是否存在 + @Autowired + KnowtmpMapper knowtmpMapper; + @Override + public BaseResponse doKnowFavour( Long knowId, Long userId) { + // 判断知识点id是否存在 + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + if (knowPoint == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } boolean result = false; // 先查询数据库记录,该用户是否收藏 - SeKnowFavour seKnowFavour = new SeKnowFavour(); - seKnowFavour.setKnowId(knowId); - seKnowFavour.setUserId(userId); - QueryWrapper favourQueryWrapper = new QueryWrapper<>(seKnowFavour); - SeKnowFavour oldSeKnowFavour = this.getOne(favourQueryWrapper); + KnowFavour KnowFavour = new KnowFavour(); + KnowFavour.setKnowId(knowId); + KnowFavour.setUserId(userId); + QueryWrapper favourQueryWrapper = new QueryWrapper<>(KnowFavour); + KnowFavour oldKnowFavour = this.getOne(favourQueryWrapper); //已收藏 - if (oldSeKnowFavour != null) { + if (oldKnowFavour != null) { // 取消收藏 删除记录 result = this.remove(favourQueryWrapper); if (result) { @@ -56,7 +64,7 @@ public class SeKnowFavourServiceImpl extends ServiceImpl implements SeResourceFavourService { -// -// -// @Autowired -// CoursesMapper coursesMapper; -// -// @Autowired -// private CourseResourcesService courseResourcesService; -// -// @Autowired -// private UmsUserMapper umsAdminMapper; -// -// @Autowired -// private CourseResourcesMapper courseResourcesMapper; -// -// @Override -// public BaseResponse doResourceFavour(Integer resourceId, String userId) { -// -// boolean result = false; -// -// CourseResources courseResources = courseResourcesMapper.selectById(resourceId); -// if(courseResources == null){ -// throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS); -// } -// -// // 先查询数据库记录,该用户是否收藏 -// SeResourceFavour seResourceFavour = new SeResourceFavour(); -// seResourceFavour.setResourceId(resourceId); -// seResourceFavour.setUserId(userId); -// QueryWrapper thumbQueryWrapper = new QueryWrapper<>(seResourceFavour); -// SeResourceFavour oldSeResourceFavour = this.getOne(thumbQueryWrapper); -// //已收藏 -// if (oldSeResourceFavour != null) { -// // 取消收藏 删除记录 -// result = this.remove(thumbQueryWrapper); -// if (result) { -// System.out.println("取消收藏成功"); -// return ResultUtils.success(result); -// } else { -// throw new BusinessException(ErrorCode.SYSTEM_ERROR); -// } -// } else { -// // 每个用户串行收藏 -// // 锁必须要包裹住事务方法 -// Lock lock = new ReentrantLock(); -// lock.lock(); -// try { -// result = this.save(seResourceFavour); -// } catch (Exception e) { -// throw new BusinessException(ErrorCode.OPERATION_ERROR); -// } finally { -// lock.unlock(); -// System.out.println("收藏成功"); -// return ResultUtils.success(result); -// } -// } -// } -// -// @Override -// public Page listCourseFavourByPage(String userId, Integer type, Integer page, Integer pageSize) { -// UmsUser umsAdmin = umsAdminMapper.selectById(userId); -// if(umsAdmin == null){ -// throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS); -// } -// QueryWrapper resourceQueryWrapper = new QueryWrapper<>(); -// resourceQueryWrapper.eq("user_id",userId); -// List ids = this.list(resourceQueryWrapper).stream().map(SeResourceFavour::getResourceId).collect(Collectors.toList()); -// return courseResourcesService.getresourceRecords(type,ids,page,pageSize); -// } -//} +package com.teaching.backend.service.impl.favour; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.mapper.favour.SeResourceFavourMapper; +import com.teaching.backend.mapper.resource.ResourceMapper; +import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; +import com.teaching.backend.model.entity.favour.ResourceFavour; +import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.model.entity.umsAdmin.UmsUser; +import com.teaching.backend.service.favour.ResourceFavourService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; +import java.util.stream.Collectors; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class SeResourceFavourServiceImpl extends ServiceImpl implements ResourceFavourService { + + + @Autowired + CoursesMapper coursesMapper; + + + + @Autowired + private UmsUserMapper umsAdminMapper; + + @Autowired + private ResourceMapper resourceMapper; + + @Override + public BaseResponse doResourceFavour(Long resourceId, Long userId) { + boolean result = false; + ResourceMysql resourceMysql = resourceMapper.selectById(resourceId); + if(resourceMysql == null){ + throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS); + } + + // 先查询数据库记录,该用户是否收藏 + ResourceFavour resourceFavour = new ResourceFavour(); + resourceFavour.setResourceId(resourceId); + resourceFavour.setUserId(userId); + QueryWrapper thumbQueryWrapper = new QueryWrapper<>(resourceFavour); + ResourceFavour oldresourceFavour = this.getOne(thumbQueryWrapper); + //已收藏 + if (oldresourceFavour != null) { + // 取消收藏 删除记录 + result = this.remove(thumbQueryWrapper); + if (result) { + return ResultUtils.success(result); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } else { + // 每个用户串行收藏 + // 锁必须要包裹住事务方法 + Lock lock = new ReentrantLock(); + lock.lock(); + try { + result = this.save(resourceFavour); + } catch (Exception e) { + throw new BusinessException(ErrorCode.OPERATION_ERROR); + } finally { + lock.unlock(); + System.out.println("收藏成功"); + return ResultUtils.success(result); + } + } + } + + @Override + public Page listCourseFavourByPage(Long userId, Integer type, Integer page, Integer pageSize) { + UmsUser umsAdmin = umsAdminMapper.selectById(userId); + if(umsAdmin == null){ + throw new BusinessException(ErrorCode.PARAMS_USER_NOTEXISTS); + } + QueryWrapper resourceQueryWrapper = new QueryWrapper<>(); + resourceQueryWrapper.eq("user_id",userId); + List ids = this.list(resourceQueryWrapper).stream().map(ResourceFavour::getResourceId).collect(Collectors.toList()); + Page resourceMysqlPage = new Page<>(page,pageSize); + QueryWrapper resourceMysqlQueryWrapper = new QueryWrapper<>(); + resourceQueryWrapper.in("id",ids); + resourceQueryWrapper.eq("type",type); + return resourceMapper.selectPage(resourceMysqlPage, resourceMysqlQueryWrapper); + } + +} diff --git a/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java index ad23a89..50acfe9 100644 --- a/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/know/knowServiceImpl.java @@ -4,10 +4,13 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.model.vo.knowGraph.KnowPathVO; +import com.teaching.backend.mapper.resource.ResourceRelationshipMapper; +import com.teaching.backend.model.entity.resource.ResourceRelationship; +import com.teaching.backend.model.query.PageQuery; import com.teaching.backend.mapper.Knowtemp.KnowstrMapper; import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; import com.teaching.backend.mapper.chapter.ChapterMapper; @@ -17,18 +20,25 @@ import com.teaching.backend.model.dto.Know.*; import com.teaching.backend.model.entity.chapter.Chapter; import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.know.*; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.vo.knowGraph.KnowPath; +import com.teaching.backend.model.vo.knowGraph.KnowPathVO; import com.teaching.backend.model.vo.knowGraph.KnowVO; +import com.teaching.backend.model.vo.knowGraph.NodesVO; import com.teaching.backend.service.Know.KnowService; -import com.teaching.backend.service.knowtmp.KnowtmpService; +import com.teaching.backend.service.knowtmp.KnowPointService; +import com.teaching.backend.service.resource.ResourceGraphService; +import com.teaching.backend.utils.Neo4jUtil; import org.neo4j.driver.internal.InternalRelationship; import org.neo4j.driver.types.Node; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.neo4j.core.Neo4jClient; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.*; +import java.util.stream.Collectors; /** * @Author:youhang @@ -49,7 +59,18 @@ public class knowServiceImpl implements KnowService { private ChapterMapper chapterMapper; @Autowired - private KnowtmpService knowtmpService; + private KnowPointService knowPointService; + @Autowired + private ResourceGraphService resourceGraphService; + + @Autowired + private ResourceRelationshipMapper resourceRelationshipMapper; + + + @Autowired + private Neo4jUtil neo4jUtil; + + @Autowired @@ -72,10 +93,12 @@ public class knowServiceImpl implements KnowService { } public BaseResponse getNodeByDepth(long id, Long depth) { - Collection> all = - neo4jClient.query("match(n:Know)-[r:contain*0.." + depth + "]->(p:Know) where ID(n) = " + id + " return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); - Collection> all2 = - neo4jClient.query("match(n:Know)-[r*0.." + depth + "]->(p:Know) where ID(n) = " + id + " return r as `r`").fetch().all(); + if(depth > 2){ + depth--; + } + + Collection> all =neo4jUtil.queryPartofByDepth(id,depth); + Collection> all2 =neo4jUtil.queryAllrelsByDepth(id,depth); Iterator> iterator = all.iterator(); @@ -152,11 +175,8 @@ public class knowServiceImpl implements KnowService { } public BaseResponse getDepthNodeByCourseId(String courseId, Long depth) { - Collection> all = - neo4jClient.query("match(n:Know)-[r:contain*0.." + depth + "]->(p:Know) where n.courseId = '" + courseId + "' return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); - Collection> all2 = - neo4jClient.query("match(n:Know)-[r*0.." + depth + "]->(p:Know) where n.courseId = '" + courseId + "' return r as `r`").fetch().all(); - + Collection> all =neo4jUtil.queryPartofByCourseIdAndDepth(courseId,depth); + Collection> all2 =neo4jUtil.queryAllrelsByCourseIdAndDepth(courseId,depth); Iterator> iterator = all.iterator(); Iterator> iterator2 = all2.iterator(); @@ -231,11 +251,9 @@ public class knowServiceImpl implements KnowService { return ResultUtils.success(baseKnowReturn); } @Override - public BaseResponse showGraphJson(String courseId) { + public BaseResponse generateGraphJson(String courseId) { // 创建 JSON 对象数组 - JSONArray jsonArrayKnowNode = JSONUtil.createArray(); - JSONArray jsonArrayCourseNode = JSONUtil.createArray(); - JSONArray jsonArrayChapterNode = JSONUtil.createArray(); + JSONArray jsonArrayNodes = JSONUtil.createArray(); //查询数据库-课程 Courses courses = coursesMapper.selectById(courseId); @@ -244,10 +262,13 @@ public class knowServiceImpl implements KnowService { } JSONObject obj1 = JSONUtil.createObj(); obj1.put("courseId", courseId); + obj1.put("chapterId", ""); + obj1.put("knowId", ""); obj1.put("name", courses.getName()); obj1.put("info", courses.getDescription()); obj1.put("hour", courses.getClasshours()); - jsonArrayCourseNode.add(obj1); + obj1.put("tags", ""); + jsonArrayNodes.add(obj1); //查询数据库-章-节 List chapterList = new ArrayList<>(); @@ -267,35 +288,39 @@ public class knowServiceImpl implements KnowService { for (int i = 0; i < chapterList.size(); i++) { Chapter chapter = chapterList.get(i); JSONObject obj2 = JSONUtil.createObj(); + obj2.put("courseId", courseId); obj2.put("chapterId", chapter.getId()); + obj2.put("knowId", ""); obj2.put("name", chapter.getName()); obj2.put("info", chapter.getContent()); obj2.put("hour", chapter.getTotalClassHours()); - jsonArrayChapterNode.add(obj2); + obj2.put("tags", ""); + jsonArrayNodes.add(obj2); } //查询数据库-知识点 for (int i = 0; i < chapterList.size(); i++) { Chapter chapter = chapterList.get(i); if (chapter.getPid() != 0) { - List knowlist = knowtmpService.queryByChapterId(chapter.getId()).getData(); + List knowlist = knowPointService.queryByChapterId(chapter.getId()).getData(); for (int j = 0; j < knowlist.size(); j++) { - Knowtmp knowtmp = knowlist.get(j); + KnowPoint knowtmp = knowlist.get(j); JSONObject obj3 = JSONUtil.createObj(); + obj3.put("courseId", courseId); + obj3.put("chapterId", ""); obj3.put("knowId", knowtmp.getId()); obj3.put("name", knowtmp.getName()); obj3.put("info", knowtmp.getInfo()); obj3.put("hour", knowtmp.getHour()); - jsonArrayKnowNode.add(obj3); + obj3.put("tags", ""); + jsonArrayNodes.add(obj3); } } } - // =======创建关系 JSONArray edgesArray = JSONUtil.createArray(); - // 创建边列表 // 课程-章节 父子 for (int i = 0; i < chapterListPID.size(); i++) { @@ -303,8 +328,8 @@ public class knowServiceImpl implements KnowService { JSONObject edge = JSONUtil.createObj(); edge.put("source", courses.getId()); edge.put("target", chapter.getId()); - edge.put("type", "contain"); - edge.put("sta", 1); + edge.put("type", "PartOf"); + edge.put("sta",1); edgesArray.add(edge); } //章-节 父子 @@ -314,7 +339,7 @@ public class knowServiceImpl implements KnowService { JSONObject edge = JSONUtil.createObj(); edge.put("source", chapterListPID.get(i).getId()); edge.put("target", chapterListSecond.get(j).getId()); - edge.put("type", "contain"); + edge.put("type", "PartOf"); edge.put("sta", 2); edgesArray.add(edge); } @@ -322,13 +347,13 @@ public class knowServiceImpl implements KnowService { //节与点父子 List knowIds = new ArrayList<>(); for (int i = 0; i < chapterTwoIds.size(); i++) { - List knowlist = knowtmpService.queryByChapterId(chapterTwoIds.get(i)).getData(); + List knowlist = knowPointService.queryByChapterId(chapterTwoIds.get(i)).getData(); for (int j = 0; j < knowlist.size(); j++) { - Knowtmp knowtmp = knowlist.get(j); + KnowPoint knowtmp = knowlist.get(j); JSONObject edge = JSONUtil.createObj(); edge.put("source", chapterTwoIds.get(i)); edge.put("target", knowtmp.getId()); - edge.put("type", "contain"); + edge.put("type", "PartOf"); edge.put("sta", 3); edgesArray.add(edge); knowIds.add(knowtmp.getId()); @@ -336,49 +361,14 @@ public class knowServiceImpl implements KnowService { } - //章-章 顺序 - for (int i = 0; i < chapterOneIds.size() - 1; i++) { - JSONObject edge = JSONUtil.createObj(); - edge.put("source", chapterOneIds.get(i)); - edge.put("target", chapterOneIds.get(i + 1)); - edge.put("type", "order"); - edge.put("sta", 2); - edgesArray.add(edge); - } - - - //节与节 顺序 - for (int i = 0; i < chapterTwoIds.size() - 1; i++) { - JSONObject edge = JSONUtil.createObj(); - edge.put("source", chapterTwoIds.get(i)); - edge.put("target", chapterTwoIds.get(i + 1)); - edge.put("type", "order"); - edge.put("sta", 2); - edgesArray.add(edge); - } - - - //点-点 顺序 - for (int i = 0; i < knowIds.size() - 1; i++) { - JSONObject edge = JSONUtil.createObj(); - edge.put("source", knowIds.get(i)); - edge.put("target", knowIds.get(i + 1)); - edge.put("type", "order"); - edge.put("sta", 4); - edgesArray.add(edge); - } - String jsonNodeKnow = jsonArrayKnowNode.toString(); - String jsonNodeChapter = jsonArrayChapterNode.toString(); - String jsonNodeCourse = jsonArrayCourseNode.toString(); + String jsonNodes = jsonArrayNodes.toString(); String jsonEdges = edgesArray.toString(); KnowStr knowStr = new KnowStr(); knowStr.setCourseId(courseId); - knowStr.setCoursestr(jsonNodeCourse); - knowStr.setChapterstr(jsonNodeChapter); - knowStr.setKnowstr(jsonNodeKnow); - knowStr.setEdgestr(jsonEdges); + knowStr.setNodes(jsonNodes); + knowStr.setEdges(jsonEdges); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("course_id", courseId); KnowStr knowStrOld = knowstrMapper.selectOne(queryWrapper); @@ -397,43 +387,243 @@ public class knowServiceImpl implements KnowService { } @Override - public BaseResponse> knowLearnPath(String corseId) { + public BaseResponse> learnpath(String courseId){ + + //返回需要的元素和关系 + Listnodes = new ArrayList<>(); + Listtmp = new ArrayList<>(); + ListfinalOrder = new ArrayList<>(); + + + + //是否存在图投影,存在就删除 。因为节点的改变,图投影不会改变,要随时更新投影 + boolean f = knowRepository.exeGraph(); + if(f){ + neo4jUtil.deleteGraphProjection(); + } + + //创建图投影 + Collection> result3 = neo4jUtil.createGraphProjection(courseId); + + Iterator> iterator3 = result3.iterator(); + + Map element1 = iterator3.next(); + Long nums = (Long) element1.get("nodes"); + if(nums == null){ + return ResultUtils.success(nodes); + } + + //查询所有节点以及分数 + Collection> result = neo4jUtil.pagerank(); + Iterator> iterator = result.iterator(); + NodesVO know; + while (iterator.hasNext()) { + Map element = iterator.next(); + Node node = (Node) element.get("know"); + Long id = node.id(); + String name = node.get("name").asString(); + Double score = (Double) element.get("score"); + Long knowId = node.get("knowId").asLong(); + Double hour = node.get("hour").asDouble(); + know = new NodesVO(); + know.setId(id); + know.setName(name); + know.setScore(score); + know.setKnowId(knowId); + know.setHour(hour); + nodes.add(know); + } + + //查询所有节点拥有前修后继关系 ,links 存储关系 + result = neo4jUtil.queryPartOfByCourseId(courseId); + Iterator> iterator1 = result.iterator(); + Set linksList = new HashSet<>(); + Links links; + while (iterator1.hasNext()) { + Map element = iterator1.next(); + InternalRelationship e = (InternalRelationship) element.get("r"); + links = new Links(); + links.setId(e.id()); + links.setSource(e.startNodeId()); + links.setTarget(e.endNodeId()); + links.setLabel(e.type()); + linksList.add(links); + } + + if(linksList.size() <= 0){ + return ResultUtils.success(nodes); + } + + //创建 ID 与node对应的hash表 + Iterator iteratorHash = nodes.iterator(); + HashMaphashMap = new HashMap<>(); + while (iteratorHash.hasNext()) { + NodesVO nodesVO = iteratorHash.next(); + hashMap.put(nodesVO.getId(),nodesVO); + } + + //进行拓扑排序 + while(nodes.size() > 0){ + + //清空空各个节点的入度 + for (int i = 0; i < nodes.size(); i++) { + NodesVO nodesVO = nodes.get(i); + nodesVO.setCnt(0); + } + + //记录各个节点的入度 + Iterator iterator2 = linksList.iterator(); + + + + for (int i = 0; i < nodes.size(); i++) { + NodesVO nodesVO = nodes.get(i); + if(nodesVO.getCnt() == 0){ + //加入到临时数组 + tmp.add(nodesVO); + } + } + + Listremovetmp = new ArrayList<>(); + Listremovetmp2 = new ArrayList<>(); + + for (int i = 0; i iteratorLinks= linksList.iterator(); + while (iteratorLinks.hasNext()) { + Links links1 = iteratorLinks.next(); + NodesVO nodesVO2 = nodes.get(i); + if(links1.getSource() == nodesVO2.getId()){ + removetmp.add(links1); + } + } - //查询第一个知识点-最后一个知识点 - List knowIds = new ArrayList<>(); - List chapterList = chapterMapper.selectChapterPIDByCourseId(corseId); - for (int i = 0; i < chapterList.size(); i++) { - List chapterList1 = chapterMapper.selectChapterChildrenOrderByNum(chapterList.get(i).getId()); - for (int j = 0; j < chapterList1.size(); j++) { - QueryWrapper queryWrapper = new QueryWrapper(); - queryWrapper.eq("chapterid", chapterList1.get(j).getId()); - List knowtmp = knowtmpMapper.selectList(queryWrapper); - for (int k = 0; k < knowtmp.size(); k++) { - Knowtmp knowtmp1 = knowtmp.get(k); - knowIds.add(knowtmp1.getId()); } } + //将入度为0的节点移除 + nodes.removeAll(removetmp2); + linksList.removeAll(removetmp); + + //根据积分排序 + List userList2 =removetmp2.stream().sorted(Comparator.comparing(NodesVO::getScore)).collect(Collectors.toList()); + + //清空tmp + for (int i = 0; i < tmp.size(); i++) { + tmp.remove(i); + } + //放入final 数组 + for (int i = 0; i < userList2.size(); i++) { + + + finalOrder.add(userList2.get(i)); + } + } - // 生成学习路径 - String str = "MATCH p = (:Know{knowId:" + knowIds.get(0) + "})-[*]->(:Know{knowId:" + knowIds.get(knowIds.size() - 1) + "}) WITH p, REDUCE(totalWeight = 0.0, r IN relationships(p) | totalWeight + r.weight) AS pathWeight " + - "RETURN [x IN nodes(p)|x.name] AS path,pathWeight ORDER BY pathWeight desc;" ; - Collection> result = neo4jClient.query(str).fetch().all(); + return ResultUtils.success(finalOrder); + + } + + @Override + public BaseResponse PathPage(KnowPathDTO knowPathDTO){ + String courseName = knowPathDTO.getCourseName(); + Page page = new Page<>(knowPathDTO.getPageNo(),knowPathDTO.getPageSize()); + // 可以添加查询条件,这里没有条件直接查询所有用户 + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(courseName != null || !"".equals(courseName)){ + queryWrapper.like("name",courseName); + } + //根据降序排序 + queryWrapper.orderByDesc("create_time"); + //分页查询 knowstr表中的课程id + Page courseList = coursesMapper.selectPage(page, queryWrapper); + List Ids = courseList.getRecords().stream().map(menu -> menu.getId()).collect(Collectors.toList()); + KnowPathVO knowPathVO = new KnowPathVO(); + List pathList = new ArrayList<>(); + //通过课程id去查询 + for (int i = 0; i < Ids.size(); i++) { + List Nodes =learnpath(Ids.get(i)).getData(); + List path = Nodes.stream().map(menu -> menu.getName()).collect(Collectors.toList()); + KnowPath knowPath = new KnowPath(); + knowPath.setNodeList(path); + knowPath.setCourseId(Ids.get(i)); + knowPath.setNodesCount(path.size()); + knowPath.setTotalHours(Nodes.stream().mapToDouble(menu -> menu.getHour()).sum()); + knowPath.setCourseName(coursesMapper.selectById(Ids.get(i)).getName()); + pathList.add(knowPath); + } + knowPathVO.setKnowPath(pathList); + knowPathVO.setTotalPage(courseList.getTotal()); + knowPathVO.setCurrentpage(courseList.getCurrent()); + + + return ResultUtils.success(knowPathVO); + } + + + // 快排 + + + + + @Override + public void knowLearnPath(String courseId,Long userId) { + //删除图投影 + String strOld = "CALL gds.graph.drop('knowPath', false); "; + //创建图投影 + String str= "MATCH (n:Know) WHERE n.knowId IS NOT null and n.courseId='"+courseId+"'OPTIONAL MATCH (n)<-[r:PartOf]-(m)" + + "WITH gds.graph.project('knowPath', n, m, { relationshipProperties: r { .weight } }) AS g " + + "RETURN g.graphName AS graph, g.nodeCount AS nodes, g.relationshipCount AS rels"; + //根据度中心性排序 算法 + String path = "CALL gds.degree.stream('knowPath')YIELD nodeId, score where gds.util.asNode(nodeId).knowId is not null " + + "RETURN gds.util.asNode(nodeId) AS know, score AS followers ORDER BY followers DESC"; + + neo4jClient.query(strOld).fetch().all(); + neo4jClient.query(str).fetch().all(); + Collection> result = neo4jClient.query(path).fetch().all(); Iterator> iterator = result.iterator(); - ListknowPathVOList = new ArrayList<>(); - KnowPathVO knowPathVO; + Mapmap = new HashMap(); + Know know; + List knowList = new ArrayList<>(); while (iterator.hasNext()) { Map element = iterator.next(); - knowPathVO= new KnowPathVO(); - List list = new ArrayList<>(); - list = (List) element.get("path"); - knowPathVO.setNodeList(list); - Double pathWeight = (Double) element.get("pathWeight"); - knowPathVO.setWeight(pathWeight); - knowPathVOList.add(knowPathVO); + List list1 = (List) element.get("p"); + Node node = (Node) element.get("know"); + Long id = node.id(); + String name = node.get("name").asString(); + know = new Know(); + know.setId(id); + know.setName(name); + knowList.add(know); + Double followers = (Double) element.get("followers"); } - return ResultUtils.success(knowPathVOList); + + + + System.out.println("数量"+knowList.size()); + //筛选已学习的节点 + for(int i = 0; i < knowList.size(); i++){ + Know know1 = knowList.get(i); + int res = knowRepository.exesitsRels(know1.getId(), userId); + if(res > 0){ + knowList.remove(i); + } + } + System.out.println("数量"+knowList.size()); + + //筛选已学习的节点 + for(int i = 0; i < knowList.size(); i++){ + + System.out.println(knowList.get(i)); + } + + + + } @Override @@ -445,11 +635,11 @@ public class knowServiceImpl implements KnowService { for (int i = 0; i < chapterList.size(); i++) { List chapterList1 = chapterMapper.selectChapterChildrenOrderByNum(chapterList.get(i).getId()); for (int j = 0; j < chapterList1.size(); j++) { - QueryWrapper queryWrapper = new QueryWrapper(); + QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.eq("chapterid", chapterList1.get(j).getId()); - List knowtmp = knowtmpMapper.selectList(queryWrapper); + List knowtmp = knowtmpMapper.selectList(queryWrapper); for (int k = 0; k < knowtmp.size(); k++) { - Knowtmp knowtmp1 = knowtmp.get(k); + KnowPoint knowtmp1 = knowtmp.get(k); knowIds.add(knowtmp1.getId()); } } @@ -521,16 +711,16 @@ public class knowServiceImpl implements KnowService { if (f <= 0) { return ResultUtils.error(ErrorCode.PARAMS_ERROR, "source Id不存在"); } - if (label == null || (!"order".equals(label) && "conatin".equals(label) && "dependent".equals(label))) { + if (label == null || (!"Partof".equals(label) && "Prior".equals(label) && "RelatedTo".equals(label))) { return ResultUtils.error(ErrorCode.PARAMS_ERROR, "type 不存在"); } //判断关系是否存在 String weight = null; - if ("contain".equals(label)) { - weight = " {weight:5}"; - } else if ("dependent".equals(label)) { - weight = " {weight:9}"; - } else if ("order".equals(label)) { + if ("Partof".equals(label)) { + weight = " {weight:2}"; + } else if ("Prior".equals(label)) { + weight = " {weight:3}"; + } else if ("RelatedTo".equals(label)) { weight = " {weight: 1}"; } @@ -548,8 +738,6 @@ public class knowServiceImpl implements KnowService { } } - - str = "MATCH (n:Know), (p:Know) where ID(n) = " + source + " and ID(p) = " + target + " CREATE (n)-[r:" + label + weight + "]->(p) RETURN count(r) as `r`;"; Collection> result1 = neo4jClient.query(str).fetch().all(); @@ -583,21 +771,22 @@ public class knowServiceImpl implements KnowService { Long opResult(String source, String target, String type, Integer sta) { Long res = -1L; String weight = null; - if ("contain".equals(type)) { - weight = " {weight:5}"; - } else if ("dependent".equals(type)) { - weight = " {weight:9}"; - } else if ("order".equals(type)) { + if ("PartOf".equals(type)) { + weight = " {weight:2}"; + } else if ("Prior".equals(type)) { + weight = " {weight:3}"; + } else if ("RelatedTo".equals(type)) { weight = " {weight: 1}"; } if (sta != null && sta == 1) { res = -1L; Long target1 = Long.parseLong(target); - String str = "MATCH (p:Know), (j:Know) WHERE p.courseId= '" + source + "' AND j.chapterId= " + target1 + " CREATE (p)-[r: " + type + weight + " ]->(j) return count(r) as `count`;"; + String str = "MATCH (p:Know), (j:Know) WHERE p.courseId= '" + source + "' AND p.chapterId is null AND p.knowId is null AND j.chapterId= " + target1 + " CREATE (p)-[r: " + type + weight + " ]->(j) return count(r) as `count`;"; Collection> result = neo4jClient.query(str).fetch().all(); Iterator> iterator = result.iterator(); while (iterator.hasNext()) { Map element = iterator.next(); + System.out.println((Long) element.get("count")); res = (Long) element.get("count"); } if (res < 0L) { @@ -613,6 +802,7 @@ public class knowServiceImpl implements KnowService { res = -1L; while (iterator.hasNext()) { Map element = iterator.next(); + System.out.println((Long) element.get("count")); res = (Long) element.get("count"); } if (res <= 0L) { @@ -629,6 +819,7 @@ public class knowServiceImpl implements KnowService { res = -1L; while (iterator.hasNext()) { Map element = iterator.next(); + System.out.println((Long) element.get("count")); res = (Long) element.get("count"); } if (res < 0) { @@ -644,6 +835,7 @@ public class knowServiceImpl implements KnowService { res = -1L; while (iterator.hasNext()) { Map element = iterator.next(); + System.out.println((Long) element.get("count")); res = (Long) element.get("count"); } if (res < 0L) { @@ -658,70 +850,45 @@ public class knowServiceImpl implements KnowService { //根据json串生成 图谱 保证事务 + @Transactional(value="transactionManager") public BaseResponse generateGraph(String courseId1) { + + //先查询课程id的节点是否存在 + List l = knowRepository.queryNodesByCourseId(courseId1); + + if(l != null && l.size() >0){ + int f = knowRepository.deleteAllById(l); + if(f <=- 0){ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除失败"); + } + } + QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("course_id", courseId1); KnowStr knowStr = knowstrMapper.selectOne(queryWrapper); - String jsonNodeCourse = knowStr.getCoursestr(); - String jsonNodeChapter = knowStr.getChapterstr(); - String jsonNodeKnow = knowStr.getKnowstr(); - String jsonEdges = knowStr.getEdgestr(); + String jsonNodes = knowStr.getNodes(); + String jsonEdges = knowStr.getEdges(); ArrayList idLists = new ArrayList<>(); //插入图 - JSONArray jsonArrayCourse = JSONUtil.parseArray(jsonNodeCourse); + JSONArray jsonArrayCourse = JSONUtil.parseArray(jsonNodes); for (Object obj : jsonArrayCourse) { JSONObject jsonObject = (JSONObject) obj; String courseId = jsonObject.getStr("courseId"); + Long chapterId = jsonObject.getLong("chapterId"); + Long knowId = jsonObject.getLong("knowId"); String name = jsonObject.getStr("name"); String info = jsonObject.getStr("info"); Integer hour = jsonObject.getInt("hour"); + String tags = jsonObject.getStr("tags"); //在图数据库中插入 - Long res = knowRepository.addCourse(courseId, name, info, hour); + Long res = knowRepository.addNodes(courseId,chapterId, knowId,name, info, hour,tags); idLists.add(res); if (res == null) { return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加课程失败"); } } - //插入章节 - JSONArray jsonArray = JSONUtil.parseArray(jsonNodeChapter); - for (Object obj : jsonArray) { - JSONObject jsonObject = (JSONObject) obj; - Long chapterId = jsonObject.getLong("chapterId"); - String name = jsonObject.getStr("name"); - String info = jsonObject.getStr("info"); - double hour = jsonObject.getDouble("hour"); - //在图数据库中插入 - Long res = knowRepository.addChapter(chapterId, name, info, hour); - idLists.add(res); - if (res == null) { - for (int i = 0; i < idLists.size(); i++) { - knowRepository.deleteNode(idLists.get(i)); - } - return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加章节失败"); - - } - - } - //插入知识点 - JSONArray jsonArrayKnow = JSONUtil.parseArray(jsonNodeKnow); - for (Object obj : jsonArrayKnow) { - JSONObject jsonObject = (JSONObject) obj; - Long knowId = jsonObject.getLong("knowId"); - String name = jsonObject.getStr("name"); - String info = jsonObject.getStr("info"); - double hour = jsonObject.getDouble("hour"); - //在图数据库中插入 - Long res = knowRepository.addKnow(knowId, name, info, hour); - idLists.add(res); - if (res == null) { - for (int i = 0; i < idLists.size(); i++) { - knowRepository.deleteNode(idLists.get(i)); - } - return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加知识点失败"); - } - } //插入关系 // 1 课程-章节 2 章节 - 章节 3 章节 - 知识点 4 点 - 点 JSONArray jsonArrayEdges = JSONUtil.parseArray(jsonEdges); for (Object obj : jsonArrayEdges) { @@ -739,6 +906,17 @@ public class knowServiceImpl implements KnowService { return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "添加节点关系失败"); } } + //根据mysql KnowId 建立资源与neo4j 节点资源关系 + QueryWrapperqueryWrapper1 = new QueryWrapper<>(); + queryWrapper1.eq("course_id",courseId1); + List resourceRelationships = resourceRelationshipMapper.selectList(queryWrapper1); + for (int i = 0; i < resourceRelationships.size(); i++) { + ResourceRelationship resourceRelationship = resourceRelationships.get(i); + Long knowId = resourceRelationship.getKnowId(); + Long resourceId = resourceRelationship.getResourceId(); + String s = resourceGraphService.addResourcesByKnowId(knowId,resourceId).getData(); + System.out.println(s); + } return ResultUtils.success("添加节点关系成功"); } @@ -746,10 +924,8 @@ public class knowServiceImpl implements KnowService { //获取课程下的所有知识点 @Override public BaseResponse getAllKnowByCourseId(String id) { - Collection> all = - neo4jClient.query("match(n:Know)-[r:contain*0..]->(p:Know) where n.courseId = '" + id + "' return n as `n`,r as `r`,p as `p`,length(r) as `d`").fetch().all(); - Collection> all2 = - neo4jClient.query("match(n:Know)-[r*]->(p:Know) where n.courseId = '" + id + "' return r as `r`").fetch().all(); + Collection> all =neo4jUtil.queryPartofByCourseId(id); + Collection> all2 =neo4jUtil.queryAllrelsByCourseId(id); Map colorChoose = new HashMap<>(); @@ -776,6 +952,10 @@ public class knowServiceImpl implements KnowService { if (node1 != null) { Long id1 = node1.id(); String name1 = node1.get("name").asString(); +// if(node1.containsKey("knowId")){ +// Long knowId = node1.get("knowId").asLong(); +// knowVO.setKnowId(knowId); +// } knowVO.setId(id1); knowVO.setLabel(name1); knowList.add(knowVO); @@ -790,41 +970,35 @@ public class knowServiceImpl implements KnowService { links.setId(e.id()); links.setSource(e.startNodeId()); links.setTarget(e.endNodeId()); - if ("contain".equals(e.type())) { + if ("PartOf".equals(e.type())) { links.setLabel("包含"); } else if ("order".equals(e.type())) { links.setLabel("顺序"); - }else if ("dependent".equals(e.type())) { - links.setLabel("依赖"); + }else if ("Prior".equals(e.type())) { + links.setLabel("先修"); } linksList.add(links); } } - } + + while (iterator2.hasNext()) { Map element = iterator2.next(); - node2 = (List) element.get("r"); - if (!node2.isEmpty()) { - for (int i = 0; i < node2.size(); i++) { - InternalRelationship e = (InternalRelationship) node2.get(i); - links = new Links(); - links.setId(e.id()); - links.setSource(e.startNodeId()); - links.setTarget(e.endNodeId()); - if ("contain".equals(e.type())) { - links.setLabel("包含"); - } else if ("order".equals(e.type())) { - links.setLabel("顺序"); - }else if ("dependent".equals(e.type())) { - links.setLabel("依赖"); - } - linksList.add(links); - } + InternalRelationship e = (InternalRelationship) element.get("r"); + links = new Links(); + links.setId(e.id()); + links.setSource(e.startNodeId()); + links.setTarget(e.endNodeId()); + if ("PartOf".equals(e.type())) { + links.setLabel("包含"); + } else if ("order".equals(e.type())) { + links.setLabel("顺序"); + }else if ("Prior".equals(e.type())) { + links.setLabel("先修后继"); } - - + linksList.add(links); } BaseKnowReturn baseKnowReturn = new BaseKnowReturn(knowList, linksList); @@ -916,19 +1090,8 @@ public class knowServiceImpl implements KnowService { @Override public BaseResponse getRelsNodesById(Long id, List types) { - String str = "match(n:Know)-[r:"; - for (int i = 0; i < types.size(); i++) { - if (i == types.size() - 1) { - str = str + types.get(i) + "*"; - } else { - str = str + types.get(i) + "|"; - } - } - str = str + "]->(p:Know) where ID(n) = " + id + " return n as `n`,r as `r`,p as `p`,length(r) as `d`"; - System.out.println(str); - Collection> all = - neo4jClient.query(str).fetch().all(); + Collection> all =neo4jUtil.queryNodesByRels(id,types); Iterator> iterator = all.iterator(); Set knowList = new HashSet<>(); @@ -960,12 +1123,12 @@ public class knowServiceImpl implements KnowService { links.setId(e.id()); links.setSource(e.startNodeId()); links.setTarget(e.endNodeId()); - if ("contain".equals(e.type())) { + if ("PartOf".equals(e.type())) { links.setLabel("包含"); } else if ("order".equals(e.type())) { links.setLabel("顺序"); - }else if("dependent".equals(e.type())){ - links.setLabel("依赖"); + }else if("Prior".equals(e.type())){ + links.setLabel("先修后继"); } linksList.add(links); } @@ -978,10 +1141,7 @@ public class knowServiceImpl implements KnowService { @Override public BaseResponse getKnowGraphById(Long id) { - String str = "match(n:Know)-[r*]->(p:Know) where ID(n) = " + id + " return n as `n`,r as `r`,p as `p`,length(r) as `d`"; - System.out.println(str); - Collection> all = - neo4jClient.query(str).fetch().all(); + Collection> all = neo4jUtil.getKnowGraphById(id); Iterator> iterator = all.iterator(); Set knowList = new HashSet<>(); diff --git a/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java deleted file mode 100644 index 9e109b8..0000000 --- a/src/main/java/com/teaching/backend/service/impl/knowtmp/KnowtmpServiceImpl.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.teaching.backend.service.impl.knowtmp; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; -import com.teaching.backend.mapper.chapter.ChapterMapper; -import com.teaching.backend.model.dto.Knowtmp.KnowtempAdd; -import com.teaching.backend.model.dto.Knowtmp.KnowtempUpdate; -import com.teaching.backend.model.entity.chapter.Chapter; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; -import com.teaching.backend.service.knowtmp.KnowtmpService; -import org.checkerframework.checker.units.qual.A; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; - -/** - * @Author:youhang - * @Date:2024-08-07-19:40 - * @Description: - */ -@Service -public class KnowtmpServiceImpl implements KnowtmpService { - - @Autowired - private ChapterMapper chapterMapper; - - - @Autowired - private KnowtmpMapper knowtmpMapper; - - - - @Override - public BaseResponse getAllKnows(String courseId) { - // 3 从章节表查出章节节点 并添加到 neo - List chapterIds = chapterMapper.selectChapterIdsByCourseId(courseId); - //获取chapterId 查询知识点 返回知识点集合 - QueryWrapper objectQueryWrapper = new QueryWrapper<>(); - objectQueryWrapper.in("chapterid",chapterIds); - Long count = knowtmpMapper.selectCount(objectQueryWrapper); - return ResultUtils.success(count); - } - - @Override - public BaseResponse add(KnowtempAdd knowtempAdd) { - Knowtmp knowtmp = new Knowtmp(); - BeanUtils.copyProperties(knowtempAdd,knowtmp); - int f = knowtmpMapper.insert(knowtmp); - if(f > 0){ - return ResultUtils.success("添加成功"); - }else{ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加失败"); - } - } - - @Override - public BaseResponse update(KnowtempUpdate knowtempUpdate) { - Knowtmp knowtmp = new Knowtmp(); - BeanUtils.copyProperties(knowtempUpdate,knowtmp); - Knowtmp knowtmpOld = knowtmpMapper.selectById(knowtmp.getId()); - if(knowtmpOld == null){ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); - } - int f = knowtmpMapper.updateById(knowtmp); - if(f > 0){ - return ResultUtils.success("修改成功"); - }else{ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改失败"); - } - } - - @Override - public BaseResponse delete(Long id) { - - Knowtmp knowtmpOld = knowtmpMapper.selectById(id); - if(knowtmpOld == null){ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); - } - int f = knowtmpMapper.deleteById(id); - if(f > 0){ - return ResultUtils.success("删除成功"); - }else{ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除失败"); - } - } - - @Override - public BaseResponse query(Long id) { - Knowtmp knowtmp = knowtmpMapper.selectById(id); - if(knowtmp == null){ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); - } - return ResultUtils.success(knowtmp); - } - - @Override - public BaseResponse> queryByChapterId(Long chapterId) { - List knowtmps = knowtmpMapper.queryIdByChapterId(chapterId); - if(knowtmps == null){ - return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); - } - return ResultUtils.success(knowtmps); - } - - @Override - public List queryByChapterIdList(List chapterIdList) { - QueryWrapper knowtmpQueryWrapper = new QueryWrapper<>(); - knowtmpQueryWrapper.in("chapterId",chapterIdList); - List knowtmps = knowtmpMapper.selectList(knowtmpQueryWrapper); - return knowtmps; - } -} diff --git a/src/main/java/com/teaching/backend/service/impl/knowtmp/knowPointServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/knowtmp/knowPointServiceImpl.java new file mode 100644 index 0000000..6b92852 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/knowtmp/knowPointServiceImpl.java @@ -0,0 +1,279 @@ +package com.teaching.backend.service.impl.knowtmp; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.chapter.ChapterMapper; +import com.teaching.backend.mapper.courses.CourseObjectivesMapper; +import com.teaching.backend.mapper.courses.ObjectiveContentKnowMapper; +import com.teaching.backend.model.dto.Knowtmp.KnowPointAddRequest; +import com.teaching.backend.model.dto.Knowtmp.KnowPointUpdateRequest; +import com.teaching.backend.model.entity.chapter.Chapter; +import com.teaching.backend.model.entity.courses.CourseObjectives; +import com.teaching.backend.model.entity.courses.ObjectiveContentKnow; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.service.knowtmp.KnowPointService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDateTime; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * @Author:youhang + * @Date:2024-08-07-19:40 + * @Description: + */ +@Service +public class knowPointServiceImpl implements KnowPointService { + + @Autowired + private ChapterMapper chapterMapper; + + + @Autowired + private KnowtmpMapper knowtmpMapper; + + @Autowired + private ObjectiveContentKnowMapper objectiveContentKnowMapper; + + @Autowired + CourseObjectivesMapper courseObjectivesMapper; + + + @Override + public BaseResponse objectiveaddKnow(String ObjectiveId, Long KnowId) { + + ObjectiveContentKnow objectiveContentKnow = new ObjectiveContentKnow(); + objectiveContentKnow.setKnowId(KnowId); + objectiveContentKnow.setObjectiveContentId(ObjectiveId); + int ans = objectiveContentKnowMapper.insert(objectiveContentKnow); + if(ans > 0){ + return ResultUtils.success("添加课程目标成功"); + } + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加课程目标失败"); + } + + @Override + public BaseResponse getAllKnows(String courseId) { + // 3 从章节表查出章节节点 并添加到 neo + List chapterIds = chapterMapper.selectChapterIdsByCourseId(courseId); + //获取chapterId 查询知识点 返回知识点集合 + QueryWrapper objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.in("chapterid",chapterIds); + Long count = knowtmpMapper.selectCount(objectQueryWrapper); + return ResultUtils.success(count); + } + + public String ComputeLearnHours( Long chapterid , KnowPoint knowtmp){ + + BigDecimal remainingHours = BigDecimal.ZERO; // 初始化剩余学时 + + BigDecimal classHours = chapterMapper.getChapterHours(chapterid); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(KnowPoint::getChapterId, chapterid); + + List knowtmpList = knowtmpMapper.selectList(lambdaQueryWrapper); + + BigDecimal totalChapterHours = knowtmpList.stream() + .map(KnowPoint::getHour) + .map(BigDecimal::new) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + remainingHours = classHours.subtract(totalChapterHours).setScale(1, RoundingMode.HALF_UP); + BigDecimal newKnowHours = BigDecimal.valueOf(knowtmp.getHour()); // 根据实际返回类型调整 + + + if (newKnowHours.compareTo(remainingHours) <= 0) { + LambdaQueryWrapper maxSortWrapper = new LambdaQueryWrapper<>(); + maxSortWrapper.eq(KnowPoint::getChapterId, chapterid).orderByDesc(KnowPoint::getOrdernum).last("limit 1"); + KnowPoint maxSortKnow= knowtmpMapper.selectOne(maxSortWrapper); + double newSort = 1; + if (maxSortKnow != null) { + newSort = maxSortKnow.getOrdernum() + 1; + } + knowtmp.setOrdernum(newSort); + knowtmp.setCreateTime(LocalDateTime.now()); + int f = knowtmpMapper.insert(knowtmp); + if(f > 0) { + return "添加成功"; + } + remainingHours = remainingHours.subtract(newKnowHours).setScale(1, RoundingMode.HALF_UP); + } else { + return "添加失败"+"当前添加的学时为:"+newKnowHours+"当前剩余学时为:"+remainingHours; + } + + return "添加失败"+"当前添加的学时为:"+newKnowHours+"当前剩余学时为:"+remainingHours; + } + + @Override + public BaseResponse add(KnowPointAddRequest knowPointAddRequest) { + Long chapterId = knowPointAddRequest.getChapterId(); + //判断章节是否存在 + Chapter chapter = chapterMapper.selectById(knowPointAddRequest.getChapterId()); + if(chapter == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"章节id 不存在"); + } + KnowPoint knowtmp = new KnowPoint(); + BeanUtils.copyProperties(knowPointAddRequest,knowtmp); + //顺序计算 分配学时以及顺序 + Long chapterid = knowPointAddRequest.getChapterId(); + String res = ComputeLearnHours(chapterid,knowtmp); + if(res.equals("添加成功")){ + return ResultUtils.success(res); + }else{ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,res); + } + } + + @Override + @Transactional + public BaseResponse addObjective(List objectiveIds,Long knowId) { + + //查询知识点是否存在 + if(knowId == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程id不能为空"); + } + KnowPoint knowtmp = knowtmpMapper.selectById(knowId); + if(knowtmp == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + //传id 如果传空数组 那就是删除掉 + if(objectiveIds.size() <= 0){ + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("know_id",knowId); + objectiveContentKnowMapper.delete(queryWrapper); + return ResultUtils.success("添加目标成功"); + } + //查询出知识点的课程id - 校验知识点和课程目标是在同一课下 + Chapter chapter = chapterMapper.selectById(knowtmp.getChapterId()); + String courseId1 = chapter.getCourseId(); + + for (int i = 0; i < objectiveIds.size(); i++) { + String objectiveId = objectiveIds.get(i); + + //查询课程目标id是否存在 + if(objectiveId == null || "".equals(objectiveId)){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程目标id不能为空"); + } + CourseObjectives courseObjectives = courseObjectivesMapper.selectById(objectiveId); + if(courseObjectives == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程目标不存在"); + } + String courseId2 = courseObjectives.getCourseId(); + //判断 + if(!courseId2.equals(courseId1)){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点和课程目标不在同一课程下"); + } + QueryWrapperqueryWrapper = new QueryWrapper<>(); + queryWrapper.eq("objective_content_id",objectiveId); + queryWrapper.eq("know_id",knowId); + ObjectiveContentKnow objectiveContentKnow1 = objectiveContentKnowMapper.selectOne(queryWrapper); + if(objectiveContentKnow1 != null){ + objectiveContentKnowMapper.delete(queryWrapper); + } + ObjectiveContentKnow objectiveContentKnow = new ObjectiveContentKnow(); + objectiveContentKnow.setObjectiveContentId(objectiveId); + objectiveContentKnow.setKnowId(knowId); + int ans = objectiveContentKnowMapper.insert(objectiveContentKnow); + if(ans<0){ + return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加目标失败"); + } + + } + + return ResultUtils.success("添加目标成功"); + } + + @Override + public BaseResponse> knowObjects(Long knowId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("know_id",knowId); + List courseObjectives = objectiveContentKnowMapper.selectList(queryWrapper); + List ids = courseObjectives.stream().map(item->item.getObjectiveContentId()).collect(Collectors.toList()); + return ResultUtils.success(ids); + } + + + @Override + public BaseResponse update(KnowPointUpdateRequest knowPointUpdateRequest) { + Long id = knowPointUpdateRequest.getId(); + KnowPoint knowtmpOld = knowtmpMapper.selectById(id); + if(knowtmpOld == null) { + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"参数不存在"); + } + KnowPoint knowtmp = new KnowPoint(); + BeanUtils.copyProperties(knowPointUpdateRequest,knowtmp); + int f = knowtmpMapper.updateById(knowtmp); + if(f > 0){ + return ResultUtils.success("修改成功"); + }else{ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"修改失败"); + } + } + + @Override + public BaseResponse delete(Long id) { + + KnowPoint knowtmpOld = knowtmpMapper.selectById(id); + if(knowtmpOld == null){ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); + } + + int f = knowtmpMapper.deleteById(id); + if(f < 0){ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"删除失败"); + } + updateOrder(knowtmpOld.getChapterId()); + return ResultUtils.success("删除成功"); + + } + + public void updateOrder(Long chapterId) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(KnowPoint::getChapterId, chapterId).orderByAsc(KnowPoint::getOrdernum); + List knowLists = knowtmpMapper.selectList(queryWrapper); + double i = 1; + for (KnowPoint know : knowLists) { + know.setOrdernum(i++); + knowtmpMapper.updateById(know); + } + + } + + @Override + public BaseResponse query(Long id) { + KnowPoint knowtmp = knowtmpMapper.selectById(id); + if(knowtmp == null){ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); + } + return ResultUtils.success(knowtmp); + } + + @Override + public BaseResponse> queryByChapterId(Long chapterId) { + List knowtmps = knowtmpMapper.queryIdByChapterId(chapterId); + if(knowtmps == null){ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"数据不存在"); + } + return ResultUtils.success(knowtmps); + } + + @Override + public List queryByChapterIdList(List chapterIdList) { + QueryWrapper knowtmpQueryWrapper = new QueryWrapper<>(); + knowtmpQueryWrapper.in("chapterId",chapterIdList); + List knowtmps = knowtmpMapper.selectList(knowtmpQueryWrapper); + return knowtmps; + } +} diff --git a/src/main/java/com/teaching/backend/service/impl/learn/CourseLearnServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/learn/CourseLearnServiceImpl.java new file mode 100644 index 0000000..e9eaf28 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/learn/CourseLearnServiceImpl.java @@ -0,0 +1,155 @@ +package com.teaching.backend.service.impl.learn; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.mapper.learn.CourseLearnMapper; +import com.teaching.backend.model.dto.learn.CourseLearnDTO; +import com.teaching.backend.model.entity.courses.Courses; +import com.teaching.backend.model.entity.learn.CourseLearn; +import com.teaching.backend.model.entity.records.CourseLearningNumber; +import com.teaching.backend.model.entity.records.CourseLearningRecord; +import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; +import com.teaching.backend.model.vo.courses.CourseListVO; +import com.teaching.backend.model.vo.records.CourseLearningRecordsVo; +import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; +import com.teaching.backend.service.learn.CourseLearnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class CourseLearnServiceImpl implements CourseLearnService { + @Autowired + CoursesMapper coursesMapper; + + @Autowired + KnowtmpMapper knowtmpMapper; + + @Autowired + private CourseLearnMapper courseLearnMapper; + + + + + @Override + public BaseResponse doLearn(String courseId, Long userId) { + // 查询课程是否存在 + Courses courses = coursesMapper.selectById(courseId); + if(courses == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"课程不存在"); + } + CourseLearn courseLearn = new CourseLearn(); + courseLearn.setCourseId(courseId); + courseLearn.setUserId(userId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("courseId",courseId); + queryWrapper.eq("usertId",userId); + CourseLearn oldcourseLearn = courseLearnMapper.selectOne(queryWrapper); + + //未学习 + if (oldcourseLearn == null) { + + int res = courseLearnMapper.insert(courseLearn); + if (res > 0) { + return ResultUtils.success("学习成功"); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } + return ResultUtils.success("已学习"); + } + + + @Override + public BaseResponse removeKnowledgeRecord(List ids) { + int i = courseLearnMapper.deleteBatchIds(ids); + if(i > 0){ + return ResultUtils.success("删除成功!"); + } + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"删除失败"); + } + + + @Override + public BaseResponse learnCount(String courseId) { + //从数据库中校验是否存在courseid + Courses courses = coursesMapper.selectById(courseId); + if(courses == null){ + return ResultUtils.error(ErrorCode.PARAMS_COURSE_NOTEXISTS); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("course_id", courseId); + long count = courseLearnMapper.selectCount(queryWrapper); + if (count == 0) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); + } else { + return ResultUtils.success(count); + } + } + + @Override + public BaseResponse getPage(int pagenum, int pagesize, String userId) { + //格式化时间 + String strDateFormat = "yyyy-MM-dd HH:mm:ss"; + SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); + //分页查询 + Page courseLearnPage = new Page<>(pagenum,pagesize); + QueryWrapper courseLearnQueryWrapper = new QueryWrapper<>(); + courseLearnQueryWrapper.orderByDesc("learn_time") + .eq("user_id", userId); + Page courseLearnPage1 = courseLearnMapper.selectPage(courseLearnPage, courseLearnQueryWrapper); + List records = courseLearnPage1.getRecords(); + + List recordsVos = new ArrayList<>(); + //copy集合 + records.forEach(knowledgeLearningRecord -> { + CourseLearningRecordsVo courseLearningRecordsVo = new CourseLearningRecordsVo(); + BeanUtil.copyProperties(knowledgeLearningRecord,courseLearningRecordsVo); + //填充学习人数 + courseLearningRecordsVo.setNumber(courseLearnMapper.selectCount(new QueryWrapper().eq("course_id",knowledgeLearningRecord.getCourseId()))); + Courses courses = coursesMapper.selectById(knowledgeLearningRecord.getCourseId()); + courseLearningRecordsVo.setCourseName(courses.getName()); + courseLearningRecordsVo.setImg(courses.getImg()); + Date date = Date.from(knowledgeLearningRecord.getLearnTime().atZone(ZoneId.systemDefault()).toInstant()); + courseLearningRecordsVo.setTime(sdf.format(date)); + recordsVos.add(courseLearningRecordsVo); + }); + + Page page1 = new Page<>(); + BeanUtil.copyProperties(courseLearnPage1, page1); + page1.setRecords(recordsVos); + return ResultUtils.success(page1); + } + + @Override + public BaseResponse removeCoursesRecords(List ids) { + int i = courseLearnMapper.deleteBatchIds(ids); + if(i > 0){ + return ResultUtils.success("删除成功!"); + } + + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"删除失败!"); + } + + +} diff --git a/src/main/java/com/teaching/backend/service/impl/learn/KnowLearnServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/learn/KnowLearnServiceImpl.java new file mode 100644 index 0000000..84e79b2 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/learn/KnowLearnServiceImpl.java @@ -0,0 +1,84 @@ +package com.teaching.backend.service.impl.learn; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.collection.KnowCollectionMapper; +import com.teaching.backend.mapper.learn.KnowLerarnMapper; +import com.teaching.backend.model.entity.collection.KnowCollection; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.entity.learn.KnowLearn; +import com.teaching.backend.service.collection.KnowCollectionService; +import com.teaching.backend.service.learn.KnowLearnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class KnowLearnServiceImpl implements KnowLearnService { + + @Autowired + KnowtmpMapper knowtmpMapper; + + @Autowired + private KnowLerarnMapper knowLerarnMapper; + + + @Override + public BaseResponse doKnowLearn(Long knowId, Long userId) { + // 查询知识点 + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + if(knowPoint == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + KnowLearn knowLearn = new KnowLearn(); + knowLearn.setKnowId(knowId); + knowLearn.setUserId(userId); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("knowId",knowId); + queryWrapper.eq("usertId",userId); + KnowLearn oldknowLearn = knowLerarnMapper.selectOne(queryWrapper); + + //已点赞 + if (oldknowLearn == null) { + // 取消点赞 删除记录 + int res = knowLerarnMapper.insert(knowLearn); + if (res > 0) { + return ResultUtils.success("学习成功"); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } + return ResultUtils.success("已学习"); + } + + @Override + public BaseResponse learnCount(Long knowId) { + //从数据库中校验是否存在courseid + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + if(knowPoint == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("knowId", knowId); + long count = knowLerarnMapper.selectCount(queryWrapper); + if (count == 0) { + throw new BusinessException(ErrorCode.SYSTEM_ERROR, "查询参数不存在"); + } else { + return ResultUtils.success(count); + } + } + +} diff --git a/src/main/java/com/teaching/backend/service/impl/message/UserInboxServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/message/UserInboxServiceImpl.java index 5c41903..6fcf107 100644 --- a/src/main/java/com/teaching/backend/service/impl/message/UserInboxServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/message/UserInboxServiceImpl.java @@ -79,7 +79,7 @@ public class UserInboxServiceImpl extends ServiceImpl p = messagesService.page(page, new LambdaQueryWrapper() .in(SysMessages::getId,messageIds) - .select(SysMessages::getId,SysMessages::getCourseId,SysMessages::getTitle,SysMessages::getSenderId,SysMessages::getSendTime) + .select(SysMessages::getId,SysMessages::getCourseId,SysMessages::getTitle,SysMessages::getContent,SysMessages::getSenderId,SysMessages::getSendTime) ); // 将Page转换为PageDTO @@ -125,7 +125,7 @@ public class UserInboxServiceImpl extends ServiceImpl querySendMessages(MessagesQuery messagesQuery) { - // 1. 初始化一个按发送时间降序排序的Page对象 + // 1. 初始化/一个按发送时间降序排序的Page对象 Page page = messagesQuery.toMpPage("send_time", false); // 2. 根据条件查询SysMessages表 @@ -134,7 +134,7 @@ public class UserInboxServiceImpl extends ServiceImpl转换为PageDTO diff --git a/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java index 0d25f53..613adbe 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/CourseLearningRecordServiceImpl.java @@ -1,6 +1,7 @@ package com.teaching.backend.service.impl.records; import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.teaching.backend.common.BaseResponse; @@ -11,10 +12,11 @@ import com.teaching.backend.model.entity.records.CourseLearningNumber; import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; import com.teaching.backend.model.entity.courses.Courses; import com.teaching.backend.model.entity.records.CourseLearningRecord; +import com.teaching.backend.model.vo.courses.CourseListVO; +import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.model.vo.records.CourseLearningRecordsVo; import com.teaching.backend.service.impl.courses.CourseLearningNumberServiceImpl; import com.teaching.backend.service.impl.courses.CoursesServiceImpl; -import com.teaching.backend.model.vo.courses.CoursesVO; import com.teaching.backend.service.records.ICourseLearningRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -106,7 +108,7 @@ public class CourseLearningRecordServiceImpl extends ServiceImpl queryCourseList(String userId) { - String roleId = umsUserMapper.getByIdRoleId(userId); - List coursesList = new ArrayList<>(); - if (roleId.equals("1")){ - List courseIds = courseLearningRecordMapper.selectMaxNumber(userId); - for (String courseId : courseIds) { - Courses courses = coursesMapper.selectById(courseId); - coursesList.add(courses); - } - List coursesVOList = BeanUtil.copyToList(coursesList, CoursesVO.class); - return coursesVOList; - } else if (roleId.equals("2")) { - List courseIdList = courseLearningRecordMapper.selectMaxCourseId(userId); - for (String courseId : courseIdList) { - Courses courses = coursesMapper.selectById(courseId); - coursesList.add(courses); - } - List coursesVOList = BeanUtil.copyToList(coursesList, CoursesVO.class); - return coursesVOList; - }else { - return null; + public List queryCourseList(String userId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByAsc("create_time"); + List coursesList = coursesMapper.selectList(queryWrapper); + ListcourseListVOList = new ArrayList<>(); + for (int i = 0; i < coursesList.size() && i < 4; i++) { + CourseListVO courseListVO = new CourseListVO(); + courseListVO.setId(coursesList.get(i).getId()); + courseListVO.setImg(coursesList.get(i).getImg()); + courseListVO.setName(coursesList.get(i).getName()); + courseListVOList.add(courseListVO); } + return courseListVOList; } @Override diff --git a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java index 6d389a1..69f4385 100644 --- a/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/records/KnowledgeLearningRecordServiceImpl.java @@ -13,7 +13,7 @@ import com.teaching.backend.mapper.umsAdmin.UmsUserMapper; import com.teaching.backend.model.entity.records.KnowledgeLearningNumber; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; import com.teaching.backend.model.entity.records.RecordKnowledgeFinish; @@ -21,7 +21,7 @@ import com.teaching.backend.model.vo.knowGraph.KnowVO; import com.teaching.backend.model.vo.records.KnowledgeLearningRecordVo; import com.teaching.backend.service.impl.knowledge.KnowledgeLearningNumberServiceImpl; -import com.teaching.backend.service.knowtmp.KnowtmpService; +import com.teaching.backend.service.knowtmp.KnowPointService; import com.teaching.backend.service.records.IKnowledgeLearningRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -51,7 +51,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl getPage(int pagenum, int pagesize, String userId, String courseId) { - //格式化时间 - String strDateFormat = "yyyy-MM-dd HH:mm:ss"; - SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); - //分页查询 - Page page = query() - .orderByDesc("times") - .eq("user_id", userId) - .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); - Page page1 = new Page<>(); - List records = page.getRecords(); - //System.out.println(records); - BeanUtil.copyProperties(page, page1); - List recordsVos = new ArrayList<>(); - //copy集合 - records.forEach(knowledgeLearningRecord -> { - KnowledgeLearningRecordVo knowledgeLearningRecordVo = new KnowledgeLearningRecordVo(); - BeanUtil.copyProperties(knowledgeLearningRecord,knowledgeLearningRecordVo); - Date date = Date.from(knowledgeLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); - knowledgeLearningRecordVo.setTime(sdf.format(date)); -// //填充学习人数 - knowledgeLearningRecordVo.setNumber(knowledgeLearningNumberService.getById(knowledgeLearningRecord.getNumber()).getNumber()); - //获取完成状态 - knowledgeLearningRecordVo.setFinish(recordKnowledgeFinishService.getById(knowledgeLearningRecord.getFinish()).getFinish()); - recordsVos.add(knowledgeLearningRecordVo); - }); - //System.out.println(recordsVos); - page1.setRecords(recordsVos); - return ResultUtils.success(page1); - } +// @Override +// public BaseResponse getPage(int pagenum, int pagesize, String userId, String courseId) { +// //格式化时间 +// String strDateFormat = "yyyy-MM-dd HH:mm:ss"; +// SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat); +// //分页查询 +// Page page = query() +// .orderByDesc("times") +// .eq("user_id", userId) +// .eq("courses_id",courseId).page(new Page<>(pagenum, pagesize)); +// Page page1 = new Page<>(); +// List records = page.getRecords(); +// //System.out.println(records); +// BeanUtil.copyProperties(page, page1); +// List recordsVos = new ArrayList<>(); +// //copy集合 +// records.forEach(knowledgeLearningRecord -> { +// KnowledgeLearningRecordVo knowledgeLearningRecordVo = new KnowledgeLearningRecordVo(); +// BeanUtil.copyProperties(knowledgeLearningRecord,knowledgeLearningRecordVo); +// Date date = Date.from(knowledgeLearningRecord.getTimes().atZone(ZoneId.systemDefault()).toInstant()); +// knowledgeLearningRecordVo.setTime(sdf.format(date)); +//// //填充学习人数 +// knowledgeLearningRecordVo.setNumber(knowledgeLearningNumberService.getById(knowledgeLearningRecord.getNumber()).getNumber()); +// //获取完成状态 +// knowledgeLearningRecordVo.setFinish(recordKnowledgeFinishService.getById(knowledgeLearningRecord.getFinish()).getFinish()); +// recordsVos.add(knowledgeLearningRecordVo); +// }); +// //System.out.println(recordsVos); +// page1.setRecords(recordsVos); +// return ResultUtils.success(page1); +// } @Override public BaseResponse removeKnowledgeRecord(List ids) { @@ -165,7 +165,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl knowledgeIdList = knowledgeLearningRecordMapper.queryStudyKnowledgeMaxNumber(); for (String knowledgeId : knowledgeIdList) { - BaseResponse knowledge = knowtmpService.query(Long.valueOf(knowledgeId)); + BaseResponse knowledge = knowPointService.query(Long.valueOf(knowledgeId)); if (knowledge.getData() != null){ knowVO = new KnowVO(); knowVO.setId(knowledge.getData().getId()); @@ -179,7 +179,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl knowledgeIdList = knowledgeLearningRecordMapper.queryStudyMaxKnowledgeId(userId); for (String knowledgeId : knowledgeIdList) { - BaseResponse knowledge = knowtmpService.query(Long.valueOf(knowledgeId)); + BaseResponse knowledge = knowPointService.query(Long.valueOf(knowledgeId)); if (knowledge.getData() != null) { knowVO = new KnowVO(); knowVO.setId(knowledge.getData().getId()); @@ -203,7 +203,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl knowledgeIdList = knowledgeLearningRecordMapper.queryStudyKnowledgeMaxNumber(); for (String knowledgeId : knowledgeIdList) { - BaseResponse knowledge = knowtmpService.query(Long.valueOf(knowledgeId)); + BaseResponse knowledge = knowPointService.query(Long.valueOf(knowledgeId)); if (knowledge.getData() != null) { knowVO = new KnowVO(); knowVO.setId(knowledge.getData().getId()); @@ -223,7 +223,7 @@ public class KnowledgeLearningRecordServiceImpl extends ServiceImpl allKnows = knowtmpService.getAllKnows(courseId); + BaseResponse allKnows = knowPointService.getAllKnows(courseId); double finish = (double) count /allKnows.getData() * 100; System.out.println(finish); return ResultUtils.success(String.valueOf(finish)); diff --git a/src/main/java/com/teaching/backend/service/impl/resource/ResourceGraphServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/resource/ResourceGraphServiceImpl.java index 0526202..e1c267f 100644 --- a/src/main/java/com/teaching/backend/service/impl/resource/ResourceGraphServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/resource/ResourceGraphServiceImpl.java @@ -1,31 +1,35 @@ package com.teaching.backend.service.impl.resource; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.chapter.ChapterMapper; +import com.teaching.backend.mapper.courses.CoursesMapper; import com.teaching.backend.mapper.know.KnowRepository; +import com.teaching.backend.mapper.resource.ResourceMapper; +import com.teaching.backend.mapper.resource.ResourceRelationshipMapper; import com.teaching.backend.mapper.resource.ResourcesRepository; -import com.teaching.backend.model.dto.resource.ResourceUploadDto; +import com.teaching.backend.model.entity.chapter.Chapter; +import com.teaching.backend.model.entity.courses.Courses; +import com.teaching.backend.model.entity.know.Know; import com.teaching.backend.model.entity.know.KnowChapter; import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.model.entity.resource.ResourceRelationship; import com.teaching.backend.model.entity.resource.Resources; import com.teaching.backend.service.resource.ResourceGraphService; -import com.teaching.backend.service.resource.ResourceService; -import com.teaching.backend.utils.MinioUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.InputStreamResource; -import org.springframework.data.neo4j.core.Neo4jClient; -import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; -import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Set; +import java.util.stream.Collectors; /** @@ -39,9 +43,20 @@ public class ResourceGraphServiceImpl implements ResourceGraphService { @Autowired private ResourcesRepository resourcesRepository; + @Autowired + private ResourceMapper resourceMapper; + @Autowired private KnowRepository knowRepository; + @Autowired + private ResourceRelationshipMapper resourceRelationshipMapper; + @Autowired + CoursesMapper coursesMapper; + @Autowired + private ChapterMapper chapterMapper; + @Autowired + private KnowtmpMapper knowtmpMapper; @Override @@ -69,6 +84,31 @@ public class ResourceGraphServiceImpl implements ResourceGraphService { return ResultUtils.success("添加关系成功"); } + @Override + public BaseResponse addResourcesByKnowId(Long knowId, Long resourcesId) { + // 查询知识点是否存在 ,资源是否存在 + Long id = knowRepository.queryNodeByKnowId(knowId); + if(id == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + Resources resources = resourcesRepository.queryResourcesByResourceId(resourcesId); + if(resources == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"资源不存在"); + } + //查询关系是否存在 + int g = resourcesRepository.queryExisitRel(id,resourcesId); + if(g >0){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"关系已经存在"); + } + //添加关系 addResourcesAndKnowById + int f = resourcesRepository.addResourcesAndKnowById2(id,resourcesId); + if(f<= 0){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"创建关系失败"); + } + + return ResultUtils.success("添加关系成功"); + } + @Override public BaseResponse deleteResourcesAndKnowById(Long id, Long resourcesId) { // 查询知识点是否存在 ,资源是否存在 @@ -97,50 +137,80 @@ public class ResourceGraphServiceImpl implements ResourceGraphService { @Override //查询课程下资源 - public BaseResponse> queryResourcesByCourseId(String courseId){ + public BaseResponse> queryResourcesByCourseId(String courseId){ // 判空,查询 - KnowCourse knowCourse = knowRepository.queryCourse(courseId); - if(knowCourse == null){ + Courses courses = coursesMapper.selectById(courseId); + if(courses == null){ return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"课程不存在"); } - Set resourcesSet = resourcesRepository.queryResourcesByCourseId(courseId); - return ResultUtils.success(resourcesSet); + QueryWrapper resourceRelationshipQueryWrapper = new QueryWrapper<>(); + resourceRelationshipQueryWrapper.eq("course_id", courseId); + List resourceRelationships = resourceRelationshipMapper.selectList(resourceRelationshipQueryWrapper); + List resourceMysqls =new ArrayList<>(); + if(resourceRelationships.size() > 0){ + resourceMysqls = resourceMapper.selectBatchIds(resourceRelationships.stream().map(ResourceRelationship::getResourceId).collect(Collectors.toList())); + } + return ResultUtils.success(resourceMysqls); } @Override //查询章节下资源 - public BaseResponse> queryResourcesByChapterId(Long chapterId){ + public BaseResponse> queryResourcesByChapterId(Long chapterId){ // 判空,查询 - KnowChapter knowChapter = knowRepository.queryChapter(chapterId); - if(knowChapter == null){ + Chapter chapter = chapterMapper.selectById(chapterId); + if(chapter == null){ return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"章节不存在"); } - SetresourcesSet ; - resourcesSet = resourcesRepository.queryResourcesByChapterId(chapterId); - return ResultUtils.success(resourcesSet); + QueryWrapper knowQueryWrapper = new QueryWrapper<>(); + knowQueryWrapper.eq("chapterId", chapterId); + List knowPoints = knowtmpMapper.selectList(knowQueryWrapper); + if(knowPoints.size() == 0){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"章节下无知识点"); + } + List ids = knowPoints.stream().map(item -> item.getId()).collect(Collectors.toList()); + QueryWrapper resourceRelationshipQueryWrapper = new QueryWrapper<>(); + resourceRelationshipQueryWrapper.in("knowId", ids); + List resourceRelationships = resourceRelationshipMapper.selectList(resourceRelationshipQueryWrapper); + List resourceMysqls = resourceMapper.selectBatchIds(resourceRelationships.stream().map(item -> item.getResourceId()).collect(Collectors.toList())); + return ResultUtils.success(resourceMysqls); } @Override //查询二级节点下资源 - public BaseResponse> queryBesidesKnowToResources(Long knowId){ + public BaseResponse> queryBesidesKnowToResources(Long knowId){ // 判空,查询 - int i = knowRepository.queryNode(knowId); - if(i <= 0){ - return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"知识点不存在"); + KnowPoint knowPoints = knowtmpMapper.selectById(knowId); + if(knowPoints == null){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"知识点不存在"); } - Set resourcesSet = resourcesRepository.queryBesidesKnowToResources(knowId); - return ResultUtils.success(resourcesSet); + //查询知识点的二级节点 + List knows = knowRepository.queryBesidesKnow(knowId); + if(knows.size() == 0){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"知识点不存在"); + } + //通过知识点List的id查询资源 + List resourceMysqls = resourceMapper.selectBatchIds(knows.stream().map(item -> item.getId()).collect(Collectors.toList())); + return ResultUtils.success(resourceMysqls); } @Override - public BaseResponse> queryResourcesByKnowId(Long knowId) { + public BaseResponse> queryResourcesById(Long knowId) { // 判空,查询 - int i = knowRepository.queryNode(knowId); - if(i <= 0){ - return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"知识点不存在"); + KnowPoint knowPoints = knowtmpMapper.selectById(knowId); + if(knowPoints == null){ + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"知识点不存在"); + } + //查询资源知识点关系表的资源id + QueryWrapper resourceRelationshipQueryWrapper = new QueryWrapper<>(); + resourceRelationshipQueryWrapper.eq("know_id", knowId); + List resourceRelationships = resourceRelationshipMapper.selectList(resourceRelationshipQueryWrapper); + //查询资源 + if(resourceRelationships.size() > 0){ + List resourceMysqls = resourceMapper.selectBatchIds(resourceRelationships.stream().map(ResourceRelationship::getResourceId).collect(Collectors.toList())); + return ResultUtils.success(resourceMysqls); } - Set resourcesSet = resourcesRepository.queryResourcesByKnowId(knowId); - return ResultUtils.success(resourcesSet); + return ResultUtils.success(null); } + } diff --git a/src/main/java/com/teaching/backend/service/impl/resource/ResourceMysqlServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/resource/ResourceMysqlServiceImpl.java deleted file mode 100644 index 7432463..0000000 --- a/src/main/java/com/teaching/backend/service/impl/resource/ResourceMysqlServiceImpl.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.teaching.backend.service.impl.resource; - - -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ResultUtils; -import com.teaching.backend.mapper.resource.ResourceMysqlMapper; -import com.teaching.backend.model.entity.resource.ResourceMysql; -import com.teaching.backend.service.resource.IResourceMysqlService; -import org.apache.ibatis.annotations.Results; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - -/** - *

- * 服务实现类 - *

- * - * @author author - * @since 2024-09-02 - */ -@Service -public class ResourceMysqlServiceImpl extends ServiceImpl implements IResourceMysqlService { - private ResourceServiceImpl resourceService; - @Override - public BaseResponse resourceUpload(MultipartFile file, ResourceMysql resourceMysql) { - System.out.println(1); - System.out.println(file); - String url = resourceService.upload(file).getData().getUrl(); - resourceMysql.setPath(url); - save(resourceMysql); - return ResultUtils.success("添加成功"); - } -} diff --git a/src/main/java/com/teaching/backend/service/impl/resource/ResourceRelationshipServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/resource/ResourceRelationshipServiceImpl.java new file mode 100644 index 0000000..1b7f131 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/resource/ResourceRelationshipServiceImpl.java @@ -0,0 +1,93 @@ +package com.teaching.backend.service.impl.resource; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.know.KnowRepository; +import com.teaching.backend.mapper.resource.ResourceMapper; +import com.teaching.backend.mapper.resource.ResourceRelationshipMapper; +import com.teaching.backend.mapper.resource.ResourcesRepository; +import com.teaching.backend.model.dto.resource.ResourceRelationshipDTO; +import com.teaching.backend.model.entity.know.KnowChapter; +import com.teaching.backend.model.entity.know.KnowCourse; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.model.entity.resource.ResourceRelationship; +import com.teaching.backend.model.entity.resource.Resources; +import com.teaching.backend.service.resource.ResourceGraphService; +import com.teaching.backend.service.resource.ResourceRelationshipService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; + + +/** + * @Author:youhang + * @Date:2024-07-26-13:58 + * @Description: + */ +@Service +public class ResourceRelationshipServiceImpl implements ResourceRelationshipService { + + @Autowired + private ResourceMapper resourceMapper; + + @Autowired + private ResourceRelationshipMapper resourceRelationshipMapper; + + @Autowired + private KnowtmpMapper knowtmpMapper; + + @Override + public BaseResponse addResourcesRel(ResourceRelationshipDTO resourceRelationshipDto) { + Long knowId = resourceRelationshipDto.getKnowId(); + Long resourceId = resourceRelationshipDto.getResourceId(); + String coursesId = resourceRelationshipDto.getCourseId(); + //判空 + if(knowId <= 0){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"knowId字段不能为空"); + } + if(resourceId <= 0){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"resourceId字段不能为空"); + } + if("".equals(coursesId) || coursesId == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"coursesId字段不能为空"); + } + //查询知识点是否存在 + KnowPoint knowtmp = knowtmpMapper.selectById(knowId); + if(knowtmp == null) + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + ResourceMysql resourceMysql = resourceMapper.selectById(resourceId); + if(resourceMysql == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"资源不存在"); + } + + ResourceRelationship resourceRelationship = new ResourceRelationship(); + resourceRelationship.setResourceId(resourceId); + resourceRelationship.setCourseId(coursesId); + resourceRelationship.setKnowId(knowId); + int ans = resourceRelationshipMapper.insert(resourceRelationship); + if(ans > 0){ + return ResultUtils.success("添加成功"); + } + return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加失败"); + } + + @Override + public BaseResponse deleteResourcesRel(Long knowId, Long resourceId) { + QueryWrapper resourceRelationshipQueryWrapper = new QueryWrapper<>(); + resourceRelationshipQueryWrapper.eq("know_id",knowId).eq("resource_id",resourceId); + int ans = resourceRelationshipMapper.delete(resourceRelationshipQueryWrapper); + if(ans > 0){ + return ResultUtils.success("删除成功"); + } + return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"删除失败"); + } + + +} diff --git a/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java index 08b489b..11437dc 100644 --- a/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/resource/ResourceServiceImpl.java @@ -1,17 +1,28 @@ package com.teaching.backend.service.impl.resource; +import cn.hutool.core.date.DateTime; +import com.aliyun.oss.OSS; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.constant.TypeEnum; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; import com.teaching.backend.mapper.know.KnowRepository; +import com.teaching.backend.mapper.resource.ResourceMapper; +import com.teaching.backend.mapper.resource.ResourceRelationshipMapper; import com.teaching.backend.mapper.resource.ResourcesRepository; -import com.teaching.backend.model.dto.resource.ResourceUploadDto; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.entity.resource.ResourceRelationship; +import com.teaching.backend.model.vo.resources.ResourceUploadVO; import com.teaching.backend.model.entity.resource.ResourceMysql; import com.teaching.backend.model.entity.resource.Resources; import com.teaching.backend.service.resource.ResourceService; +import com.teaching.backend.utils.AliyunOSSClientUtil; import com.teaching.backend.utils.MinioUtils; +import lombok.val; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -20,9 +31,19 @@ import org.springframework.core.io.InputStreamResource; import org.springframework.data.neo4j.core.Neo4jClient; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.*; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import static com.teaching.backend.utils.AliyunOSSClientUtil.*; /** @@ -39,6 +60,12 @@ public class ResourceServiceImpl implements ResourceService { @Autowired private KnowRepository knowRepository; + @Autowired + private ResourceMapper resourceMapper; + + @Autowired + private ResourceRelationshipMapper resourceRelationshipMapper; + private static final Logger LOGGER = LoggerFactory.getLogger(ResourceService.class); @@ -55,50 +82,222 @@ public class ResourceServiceImpl implements ResourceService { @Value("${minio.secretKey}") private String SECRET_KEY; + private static Integer status = 0; + + + + @Value("${aliyun.oss.endpoint}") + String ossEndpoint; + + @Value("${aliyun.oss.accessKeyId}") + String accessId; + + @Value("${aliyun.oss.accessKey}") + String accessKey; + + @Value("${aliyun.oss.bucketName}") + String bucketName = "youhang-edu"; @Resource private Neo4jClient neo4jClient; + @Autowired + private KnowtmpMapper knowtmpMapper; + +// @Override +// public BaseResponse uploadOSS(MultipartFile file) throws IOException { +// //文件类型区分 - 文件名处理 +// // 初始化OSSClient +// OSS ossClient = AliyunOSSClientUtil.getOssClient(ossEndpoint, accessId, accessKey); +// InputStream is = file.getInputStream(); +// //文件名 +// String filename = file.getOriginalFilename(); +// String ossPath = fileSubStr(filename); +// String absolutePath = uploadFileOss(ossClient, bucketName, ossPath, is, filename); +// +// System.out.println("absolutePath:"+absolutePath); +// return ResultUtils.success("https://youhang-edu.oss-cn-beijing.aliyuncs.com/"+absolutePath); +// } +// +// +// @Override +// public BaseResponse deleteFileOss(String objectName) { +// // 初始化OSSClient +// OSS ossClient = AliyunOSSClientUtil.getOssClient(ossEndpoint, accessId, accessKey); +// deleteObject(ossClient, bucketName, objectName); +// return ResultUtils.success("删除成功"); +// } +// +// +// public BaseResponse readFile(String filename) { +// // 初始化OSSClient +// OSS ossClient = AliyunOSSClientUtil.getOssClient(ossEndpoint, accessId, accessKey); +// OSSObject object = getObject(ossClient, bucketName, filename); +// InputStream content = object.getObjectContent(); +// return ResultUtils.success(content); +// } + + + +// @Override +// public BaseResponse upload(MultipartFile file) { +// ResourceUploadVO ResourceUploadVO = minioUtils.upload(file); +// if (ResourceUploadVO == null) { +// return ResultUtils.error(ErrorCode.OPERATION_ERROR, "上传失败"); +// } +// String url = ResourceUploadVO.getUrl(); +// String name = ResourceUploadVO.getName(); +// String objectName = ResourceUploadVO.getObjectName(); +// +// return ResultUtils.success(ResourceUploadVO); +// } +// +// @Override +// public BaseResponse delete(String objectName) { +// try { +// minioUtils.delete(objectName); +// }catch (Exception e){ +// e.printStackTrace(); +// LOGGER.info("删除失败,故障"); +// return ResultUtils.error(ErrorCode.OPERATION_ERROR, "删除失败"); +// } +// return ResultUtils.success("删除成功"); +// } + + +// public ResponseEntity readFile(String filename) { +// return minioUtils.readFile(filename); +// } @Override - public BaseResponse upload(MultipartFile file) { - ResourceUploadDto resourceUploadDto = minioUtils.upload(file); - if (resourceUploadDto == null) { - return ResultUtils.error(ErrorCode.OPERATION_ERROR, "上传失败"); + public BaseResponse addResourceForMysql(MultipartFile file,Long knowId) { + ResourceUploadVO ResourceUploadVO = minioUtils.upload(file); + ResourceMysql resourceMysql = new ResourceMysql(); + resourceMysql.setName(ResourceUploadVO.getName()); + resourceMysql.setType(ResourceUploadVO.getType()); + resourceMysql.setStatus(status); + resourceMysql.setUrl(ResourceUploadVO.getUrl()); + resourceMysql.setCreateTime(LocalDateTime.now()); + int ans = resourceMapper.insert(resourceMysql); + if(ans <= 0){ + return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加资源失败"); + } + //查询知识点 + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + //添加资源和知识点的关系 + ResourceRelationship resourceRelationship = new ResourceRelationship(); + resourceRelationship.setResourceId(resourceMysql.getId()); + resourceRelationship.setCourseId(knowPoint.getCourseId()); + resourceRelationship.setKnowId(knowId); + int ans2 = resourceRelationshipMapper.insert(resourceRelationship); + if(ans2 < 0){ + return ResultUtils.error(ErrorCode.SYSTEM_ERROR,"添加关系失败"); } - String url = resourceUploadDto.getUrl(); - String name = resourceUploadDto.getName(); - String objectName = resourceUploadDto.getObjectName(); - - //添加到图数据库中 - Resources resource = new Resources(); - resource.setType(resourceUploadDto.getType()); - resource.setName(objectName); - resource.setStatus(0); - resource.setUrl(url); - resourcesRepository.save(resource); - - return ResultUtils.success(resource); + return ResultUtils.success(resourceMysql); } + +// @Override +// @Transactional +// public BaseResponse addResource(MultipartFile file) { +// ResourceUploadVO ResourceUploadVO = minioUtils.upload(file); +// //添加mysql +// ResourceMysql resourceMysql = new ResourceMysql(); +// resourceMysql.setName(ResourceUploadVO.getName()); +// resourceMysql.setType(ResourceUploadVO.getType()); +// resourceMysql.setStatus(status); +// resourceMysql.setUrl(ResourceUploadVO.getUrl()); +// long ans = resourceMapper.insert(resourceMysql); +// //添加neo4j +// Resources resources = new Resources(); +// resources.setType(ResourceUploadVO.getType()); +// resources.setName(ResourceUploadVO.getName()); +// resources.setStatus(status); +// resources.setResourceId(resourceMysql.getId()); +// resources.setUrl(ResourceUploadVO.getUrl()); +// Resources resourcesNew = resourcesRepository.save(resources); +// if (resourcesNew != null && ans > 0) { +// return ResultUtils.success(resourceMysql); +// } +// +// return ResultUtils.error(ErrorCode.OPERATION_ERROR,"添加资原失败"); +// } + @Override - public BaseResponse delete(String objectName) { - try { - minioUtils.delete(objectName); - }catch (Exception e){ - e.printStackTrace(); - LOGGER.info("删除失败,故障"); - } - //删除图数据库 - boolean f = resourcesRepository.deleteByobjectName(objectName); - if (f) { - return ResultUtils.success("删除成功"); - } else { - return ResultUtils.error(ErrorCode.OPERATION_ERROR, "图数据库删除失败"); - } + public BaseResponse deleteResourceForMysql(long id) throws Exception { + ResourceMysql resourceMysql = resourceMapper.selectById(id); + if(resourceMysql == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除ID不存在"); + } + minioUtils.delete(resourceMysql.getName()); + + int ans = resourceMapper.deleteById(id); + if (ans > 0) { + return ResultUtils.success("删除成功"); + } + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除失败"); } +// @Override +// @Transactional +// public BaseResponse deleteResource(long id) throws Exception { +// Resources resources = resourcesRepository.queryResourcesByIds(id); +// if (resources == null) { +// return ResultUtils.error(ErrorCode.PARAMS_ERROR, "删除ID不存在"); +// } +// minioUtils.delete(resources.getName()); +// +// int ans = resourceMapper.deleteById(resources.getResourceId()); +// if (ans <= 0) { +// return ResultUtils.error(ErrorCode.PARAMS_ERROR, "删除-mysql-失败"); +// } +// Boolean flag = resourcesRepository.deleteByid(id); +// if(flag){ +// return ResultUtils.success("删除成功"); +// } +// return ResultUtils.error(ErrorCode.PARAMS_ERROR, "删除-neo4j-失败"); +// } +// +// //查询资源-关系表 +// QueryWrapper resourceRelationshipQueryWrapper = new QueryWrapper<>(); +// resourceRelationshipQueryWrapper.eq("resource_id",id); +// List resourceRelationshipList = resourceRelationshipMapper.selectList(resourceRelationshipQueryWrapper); +// if(resourceRelationshipList != null){ +// int delete = resourceRelationshipMapper.delete(resourceRelationshipQueryWrapper); +// if(delete <= 0){ +// return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除-mysql-resource关系失败"); +// } +// } +// +// boolean f = resourcesRepository.deleteByResourceId(id); +// if(f){ +// return ResultUtils.success("删除成功"); +// } +// return ResultUtils.error(ErrorCode.PARAMS_ERROR,"删除失败"); +// } + +// @Override +// public BaseResponse recoverdata() { +// resourcesRepository.deleteAll(); +// QueryWrapper resourceMysqlQueryWrapper = new QueryWrapper<>(); +// List resourceMysqls = resourceMapper.selectList(resourceMysqlQueryWrapper); +// for (ResourceMysql rs:resourceMysqls) { +// String temp = "CREATE (n:Resources {" +// +"name: '"+rs.getName()+"'," +// +"resourceId: "+rs.getId()+"," +// +"url: '"+rs.getUrl()+"'," +// +"status: "+rs.getStatus()+"," +// +"type: "+rs.getType()+"," +// +"tags: '"+rs.getTags()+"'," +// +"description: '"+rs.getDescription() +// +"'}) return ID(n)"; +// Collection> all = neo4jClient.query(temp).fetch().all(); +// if(all == null){ +// return ResultUtils.success("恢复失败"); +// } +// System.out.println(all); +// } +// return ResultUtils.success("恢复成功"); +// +// } - public ResponseEntity readFile(String filename) { - return minioUtils.readFile(filename); - } } diff --git a/src/main/java/com/teaching/backend/service/impl/system/SystemSettingsServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/system/SystemSettingsServiceImpl.java index 20dc9c0..e036326 100644 --- a/src/main/java/com/teaching/backend/service/impl/system/SystemSettingsServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/system/SystemSettingsServiceImpl.java @@ -1,7 +1,9 @@ package com.teaching.backend.service.impl.system; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.mapper.system.SystemSettingsMapper; import com.teaching.backend.model.entity.system.SystemSetting; import com.teaching.backend.model.vo.system.SystemSettingVO; @@ -9,7 +11,9 @@ import com.teaching.backend.service.system.SystemSettingsService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestBody; + +import java.util.ArrayList; +import java.util.List; @Service public class SystemSettingsServiceImpl extends ServiceImpl implements SystemSettingsService { @@ -30,16 +34,35 @@ public class SystemSettingsServiceImpl extends ServiceImpl slist = new ArrayList<>(); + String s = systemSetting.getRecordInformation(); + int t = 0; + boolean f = false; + for (int i = 0; i updateSystemSettings(SystemSetting systemSetting) { + int systemSettings = systemSettingsMapper.updateById(systemSetting); + if (systemSettings > 0){ + return ResultUtils.success("修改成功"); }else { - return CommonResult.failed("修改失败"); + return ResultUtils.error(ErrorCode.NOT_FOUND_ERROR,"修改失败"); } } } diff --git a/src/main/java/com/teaching/backend/service/impl/thumb/SeCourseThumbServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/thumb/CourseThumbServiceImpl.java similarity index 66% rename from src/main/java/com/teaching/backend/service/impl/thumb/SeCourseThumbServiceImpl.java rename to src/main/java/com/teaching/backend/service/impl/thumb/CourseThumbServiceImpl.java index 23721a0..16ee92a 100644 --- a/src/main/java/com/teaching/backend/service/impl/thumb/SeCourseThumbServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/thumb/CourseThumbServiceImpl.java @@ -7,12 +7,12 @@ import com.teaching.backend.common.ErrorCode; import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.mapper.courses.CoursesMapper; -import com.teaching.backend.mapper.thumb.SeCourseThumbMapper; +import com.teaching.backend.mapper.thumb.CourseThumbMapper; import com.teaching.backend.model.entity.courses.Courses; -import com.teaching.backend.model.entity.thumb.SeCourseThumb; -import com.teaching.backend.model.entity.thumb.SeKnowThumb; -import com.teaching.backend.model.entity.thumb.SeResourceThumb; -import com.teaching.backend.service.thumb.SeCourseThumbService; +import com.teaching.backend.model.entity.thumb.CourseThumb; +import com.teaching.backend.model.entity.thumb.KnowThumb; +import com.teaching.backend.model.entity.thumb.ResourceThumb; +import com.teaching.backend.service.thumb.CourseThumbService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -27,15 +27,14 @@ import java.util.concurrent.locks.ReentrantLock; * @Description: */ @Service -public class SeCourseThumbServiceImpl extends ServiceImpl implements SeCourseThumbService { - +public class CourseThumbServiceImpl extends ServiceImpl implements CourseThumbService { @Autowired CoursesMapper coursesMapper; @Override - public BaseResponse doCourseThumb(String courseId, String userId) { + public BaseResponse doCourseThumb(String courseId, Long userId) { //从数据库中校验是否存在courseid Courses courses = coursesMapper.selectById(courseId); @@ -45,18 +44,17 @@ public class SeCourseThumbServiceImpl extends ServiceImpl thumbQueryWrapper = new QueryWrapper<>(seCourseThumb); - SeCourseThumb oldSeCourseThumb = this.getOne(thumbQueryWrapper); + CourseThumb CourseThumb = new CourseThumb(); + CourseThumb.setCourseId(courseId); + CourseThumb.setUserId(userId); + QueryWrapper thumbQueryWrapper = new QueryWrapper<>(CourseThumb); + CourseThumb oldCourseThumb = this.getOne(thumbQueryWrapper); //已点赞 - if (oldSeCourseThumb != null) { + if (oldCourseThumb != null) { // 取消点赞 删除记录 result = this.remove(thumbQueryWrapper); if (result) { - System.out.println("取消点赞成功"); - return ResultUtils.success(result); + return ResultUtils.success("取消点赞成功"); } else { throw new BusinessException(ErrorCode.SYSTEM_ERROR); } @@ -66,13 +64,12 @@ public class SeCourseThumbServiceImpl extends ServiceImpl thumbQueryWrapper = new QueryWrapper<>(); + QueryWrapper thumbQueryWrapper = new QueryWrapper<>(); thumbQueryWrapper.eq("course_id", courseId); long count = this.count(thumbQueryWrapper); if (count == 0) { diff --git a/src/main/java/com/teaching/backend/service/impl/thumb/KnowThumbServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/thumb/KnowThumbServiceImpl.java new file mode 100644 index 0000000..a30c431 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/thumb/KnowThumbServiceImpl.java @@ -0,0 +1,77 @@ +package com.teaching.backend.service.impl.thumb; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.Knowtemp.KnowtmpMapper; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.mapper.thumb.KnowThumbMapper; +import com.teaching.backend.model.entity.courses.Courses; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; +import com.teaching.backend.model.entity.thumb.KnowThumb; +import com.teaching.backend.service.thumb.KnowThumbService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class KnowThumbServiceImpl extends ServiceImpl implements KnowThumbService { + @Autowired + CoursesMapper coursesMapper; + + @Autowired + KnowtmpMapper knowtmpMapper; + + @Override + public BaseResponse doKnowThumb(Long knowId, Long userId) { + boolean result = false; + // 查询知识点 + KnowPoint knowPoint = knowtmpMapper.selectById(knowId); + if(knowPoint == null){ + return ResultUtils.error(ErrorCode.PARAMS_ERROR,"知识点不存在"); + } + + // 先查询数据库记录,该用户是否点赞 + KnowThumb KnowThumb = new KnowThumb(); + KnowThumb.setKnowId(knowId); + KnowThumb.setUserId(userId); + QueryWrapper thumbQueryWrapper = new QueryWrapper<>(KnowThumb); + KnowThumb oldKnowThumb = this.getOne(thumbQueryWrapper); + //已点赞 + if (oldKnowThumb != null) { + // 取消点赞 删除记录 + result = this.remove(thumbQueryWrapper); + if (result) { + return ResultUtils.success("取消点赞成功"); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } else { + // 每个用户串行点赞 + // 锁必须要包裹住事务方法 + Lock lock = new ReentrantLock(); + lock.lock(); + try { + result = this.save(KnowThumb); + } catch (Exception e) { + throw new BusinessException(ErrorCode.OPERATION_ERROR); + } finally { + lock.unlock(); + return ResultUtils.success("点赞成功"); + } + } + } + + +} diff --git a/src/main/java/com/teaching/backend/service/impl/thumb/ResourceThumbServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/thumb/ResourceThumbServiceImpl.java new file mode 100644 index 0000000..4a17716 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/impl/thumb/ResourceThumbServiceImpl.java @@ -0,0 +1,78 @@ +package com.teaching.backend.service.impl.thumb; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; +import com.teaching.backend.exception.BusinessException; +import com.teaching.backend.mapper.courses.CoursesMapper; +import com.teaching.backend.mapper.resource.ResourceMapper; +import com.teaching.backend.mapper.thumb.ResourceThumbMapper; +import com.teaching.backend.model.entity.resource.ResourceMysql; +import com.teaching.backend.model.entity.thumb.ResourceThumb; +import com.teaching.backend.service.thumb.ResourceThumbService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + + +/** + * @Author:youhang + * @Date:2024-05-30-20:23 + * @Description: + */ +@Service +public class ResourceThumbServiceImpl extends ServiceImpl implements ResourceThumbService { + + @Autowired + CoursesMapper coursesMapper; + + + @Autowired + private ResourceMapper resourceMapper; + + @Override + public BaseResponse doResourceThumb(Long resourceId, Long userId) { + boolean result = false; + //查询是否有资源 + ResourceMysql resourceMysql = resourceMapper.selectById(resourceId); + if(resourceMysql == null){ + throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS); + } + // 先查询数据库记录,该用户是否点赞 + ResourceThumb ResourceThumb = new ResourceThumb(); + ResourceThumb.setResourceId(resourceId); + ResourceThumb.setUserId(userId); + QueryWrapper thumbQueryWrapper = new QueryWrapper<>(ResourceThumb); + ResourceThumb oldResourceThumb = this.getOne(thumbQueryWrapper); + + //已点赞 + if (oldResourceThumb != null) { + // 取消点赞 删除记录 + result = this.remove(thumbQueryWrapper); + if (result) { + return ResultUtils.success("取消点赞成功"); + } else { + throw new BusinessException(ErrorCode.SYSTEM_ERROR); + } + } else { + // 每个用户串行点赞 + // 锁必须要包裹住事务方法 + Lock lock = new ReentrantLock(); + lock.lock(); + try { + result = this.save(ResourceThumb); + } catch (Exception e) { + throw new BusinessException(ErrorCode.OPERATION_ERROR); + } finally { + lock.unlock(); + return ResultUtils.success("点赞成功"); + } + } + } + + +} diff --git a/src/main/java/com/teaching/backend/service/impl/thumb/SeKnowThumbServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/thumb/SeKnowThumbServiceImpl.java deleted file mode 100644 index b5f78c6..0000000 --- a/src/main/java/com/teaching/backend/service/impl/thumb/SeKnowThumbServiceImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -//package com.teaching.backend.service.impl.thumb; -// -//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.mapper.courses.CoursesMapper; -//import com.teaching.backend.mapper.thumb.SeKnowThumbMapper; -//import com.teaching.backend.model.entity.courses.Courses; -//import com.teaching.backend.model.entity.thumb.SeKnowThumb; -//import com.teaching.backend.service.thumb.SeKnowThumbService; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -// -//import java.util.concurrent.locks.Lock; -//import java.util.concurrent.locks.ReentrantLock; -// -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:23 -// * @Description: -// */ -//@Service -//public class SeKnowThumbServiceImpl extends ServiceImpl implements SeKnowThumbService { -// @Autowired -// CoursesMapper coursesMapper; -// @Override -// public BaseResponse doKnowThumb(Integer knowId, String userId) { -// boolean result = false; -// // todo 查询知识点 -// // 先查询数据库记录,该用户是否点赞 -// SeKnowThumb seKnowThumb = new SeKnowThumb(); -// seKnowThumb.setKnowId(knowId); -// seKnowThumb.setUserId(userId); -// QueryWrapper thumbQueryWrapper = new QueryWrapper<>(seKnowThumb); -// SeKnowThumb oldSeKnowThumb = this.getOne(thumbQueryWrapper); -// //已点赞 -// if (oldSeKnowThumb != null) { -// // 取消点赞 删除记录 -// result = this.remove(thumbQueryWrapper); -// if (result) { -// System.out.println("取消点赞成功"); -// return ResultUtils.success(result); -// } else { -// throw new BusinessException(ErrorCode.SYSTEM_ERROR); -// } -// } else { -// // 每个用户串行点赞 -// // 锁必须要包裹住事务方法 -// Lock lock = new ReentrantLock(); -// lock.lock(); -// try { -// result = this.save(seKnowThumb); -// } catch (Exception e) { -// throw new BusinessException(ErrorCode.OPERATION_ERROR); -// } finally { -// lock.unlock(); -// System.out.println("点赞成功"); -// return ResultUtils.success(result); -// } -// } -// } -// -// -//} diff --git a/src/main/java/com/teaching/backend/service/impl/thumb/SeResourceThumbServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/thumb/SeResourceThumbServiceImpl.java deleted file mode 100644 index 8545cf3..0000000 --- a/src/main/java/com/teaching/backend/service/impl/thumb/SeResourceThumbServiceImpl.java +++ /dev/null @@ -1,80 +0,0 @@ -//package com.teaching.backend.service.impl.thumb; -// -//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.common.ResultUtils; -//import com.teaching.backend.exception.BusinessException; -//import com.teaching.backend.mapper.courses.CoursesMapper; -//import com.teaching.backend.mapper.resource.CourseResourcesMapper; -//import com.teaching.backend.mapper.thumb.SeResourceThumbMapper; -//import com.teaching.backend.model.entity.resource.CourseResources; -//import com.teaching.backend.model.entity.thumb.SeResourceThumb; -//import com.teaching.backend.service.thumb.SeResourceThumbService; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.stereotype.Service; -// -//import java.util.concurrent.locks.Lock; -//import java.util.concurrent.locks.ReentrantLock; -// -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:23 -// * @Description: -// */ -//@Service -//public class SeResourceThumbServiceImpl extends ServiceImpl implements SeResourceThumbService { -// -// @Autowired -// CoursesMapper coursesMapper; -// -// -// @Autowired -// private Reso courseResourcesMapper; -// -// @Override -// public BaseResponse doResourceThumb(Integer resourceId, String userId) { -// boolean result = false; -// //查询是否有资源 -// CourseResources courseResources = courseResourcesMapper.selectById(resourceId); -// if(courseResources == null){ -// throw new BusinessException(ErrorCode.PARAMS_RESOURCE_NOTEXISTS); -// } -// // 先查询数据库记录,该用户是否点赞 -// SeResourceThumb seResourceThumb = new SeResourceThumb(); -// seResourceThumb.setResourceId(resourceId); -// seResourceThumb.setUserId(userId); -// QueryWrapper thumbQueryWrapper = new QueryWrapper<>(seResourceThumb); -// SeResourceThumb oldSeResourceThumb = this.getOne(thumbQueryWrapper); -// -// //已点赞 -// if (oldSeResourceThumb != null) { -// // 取消点赞 删除记录 -// result = this.remove(thumbQueryWrapper); -// if (result) { -// System.out.println("取消点赞成功"); -// return ResultUtils.success(result); -// } else { -// throw new BusinessException(ErrorCode.SYSTEM_ERROR); -// } -// } else { -// // 每个用户串行点赞 -// // 锁必须要包裹住事务方法 -// Lock lock = new ReentrantLock(); -// lock.lock(); -// try { -// result = this.save(seResourceThumb); -// } catch (Exception e) { -// throw new BusinessException(ErrorCode.OPERATION_ERROR); -// } finally { -// lock.unlock(); -// System.out.println("点赞成功"); -// return ResultUtils.success(result); -// } -// } -// } -// -// -//} diff --git a/src/main/java/com/teaching/backend/service/impl/umsAdmin/UmsStudentManageServiceImpl.java b/src/main/java/com/teaching/backend/service/impl/umsAdmin/UmsStudentManageServiceImpl.java index 2d4b5c2..28e4964 100644 --- a/src/main/java/com/teaching/backend/service/impl/umsAdmin/UmsStudentManageServiceImpl.java +++ b/src/main/java/com/teaching/backend/service/impl/umsAdmin/UmsStudentManageServiceImpl.java @@ -1,7 +1,9 @@ package com.teaching.backend.service.impl.umsAdmin; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.common.ErrorCode; +import com.teaching.backend.common.ResultUtils; import com.teaching.backend.exception.BusinessException; import com.teaching.backend.mapper.umsAdmin.*; import com.teaching.backend.model.dto.umsAdmin.UmsStudentPageQueryDTO; @@ -22,7 +24,6 @@ import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.HashMap; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -135,7 +136,7 @@ public class UmsStudentManageServiceImpl extends ServiceImpl batchRemove(List ids) { + public BaseResponse batchRemove(List ids) { String url = myUrl; // 数据库URL String user = myUsername; // 数据库用户名 @@ -182,7 +183,7 @@ public class UmsStudentManageServiceImpl extends ServiceImpl initialPassword(List ids) { + public BaseResponse initialPassword(List ids) { String encodePassword = passwordEncoder.encode("123456"); String url = myUrl; // 数据库URL @@ -234,7 +235,7 @@ public class UmsStudentManageServiceImpl extends ServiceImpl impl //分配角色(学生) umsUser.setRoleId("2"); - save(umsUser); + boolean save = save(umsUser); + if(!save){ + throw new BusinessException(500,"注册失败"); + } //创建学生信息(默认是学生) UmsUser byUsername = lambdaQuery().eq(UmsUser::getUsername, umsUser.getUsername()) @@ -231,11 +236,7 @@ public class UmsUserServiceImpl extends ServiceImpl impl @Override public int updatePassword(UpdateUserPasswordParam param) { - if(StrUtil.isEmpty(param.getUsername()) - ||StrUtil.isEmpty(param.getOldPassword()) - ||StrUtil.isEmpty(param.getNewPassword())){ - throw new BusinessException(400,"修改密码操作错误"); - } + List userList = lambdaQuery() .eq(UmsUser::getUsername, param.getUsername()) .list(); @@ -391,4 +392,17 @@ public class UmsUserServiceImpl extends ServiceImpl impl return teacherInfList; } + @Override + public BaseResponse getNameById(String ids) { + String str = ids; + String strNew = new String(); + String[] parts = str.split(","); + for (int i = 0; i < parts.length; i++) { + Long num = Long.parseLong(parts[i]); + UmsTeacher umsTeacher = umsTeacherMapper.selectByUserId(num); + strNew += umsTeacher.getName()+" "; + } + return ResultUtils.success(strNew); + } + } diff --git a/src/main/java/com/teaching/backend/service/knowtmp/KnowPointService.java b/src/main/java/com/teaching/backend/service/knowtmp/KnowPointService.java new file mode 100644 index 0000000..b6b8193 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/knowtmp/KnowPointService.java @@ -0,0 +1,46 @@ +package com.teaching.backend.service.knowtmp; + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.Knowtmp.KnowPointAddRequest; +import com.teaching.backend.model.dto.Knowtmp.KnowPointUpdateRequest; +import com.teaching.backend.model.entity.knowtmp.KnowPoint; + +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-08-07-15:09 + * @Description: + */ +public interface KnowPointService { + + + + BaseResponse objectiveaddKnow(String ObjectiveId, Long KnowId); + + //查询 + BaseResponse getAllKnows(String courseId); + + + // 添加知识点 + BaseResponse add(KnowPointAddRequest knowPointAddRequest); + + BaseResponse addObjective( List objectiveIds,Long knowId); + BaseResponse> knowObjects( Long knowId); + + //修改知识点 + BaseResponse update(KnowPointUpdateRequest knowPointUpdateRequest); + + //删除知识点 + BaseResponse delete(Long id); + + //查询 + BaseResponse query(Long id); + + //查询通过chapterId List + BaseResponse> queryByChapterId(Long chapterId); + + //查询通过chapterId List + List queryByChapterIdList(List chapterIdList); + +} diff --git a/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java b/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java deleted file mode 100644 index f71223a..0000000 --- a/src/main/java/com/teaching/backend/service/knowtmp/KnowtmpService.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.teaching.backend.service.knowtmp; - -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.dto.Knowtmp.KnowtempAdd; -import com.teaching.backend.model.dto.Knowtmp.KnowtempUpdate; -import com.teaching.backend.model.entity.knowtmp.Knowtmp; - -import java.util.List; - -/** - * @Author:youhang - * @Date:2024-08-07-15:09 - * @Description: - */ -public interface KnowtmpService { - - - - //查询 - BaseResponse getAllKnows(String courseId); - - - // 添加知识点 - BaseResponse add(KnowtempAdd knowtempAdd); - - //修改知识点 - BaseResponse update(KnowtempUpdate knowtempUpdate); - - //删除知识点 - BaseResponse delete(Long id); - - //查询 - BaseResponse query(Long id); - - //查询通过chapterId List - BaseResponse> queryByChapterId(Long chapterId); - - //查询通过chapterId List - List queryByChapterIdList(List chapterIdList); - -} diff --git a/src/main/java/com/teaching/backend/service/learn/CourseLearnService.java b/src/main/java/com/teaching/backend/service/learn/CourseLearnService.java new file mode 100644 index 0000000..f6cfc23 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/learn/CourseLearnService.java @@ -0,0 +1,31 @@ +package com.teaching.backend.service.learn; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.learn.CourseLearnDTO; +import com.teaching.backend.model.entity.records.CourseLearningRecord; +import com.teaching.backend.model.vo.courses.CourseListVO; + +import java.util.List; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface CourseLearnService { + + + BaseResponse removeKnowledgeRecord(List ids); + + BaseResponse doLearn(String courseId, Long userId); + + BaseResponse learnCount(String courseId); + + BaseResponse getPage(int pagenum, int pagesize, String userId); + BaseResponse removeCoursesRecords(List ids); + + + + +} diff --git a/src/main/java/com/teaching/backend/service/learn/KnowLearnService.java b/src/main/java/com/teaching/backend/service/learn/KnowLearnService.java new file mode 100644 index 0000000..4b5e839 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/learn/KnowLearnService.java @@ -0,0 +1,23 @@ +package com.teaching.backend.service.learn; + +import com.teaching.backend.common.BaseResponse; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface KnowLearnService { + + /** + * 点赞 + * + + * @return + */ + BaseResponse doKnowLearn(Long knowId, Long userId); + + BaseResponse learnCount(Long knowId); + + +} diff --git a/src/main/java/com/teaching/backend/service/records/ICourseLearningRecordService.java b/src/main/java/com/teaching/backend/service/records/ICourseLearningRecordService.java index d9b77ef..b12cfc8 100644 --- a/src/main/java/com/teaching/backend/service/records/ICourseLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/ICourseLearningRecordService.java @@ -5,12 +5,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.records.CourseLearningRecord; +import com.teaching.backend.model.vo.courses.CourseListVO; import com.teaching.backend.model.vo.courses.CoursesVO; import java.util.List; -import java.util.List; - /** *

* 服务类 @@ -27,7 +26,7 @@ public interface ICourseLearningRecordService extends IService removeCoursesRecords(List ids); - List queryCourseList(String userId); + List queryCourseList(String userId); List queryrecommendCourses(String userId); } diff --git a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java index b2858af..501d045 100644 --- a/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java +++ b/src/main/java/com/teaching/backend/service/records/IKnowledgeLearningRecordService.java @@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.records.KnowledgeLearningRecord; -import com.teaching.backend.model.vo.courses.CoursesVO; -import io.swagger.models.auth.In; import com.teaching.backend.model.vo.knowGraph.KnowVO; import java.util.List; @@ -23,7 +21,7 @@ public interface IKnowledgeLearningRecordService extends IService saveCoursesRecords(KnowledgeLearningRecord knowledgeLearningRecord); - BaseResponse getPage(int pagenum, int pagesize, String userId, String courseId); +// BaseResponse getPage(int pagenum, int pagesize, String userId, String courseId); BaseResponse removeKnowledgeRecord(List ids); diff --git a/src/main/java/com/teaching/backend/service/resource/IResourceMysqlService.java b/src/main/java/com/teaching/backend/service/resource/IResourceMysqlService.java deleted file mode 100644 index d09d09b..0000000 --- a/src/main/java/com/teaching/backend/service/resource/IResourceMysqlService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.teaching.backend.service.resource; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.entity.resource.ResourceMysql; -import org.springframework.web.multipart.MultipartFile; - -/** - *

- * 服务类 - *

- * - * @author author - * @since 2024-09-02 - */ -public interface IResourceMysqlService extends IService { - - BaseResponse resourceUpload(MultipartFile file, ResourceMysql resourceMysql); -} diff --git a/src/main/java/com/teaching/backend/service/resource/ResourceGraphService.java b/src/main/java/com/teaching/backend/service/resource/ResourceGraphService.java index d2f6817..638ad07 100644 --- a/src/main/java/com/teaching/backend/service/resource/ResourceGraphService.java +++ b/src/main/java/com/teaching/backend/service/resource/ResourceGraphService.java @@ -2,6 +2,7 @@ package com.teaching.backend.service.resource; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.entity.resource.ResourceMysql; import com.teaching.backend.model.entity.resource.Resources; import org.springframework.core.io.InputStreamResource; import org.springframework.http.ResponseEntity; @@ -23,17 +24,21 @@ public interface ResourceGraphService { BaseResponse addResourcesByIdAndResourcesId(Long id, Long resourcesId); + BaseResponse addResourcesByKnowId(Long knowId, Long resourcesId); + //查询课程下资源 - BaseResponse> queryResourcesByCourseId(String courseId); + BaseResponse> queryResourcesByCourseId(String courseId); //查询章节下资源 - BaseResponse> queryResourcesByChapterId(Long chapterId); + BaseResponse> queryResourcesByChapterId(Long chapterId); //查询二级节点下资源 - BaseResponse> queryBesidesKnowToResources(Long knowId); + BaseResponse> queryBesidesKnowToResources(Long knowId); + + BaseResponse> queryResourcesById(Long knowId); + - BaseResponse> queryResourcesByKnowId(Long knowId); } diff --git a/src/main/java/com/teaching/backend/service/resource/ResourceRelationshipService.java b/src/main/java/com/teaching/backend/service/resource/ResourceRelationshipService.java new file mode 100644 index 0000000..7d77e80 --- /dev/null +++ b/src/main/java/com/teaching/backend/service/resource/ResourceRelationshipService.java @@ -0,0 +1,30 @@ +package com.teaching.backend.service.resource; + + +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.dto.resource.ResourceRelationshipDTO; +import com.teaching.backend.model.entity.resource.Resources; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Set; + +/** + * @Author:youhang + * @Date:2024-07-26-13:55 + * @Description: + */ + +public interface ResourceRelationshipService { + + BaseResponse addResourcesRel(ResourceRelationshipDTO resourceRelationshipDto); + + BaseResponse deleteResourcesRel(Long knowId, Long resourceId); + + + +} diff --git a/src/main/java/com/teaching/backend/service/resource/ResourceService.java b/src/main/java/com/teaching/backend/service/resource/ResourceService.java index c788a47..81a9ae0 100644 --- a/src/main/java/com/teaching/backend/service/resource/ResourceService.java +++ b/src/main/java/com/teaching/backend/service/resource/ResourceService.java @@ -2,8 +2,8 @@ package com.teaching.backend.service.resource; import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.vo.resources.ResourceUploadVO; import com.teaching.backend.model.entity.resource.ResourceMysql; -import com.teaching.backend.model.entity.resource.Resources; import org.springframework.core.io.InputStreamResource; import org.springframework.http.ResponseEntity; import org.springframework.web.multipart.MultipartFile; @@ -16,10 +16,33 @@ import org.springframework.web.multipart.MultipartFile; public interface ResourceService { - BaseResponse upload(MultipartFile file) ; +// BaseResponse upload(MultipartFile file) ; + +// BaseResponse delete(String filename) ; + +// ResponseEntity readFile(String filename); + + + +// BaseResponse uploadOSS(MultipartFile file) throws IOException; + + +// BaseResponse deleteFileOss(String filename) ; + +// BaseResponse readFile(String filename); + + // + BaseResponse addResourceForMysql(MultipartFile file,Long knowId); +// +// BaseResponse addResource(MultipartFile file); + + BaseResponse deleteResourceForMysql(long id) throws Exception; + +// BaseResponse deleteResource(long id) throws Exception; + +// BaseResponse recoverdata(); + - BaseResponse delete(String filename) ; - ResponseEntity readFile(String filename); } diff --git a/src/main/java/com/teaching/backend/service/system/SystemSettingsService.java b/src/main/java/com/teaching/backend/service/system/SystemSettingsService.java index f6dea64..c12d218 100644 --- a/src/main/java/com/teaching/backend/service/system/SystemSettingsService.java +++ b/src/main/java/com/teaching/backend/service/system/SystemSettingsService.java @@ -1,12 +1,12 @@ package com.teaching.backend.service.system; import com.baomidou.mybatisplus.extension.service.IService; -import com.teaching.backend.common.CommonResult; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.entity.system.SystemSetting; import com.teaching.backend.model.vo.system.SystemSettingVO; public interface SystemSettingsService extends IService { SystemSettingVO getSystemSettings(); - CommonResult updateSystemSettings(SystemSetting systemSetting); + BaseResponse updateSystemSettings(SystemSetting systemSetting); } diff --git a/src/main/java/com/teaching/backend/service/thumb/SeCourseThumbService.java b/src/main/java/com/teaching/backend/service/thumb/CourseThumbService.java similarity index 69% rename from src/main/java/com/teaching/backend/service/thumb/SeCourseThumbService.java rename to src/main/java/com/teaching/backend/service/thumb/CourseThumbService.java index a42e93f..24e2d10 100644 --- a/src/main/java/com/teaching/backend/service/thumb/SeCourseThumbService.java +++ b/src/main/java/com/teaching/backend/service/thumb/CourseThumbService.java @@ -2,14 +2,15 @@ package com.teaching.backend.service.thumb; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.model.entity.thumb.SeCourseThumb; +import com.teaching.backend.model.entity.thumb.CourseThumb; + /** * @Author:youhang * @Date:2024-05-30-20:22 * @Description: */ -public interface SeCourseThumbService extends IService { +public interface CourseThumbService extends IService { /** * 点赞 @@ -18,7 +19,7 @@ public interface SeCourseThumbService extends IService { * @param userId * @return */ - BaseResponse doCourseThumb(String courseId, String userId); + BaseResponse doCourseThumb(String courseId, Long userId); /** diff --git a/src/main/java/com/teaching/backend/service/thumb/KnowThumbService.java b/src/main/java/com/teaching/backend/service/thumb/KnowThumbService.java new file mode 100644 index 0000000..1b01e5f --- /dev/null +++ b/src/main/java/com/teaching/backend/service/thumb/KnowThumbService.java @@ -0,0 +1,23 @@ +package com.teaching.backend.service.thumb; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.entity.thumb.KnowThumb; +import io.swagger.models.auth.In; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface KnowThumbService extends IService { + + /** + * 点赞 + * + + * @return + */ + BaseResponse doKnowThumb(Long knowId, Long userId); + +} diff --git a/src/main/java/com/teaching/backend/service/thumb/ResourceThumbService.java b/src/main/java/com/teaching/backend/service/thumb/ResourceThumbService.java new file mode 100644 index 0000000..323994a --- /dev/null +++ b/src/main/java/com/teaching/backend/service/thumb/ResourceThumbService.java @@ -0,0 +1,22 @@ +package com.teaching.backend.service.thumb; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; +import com.teaching.backend.model.entity.thumb.ResourceThumb; + +/** + * @Author:youhang + * @Date:2024-05-30-20:22 + * @Description: + */ +public interface ResourceThumbService extends IService { + + /** + * 点赞 + * + * @param userId + * @return + */ + BaseResponse doResourceThumb(Long resourceId, Long userId); + +} diff --git a/src/main/java/com/teaching/backend/service/thumb/SeKnowThumbService.java b/src/main/java/com/teaching/backend/service/thumb/SeKnowThumbService.java deleted file mode 100644 index 7bad973..0000000 --- a/src/main/java/com/teaching/backend/service/thumb/SeKnowThumbService.java +++ /dev/null @@ -1,23 +0,0 @@ -//package com.teaching.backend.service.thumb; -// -//import com.baomidou.mybatisplus.extension.service.IService; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.model.entity.thumb.SeKnowThumb; -//import io.swagger.models.auth.In; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//public interface SeKnowThumbService extends IService { -// -// /** -// * 点赞 -// * -// -// * @return -// */ -// BaseResponse doKnowThumb(Integer knowId, String userId); -// -//} diff --git a/src/main/java/com/teaching/backend/service/thumb/SeResourceThumbService.java b/src/main/java/com/teaching/backend/service/thumb/SeResourceThumbService.java deleted file mode 100644 index 0448049..0000000 --- a/src/main/java/com/teaching/backend/service/thumb/SeResourceThumbService.java +++ /dev/null @@ -1,22 +0,0 @@ -//package com.teaching.backend.service.thumb; -// -//import com.baomidou.mybatisplus.extension.service.IService; -//import com.teaching.backend.common.BaseResponse; -//import com.teaching.backend.model.entity.thumb.SeResourceThumb; -// -///** -// * @Author:youhang -// * @Date:2024-05-30-20:22 -// * @Description: -// */ -//public interface SeResourceThumbService extends IService { -// -// /** -// * 点赞 -// * -// * @param userId -// * @return -// */ -// BaseResponse doResourceThumb(Integer resourceId, String userId); -// -//} diff --git a/src/main/java/com/teaching/backend/service/umsAdmin/UmsStudentManageService.java b/src/main/java/com/teaching/backend/service/umsAdmin/UmsStudentManageService.java index 55e346a..d963b8c 100644 --- a/src/main/java/com/teaching/backend/service/umsAdmin/UmsStudentManageService.java +++ b/src/main/java/com/teaching/backend/service/umsAdmin/UmsStudentManageService.java @@ -1,10 +1,8 @@ package com.teaching.backend.service.umsAdmin; -import cn.hutool.db.PageResult; import com.baomidou.mybatisplus.extension.service.IService; import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.CommonResult; import com.teaching.backend.model.dto.umsAdmin.UmsStudentPageQueryDTO; import com.teaching.backend.model.entity.umsAdmin.UmsStudentManage; @@ -22,7 +20,7 @@ public interface UmsStudentManageService extends IService { void startOrStop(String status, Long id); - CommonResult batchRemove(List ids); + BaseResponse batchRemove(List ids); - CommonResult initialPassword(List ids); + BaseResponse initialPassword(List ids); } diff --git a/src/main/java/com/teaching/backend/service/umsAdmin/UmsUserService.java b/src/main/java/com/teaching/backend/service/umsAdmin/UmsUserService.java index 1be3571..07acd64 100644 --- a/src/main/java/com/teaching/backend/service/umsAdmin/UmsUserService.java +++ b/src/main/java/com/teaching/backend/service/umsAdmin/UmsUserService.java @@ -1,6 +1,7 @@ package com.teaching.backend.service.umsAdmin; import com.baomidou.mybatisplus.extension.service.IService; +import com.teaching.backend.common.BaseResponse; import com.teaching.backend.model.dto.umsAdmin.UmsUserParam; import com.teaching.backend.model.dto.umsAdmin.UpdateUserPasswordParam; import com.teaching.backend.model.dto.umsAdmin.UmsStudentAndTeacherDTO; @@ -85,4 +86,6 @@ public interface UmsUserService extends IService { boolean updatePersonalInfo(UmsStudentAndTeacherDTO umsStudentAndTeacherDTO); List getTeacherInfList(); + + BaseResponse getNameById(String ids); } diff --git a/src/main/java/com/teaching/backend/utils/AliyunOSSClientUtil.java b/src/main/java/com/teaching/backend/utils/AliyunOSSClientUtil.java new file mode 100644 index 0000000..d51933d --- /dev/null +++ b/src/main/java/com/teaching/backend/utils/AliyunOSSClientUtil.java @@ -0,0 +1,354 @@ +package com.teaching.backend.utils; + + +import cn.hutool.core.date.DateTime; +import com.aliyun.oss.*; +import com.aliyun.oss.model.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.multipart.MultipartFile; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.net.URL; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class AliyunOSSClientUtil { + // log日志 + private static Logger logger = LoggerFactory.getLogger(AliyunOSSClientUtil.class); + //oss客户端连接 + private static OSS ossclient = null; + + public static String fileSubStr(String filename){ + //字符串截取 + int dotIndex = filename.lastIndexOf('.'); + String prefix = filename.substring(0,dotIndex); + String suffix = filename.substring(dotIndex+1,filename.length()); + if(prefix.length() > 20){ + prefix = prefix.substring(0,20); + } + filename = prefix+"."+suffix; + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + // 设置存储对象名称 + String path = sdf.format(new Date()) + "/" + suffix + "/" + filename; + return path; + } + + + public static String getFileName(String filename){ + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + // 字符串截取 + int dotIndex = filename.lastIndexOf('.'); + String prefix = filename.substring(0,dotIndex); + String suffix = filename.substring(dotIndex+1,filename.length()); + if(prefix.length() > 10){ + prefix = prefix.substring(0,10); + } + filename = prefix+"-"+sdf.format(new DateTime())+"."+suffix; + sdf = new SimpleDateFormat("yyyyMMdd"); + // 设置存储对象名称 + String objectName = sdf.format(new Date()) + "/" + suffix + "/" + filename; + return objectName; + } + + + /** + * 获得阿里云OSS客户端对象 + * 备注:阿里云OSS SDK中提供了自动重连的功能,以确保应用程序在遇到网络问题时仍能与OSS有效通信。 + * + * @param ossEndpoint + * @param accessId + * @param accessKey + * @return + */ + public static OSS getOssClient(String ossEndpoint, String accessId, String accessKey) { + if (ossclient == null) { + ClientBuilderConfiguration conf = new ClientBuilderConfiguration(); + // 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。 + conf.setMaxConnections(500); + // 设置Socket层传输数据的超时时间,默认为50000毫秒。 + conf.setSocketTimeout(10000); + // 设置建立连接的超时时间,默认为50000毫秒。 + conf.setConnectionTimeout(10000); + // 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。 + conf.setConnectionRequestTimeout(10000); + // 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。 + conf.setIdleConnectionTime(10000); + // 设置失败请求重试次数,默认为3次。 + conf.setMaxErrorRetry(5); + ossclient = new OSSClientBuilder().build(ossEndpoint, accessId, accessKey, conf); + } + return ossclient; + } + + + /** + * 创建存储空间 + * + * @param ossClient OSS连接 + * @param bucketName 存储空间 + * @return + */ + public static String createBucketName(OSS ossClient, String bucketName) { + // 存储空间 + final String bucketNames = bucketName; + if (!ossClient.doesBucketExist(bucketName)) { + // 创建存储空间 + Bucket bucket = ossClient.createBucket(bucketName); + logger.info("创建存储空间成功"); + return bucket.getName(); + } + + return bucketNames; + } + + + /** + * 删除存储空间bucketName + * + * @param ossClient oss对象 + * @param bucketName 存储空间 + */ + public static void deleteBucket(OSS ossClient, String bucketName) { + ossClient.deleteBucket(bucketName); + logger.info("删除" + bucketName + "Bucket成功"); + } + + + /** + * 创建模拟文件夹:多级目录 + * + * @param ossClient oss连接 + * @param bucketName 存储空间 + * @param folder 模拟文件夹名如"upload/2023/01/11/" + * @return 文件夹名 + */ + public static String createFolder(OSS ossClient, String bucketName, String folder) { + // 文件夹名 + final String keySuffixWithSlash = folder; + // 判断文件夹是否存在,不存在则创建 + if (!ossClient.doesObjectExist(bucketName, keySuffixWithSlash)) { + // 创建文件夹 + ossClient.putObject(bucketName, keySuffixWithSlash, new ByteArrayInputStream(new byte[0])); + logger.info("创建文件夹成功"); + // 得到文件夹名 + OSSObject object = ossClient.getObject(bucketName, keySuffixWithSlash); + + String fileDir = object.getKey(); + return fileDir; + } + return keySuffixWithSlash; + } + + + /** + * 根据key删除OSS服务器上的文件 + * + * @param ossClient oss连接 + * @param bucketName 存储空间 + * @param key Bucket下的文件的路径名+文件名 如:"upload/2023/01/11/cake.jpg" + */ + public static void deleteObject(OSS ossClient, String bucketName, String key) { + ossClient.deleteObject(bucketName, key); + logger.info("删除" + bucketName + "下的文件" + key + "成功"); + } + + + /** + * 上传文件 + * + * @param ossClient oss连接 + * @param bucketName 存储空间 + * @param ossPath 上传文件相对路径+文件名如"upload/2023/01/11/cake.jpg" + * @param is 以输入流的形式上传文件 + * @param fileName 上传文件后新文件名 + * @return String 返回的唯一MD5数字签名 + */ + public static String uploadFileOss(OSS ossClient, String bucketName, String ossPath, InputStream is, String fileName) { + try { + // 文件大小 + long fileSize = is.available(); + // 创建上传Object的Metadata + ObjectMetadata metadata = new ObjectMetadata(); + // 上传的文件的长度 + metadata.setContentLength(is.available()); + // 指定该Object被下载时的网页的缓存行为 + metadata.setCacheControl("no-cache"); + // 指定该Object下设置Header + metadata.setHeader("Pragma", "no-cache"); + // 指定该Object被下载时的内容编码格式 + metadata.setContentEncoding("utf-8"); + // 文件的MIME,定义文件的类型及网页编码,决定浏览器将以什么形式、什么编码读取文件。如果用户没有指定则根据Key或文件名的扩展名生成, + // 如果没有扩展名则填默认值application/octet-stream + metadata.setContentType(getContentType(fileName)); + // 指定该Object被下载时的名称(指示MINME用户代理如何显示附加的文件,打开或下载,及文件名称) + metadata.setContentDisposition("filename/filesize=" + fileName + "/" + fileSize + "Byte"); + //上传文件到OSS时需要指定包含文件后缀在内的完整路径如ossPath="upload/2023/01/11/cake.jpg" +// PutObjectResult putResult = ossClient.putObject(bucketName, ossPath, is, metadata); + PutObjectResult putResult = ossClient.putObject(bucketName, ossPath, is, metadata); + + // 解析结果 + String resultStr = putResult.getETag(); + logger.info("唯一MD5数字签名:" + resultStr); + //上传文件后相对路径如"upload/2023/01/11/cake.jpg" + String path = ossPath; + return path; + } catch (Exception e) { + e.printStackTrace(); + logger.error("上传阿里云OSS服务器异常." + e.getMessage(), e); + return null; + } + } + + + /** + * 下载文件到本地 + * + * @param ossClient oss连接 + * @param bucketName 存储空间 + * @param key Bucket下的文件的路径名+文件名 如:"upload/2023/01/11/cake.jpg" + * @param localFilePath 下载本地文件绝对路径如"C:\Users\Administrator\Desktop\oss-download\xxx.pdf" + */ + public static void downloadFileOss(OSS ossClient, String bucketName, String key, String localFilePath) { + try { + //创建本地文件 + File file = new File(localFilePath); + GetObjectRequest objectRequest = new GetObjectRequest(bucketName, key); + //下载OSS文件到本地文件,若指定的本地文件存在则覆盖,否则新建 + ossClient.getObject(objectRequest, file); + logger.info("下载文件到本地成功"); + } catch (OSSException e) { + e.printStackTrace(); + } catch (ClientException e) { + e.printStackTrace(); + } + } + + + /** + * 获取上传文件对象 + * 备注:最重要的是获取上传文件的输出流InputStream + * + * @param ossClient oss连接 + * @param bucketName 存储空间 + * @param key Bucket下的文件的路径名+文件名 如:"upload/2023/01/11/cake.jpg" + * @return + */ + public static OSSObject getObject(OSS ossClient, String bucketName, String key) { + OSSObject object = null; + try { + object = ossClient.getObject(bucketName, key); + //文件大小 + long fileSize = object.getObjectMetadata().getContentLength(); + //文件相对路径 + String ossPath = object.getKey(); + //文件输入流 + InputStream is = object.getObjectContent(); + logger.info("success to getObject,fileSize:" + fileSize + "\nossPath:" + ossPath + "\ninputStream:" + is); + + } catch (OSSException e) { + e.printStackTrace(); + } catch (ClientException e) { + e.printStackTrace(); + } + return object; + } + + + /** + * 获取上传文件url + * + * @param ossClient + * @param bucketName + * @param key + * @return + */ + public static String getUrl(OSS ossClient, String bucketName, String key) { + //设置URl过期时间为99年:3600L*1000*24*365*99 + Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 99); + GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, key); + generatePresignedUrlRequest.setExpiration(expiration); + URL url = ossClient.generatePresignedUrl(generatePresignedUrlRequest); + String returnUrl = url.toString(); + + return returnUrl; + } + + + /** + * 通过文件名判断并获取OSS服务文件上传时文件的contentType + * + * @param fileName 文件名 + * @return 文件的contentType + */ + public static String getContentType(String fileName) { + // 文件的后缀名 + String fileExtension = fileName.substring(fileName.lastIndexOf(".")); + logger.info("getContentType->fileName={},fileExtension={}", fileName, fileExtension); + for (AliyunOssFileTypeEnum e : AliyunOssFileTypeEnum.values()) { + if (e.getCode().equalsIgnoreCase(fileExtension)) { + return e.getText(); + } + } + // 默认返回类型 + return AliyunOssFileTypeEnum.TXT.getText(); + } + + + // 测试 + public static void main(String[] args) throws FileNotFoundException { + //阿里云OSS账号自行到阿里云官网申请 + String ossEndpoint = "XXX"; + String accessId = "XXX"; + String accessKey = "XXX"; + String bucketName = "test"; + // 初始化OSSClient + OSS ossClient = AliyunOSSClientUtil.getOssClient(ossEndpoint, accessId, accessKey); + + + //测试创建多级目录 + /*String tmpDir = "upload/2023/01/11/"; + String folder = createFolder(ossClient, bucketName, tmpDir); + System.out.println("folder:"+folder);*/ + + + //测试删除文件 + /*String key="upload/2023/01/11/xxx.pdf"; + deleteObject(ossClient,bucketName,key);*/ + + + //测试上传文件 + /*String pathAndname = "C:\\Users\\Administrator\\Desktop\\测试文件上传\\xxx.pdf"; + File file = new File(pathAndname); + //原始文件名:带后缀 + String oldfilename = file.getName(); + //新文件名:带后缀 + String newfilename = "9065df0f3ab72419b36d2dec088e11d6.pdf";//可以自行生成随机唯一文件名 + String newpath = "C:\\Users\\Administrator\\Desktop\\upload\\2023\\01\\11\\"; + String ossPath = newpath + newfilename; + InputStream is = new FileInputStream(file); + String absolutePath = uploadFileOss(ossClient, bucketName, ossPath, is, newfilename); + System.out.println("absolutePath:"+absolutePath);*/ + + + //测试获取文件url + /*String key="upload/2023/01/11/9065df0f3ab72419b36d2dec088e11d6.pdf"; + String url = getUrl(ossClient, bucketName, key); + System.out.println("url:"+url);*/ + + + //测试获取上传对象 + /*String key = "upload/2023/01/11/9065df0f3ab72419b36d2dec088e11d6.pdf"; + getObject(ossClient, bucketName, key);*/ + + + //测试下载文件到本地 + /*String key = "upload/2023/01/11/9065df0f3ab72419b36d2dec088e11d6.pdf"; + String localFilePath = "C:\\Users\\Administrator\\Desktop\\oss-download\\xxx.pdf"; + downloadFileOss(ossClient, bucketName, key, localFilePath);*/ + } +} diff --git a/src/main/java/com/teaching/backend/utils/AliyunOssFileTypeEnum.java b/src/main/java/com/teaching/backend/utils/AliyunOssFileTypeEnum.java new file mode 100644 index 0000000..9390d56 --- /dev/null +++ b/src/main/java/com/teaching/backend/utils/AliyunOssFileTypeEnum.java @@ -0,0 +1,58 @@ +package com.teaching.backend.utils; + +public enum AliyunOssFileTypeEnum { + BMP(".bmp","image/bmp"), + GIF(".gif","image/gif"), + JPEG(".jpeg","image/jpeg"), + JPG(".jpg","image/jpeg"), + PNG(".png","image/jpeg"), + HTML(".html","text/html"), + XML(".xml","text/xml"), + TXT(".txt","application/octet-stream"), + SQL(".sql","application/octet-stream"), + VSD(".vsd","application/vnd.visio"), + PDF(".pdf","application/pdf"), + PPT(".ppt","application/vnd.ms-powerpoint"), + PPTX(".pptx","application/vnd.ms-powerpoint"), + DOC(".doc","application/msword"), + DOCX(".docx","application/msword"), + XLS(".xls","application/vnd.ms-excel"), + XLSX(".xlsx","application/vnd.ms-excel"), + CSV(".csv","application/vnd.ms-excel"); + + + String code; + + + String text; + + + AliyunOssFileTypeEnum() { + } + + + AliyunOssFileTypeEnum(String code, String text) { + this.code = code; + this.text = text; + } + + + public String getCode() { + return code; + } + + + public void setCode(String code) { + this.code = code; + } + + + public String getText() { + return text; + } + + + public void setText(String text) { + this.text = text; + } +} diff --git a/src/main/java/com/teaching/backend/utils/MinioUtils.java b/src/main/java/com/teaching/backend/utils/MinioUtils.java index 32f908a..b9c5aca 100644 --- a/src/main/java/com/teaching/backend/utils/MinioUtils.java +++ b/src/main/java/com/teaching/backend/utils/MinioUtils.java @@ -2,15 +2,10 @@ package com.teaching.backend.utils; import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; -import com.teaching.backend.common.BaseResponse; -import com.teaching.backend.common.ErrorCode; -import com.teaching.backend.common.ResultUtils; import com.teaching.backend.constant.TypeEnum; import com.teaching.backend.constant.ViewContentTypeEnum; import com.teaching.backend.model.dto.resource.BucketPolicyConfigDto; -import com.teaching.backend.model.dto.resource.ResourceUploadDto; -import com.teaching.backend.model.entity.resource.Resources; -import com.teaching.backend.service.resource.ResourceService; +import com.teaching.backend.model.vo.resources.ResourceUploadVO; import io.minio.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -20,7 +15,6 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.File; import java.io.InputStream; import java.text.SimpleDateFormat; import java.util.Date; @@ -48,8 +42,8 @@ public class MinioUtils { @Value("${minio.secretKey}") private String SECRET_KEY; - public ResourceUploadDto upload(MultipartFile file) { - ResourceUploadDto minioUploadDto = new ResourceUploadDto(); + public ResourceUploadVO upload(MultipartFile file) { + ResourceUploadVO minioUploadDto = new ResourceUploadVO(); try { //创建一个MinIO的Java客户端 MinioClient minioClient =MinioClient.builder() @@ -78,7 +72,7 @@ public class MinioUtils { if(prefix.length() > MAX_FILENAMELENGTH){ prefix = prefix.substring(0,MAX_FILENAMELENGTH); } - filename = prefix+"-"+sdf.format(new Date())+"."+suffix; + filename = prefix+"_"+sdf.format(new Date())+"."+suffix; sdf = new SimpleDateFormat("yyyyMMdd"); // 设置存储对象名称 String objectName = sdf.format(new Date()) + "/" + suffix + "/" + filename; @@ -90,6 +84,7 @@ public class MinioUtils { .stream(file.getInputStream(), file.getSize(), ObjectWriteArgs.MIN_MULTIPART_SIZE).build(); minioClient.putObject(putObjectArgs); LOGGER.info("文件上传成功!"); + minioUploadDto.setName(filename); minioUploadDto.setUrl(ENDPOINT + "/" + BUCKET_NAME + "/" + objectName); minioUploadDto.setObjectName(objectName); diff --git a/src/main/java/com/teaching/backend/utils/Neo4jUtil.java b/src/main/java/com/teaching/backend/utils/Neo4jUtil.java new file mode 100644 index 0000000..0ae4636 --- /dev/null +++ b/src/main/java/com/teaching/backend/utils/Neo4jUtil.java @@ -0,0 +1,111 @@ +package com.teaching.backend.utils; + +import org.springframework.context.annotation.Bean; +import org.springframework.data.neo4j.core.Neo4jClient; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +@Component +public class Neo4jUtil { + + @Resource + private Neo4jClient neo4jClient; + + //通过节点id和深度返回depth层知识点 + public Collection> queryPartofByDepth(long id, Long depth){ + String query = "match c = (n:Know)-[r:PartOf*0.." + depth + "]->(p:Know) where ID(n) = " + id + " return n as `n`,r as `r`,p as `p`, length(c) as `d`"; + Collection> res = neo4jClient.query(query).fetch().all(); + return res; + + } + + public Collection> queryAllrelsByDepth(long id, Long depth){ + String query ="match(n:Know)-[r*0.." + depth + "]->(p:Know) where ID(n) = " + id + " return r as `r`"; + Collection> res = neo4jClient.query(query).fetch().all(); + return res; + } + + public Collection> queryPartofByCourseIdAndDepth(String courseId, Long depth){ + String query ="match c = (n:Know)-[r:PartOf*0.." + depth + "]->(p:Know) where n.courseId = '" + courseId + "' return n as `n`,r as `r`,p as `p`,length(c) as `d`"; + Collection> res = neo4jClient.query(query).fetch().all(); + return res; + } + public Collection> queryAllrelsByCourseIdAndDepth(String courseId, Long depth){ + String query ="match(n:Know)-[r*0.." + depth + "]->(p:Know) where n.courseId = '" + courseId + "' return r as `r`"; + Collection> res = neo4jClient.query(query).fetch().all(); + return res; + } + + public Collection> queryPartofByCourseId(String courseId){ + String query ="match c = (n:Know)-[r:PartOf*0..]->(p:Know) where n.courseId = '" + courseId + "' and n.knowId is null and n.chapterId is null return n as `n`,r as `r`,p as `p`,length(c) as `d`"; + Collection> res = neo4jClient.query(query).fetch().all(); + return res; + } + public Collection> queryAllrelsByCourseId(String courseId){ + String query ="match(n:Know)-[r]->(p:Know) where n.courseId = '" + courseId + "' return r as `r`"; + Collection> res = neo4jClient.query(query).fetch().all(); + return res; + } + + public Collection> queryNodesByRels(Long id, List types){ + String str = "match c = (n:Know)-[r:"; + for (int i = 0; i < types.size(); i++) { + if (i == types.size() - 1) { + str = str + types.get(i) + "*"; + } else { + str = str + types.get(i) + "|"; + } + + } + str = str + "]->(p:Know) where ID(n) = " + id + " return n as `n`,r as `r`,p as `p`,length(c) as `d`"; + System.out.println(str); + Collection> res = + neo4jClient.query(str).fetch().all(); + return res; + } + + + public Collection> getKnowGraphById( Long id){ + String str = "match c = (n:Know)-[r*]->(p:Know) where ID(n) = " + id + " return n as `n`,r as `r`,p as `p`,length(c) as `d`"; + Collection> res = neo4jClient.query(str).fetch().all(); + return res; + } + + public Collection> queryPartOfByCourseId(String courseId){ + String str ="match(n:Know) MATCH (U:Know)-[r:Prior]->(j) where n.courseId = '"+courseId+"' and n.knowId is not null return n as nodes, r as r"; + Collection> res = neo4jClient.query(str).fetch().all(); + return res; + } + + public Collection> deleteGraphProjection(){ + String str ="CALL gds.graph.drop('knowPath', false); "; + Collection> res = neo4jClient.query(str).fetch().all(); + return res; + } + + public Collection> createGraphProjection(String courseId){ + String str ="MATCH (n:Know) WHERE n.knowId IS NOT null and n.courseId='"+courseId+"' OPTIONAL MATCH (n)<-[r:PartOf]-(m)" + + "WITH gds.graph.project('knowPath', n, m, { relationshipProperties: r { .weight } }) AS g " + + "RETURN g.graphName AS graph, g.nodeCount AS nodes, g.relationshipCount AS rels"; + Collection> res = neo4jClient.query(str).fetch().all(); + return res; + } + + public Collection> pagerank(){ + String str ="CALL gds.pageRank.stream('knowPath') YIELD nodeId, score where gds.util.asNode(nodeId).knowId is not null RETURN gds.util.asNode(nodeId) AS know, score ORDER BY score DESC"; + Collection> res = neo4jClient.query(str).fetch().all(); + return res; + } + public Collection> degree(){ + String str = "CALL gds.degree.stream('knowPath')YIELD nodeId, score where gds.util.asNode(nodeId).knowId is not null RETURN gds.util.asNode(nodeId) AS know, score ORDER BY score DESC"; + Collection> res = neo4jClient.query(str).fetch().all(); + return res; + } + + + +} diff --git a/src/main/java/com/teaching/backend/utils/ParamOutAspect.java b/src/main/java/com/teaching/backend/utils/ParamOutAspect.java deleted file mode 100644 index b6b3eee..0000000 --- a/src/main/java/com/teaching/backend/utils/ParamOutAspect.java +++ /dev/null @@ -1,81 +0,0 @@ -//package com.teaching.backend.utils; -// -///** -// * @Author:youhang -// * @Date:2024-06-17-23:15 -// * @Description: -// */ -// -// -// -//import cn.hutool.json.JSONObject; -//import cn.hutool.json.JSONUtil; -//import com.teaching.backend.common.ErrorCode; -//import com.teaching.backend.exception.BusinessException; -//import org.aspectj.lang.JoinPoint; -//import org.aspectj.lang.annotation.Aspect; -//import org.aspectj.lang.annotation.Before; -//import org.aspectj.lang.reflect.MethodSignature; -//import org.springframework.core.LocalVariableTableParameterNameDiscoverer; -//import org.springframework.stereotype.Component; -// -//import javax.servlet.http.HttpServletRequest; -//import javax.servlet.http.HttpServletResponse; -//import java.lang.reflect.Field; -//import java.lang.reflect.Method; -//import java.util.Arrays; -//import java.util.List; -//import java.util.stream.Collectors; -// -// -//@Component -//@Aspect -//public class ParamOutAspect { -// -// -// //对包下所有的controller结尾的类的所有方法增强 -// private final String executeExpr = "execution(public * com.teaching.backend.controller..*.*(..))"; -// -// @Before(executeExpr) -// public void processLog(JoinPoint joinPoint) throws IllegalAccessException { -// Method method = ((MethodSignature) joinPoint.getSignature()).getMethod(); -// //获取方法名称 -// String methodName = method.getName(); -// //获取参数名称 -// LocalVariableTableParameterNameDiscoverer paramNames = new LocalVariableTableParameterNameDiscoverer(); -// String[] params = paramNames.getParameterNames(method); -// -// -// //获取参数f -// Object[] args = joinPoint.getArgs(); -// //过滤掉request和response,不能序列化 -// List filteredArgs = Arrays.stream(args) -// .filter(arg -> (!(arg instanceof HttpServletRequest) && !(arg instanceof HttpServletResponse))).collect(Collectors.toList()); -// final Object[] array = filteredArgs.stream().toArray(); -// -// for (int i = 0; i < array.length; i++) { -// Class clazz = array[i].getClass(); -// // 获取所有字段(包括私有字段) -// Field[] fields = clazz.getDeclaredFields(); -// for (Field field : fields) { -// // 设置字段为可访问(如果需要访问私有字段) -// field.setAccessible(true); -// -// // 获取字段的值 -// Object value = field.get(array[i]); -// -// // 检查值是否为空 -// if (value == null) { -// // 这里可以抛出异常或记录日志,具体取决于你的需求 -// String fieldName = field.getName(); -// throw new IllegalArgumentException(fieldName + " @@@@@is null"); -// } -// } -// -// -// } -// } -// } -// -// -// diff --git a/src/main/java/com/teaching/backend/utils/ThreadLocalUtil.java b/src/main/java/com/teaching/backend/utils/ThreadLocalUtil.java deleted file mode 100644 index 2f7b0c7..0000000 --- a/src/main/java/com/teaching/backend/utils/ThreadLocalUtil.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.teaching.backend.utils; - -/** - * ThreadLocal 工具类 - */ -@SuppressWarnings("all") -public class ThreadLocalUtil { - //提供ThreadLocal对象, - private static final ThreadLocal THREAD_LOCAL = new ThreadLocal(); - - //根据键获取值 - public static T get(){ - return (T) THREAD_LOCAL.get(); - } - - //存储键值对 - public static void set(Object value){ - THREAD_LOCAL.set(value); - } - - - //清除ThreadLocal 防止内存泄漏 - public static void remove(){ - THREAD_LOCAL.remove(); - } -} diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml new file mode 100644 index 0000000..a0e56f8 --- /dev/null +++ b/src/main/resources/application-local.yml @@ -0,0 +1,83 @@ +server: + port: 8080 +spring: + application: + name: teaching-backend + servlet: + multipart: + enabled: true + max-file-size: 10MB + max-request-size: 10MB + neo4j: + uri: bolt://10.100.200.177:7687 + authentication: + username: neo4j # 连接Neo4j数据P库的用户名 + password: neo4j123456 # 连接Neo4j数据库的密码 + mvc: + pathmatch: + matching-strategy: ant_path_matcher + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://10.100.200.177:3306/teaching_db2 + username: root + password: root + +mybatis: + configuration: + map-underscore-to-camel-case: true + mapper-locations: + - classpath:mapper/*.xml + - classpath*:com/**/mapper/*.xml +jwt: + tokenHeader: Authorization + secret: mySecret + expiration: 604800 + tokenHead: Bearer +knife4j: + enable: true + openapi: + title: 111 + description: "123" + concat: zjh + version: v1.0.0 + group: + default: + group-name: default + api-rule: package + api-rule-resources: + - com.teaching.backend.controller +secure: + ignored: + urls: + # - /swagger-ui/ + # - /swagger-resources/** + # - /**/v2/api-docs + # - /**/*.html + # - /**/*.js + # - /**/*.css + # - /**/*.png + # - /**/*.map + # - /favicon.ico + # - /actuator/** + # - /druid/** + # - /user/** + # - /user/login + # - /user/register + # - /user/info + # - /user/logout + # - /minio/upload + - /** +aliyun: + oss: + endpoint: oss-cn-wuhan-lr.aliyuncs.com + accessKeyId: LTAI5tFkdu3y5WddxbjgaG2F + accessKeySecret: 1xUchxUTlmUBoTV5JQIrKsVjSkmsLF + bucketName: ceshi132132 +minio: + endpoint: http://39.106.16.162:9090 #MinIO服务所在地址 + bucketName: teaching # 存储桶名称 + accessKey: minioadmin # 访问的key + secretKey: minioadmin # 访问的秘钥 +filename: + maxlength: 10 + diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 19604a4..9f6b2fc 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 8080 + port: 8066 spring: application: name: teaching-backend @@ -9,34 +9,34 @@ spring: max-file-size: 10MB max-request-size: 10MB neo4j: - uri: bolt://39.106.16.162:7687 +# uri: bolt://123.57.133.214:7687 + uri: bolt://8.155.25.45:7687 authentication: - username: neo4j # 连接Neo4j数据P库的用户名 - password: 123456 # 连接Neo4j数据库的密码 + username: neo4j # 连接Neo4j数据库的用户名 + password: 12345678 # 连接Neo4j数据库的密码 mvc: pathmatch: matching-strategy: ant_path_matcher datasource: driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://127.0.0.1:3306/teaching_db + # 123.57.133.214 + url: jdbc:mysql://8.155.25.45:3306/teaching_db?useUnicode=true&characterEncoding=utf-8 + username: teaching_db + password: teaching2024 # username: root # password: root - url: jdbc:mysql://rm-bp189rd5595301145do.mysql.rds.aliyuncs.com:3306/teaching_db - username: root123 - password: Zjh@111111 + mybatis: configuration: map-underscore-to-camel-case: true mapper-locations: - classpath:mapper/*.xml - classpath*:com/**/mapper/*.xml - jwt: tokenHeader: Authorization secret: mySecret expiration: 604800 tokenHead: Bearer - knife4j: enable: true openapi: @@ -53,38 +53,35 @@ knife4j: secure: ignored: urls: -# - /swagger-ui/ -# - /swagger-resources/** -# - /**/v2/api-docs -# - /**/*.html -# - /**/*.js -# - /**/*.css -# - /**/*.png -# - /**/*.map -# - /favicon.ico -# - /actuator/** -# - /druid/** -# - /user/** -# - /user/login -# - /user/register -# - /user/info -# - /user/logout -# - /minio/upload + # - /swagger-ui/ + # - /swagger-resources/** + # - /**/v2/api-docs + # - /**/*.html + # - /**/*.js + # - /**/*.css + # - /**/*.png + # - /**/*.map + # - /favicon.ico + # - /actuator/** + # - /druid/** + # - /user/** + # - /user/login + # - /user/register + # - /user/info + # - /user/logout + # - /minio/upload - /** - - aliyun: oss: - endpoint: oss-cn-wuhan-lr.aliyuncs.com - accessKeyId: LTAI5tFkdu3y5WddxbjgaG2F - accessKeySecret: 1xUchxUTlmUBoTV5JQIrKsVjSkmsLF - bucketName: ceshi132132 - + endpoint: oss-cn-beijing.aliyuncs.com + accessKeyId: LTAI5tPB2w8CTGcs5co4uU3Y + accessKey: 269HonqLmWuisTPjKn9qQLBrHpDw1x + bucketName: youhang-edu minio: - endpoint: http://39.106.16.162:9090 #MinIO服务所在地址 + endpoint: http://8.155.25.45:9090 #MinIO服务所在地址 bucketName: teaching # 存储桶名称 accessKey: minioadmin # 访问的key secretKey: minioadmin # 访问的秘钥 - filename: maxlength: 10 + diff --git a/src/main/resources/mapper/CourseObjectivesMapper.xml b/src/main/resources/mapper/CourseObjectivesMapper.xml index 602226f..75006e7 100644 --- a/src/main/resources/mapper/CourseObjectivesMapper.xml +++ b/src/main/resources/mapper/CourseObjectivesMapper.xml @@ -2,23 +2,5 @@ - - - - INSERT INTO course_objectives (id, type, pid) - VALUES - - (#{item.id}, #{item.type},#{item.pid}) - - diff --git a/src/main/resources/mapper/ObjectiveContentKnowMapper.xml b/src/main/resources/mapper/ObjectiveContentKnowMapper.xml deleted file mode 100644 index 9ae17ca..0000000 --- a/src/main/resources/mapper/ObjectiveContentKnowMapper.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - INSERT INTO objective_content_know (objective_or_content, know) - VALUES - - (#{item.objectiveOrContent}, #{item.know}) - - - - diff --git a/src/main/resources/mapper/ObjectiveContentsMapper.xml b/src/main/resources/mapper/ObjectiveContentsMapper.xml deleted file mode 100644 index 738e8e9..0000000 --- a/src/main/resources/mapper/ObjectiveContentsMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/resources/mapper/ObjectivesTypeMapper.xml b/src/main/resources/mapper/ObjectivesTypeMapper.xml deleted file mode 100644 index cd63407..0000000 --- a/src/main/resources/mapper/ObjectivesTypeMapper.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/main/resources/mapper/SeCourseFavourMapper.xml b/src/main/resources/mapper/SeCourseFavourMapper.xml index f310d5d..e52c3c6 100644 --- a/src/main/resources/mapper/SeCourseFavourMapper.xml +++ b/src/main/resources/mapper/SeCourseFavourMapper.xml @@ -1,13 +1,13 @@ - +