├── .gitignore ├── LICENSE ├── OnlineEducationSystem-Admin ├── .editorconfig ├── .env.development ├── .env.production ├── .env.staging ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .travis.yml ├── LICENSE ├── README-zh.md ├── README.md ├── babel.config.js ├── build │ └── index.js ├── jest.config.js ├── jsconfig.json ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── api │ │ ├── auth │ │ │ ├── permission.js │ │ │ ├── role.js │ │ │ └── user.js │ │ ├── cms │ │ │ └── banner.js │ │ ├── edu │ │ │ ├── chapter.js │ │ │ ├── comment.js │ │ │ ├── course.js │ │ │ ├── record.js │ │ │ ├── subject.js │ │ │ ├── teacher.js │ │ │ └── video.js │ │ ├── login.js │ │ ├── order │ │ │ └── order.js │ │ ├── statistics │ │ │ ├── daily.js │ │ │ └── dashboard.js │ │ ├── ucenter │ │ │ └── member.js │ │ ├── user.js │ │ └── vod │ │ │ └── vod.js │ ├── assets │ │ ├── 404_images │ │ │ ├── 404.png │ │ │ └── 404_cloud.png │ │ └── images │ │ │ ├── background.jpg │ │ │ ├── book.png │ │ │ ├── folder.png │ │ │ └── verify │ │ │ ├── img0.jpg │ │ │ ├── img1.jpg │ │ │ ├── img2.jpg │ │ │ ├── img3.jpg │ │ │ ├── img4.jpg │ │ │ └── img5.jpg │ ├── components │ │ ├── Breadcrumb │ │ │ └── index.vue │ │ ├── Hamburger │ │ │ └── index.vue │ │ ├── ImageCropper │ │ │ ├── index.vue │ │ │ └── utils │ │ │ │ ├── data2blob.js │ │ │ │ ├── effectRipple.js │ │ │ │ ├── language.js │ │ │ │ └── mimes.js │ │ ├── PanThumb │ │ │ └── index.vue │ │ ├── SvgIcon │ │ │ └── index.vue │ │ └── Tinymce │ │ │ ├── components │ │ │ └── EditorImage.vue │ │ │ ├── dynamicLoadScript.js │ │ │ ├── index.vue │ │ │ ├── plugins.js │ │ │ └── toolbar.js │ ├── icons │ │ ├── index.js │ │ ├── svg │ │ │ ├── 404.svg │ │ │ ├── bug.svg │ │ │ ├── chart.svg │ │ │ ├── clipboard.svg │ │ │ ├── component.svg │ │ │ ├── course.svg │ │ │ ├── dashboard.svg │ │ │ ├── documentation.svg │ │ │ ├── drag.svg │ │ │ ├── edit.svg │ │ │ ├── education.svg │ │ │ ├── email.svg │ │ │ ├── example.svg │ │ │ ├── excel.svg │ │ │ ├── exit-fullscreen.svg │ │ │ ├── eye-open.svg │ │ │ ├── eye.svg │ │ │ ├── form.svg │ │ │ ├── fullscreen.svg │ │ │ ├── guide.svg │ │ │ ├── icon.svg │ │ │ ├── international.svg │ │ │ ├── language.svg │ │ │ ├── link.svg │ │ │ ├── list.svg │ │ │ ├── lock.svg │ │ │ ├── message.svg │ │ │ ├── money.svg │ │ │ ├── nested.svg │ │ │ ├── password.svg │ │ │ ├── pdf.svg │ │ │ ├── people.svg │ │ │ ├── peoples.svg │ │ │ ├── qq.svg │ │ │ ├── search.svg │ │ │ ├── shopping.svg │ │ │ ├── size.svg │ │ │ ├── skill.svg │ │ │ ├── star.svg │ │ │ ├── tab.svg │ │ │ ├── table.svg │ │ │ ├── theme.svg │ │ │ ├── tree-table.svg │ │ │ ├── tree.svg │ │ │ ├── user.svg │ │ │ ├── wechat.svg │ │ │ └── zip.svg │ │ └── svgo.yml │ ├── layout │ │ ├── components │ │ │ ├── AppMain.vue │ │ │ ├── Navbar.vue │ │ │ ├── Sidebar │ │ │ │ ├── FixiOSBug.js │ │ │ │ ├── Item.vue │ │ │ │ ├── Link.vue │ │ │ │ ├── Logo.vue │ │ │ │ ├── SidebarItem.vue │ │ │ │ └── index.vue │ │ │ ├── TagsView │ │ │ │ ├── ScrollPane.vue │ │ │ │ └── index.vue │ │ │ └── index.js │ │ ├── index.vue │ │ └── mixin │ │ │ └── ResizeHandler.js │ ├── main.js │ ├── permission.js │ ├── router │ │ └── index.js │ ├── settings.js │ ├── store │ │ ├── getters.js │ │ ├── index.js │ │ └── modules │ │ │ ├── app.js │ │ │ ├── permission.js │ │ │ ├── settings.js │ │ │ ├── tagsView.js │ │ │ └── user.js │ ├── styles │ │ ├── element-ui.scss │ │ ├── index.scss │ │ ├── mixin.scss │ │ ├── sidebar.scss │ │ ├── transition.scss │ │ └── variables.scss │ ├── utils │ │ ├── auth.js │ │ ├── get-page-title.js │ │ ├── index.js │ │ ├── permission.js │ │ ├── request.js │ │ └── validate.js │ └── views │ │ ├── 404.vue │ │ ├── auth │ │ ├── menu │ │ │ └── list.vue │ │ ├── role │ │ │ └── list.vue │ │ └── user │ │ │ └── list.vue │ │ ├── cms │ │ └── banner │ │ │ ├── list.vue │ │ │ └── save.vue │ │ ├── dashboard │ │ └── index.vue │ │ ├── edu │ │ ├── comment │ │ │ └── list.vue │ │ ├── course │ │ │ ├── chapter.vue │ │ │ ├── info.vue │ │ │ ├── list.vue │ │ │ └── publish.vue │ │ ├── subject │ │ │ └── list.vue │ │ └── teacher │ │ │ ├── list.vue │ │ │ └── save.vue │ │ ├── login │ │ └── index.vue │ │ ├── order │ │ ├── have.vue │ │ └── not.vue │ │ ├── statistics │ │ └── daily │ │ │ └── chart.vue │ │ ├── study │ │ └── list.vue │ │ └── ucenter │ │ └── member │ │ └── list.vue ├── tests │ └── unit │ │ ├── .eslintrc.js │ │ ├── components │ │ ├── Breadcrumb.spec.js │ │ ├── Hamburger.spec.js │ │ └── SvgIcon.spec.js │ │ └── utils │ │ ├── formatTime.spec.js │ │ ├── param2Obj.spec.js │ │ ├── parseTime.spec.js │ │ └── validate.spec.js └── vue.config.js ├── OnlineEducationSystem-Student ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── api │ ├── cms │ │ └── banner.js │ ├── edu │ │ ├── comment.js │ │ ├── course.js │ │ ├── record.js │ │ ├── subject.js │ │ └── teacher.js │ ├── index.js │ ├── login.js │ ├── order │ │ └── order.js │ ├── register.js │ ├── ucenter │ │ └── member.js │ └── vod │ │ └── vod.js ├── assets │ ├── README.md │ ├── css │ │ ├── activity_tab.css │ │ ├── base.css │ │ ├── bottom_rec.css │ │ ├── default.css │ │ ├── global.css │ │ ├── iconfont.css │ │ ├── iconfont.eot │ │ ├── iconfont.js │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ ├── iconfont.woff2 │ │ ├── nice_select.css │ │ ├── order.css │ │ ├── pages-weixinpay.css │ │ ├── reset.css │ │ ├── sign.css │ │ ├── swiper-3.3.1.min.css │ │ ├── theme.css │ │ └── web.css │ ├── img │ │ ├── 404.jpg │ │ ├── 500.jpg │ │ ├── HF-BG.png │ │ ├── avatar-boy.gif │ │ ├── black-bg-hf.png │ │ ├── black-mask.png │ │ ├── black-name.png │ │ ├── c-icon.png │ │ ├── cart_setp2.png │ │ ├── d-icon.png │ │ ├── default-img.gif │ │ ├── default-img_old.gif │ │ ├── default-tea-img.gif │ │ ├── erweima.png │ │ ├── f12c399b34115265a7a8a4da329b45d0.jpg │ │ ├── icon.png │ │ ├── kyb-tip-all-bg.png │ │ ├── kyb-tip-bg.jpg │ │ ├── kyb-tip-close.png │ │ ├── loading.gif │ │ ├── loding.gif │ │ ├── logo.png │ │ ├── logo1.png │ │ ├── phone-bg.png │ │ ├── pic │ │ │ ├── 1.jpg │ │ │ ├── banner-1-blue.jpg │ │ │ ├── banner-1-green.jpg │ │ │ ├── banner-2-blue.jpg │ │ │ ├── banner-2-green.jpg │ │ │ ├── c-1.jpg │ │ │ ├── one-master.jpg │ │ │ ├── t-p-1.jpg │ │ │ ├── three-blue.jpg │ │ │ └── two-green.jpg │ │ ├── qq-icon-32.png │ │ ├── qq-icon-hover-32.png │ │ ├── qq-icon.png │ │ ├── s-next-btn.png │ │ ├── s-prev-btn.png │ │ ├── tipQe.png │ │ ├── up-hf.png │ │ ├── v-loading.gif │ │ ├── v-play-bg.jpg │ │ ├── wb-icon-32.png │ │ ├── wb-icon-hover-32.png │ │ ├── wb-icon-hover.png │ │ ├── wb-icon.png │ │ ├── wb2-icon.png │ │ ├── wx-icon-32.png │ │ ├── wx-icon-hover-32.png │ │ ├── wx-icon-hover.png │ │ ├── wx-icon.png │ │ ├── wx2-icon.png │ │ └── zan-icon.png │ ├── js │ │ ├── aliplayer-min.js │ │ ├── common.js │ │ ├── html5.js │ │ ├── index.js │ │ ├── jquery-1.7.2.min.js │ │ ├── placeholder.js │ │ └── swiper-2.1.0.js │ └── photo │ │ ├── article │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ ├── 03.jpg │ │ ├── 04.jpg │ │ ├── 05.jpg │ │ ├── 06.jpg │ │ ├── 07.jpg │ │ ├── 08.jpg │ │ ├── 09.jpg │ │ ├── 10.jpg │ │ └── hot.jpg │ │ ├── banner │ │ ├── 1525939573202.jpg │ │ └── 153525d0ef15459596.jpg │ │ ├── course │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ ├── 03.jpg │ │ ├── 04.jpg │ │ ├── 05.jpg │ │ ├── 06.jpg │ │ ├── 07.jpg │ │ ├── 08.jpg │ │ ├── 09.jpg │ │ ├── 10.jpg │ │ ├── 11.jpg │ │ ├── 12.jpg │ │ ├── 1442295379715.jpg │ │ ├── 1442295455437.jpg │ │ ├── 1442295472860.jpg │ │ ├── 1442295506745.jpg │ │ ├── 1442295527931.jpg │ │ ├── 1442295556203.jpg │ │ ├── 1442295570359.jpg │ │ ├── 1442295581911.jpg │ │ ├── 1442295592705.jpg │ │ ├── 1442295604295.jpg │ │ ├── 1442302831779.jpg │ │ ├── 1442302852837.jpg │ │ └── default.gif │ │ ├── customer │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ ├── 03.jpg │ │ └── avatar-boy.gif │ │ └── teacher │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ ├── 03.jpg │ │ ├── 04.jpg │ │ ├── 05.jpg │ │ ├── 06.jpg │ │ ├── 07.jpg │ │ ├── 08.jpg │ │ ├── 1442297885942.jpg │ │ ├── 1442297919077.jpg │ │ ├── 1442297927029.jpg │ │ ├── 1442297935589.jpg │ │ ├── 1442297957332.jpg │ │ ├── 1442297969808.jpg │ │ ├── 1442297977255.jpg │ │ ├── 1442297987091.jpg │ │ ├── 1442297999141.jpg │ │ ├── 1442298121626.jpg │ │ └── default.jpg ├── components │ ├── AppLogo.vue │ └── README.md ├── layouts │ ├── center.vue │ ├── default.vue │ ├── sign.vue │ └── video.vue ├── nuxt.config.js ├── package-lock.json ├── package.json ├── pages │ ├── course │ │ ├── _id.vue │ │ └── index.vue │ ├── index.vue │ ├── login.vue │ ├── orders │ │ └── _id.vue │ ├── pay │ │ └── _id.vue │ ├── player │ │ └── _id.vue │ ├── register.vue │ ├── teacher │ │ ├── _id.vue │ │ └── index.vue │ └── ucenter │ │ ├── basic.vue │ │ ├── collect.vue │ │ ├── password.vue │ │ └── study.vue ├── plugins │ └── nuxt-swiper-plugin.js ├── static │ └── favicon.ico └── utils │ └── request.js ├── OnlineEducationSystem ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── canal │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── zh │ │ │ └── oes │ │ │ └── canal │ │ │ ├── CanalApplication.java │ │ │ └── client │ │ │ └── CanalClient.java │ │ └── resources │ │ └── application.properties ├── common │ ├── common_utils │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── zh │ │ │ └── oes │ │ │ └── common │ │ │ └── utils │ │ │ ├── DateUtil.java │ │ │ ├── HttpClientUtil.java │ │ │ ├── JwtUtil.java │ │ │ ├── MD5Util.java │ │ │ ├── RandomUtil.java │ │ │ ├── ResponseUtil.java │ │ │ └── Result.java │ ├── pom.xml │ ├── service_base │ │ ├── pom.xml │ │ └── src │ │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── zh │ │ │ └── oes │ │ │ └── common │ │ │ └── base │ │ │ ├── client │ │ │ ├── CourseClient.java │ │ │ ├── CourseClientHystrix.java │ │ │ ├── EduClient.java │ │ │ ├── EduClientHystrix.java │ │ │ ├── OrderClient.java │ │ │ ├── OrderClientHystrix.java │ │ │ ├── UcenterClient.java │ │ │ ├── UcenterClientHystrix.java │ │ │ ├── VodClient.java │ │ │ └── VodClientHystrix.java │ │ │ ├── config │ │ │ ├── RedisConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ └── WebConfig.java │ │ │ ├── exception │ │ │ ├── GlobalExceptionHandler.java │ │ │ └── OESException.java │ │ │ └── handler │ │ │ └── TimeFillHandler.java │ └── spring_security │ │ ├── pom.xml │ │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── common │ │ └── security │ │ ├── config │ │ └── TokenWebSecurityConfig.java │ │ ├── entity │ │ ├── SecurityUser.java │ │ └── User.java │ │ ├── filter │ │ ├── TokenAuthenticationFilter.java │ │ └── TokenLoginFilter.java │ │ └── security │ │ ├── DefaultPasswordEncoder.java │ │ ├── TokenLogoutHandler.java │ │ ├── TokenManager.java │ │ └── UnauthorizedEntryPoint.java ├── gateway │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── zh │ │ │ └── oes │ │ │ └── gateway │ │ │ ├── GatewayApplication.java │ │ │ └── config │ │ │ └── CorsConfig.java │ │ └── resources │ │ └── application.properties ├── model │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── model │ │ ├── entity │ │ ├── auth │ │ │ ├── Permission.java │ │ │ ├── Role.java │ │ │ ├── RolePermission.java │ │ │ ├── User.java │ │ │ └── UserRole.java │ │ ├── cms │ │ │ └── Banner.java │ │ ├── edu │ │ │ ├── Chapter.java │ │ │ ├── Comment.java │ │ │ ├── Course.java │ │ │ ├── CourseCollect.java │ │ │ ├── LevelSubject.java │ │ │ ├── StudyRecord.java │ │ │ ├── Subject.java │ │ │ ├── Teacher.java │ │ │ └── Video.java │ │ ├── order │ │ │ ├── PayLog.java │ │ │ └── PayOrder.java │ │ ├── statistics │ │ │ └── StatisticsDaily.java │ │ └── ucenter │ │ │ └── Member.java │ │ └── vo │ │ ├── auth │ │ ├── RoleQueryCondition.java │ │ └── UserQueryCondition.java │ │ ├── cms │ │ └── BannerQueryCondition.java │ │ ├── edu │ │ ├── admin │ │ │ ├── ChapterVO.java │ │ │ ├── CommentListVO.java │ │ │ ├── CommentQueryCondition.java │ │ │ ├── CourseInfoVO.java │ │ │ ├── CourseListVO.java │ │ │ ├── CoursePublishVO.java │ │ │ ├── CourseQueryCondition.java │ │ │ ├── StudyRecordQueryCondition.java │ │ │ ├── SubjectDownloadVO.java │ │ │ ├── TeacherQueryCondition.java │ │ │ └── VideoVO.java │ │ └── user │ │ │ ├── CommentVO.java │ │ │ ├── CourseUserInfoVO.java │ │ │ ├── CourseUserQueryCondition.java │ │ │ ├── MemberVO.java │ │ │ └── StudyRecordVO.java │ │ ├── order │ │ └── OrderQueryCondition.java │ │ └── ucenter │ │ ├── admin │ │ └── MemberQueryCondition.java │ │ └── user │ │ ├── LoginVO.java │ │ ├── PasswordVO.java │ │ └── RegisterVO.java ├── mvnw ├── mvnw.cmd ├── pom.xml └── service │ ├── pom.xml │ ├── service_auth │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── zh │ │ │ │ └── oes │ │ │ │ └── auth │ │ │ │ ├── AuthApplication.java │ │ │ │ ├── config │ │ │ │ └── AuthConfig.java │ │ │ │ ├── controller │ │ │ │ ├── IndexController.java │ │ │ │ ├── PermissionController.java │ │ │ │ ├── RoleController.java │ │ │ │ └── UserController.java │ │ │ │ ├── mapper │ │ │ │ ├── PermissionMapper.java │ │ │ │ ├── RoleMapper.java │ │ │ │ ├── RolePermissionMapper.java │ │ │ │ ├── UserMapper.java │ │ │ │ ├── UserRoleMapper.java │ │ │ │ └── xml │ │ │ │ │ ├── PermissionMapper.xml │ │ │ │ │ ├── RoleMapper.xml │ │ │ │ │ ├── RolePermissionMapper.xml │ │ │ │ │ ├── UserMapper.xml │ │ │ │ │ └── UserRoleMapper.xml │ │ │ │ └── service │ │ │ │ ├── IndexService.java │ │ │ │ ├── PermissionService.java │ │ │ │ ├── RolePermissionService.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── UserRoleService.java │ │ │ │ ├── UserService.java │ │ │ │ └── impl │ │ │ │ ├── IndexServiceImpl.java │ │ │ │ ├── PermissionServiceImpl.java │ │ │ │ ├── RolePermissionServiceImpl.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── UserDetailsServiceImpl.java │ │ │ │ ├── UserRoleServiceImpl.java │ │ │ │ └── UserServiceImpl.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── code │ │ └── CodeGenerator.java │ ├── service_cms │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── zh │ │ │ │ └── oes │ │ │ │ └── cms │ │ │ │ ├── CmsApplication.java │ │ │ │ ├── config │ │ │ │ └── CmsConfig.java │ │ │ │ ├── controller │ │ │ │ ├── admin │ │ │ │ │ └── BannerAdminController.java │ │ │ │ └── user │ │ │ │ │ └── BannerUserController.java │ │ │ │ ├── mapper │ │ │ │ ├── BannerMapper.java │ │ │ │ └── xml │ │ │ │ │ └── BannerMapper.xml │ │ │ │ └── service │ │ │ │ ├── BannerService.java │ │ │ │ └── impl │ │ │ │ └── BannerServiceImpl.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── code │ │ └── CodeGenerator.java │ ├── service_edu │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── zh │ │ │ │ └── oes │ │ │ │ └── edu │ │ │ │ ├── EduApplication.java │ │ │ │ ├── config │ │ │ │ └── EduConfig.java │ │ │ │ ├── controller │ │ │ │ ├── admin │ │ │ │ │ ├── ChapterAdminController.java │ │ │ │ │ ├── CommentAdminController.java │ │ │ │ │ ├── CourseAdminController.java │ │ │ │ │ ├── StudyRecordAdminController.java │ │ │ │ │ ├── SubjectAdminController.java │ │ │ │ │ ├── TeacherAdminController.java │ │ │ │ │ └── VideoAdminController.java │ │ │ │ └── user │ │ │ │ │ ├── CommentUserController.java │ │ │ │ │ ├── CourseUserController.java │ │ │ │ │ ├── IndexUserController.java │ │ │ │ │ ├── StudyRecordUserController.java │ │ │ │ │ ├── SubjectUserController.java │ │ │ │ │ └── TeacherUserController.java │ │ │ │ ├── mapper │ │ │ │ ├── ChapterMapper.java │ │ │ │ ├── CommentMapper.java │ │ │ │ ├── CourseCollectMapper.java │ │ │ │ ├── CourseMapper.java │ │ │ │ ├── StudyRecordMapper.java │ │ │ │ ├── SubjectMapper.java │ │ │ │ ├── TeacherMapper.java │ │ │ │ ├── VideoMapper.java │ │ │ │ └── xml │ │ │ │ │ ├── ChapterMapper.xml │ │ │ │ │ ├── CommentMapper.xml │ │ │ │ │ ├── CourseCollectMapper.xml │ │ │ │ │ ├── CourseMapper.xml │ │ │ │ │ ├── StudyRecordMapper.xml │ │ │ │ │ ├── SubjectMapper.xml │ │ │ │ │ ├── TeacherMapper.xml │ │ │ │ │ └── VideoMapper.xml │ │ │ │ └── service │ │ │ │ ├── ChapterService.java │ │ │ │ ├── CommentService.java │ │ │ │ ├── CourseCollectService.java │ │ │ │ ├── CourseService.java │ │ │ │ ├── StudyRecordService.java │ │ │ │ ├── SubjectService.java │ │ │ │ ├── TeacherService.java │ │ │ │ ├── VideoService.java │ │ │ │ └── impl │ │ │ │ ├── ChapterServiceImpl.java │ │ │ │ ├── CommentServiceImpl.java │ │ │ │ ├── CourseCollectServiceImpl.java │ │ │ │ ├── CourseServiceImpl.java │ │ │ │ ├── StudyRecordServiceImpl.java │ │ │ │ ├── SubjectServiceImpl.java │ │ │ │ ├── TeacherServiceImpl.java │ │ │ │ └── VideoServiceImpl.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── code │ │ └── CodeGenerator.java │ ├── service_order │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── zh │ │ │ │ └── oes │ │ │ │ └── order │ │ │ │ ├── OrderApplication.java │ │ │ │ ├── client │ │ │ │ ├── CourseClient.java │ │ │ │ ├── CourseClientHystrix.java │ │ │ │ ├── MemberClient.java │ │ │ │ └── MemberClientHystrix.java │ │ │ │ ├── config │ │ │ │ └── OrderConfig.java │ │ │ │ ├── controller │ │ │ │ ├── admin │ │ │ │ │ └── PayOrderAdminController.java │ │ │ │ └── user │ │ │ │ │ ├── PayLogUserController.java │ │ │ │ │ └── PayOrderUserController.java │ │ │ │ ├── mapper │ │ │ │ ├── PayLogMapper.java │ │ │ │ ├── PayOrderMapper.java │ │ │ │ └── xml │ │ │ │ │ ├── PayLogMapper.xml │ │ │ │ │ └── PayOrderMapper.xml │ │ │ │ ├── service │ │ │ │ ├── PayLogService.java │ │ │ │ ├── PayOrderService.java │ │ │ │ └── impl │ │ │ │ │ ├── PayLogServiceImpl.java │ │ │ │ │ └── PayOrderServiceImpl.java │ │ │ │ └── utils │ │ │ │ ├── ConstantPropertiesUtil.java │ │ │ │ ├── HttpClientUtil.java │ │ │ │ └── OrderNoUtil.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── code │ │ └── CodeGenerator.java │ ├── service_oss │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── zh │ │ │ └── oes │ │ │ └── oss │ │ │ ├── OssApplication.java │ │ │ ├── config │ │ │ └── OssConfig.java │ │ │ ├── controller │ │ │ └── OssController.java │ │ │ ├── service │ │ │ ├── OssService.java │ │ │ └── impl │ │ │ │ └── OssServiceImpl.java │ │ │ └── utils │ │ │ └── ConstantPropertiesUtil.java │ │ └── resources │ │ └── application.properties │ ├── service_sms │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── zh │ │ │ └── oes │ │ │ └── sms │ │ │ ├── SmsApplication.java │ │ │ ├── config │ │ │ └── SmsConfig.java │ │ │ ├── controller │ │ │ └── SmsController.java │ │ │ ├── service │ │ │ ├── SmsService.java │ │ │ └── impl │ │ │ │ └── SmsServiceImpl.java │ │ │ └── utils │ │ │ └── ConstantPropertiesUtil.java │ │ └── resources │ │ └── application.properties │ ├── service_statistics │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── zh │ │ │ │ └── oes │ │ │ │ └── statistics │ │ │ │ ├── StatisticsApplication.java │ │ │ │ ├── config │ │ │ │ └── StatisticsConfig.java │ │ │ │ ├── controller │ │ │ │ ├── DashboardController.java │ │ │ │ └── StatisticsDailyController.java │ │ │ │ ├── mapper │ │ │ │ ├── StatisticsDailyMapper.java │ │ │ │ └── xml │ │ │ │ │ └── StatisticsDailyMapper.xml │ │ │ │ ├── schedule │ │ │ │ └── ScheduleTask.java │ │ │ │ └── service │ │ │ │ ├── StatisticsDailyService.java │ │ │ │ └── impl │ │ │ │ └── StatisticsDailyServiceImpl.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── code │ │ └── CodeGenerator.java │ ├── service_ucenter │ ├── pom.xml │ └── src │ │ ├── main │ │ ├── java │ │ │ └── com │ │ │ │ └── zh │ │ │ │ └── oes │ │ │ │ └── ucenter │ │ │ │ ├── UcenterApplication.java │ │ │ │ ├── config │ │ │ │ └── UcenterConfig.java │ │ │ │ ├── controller │ │ │ │ ├── admin │ │ │ │ │ └── MemberAdminController.java │ │ │ │ └── user │ │ │ │ │ ├── MemberUserController.java │ │ │ │ │ └── MemberUserWechatController.java │ │ │ │ ├── mapper │ │ │ │ ├── MemberMapper.java │ │ │ │ └── xml │ │ │ │ │ └── MemberMapper.xml │ │ │ │ ├── service │ │ │ │ ├── MemberService.java │ │ │ │ └── impl │ │ │ │ │ └── MemberServiceImpl.java │ │ │ │ └── utils │ │ │ │ └── ConstantPropertiesUtil.java │ │ └── resources │ │ │ └── application.properties │ │ └── test │ │ └── java │ │ └── com │ │ └── zh │ │ └── oes │ │ └── code │ │ └── CodeGenerator.java │ └── service_vod │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── zh │ │ └── oes │ │ └── vod │ │ ├── VodApplication.java │ │ ├── controller │ │ ├── admin │ │ │ └── VodAdminController.java │ │ └── user │ │ │ └── VodUserController.java │ │ ├── service │ │ ├── VodService.java │ │ └── impl │ │ │ └── VodServiceImpl.java │ │ └── utils │ │ ├── ConstantPropertiesUtil.java │ │ └── VodInitUtil.java │ └── resources │ └── application.properties ├── README.md ├── oes.sql └── pictures ├── banner管理.jpg ├── studyRecord.jpg ├── 个人中心下拉.jpg ├── 前台首页.jpg ├── 名师列表.jpg ├── 名师详情.jpg ├── 后台首页.jpg ├── 后台首页验证码.jpg ├── 基本信息.jpg ├── 学习记录.jpg ├── 学科管理.jpg ├── 密码修改.jpg ├── 已支付.jpg ├── 数据统计.jpg ├── 数据统计显示.jpg ├── 未支付.jpg ├── 权限管理动态菜单.jpg ├── 权限管理菜单修改.jpg ├── 添加banner.jpg ├── 添加讲师.jpg ├── 用户列表.jpg ├── 用户管理.jpg ├── 用户管理删除用户.jpg ├── 用户管理添加用户.jpg ├── 用户管理编辑用户.jpg ├── 用户管理角色分配.jpg ├── 登录界面.jpg ├── 科目添加.jpg ├── 菜单管理.jpg ├── 菜单管理权限值修改.jpg ├── 角色管理.jpg ├── 角色管理分配权限.jpg ├── 角色管理编辑角色.jpg ├── 讲师列表.jpg ├── 评论列表.jpg ├── 课程信息编辑.jpg ├── 课程发布.jpg ├── 课程大纲.jpg ├── 课程播放.jpg ├── 课程收藏.jpg ├── 课程管理.jpg ├── 课程详情1.jpg ├── 课程详情2.jpg ├── 课程购买.jpg ├── 课程购买二维码.jpg ├── 课程首页.jpg ├── 购买后状态.jpg ├── 项目结构.jpg └── 首页仪表盘.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [*.md] 13 | insert_final_newline = false 14 | trim_trailing_whitespace = false 15 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.env.development: -------------------------------------------------------------------------------- 1 | # just a flag 2 | ENV = 'development' 3 | 4 | # base api 5 | # VUE_APP_BASE_API = '/dev-api' 6 | VUE_APP_BASE_API = 'http://localhost:8500' 7 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.env.production: -------------------------------------------------------------------------------- 1 | # just a flag 2 | ENV = 'production' 3 | 4 | # base api 5 | # VUE_APP_BASE_API = '/prod-api' 6 | VUE_APP_BASE_API = 'http://localhost:8500' 7 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.env.staging: -------------------------------------------------------------------------------- 1 | NODE_ENV = production 2 | 3 | # just a flag 4 | ENV = 'staging' 5 | 6 | # base api 7 | VUE_APP_BASE_API = '/stage-api' 8 | 9 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.eslintignore: -------------------------------------------------------------------------------- 1 | * -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | package-lock.json 8 | tests/**/coverage/ 9 | 10 | # Editor directories and files 11 | .idea 12 | .vscode 13 | *.suo 14 | *.ntvs* 15 | *.njsproj 16 | *.sln 17 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 10 3 | script: npm run test 4 | notifications: 5 | email: false 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app 4 | '@vue/cli-plugin-babel/preset' 5 | ], 6 | 'env': { 7 | 'development': { 8 | // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). 9 | // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. 10 | // https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html 11 | 'plugins': ['dynamic-import-node'] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/build/index.js: -------------------------------------------------------------------------------- 1 | const { run } = require('runjs') 2 | const chalk = require('chalk') 3 | const config = require('../vue.config.js') 4 | const rawArgv = process.argv.slice(2) 5 | const args = rawArgv.join(' ') 6 | 7 | if (process.env.npm_config_preview || rawArgv.includes('--preview')) { 8 | const report = rawArgv.includes('--report') 9 | 10 | run(`vue-cli-service build ${args}`) 11 | 12 | const port = 9526 13 | const publicPath = config.publicPath 14 | 15 | var connect = require('connect') 16 | var serveStatic = require('serve-static') 17 | const app = connect() 18 | 19 | app.use( 20 | publicPath, 21 | serveStatic('./dist', { 22 | index: ['index.html', '/'] 23 | }) 24 | ) 25 | 26 | app.listen(port, function () { 27 | console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) 28 | if (report) { 29 | console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) 30 | } 31 | 32 | }) 33 | } else { 34 | run(`vue-cli-service build ${args}`) 35 | } 36 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], 3 | transform: { 4 | '^.+\\.vue$': 'vue-jest', 5 | '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 6 | 'jest-transform-stub', 7 | '^.+\\.jsx?$': 'babel-jest' 8 | }, 9 | moduleNameMapper: { 10 | '^@/(.*)$': '/src/$1' 11 | }, 12 | snapshotSerializers: ['jest-serializer-vue'], 13 | testMatch: [ 14 | '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' 15 | ], 16 | collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], 17 | coverageDirectory: '/tests/unit/coverage', 18 | // 'collectCoverage': true, 19 | 'coverageReporters': [ 20 | 'lcov', 21 | 'text-summary' 22 | ], 23 | testURL: 'http://localhost/' 24 | } 25 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "baseUrl": "./", 4 | "paths": { 5 | "@/*": ["src/*"] 6 | } 7 | }, 8 | "exclude": ["node_modules", "dist"] 9 | } 10 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/postcss.config.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | 'plugins': { 5 | // to edit target browsers: use "browserslist" field in package.json 6 | 'autoprefixer': {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/public/favicon.ico -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= webpackConfig.name %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/edu/comment.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/edu/comment' 4 | 5 | export default { 6 | // 分页查询获取评论信息 7 | pageQueryComment(index, limit, queryCondition) { 8 | return request({ 9 | url: `${API_PATH}/pageQueryComment/${index}/${limit}`, 10 | method: 'POST', 11 | data: queryCondition 12 | }) 13 | }, 14 | // 删除评论 15 | deleteComment(commentId) { 16 | return request({ 17 | url: `${API_PATH}/deleteComment/${commentId}`, 18 | method: 'DELETE' 19 | }) 20 | } 21 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/edu/record.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/edu/studyRecord' 4 | 5 | export default { 6 | // 分页查询学习记录 7 | pageQueryStudyRecord(index, limit, queryCondition) { 8 | return request({ 9 | url: `${API_PATH}/pageQueryStudyRecord/${index}/${limit}`, 10 | method: 'POST', 11 | data: queryCondition 12 | }) 13 | } 14 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/edu/video.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/edu/video' 4 | 5 | export default { 6 | // 根据小节id获取小节信息 7 | getVideo(videoId) { 8 | return request({ 9 | url: `${API_PATH}/getVideo/${videoId}`, 10 | method: 'GET' 11 | }) 12 | }, 13 | // 添加小节 14 | addVideo(video) { 15 | return request({ 16 | url: `${API_PATH}/addVideo`, 17 | method: 'POST', 18 | data: video 19 | }) 20 | }, 21 | // 修改小节 22 | updateVideo(video) { 23 | return request({ 24 | url: `${API_PATH}/updateVideo`, 25 | method: 'POST', 26 | data: video 27 | }) 28 | }, 29 | // 根据id删除小节视频,底层会调用vod删除阿里云端的视频 30 | deleteVideo(videoId) { 31 | return request({ 32 | url: `${API_PATH}/deleteVideo/${videoId}`, 33 | method: 'DELETE', 34 | }) 35 | } 36 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/login.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/auth' 4 | 5 | export default { 6 | // 登录 7 | login(username, password) { 8 | return request({ 9 | url: `${API_PATH}/login`, 10 | method: 'POST', 11 | data: { 12 | username, 13 | password 14 | } 15 | }) 16 | }, 17 | // 获取用户信息 18 | getInfo(token) { 19 | return request({ 20 | url: `${API_PATH}/index/info`, 21 | method: 'GET', 22 | params: { token } 23 | }) 24 | }, 25 | // 登出 26 | logout() { 27 | return request({ 28 | url: `${API_PATH}/index/logout`, 29 | method: 'POST' 30 | }) 31 | }, 32 | // 获取菜单 33 | getMenu() { 34 | return request({ 35 | url: `${API_PATH}/index/menu`, 36 | method: 'GET' 37 | }) 38 | } 39 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/order/order.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/order/payOrder' 4 | 5 | export default { 6 | // 分页查询订单信息 7 | pageQueryOrder(index, limit, queryCondition) { 8 | return request({ 9 | url: `${API_PATH}/pageQueryOrder/${index}/${limit}`, 10 | method: 'POST', 11 | data: queryCondition 12 | }) 13 | } 14 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/statistics/daily.js: -------------------------------------------------------------------------------- 1 | import request from "@/utils/request" 2 | 3 | const API_PATH = "admin/statistics/daily" 4 | 5 | export default { 6 | // 统计注册人数 7 | registerMemberCount(day) { 8 | return request({ 9 | url: `${API_PATH}/registerMemberCount/${day}`, 10 | method: 'POST' 11 | }) 12 | }, 13 | // 获取统计数据的方法 14 | getStatisticsData(type, begin, end) { 15 | return request({ 16 | url: `${API_PATH}/getStatisticsData/${type}/${begin}/${end}`, 17 | method: 'GET' 18 | }) 19 | } 20 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/statistics/dashboard.js: -------------------------------------------------------------------------------- 1 | import request from "@/utils/request" 2 | 3 | const API_PATH = "admin/statistics/dashboard" 4 | 5 | export default { 6 | // 首页面板统计 7 | getStatisticsData() { 8 | return request({ 9 | url: `${API_PATH}/getStatisticsData`, 10 | method: 'GET' 11 | }) 12 | } 13 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/ucenter/member.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/ucenter/member' 4 | 5 | export default { 6 | // 分页查询用户 7 | pageQueryMember(index, limit, queryCondition) { 8 | return request({ 9 | url: `${API_PATH}/pageQueryMember/${index}/${limit}`, 10 | method: 'POST', 11 | data: queryCondition 12 | }) 13 | }, 14 | // 禁用或者启用某个用户 15 | enableOrDisableMember(userId, value) { 16 | return request({ 17 | url: `${API_PATH}/enableOrDisableMember/${userId}`, 18 | method: 'POST', 19 | params: { "isEnable": value } 20 | }) 21 | } 22 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/user.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/edu/user' 4 | 5 | export function login(data) { 6 | return request({ 7 | url: `${API_PATH}/login`, 8 | method: 'post', 9 | data 10 | }) 11 | } 12 | 13 | export function getInfo(token) { 14 | return request({ 15 | url: `${API_PATH}/info`, 16 | method: 'get', 17 | params: { token } 18 | }) 19 | } 20 | 21 | export function logout() { 22 | return request({ 23 | url: `${API_PATH}/logout`, 24 | method: 'post' 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/api/vod/vod.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'admin/vod' 4 | 5 | export default { 6 | // 根据视频id删除阿里云端视频 7 | deleteAliVideo(videoSourceId) { 8 | return request({ 9 | url: `${API_PATH}/deleteAliVideo/${videoSourceId}`, 10 | method: 'DELETE' 11 | }) 12 | } 13 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/404_images/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/404_images/404.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/404_images/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/404_images/404_cloud.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/background.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/book.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/folder.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/verify/img0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/verify/img0.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/verify/img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/verify/img1.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/verify/img2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/verify/img2.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/verify/img3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/verify/img3.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/verify/img4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/verify/img4.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/assets/images/verify/img5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Admin/src/assets/images/verify/img5.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/components/ImageCropper/utils/data2blob.js: -------------------------------------------------------------------------------- 1 | /** 2 | * database64文件格式转换为2进制 3 | * 4 | * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了 5 | * @param {[String]} mime [description] 6 | * @return {[blob]} [description] 7 | */ 8 | export default function(data, mime) { 9 | data = data.split(',')[1] 10 | data = window.atob(data) 11 | var ia = new Uint8Array(data.length) 12 | for (var i = 0; i < data.length; i++) { 13 | ia[i] = data.charCodeAt(i) 14 | } 15 | // canvas.toDataURL 返回的默认格式就是 image/png 16 | return new Blob([ia], { 17 | type: mime 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/components/ImageCropper/utils/mimes.js: -------------------------------------------------------------------------------- 1 | export default { 2 | 'jpg': 'image/jpeg', 3 | 'png': 'image/png', 4 | 'gif': 'image/gif', 5 | 'svg': 'image/svg+xml', 6 | 'psd': 'image/photoshop' 7 | } 8 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/components/Tinymce/plugins.js: -------------------------------------------------------------------------------- 1 | // Any plugins you want to use has to be imported 2 | // Detail plugins list see https://www.tinymce.com/docs/plugins/ 3 | // Custom builds see https://www.tinymce.com/download/custom-builds/ 4 | 5 | const plugins = ['advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'] 6 | 7 | export default plugins 8 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/components/Tinymce/toolbar.js: -------------------------------------------------------------------------------- 1 | // Here is a list of the toolbar 2 | // Detail list see https://www.tinymce.com/docs/advanced/editor-control-identifiers/#toolbarcontrols 3 | 4 | const toolbar = ['searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent blockquote undo redo removeformat subscript superscript code codesample', 'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'] 5 | 6 | export default toolbar 7 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import SvgIcon from '@/components/SvgIcon'// svg component 3 | 4 | // register globally 5 | Vue.component('svg-icon', SvgIcon) 6 | 7 | const req = require.context('./svg', false, /\.svg$/) 8 | const requireAll = requireContext => requireContext.keys().map(requireContext) 9 | requireAll(req) 10 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/chart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/clipboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/component.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/documentation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/drag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/edit.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/education.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/email.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/example.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/excel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/eye.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/fullscreen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/guide.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/link.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/lock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/message.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/money.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/nested.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/password.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/peoples.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/star.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/tab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/theme.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/tree-table.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svg/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/icons/svgo.yml: -------------------------------------------------------------------------------- 1 | # replace default config 2 | 3 | # multipass: true 4 | # full: true 5 | 6 | plugins: 7 | 8 | # - name 9 | # 10 | # or: 11 | # - name: false 12 | # - name: true 13 | # 14 | # or: 15 | # - name: 16 | # param1: 1 17 | # param2: 2 18 | 19 | - removeAttrs: 20 | attrs: 21 | - 'fill' 22 | - 'fill-rule' 23 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/layout/components/Sidebar/FixiOSBug.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | device() { 4 | return this.$store.state.app.device 5 | } 6 | }, 7 | mounted() { 8 | // In order to fix the click on menu on the ios device will trigger the mouseleave bug 9 | // https://github.com/PanJiaChen/vue-element-admin/issues/1135 10 | this.fixBugIniOS() 11 | }, 12 | methods: { 13 | fixBugIniOS() { 14 | const $subMenu = this.$refs.subMenu 15 | if ($subMenu) { 16 | const handleMouseleave = $subMenu.handleMouseleave 17 | $subMenu.handleMouseleave = (e) => { 18 | if (this.device === 'mobile') { 19 | return 20 | } 21 | handleMouseleave(e) 22 | } 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/layout/components/Sidebar/Item.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 42 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/layout/components/Sidebar/Link.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 44 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/layout/components/index.js: -------------------------------------------------------------------------------- 1 | export { default as Navbar } from './Navbar' 2 | export { default as Sidebar } from './Sidebar' 3 | export { default as AppMain } from './AppMain' 4 | export { default as TagsView } from './TagsView' 5 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | 3 | import 'normalize.css/normalize.css' // A modern alternative to CSS resets 4 | 5 | import ElementUI from 'element-ui' 6 | import 'element-ui/lib/theme-chalk/index.css' 7 | import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n 8 | 9 | // 滑动验证码 10 | import SlideVerify from 'vue-monoplasty-slide-verify' 11 | 12 | import '@/styles/index.scss' // global css 13 | 14 | import App from './App' 15 | import store from './store' 16 | import router from './router' 17 | 18 | import '@/icons' // icon 19 | import '@/permission' // permission control 20 | 21 | // 判断是否有按钮权限 22 | import { hasButtonPermission } from './utils/permission' 23 | 24 | // set ElementUI lang to EN 25 | Vue.use(ElementUI, { locale }) 26 | // 如果想要中文版 element-ui,按如下方式声明 27 | // Vue.use(ElementUI) 28 | 29 | Vue.use(SlideVerify) 30 | 31 | Vue.config.productionTip = false 32 | 33 | // 判断有无权限 34 | Vue.prototype.hasPermission = hasButtonPermission 35 | 36 | new Vue({ 37 | el: '#app', 38 | router, 39 | store, 40 | render: h => h(App) 41 | }) 42 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/settings.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | title: 'OES在线教育系统', 4 | 5 | /** 6 | * @type {boolean} true | false 7 | * @description Whether fix the header 8 | */ 9 | fixedHeader: false, 10 | 11 | /** 12 | * @type {boolean} true | false 13 | * @description Whether show the logo in sidebar 14 | */ 15 | sidebarLogo: true, 16 | 17 | /** 18 | * @type {boolean} true | false 19 | * @description 是否开启标签栏缓存 20 | */ 21 | tagsView: true, 22 | } 23 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/store/getters.js: -------------------------------------------------------------------------------- 1 | const getters = { 2 | sidebar: state => state.app.sidebar, 3 | device: state => state.app.device, 4 | token: state => state.user.token, 5 | avatar: state => state.user.avatar, 6 | name: state => state.user.name, 7 | roles: state => state.user.roles, 8 | routes: state => state.user.routes, 9 | permissionList: state => state.user.permissionList, 10 | visitedViews: state => state.tagsView.visitedViews, 11 | cachedViews: state => state.tagsView.cachedViews 12 | } 13 | export default getters 14 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import getters from './getters' 4 | import app from './modules/app' 5 | import settings from './modules/settings' 6 | import user from './modules/user' 7 | import tagsView from './modules/tagsView' 8 | import permission from './modules/permission' 9 | 10 | Vue.use(Vuex) 11 | 12 | const store = new Vuex.Store({ 13 | modules: { 14 | app, 15 | settings, 16 | user, 17 | tagsView, 18 | permission 19 | }, 20 | getters 21 | }) 22 | 23 | export default store 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/store/modules/settings.js: -------------------------------------------------------------------------------- 1 | import defaultSettings from '@/settings' 2 | 3 | const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings 4 | 5 | const state = { 6 | showSettings: showSettings, 7 | tagsView: tagsView, 8 | fixedHeader: fixedHeader, 9 | sidebarLogo: sidebarLogo 10 | } 11 | 12 | const mutations = { 13 | CHANGE_SETTING: (state, { key, value }) => { 14 | // eslint-disable-next-line no-prototype-builtins 15 | if (state.hasOwnProperty(key)) { 16 | state[key] = value 17 | } 18 | } 19 | } 20 | 21 | const actions = { 22 | changeSetting({ commit }, data) { 23 | commit('CHANGE_SETTING', data) 24 | } 25 | } 26 | 27 | export default { 28 | namespaced: true, 29 | state, 30 | mutations, 31 | actions 32 | } 33 | 34 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/styles/element-ui.scss: -------------------------------------------------------------------------------- 1 | // cover some element-ui styles 2 | 3 | .el-breadcrumb__inner, 4 | .el-breadcrumb__inner a { 5 | font-weight: 400 !important; 6 | } 7 | 8 | .el-upload { 9 | input[type="file"] { 10 | display: none !important; 11 | } 12 | } 13 | 14 | .el-upload__input { 15 | display: none; 16 | } 17 | 18 | 19 | // to fixed https://github.com/ElemeFE/element/issues/2461 20 | .el-dialog { 21 | transform: none; 22 | left: 0; 23 | position: relative; 24 | margin: 0 auto; 25 | } 26 | 27 | // refine element ui upload 28 | .upload-container { 29 | .el-upload { 30 | width: 100%; 31 | 32 | .el-upload-dragger { 33 | width: 100%; 34 | height: 200px; 35 | } 36 | } 37 | } 38 | 39 | // dropdown 40 | .el-dropdown-menu { 41 | a { 42 | display: block 43 | } 44 | } 45 | 46 | // to fix el-date-picker css style 47 | .el-range-separator { 48 | box-sizing: content-box; 49 | } 50 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/styles/mixin.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix { 2 | &:after { 3 | content: ""; 4 | display: table; 5 | clear: both; 6 | } 7 | } 8 | 9 | @mixin scrollBar { 10 | &::-webkit-scrollbar-track-piece { 11 | background: #d3dce6; 12 | } 13 | 14 | &::-webkit-scrollbar { 15 | width: 6px; 16 | } 17 | 18 | &::-webkit-scrollbar-thumb { 19 | background: #99a9bf; 20 | border-radius: 20px; 21 | } 22 | } 23 | 24 | @mixin relative { 25 | position: relative; 26 | width: 100%; 27 | height: 100%; 28 | } 29 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/styles/transition.scss: -------------------------------------------------------------------------------- 1 | // global transition css 2 | 3 | /* fade */ 4 | .fade-enter-active, 5 | .fade-leave-active { 6 | transition: opacity 0.28s; 7 | } 8 | 9 | .fade-enter, 10 | .fade-leave-active { 11 | opacity: 0; 12 | } 13 | 14 | /* fade-transform */ 15 | .fade-transform-leave-active, 16 | .fade-transform-enter-active { 17 | transition: all .5s; 18 | } 19 | 20 | .fade-transform-enter { 21 | opacity: 0; 22 | transform: translateX(-30px); 23 | } 24 | 25 | .fade-transform-leave-to { 26 | opacity: 0; 27 | transform: translateX(30px); 28 | } 29 | 30 | /* breadcrumb transition */ 31 | .breadcrumb-enter-active, 32 | .breadcrumb-leave-active { 33 | transition: all .5s; 34 | } 35 | 36 | .breadcrumb-enter, 37 | .breadcrumb-leave-active { 38 | opacity: 0; 39 | transform: translateX(20px); 40 | } 41 | 42 | .breadcrumb-move { 43 | transition: all .5s; 44 | } 45 | 46 | .breadcrumb-leave-active { 47 | position: absolute; 48 | } 49 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/styles/variables.scss: -------------------------------------------------------------------------------- 1 | // sidebar 2 | $menuText:#bfcbd9; 3 | $menuActiveText:#409EFF; 4 | $subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951 5 | 6 | $menuBg:#304156; 7 | $menuHover:#263445; 8 | 9 | $subMenuBg:#1f2d3d; 10 | $subMenuHover:#001528; 11 | 12 | $sideBarWidth: 210px; 13 | 14 | // the :export directive is the magic sauce for webpack 15 | // https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass 16 | :export { 17 | menuText: $menuText; 18 | menuActiveText: $menuActiveText; 19 | subMenuActiveText: $subMenuActiveText; 20 | menuBg: $menuBg; 21 | menuHover: $menuHover; 22 | subMenuBg: $subMenuBg; 23 | subMenuHover: $subMenuHover; 24 | sideBarWidth: $sideBarWidth; 25 | } 26 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/utils/auth.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const TokenKey = 'Admin-token' 4 | 5 | export function getToken() { 6 | return Cookies.get(TokenKey) 7 | } 8 | 9 | export function setToken(token) { 10 | return Cookies.set(TokenKey, token) 11 | } 12 | 13 | export function removeToken() { 14 | return Cookies.remove(TokenKey) 15 | } 16 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/utils/get-page-title.js: -------------------------------------------------------------------------------- 1 | import defaultSettings from '@/settings' 2 | 3 | const title = defaultSettings.title || 'OES在线教育系统' 4 | 5 | export default function getPageTitle(pageTitle) { 6 | if (pageTitle) { 7 | return `${pageTitle} - ${title}` 8 | } 9 | return `${title}` 10 | } 11 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/utils/permission.js: -------------------------------------------------------------------------------- 1 | import store from '@/store' 2 | 3 | /** 4 | * @param {Array} value 5 | * @returns {Boolean} 6 | * @example see @/views/permission/directive.vue 7 | */ 8 | export default function checkPermission(value) { 9 | if (value && value instanceof Array && value.length > 0) { 10 | const roles = store.getters && store.getters.roles 11 | const permissionRoles = value 12 | 13 | const hasPermission = roles.some(role => { 14 | return permissionRoles.includes(role) 15 | }) 16 | if (!hasPermission) { 17 | return false 18 | } 19 | return true 20 | } else { 21 | console.error(`need roles! Like v-permission="['admin','editor']"`) 22 | return false 23 | } 24 | } 25 | 26 | // 用来控制按钮的显示 27 | export function hasButtonPermission(permission) { 28 | const permissionList = store.getters.permissionList 29 | return permissionList.indexOf(permission) > -1 30 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/src/utils/validate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by PanJiaChen on 16/11/18. 3 | */ 4 | 5 | /** 6 | * @param {string} path 7 | * @returns {Boolean} 8 | */ 9 | export function isExternal(path) { 10 | return /^(https?:|mailto:|tel:)/.test(path) 11 | } 12 | 13 | /** 14 | * @param {string} str 15 | * @returns {Boolean} 16 | */ 17 | export function validUsername(str) { 18 | const valid_map = ['admin', 'editor'] 19 | return valid_map.indexOf(str.trim()) >= 0 20 | } 21 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/tests/unit/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | jest: true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/tests/unit/components/Hamburger.spec.js: -------------------------------------------------------------------------------- 1 | import { shallowMount } from '@vue/test-utils' 2 | import Hamburger from '@/components/Hamburger/index.vue' 3 | describe('Hamburger.vue', () => { 4 | it('toggle click', () => { 5 | const wrapper = shallowMount(Hamburger) 6 | const mockFn = jest.fn() 7 | wrapper.vm.$on('toggleClick', mockFn) 8 | wrapper.find('.hamburger').trigger('click') 9 | expect(mockFn).toBeCalled() 10 | }) 11 | it('prop isActive', () => { 12 | const wrapper = shallowMount(Hamburger) 13 | wrapper.setProps({ isActive: true }) 14 | expect(wrapper.contains('.is-active')).toBe(true) 15 | wrapper.setProps({ isActive: false }) 16 | expect(wrapper.contains('.is-active')).toBe(false) 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/tests/unit/components/SvgIcon.spec.js: -------------------------------------------------------------------------------- 1 | import { shallowMount } from '@vue/test-utils' 2 | import SvgIcon from '@/components/SvgIcon/index.vue' 3 | describe('SvgIcon.vue', () => { 4 | it('iconClass', () => { 5 | const wrapper = shallowMount(SvgIcon, { 6 | propsData: { 7 | iconClass: 'test' 8 | } 9 | }) 10 | expect(wrapper.find('use').attributes().href).toBe('#icon-test') 11 | }) 12 | it('className', () => { 13 | const wrapper = shallowMount(SvgIcon, { 14 | propsData: { 15 | iconClass: 'test' 16 | } 17 | }) 18 | expect(wrapper.classes().length).toBe(1) 19 | wrapper.setProps({ className: 'test' }) 20 | expect(wrapper.classes().includes('test')).toBe(true) 21 | }) 22 | }) 23 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/tests/unit/utils/param2Obj.spec.js: -------------------------------------------------------------------------------- 1 | import { param2Obj } from '@/utils/index.js' 2 | describe('Utils:param2Obj', () => { 3 | const url = 'https://github.com/PanJiaChen/vue-element-admin?name=bill&age=29&sex=1&field=dGVzdA==&key=%E6%B5%8B%E8%AF%95' 4 | 5 | it('param2Obj test', () => { 6 | expect(param2Obj(url)).toEqual({ 7 | name: 'bill', 8 | age: '29', 9 | sex: '1', 10 | field: window.btoa('test'), 11 | key: '测试' 12 | }) 13 | }) 14 | }) 15 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Admin/tests/unit/utils/validate.spec.js: -------------------------------------------------------------------------------- 1 | import { validUsername, isExternal } from '@/utils/validate.js' 2 | 3 | describe('Utils:validate', () => { 4 | it('validUsername', () => { 5 | expect(validUsername('admin')).toBe(true) 6 | expect(validUsername('editor')).toBe(true) 7 | expect(validUsername('xxxx')).toBe(false) 8 | }) 9 | it('isExternal', () => { 10 | expect(isExternal('https://github.com/PanJiaChen/vue-element-admin')).toBe(true) 11 | expect(isExternal('http://github.com/PanJiaChen/vue-element-admin')).toBe(true) 12 | expect(isExternal('github.com/PanJiaChen/vue-element-admin')).toBe(false) 13 | expect(isExternal('/dashboard')).toBe(false) 14 | expect(isExternal('./dashboard')).toBe(false) 15 | expect(isExternal('dashboard')).toBe(false) 16 | }) 17 | }) 18 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_size = 2 6 | indent_style = space 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | node: true 6 | }, 7 | parserOptions: { 8 | parser: 'babel-eslint' 9 | }, 10 | extends: [ 11 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention 12 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules. 13 | 'plugin:vue/essential' 14 | ], 15 | // required to lint *.vue files 16 | plugins: [ 17 | 'vue' 18 | ], 19 | // add your custom rules here 20 | rules: {} 21 | } 22 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/.gitignore: -------------------------------------------------------------------------------- 1 | # dependencies 2 | node_modules 3 | 4 | # logs 5 | npm-debug.log 6 | 7 | # Nuxt build 8 | .nuxt 9 | 10 | # Nuxt generate 11 | dist 12 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/cms/banner.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/cms/banner' 4 | 5 | export default { 6 | // 首页获取所有的banner信息 7 | getAllBanner() { 8 | return request({ 9 | url: `${API_PATH}/getAllBanner`, 10 | method: 'GET' 11 | }) 12 | } 13 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/edu/comment.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/edu/comment' 4 | 5 | export default { 6 | // 获取课程列表 7 | pageQueryComment(courseId, index, limit,) { 8 | return request({ 9 | url: `${API_PATH}/pageQueryComment/${courseId}/${index}/${limit}`, 10 | method: 'GET', 11 | }) 12 | }, 13 | // 添加评论 14 | addComment(comment) { 15 | return request({ 16 | url: `${API_PATH}/addComment`, 17 | method: 'POST', 18 | data: comment 19 | }) 20 | } 21 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/edu/record.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/edu/studyRecord' 4 | 5 | export default { 6 | // 添加学习记录 7 | addStudyRecord(teacherName, courseName, courseCover, videoName, videoSourceId, courseId) { 8 | return request({ 9 | url: `${API_PATH}/addStudyRecord/${teacherName}/${courseName}/${videoName}/${videoSourceId}/${courseId}`, 10 | method: "POST", 11 | params: { 12 | courseCover: courseCover, 13 | } 14 | }) 15 | }, 16 | // 分页查询学习记录 17 | pageQueryUserStudyRecord(index, limit) { 18 | return request({ 19 | url: `${API_PATH}/pageQueryUserStudyRecord/${index}/${limit}`, 20 | method: 'POST' 21 | }) 22 | } 23 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/edu/subject.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/edu/subject' 4 | 5 | export default { 6 | // 查询所有分类,一级分类下面包含二级分类,二级还可以包含三级 7 | getAllSubject() { 8 | return request({ 9 | url: `${API_PATH}/getAllSubject`, 10 | method: 'GET' 11 | }) 12 | } 13 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/edu/teacher.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/edu/teacher' 4 | 5 | export default { 6 | // 获得讲师列表的接口 7 | pageQueryTeacher(index, limit) { 8 | return request({ 9 | url: `${API_PATH}/pageQueryTeacher/${index}/${limit}`, 10 | method: 'GET' 11 | }) 12 | }, 13 | // 获取讲师及其所讲课程 14 | getTeacherAndCourse(teacherId) { 15 | return request({ 16 | url: `${API_PATH}/getTeacherAndCourse/${teacherId}`, 17 | method: 'GET' 18 | }) 19 | } 20 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/index.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/edu/index' 4 | 5 | export default { 6 | //查询热门课程和名师 7 | getHotTeacherAndHotCourse() { 8 | return request({ 9 | url: `${API_PATH}/getHotTeacherAndHotCourse`, 10 | method: 'GET' 11 | }) 12 | } 13 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/login.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/ucenter/member' 4 | const WX_API_PATH = 'user/ucenter/wx' 5 | 6 | export default { 7 | //用户登录 8 | submitLogin(loginVO) { 9 | return request({ 10 | url: `${API_PATH}/userLogin`, 11 | method: 'POST', 12 | data: loginVO 13 | }) 14 | }, 15 | 16 | // 根据token获取用户信息 17 | getUserInfo() { 18 | return request({ 19 | url: `${API_PATH}/getUserInfo`, 20 | method: 'GET' 21 | }) 22 | }, 23 | // 微信扫码 24 | wxScan() { 25 | return request({ 26 | url: '/api/ucenter/wx/userLogin', 27 | method: 'get' 28 | }) 29 | }, 30 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/order/order.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/order/payOrder' 4 | 5 | const LOG_API_PATH = 'user/order/payLog' 6 | 7 | export default { 8 | // 生成订单 9 | createOrder(courseId) { 10 | return request({ 11 | url: `${API_PATH}/generateOrder/${courseId}`, 12 | method: 'POST' 13 | }) 14 | }, 15 | // 根据订单号查询订单信息 16 | getOrder(orderNo) { 17 | return request({ 18 | url: `${API_PATH}/getOrderInfo/${orderNo}`, 19 | method: 'GET' 20 | }) 21 | }, 22 | // 生成二维码的方法 23 | createNative(orderNo) { 24 | return request({ 25 | url: `${LOG_API_PATH}/generateOrCode/${orderNo}`, 26 | method: 'GET' 27 | }) 28 | }, 29 | // 查询支付状态的方法 30 | queryOrderStatus(orderNo) { 31 | return request({ 32 | url: `${LOG_API_PATH}/queryOrderState/${orderNo}`, 33 | method: 'GET' 34 | }) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/register.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/ucenter/member' 4 | const SMS_API_PATH = 'user/sms' 5 | 6 | export default { 7 | // 提交注册信息 8 | submitRegister(params) { 9 | return request({ 10 | url: `${API_PATH}/userRegister`, 11 | method: 'post', 12 | data: params 13 | }) 14 | }, 15 | 16 | // 获取验证码 17 | getVerificationCode(phone) { 18 | return request({ 19 | url: `${SMS_API_PATH}/sendVerificationCode/${phone}`, 20 | method: 'get' 21 | }) 22 | } 23 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/ucenter/member.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/ucenter/member' 4 | 5 | export default { 6 | // 修改用户信息 7 | updateUserInfo(userInfo) { 8 | return request({ 9 | url: `${API_PATH}/updateUserInfo`, 10 | method: 'post', 11 | data: userInfo 12 | }) 13 | }, 14 | // 修改用户密码 15 | updatePassword(passwordVO) { 16 | return request({ 17 | url: `${API_PATH}/updatePassword`, 18 | method: 'post', 19 | data: passwordVO 20 | }) 21 | } 22 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/api/vod/vod.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | const API_PATH = 'user/vod' 4 | 5 | export default { 6 | // 获取视频播放凭证 7 | getPlayAuth(videoId) { 8 | return request({ 9 | url: `${API_PATH}/getPlayAuth/${videoId}`, 10 | method: 'GET' 11 | }) 12 | } 13 | } -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 2 | 3 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript. 4 | 5 | More information about the usage of this directory in the documentation: 6 | https://nuxtjs.org/guide/assets#webpacked 7 | 8 | **This directory is not required, you can delete it if you don't want to use it.** 9 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/css/activity_tab.css: -------------------------------------------------------------------------------- 1 | /*zjf20170614*/ 2 | .act_tab { 3 | display: inline-block; 4 | position: absolute; 5 | left: 0; 6 | top: 0; 7 | padding: 0 !important; 8 | z-index: 999; 9 | } 10 | .act_tab span { 11 | display: block !important; 12 | width: 78px; 13 | text-align: center; 14 | } 15 | .act_tab .act_tab_l { 16 | height: 16px; 17 | line-height: 16px; 18 | font-size: 14px; 19 | color: #df3737; 20 | background: #fff; 21 | } 22 | .act_tab .act_tab_r { 23 | height: 16px; 24 | line-height: 16px; 25 | font-size: 14px; 26 | color: #fff; 27 | background: #df3737; 28 | border-top: 2px solid #df3737; 29 | } 30 | .act_tab .double-eleven { 31 | background-color: #f54771; 32 | width: 54px; 33 | height: 20px; 34 | line-height: 20px; 35 | font-size: 12px; 36 | color: #fff; 37 | border-radius: 3px 0 0 0; 38 | } 39 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/css/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/css/iconfont.eot -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/css/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/css/iconfont.ttf -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/css/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/css/iconfont.woff -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/css/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/css/iconfont.woff2 -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/css/theme.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | .c-master { 3 | color: #68cb9b; 4 | } 5 | .bg-orange { 6 | background-color: #68cb9b; 7 | } 8 | .nav li.current a, 9 | .nav li a:hover, 10 | .h-r-login li a:hover, 11 | .h-r-login li a:hover, 12 | .c-tab-title a.current, 13 | .c-btn-2, 14 | .i-teach-wrap:hover a, 15 | .paging a, 16 | .paging a:hover, 17 | .paging a.current, 18 | #footer, 19 | .u-m-dd ul li a:hover, 20 | .u-m-dd ul li.current a, 21 | .d-s-head-tab a.current { 22 | border-color: #68cb9b; 23 | color: #68cb9b; 24 | } 25 | .lh-menu ul li.lh-menu-stair ol li.lh-menu-second a.current-2, 26 | .lh-menu ul li.lh-menu-stair li.lh-menu-second a.current-2, 27 | .lh-menu ul li.lh-menu-stair ol li.lh-menu-second a.current-2 .lh-menu-i-2, 28 | .lh-menu ul li.lh-menu-stair li.lh-menu-second a.current-2 .lh-menu-i-2, 29 | .lh-menu-second a.current-2 span.fr, 30 | #t-infor-menu p a.current, 31 | .i-art-title:hover, 32 | .q-sort-wrap span.current { 33 | border-color: #68cb9b; 34 | color: #68cb9b; 35 | } 36 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/404.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/404.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/500.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/500.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/HF-BG.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/HF-BG.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/avatar-boy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/avatar-boy.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/black-bg-hf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/black-bg-hf.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/black-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/black-mask.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/black-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/black-name.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/c-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/c-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/cart_setp2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/cart_setp2.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/d-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/d-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/default-img.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/default-img.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/default-img_old.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/default-img_old.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/default-tea-img.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/default-tea-img.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/erweima.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/erweima.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/f12c399b34115265a7a8a4da329b45d0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/f12c399b34115265a7a8a4da329b45d0.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/kyb-tip-all-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/kyb-tip-all-bg.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/kyb-tip-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/kyb-tip-bg.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/kyb-tip-close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/kyb-tip-close.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/loading.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/loding.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/loding.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/logo.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/logo1.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/phone-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/phone-bg.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/1.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/banner-1-blue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/banner-1-blue.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/banner-1-green.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/banner-1-green.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/banner-2-blue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/banner-2-blue.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/banner-2-green.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/banner-2-green.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/c-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/c-1.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/one-master.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/one-master.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/t-p-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/t-p-1.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/three-blue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/three-blue.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/pic/two-green.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/pic/two-green.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/qq-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/qq-icon-32.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/qq-icon-hover-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/qq-icon-hover-32.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/qq-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/qq-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/s-next-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/s-next-btn.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/s-prev-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/s-prev-btn.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/tipQe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/tipQe.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/up-hf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/up-hf.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/v-loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/v-loading.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/v-play-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/v-play-bg.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wb-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wb-icon-32.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wb-icon-hover-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wb-icon-hover-32.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wb-icon-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wb-icon-hover.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wb-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wb-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wb2-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wb2-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wx-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wx-icon-32.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wx-icon-hover-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wx-icon-hover-32.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wx-icon-hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wx-icon-hover.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wx-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wx-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/wx2-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/wx2-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/img/zan-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/img/zan-icon.png -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/js/index.js: -------------------------------------------------------------------------------- 1 | //首页响应式幻灯片调取方法 2 | function sSwiperFun() { 3 | var _sWrap = $('.swiper-container'); 4 | var mySwiper = _sWrap.swiper({ 5 | loop: true, //无缝连接滚动 6 | autoplay : 5000, //自动滚动 7 | autoplayDisableOnInteraction : false, //设置点击后是否继续滚动 8 | speed:300, //滚动速度 9 | pagination : '.pagination', //设置分页 10 | paginationClickable :true //设置true分页点击执行swiper 11 | }); 12 | $('.arrow-left').on('click', function(e){ 13 | e.preventDefault(); 14 | mySwiper.swipePrev(); 15 | }); 16 | $('.arrow-right').on('click', function(e){ 17 | e.preventDefault(); 18 | mySwiper.swipeNext(); 19 | }); 20 | 21 | $(".imgload").eq(0).get(0).onload=function(){ 22 | $(".i-slide").css("height",$(".imgload").eq(0).height()); 23 | } 24 | 25 | }; -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/01.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/02.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/03.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/04.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/05.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/06.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/07.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/08.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/09.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/10.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/article/hot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/article/hot.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/banner/1525939573202.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/banner/1525939573202.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/banner/153525d0ef15459596.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/banner/153525d0ef15459596.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/01.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/02.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/03.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/04.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/05.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/06.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/07.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/08.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/09.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/10.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/11.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/12.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295379715.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295379715.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295455437.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295455437.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295472860.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295472860.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295506745.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295506745.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295527931.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295527931.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295556203.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295556203.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295570359.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295570359.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295581911.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295581911.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295592705.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295592705.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442295604295.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442295604295.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442302831779.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442302831779.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/1442302852837.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/1442302852837.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/course/default.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/course/default.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/customer/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/customer/01.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/customer/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/customer/02.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/customer/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/customer/03.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/customer/avatar-boy.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/customer/avatar-boy.gif -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/01.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/02.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/03.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/04.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/05.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/06.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/07.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/08.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297885942.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297885942.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297919077.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297919077.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297927029.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297927029.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297935589.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297935589.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297957332.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297957332.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297969808.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297969808.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297977255.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297977255.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297987091.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297987091.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442297999141.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442297999141.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/1442298121626.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/1442298121626.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/assets/photo/teacher/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/assets/photo/teacher/default.jpg -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | The components directory contains your Vue.js Components. 4 | Nuxt.js doesn't supercharge these components. 5 | 6 | **This directory is not required, you can delete it if you don't want to use it.** 7 | 8 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/layouts/sign.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/layouts/video.vue: -------------------------------------------------------------------------------- 1 | 9 | 12 | 13 | 19 | 20 | 43 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "oes-front", 3 | "version": "1.0.0", 4 | "description": "OES在线教育系统前台", 5 | "author": "nichijoux ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "nuxt", 9 | "build": "nuxt build", 10 | "start": "nuxt start", 11 | "generate": "nuxt generate", 12 | "lint": "eslint --ext .js,.vue --ignore-path .gitignore .", 13 | "precommit": "npm run lint" 14 | }, 15 | "dependencies": { 16 | "axios": "^0.27.2", 17 | "element-ui": "^2.15.8", 18 | "js-cookie": "^2.2.0", 19 | "js-md5": "^0.7.3", 20 | "nuxt": "^2.0.0", 21 | "vue-awesome-swiper": "^3.1.3", 22 | "vue-qriously": "^1.1.1" 23 | }, 24 | "devDependencies": { 25 | "babel-eslint": "^10.0.1", 26 | "eslint": "^4.19.1", 27 | "eslint-friendly-formatter": "^4.0.1", 28 | "eslint-loader": "^2.1.1", 29 | "eslint-plugin-vue": "^4.0.0" 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/plugins/nuxt-swiper-plugin.js: -------------------------------------------------------------------------------- 1 | 2 | import Vue from 'vue' 3 | import VueAwesomeSwiper from 'vue-awesome-swiper/dist/ssr' 4 | import VueQriously from 'vue-qriously' 5 | import ElementUI from 'element-ui' //element-ui的全部组件 6 | import 'element-ui/lib/theme-chalk/index.css'//element-ui的css 7 | 8 | Vue.use(ElementUI) 9 | Vue.use(VueQriously) 10 | Vue.use(VueAwesomeSwiper) -------------------------------------------------------------------------------- /OnlineEducationSystem-Student/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem-Student/static/favicon.ico -------------------------------------------------------------------------------- /OnlineEducationSystem/.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | -------------------------------------------------------------------------------- /OnlineEducationSystem/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nichijoux/OnlineEducationSystem/55f2bc8b9e16944dc06d7d85bb97da54d24f52ca/OnlineEducationSystem/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /OnlineEducationSystem/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.5/apache-maven-3.8.5-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar 3 | -------------------------------------------------------------------------------- /OnlineEducationSystem/canal/src/main/java/com/zh/oes/canal/CanalApplication.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.canal; 2 | 3 | import com.zh.oes.canal.client.CanalClient; 4 | import org.springframework.boot.CommandLineRunner; 5 | import org.springframework.boot.SpringApplication; 6 | import org.springframework.boot.autoconfigure.SpringBootApplication; 7 | 8 | import javax.annotation.Resource; 9 | 10 | // canal模块是用于多台机器时数据同步的,单机不需要启动 11 | @SpringBootApplication 12 | public class CanalApplication implements CommandLineRunner { 13 | @Resource 14 | private CanalClient canalClient; 15 | 16 | public static void main(String[] args) { 17 | SpringApplication.run(CanalApplication.class, args); 18 | } 19 | 20 | @Override 21 | public void run(String... strings) { 22 | //项目启动,执行canal客户端监听 23 | canalClient.run(); 24 | } 25 | } -------------------------------------------------------------------------------- /OnlineEducationSystem/canal/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # \u670D\u52A1\u7AEF\u53E3 2 | server.port=10000 3 | # \u670D\u52A1\u540D 4 | spring.application.name=canal 5 | # \u73AF\u5883\u8BBE\u7F6E\uFF1Adev\u3001test\u3001prod 6 | spring.profiles.active=dev 7 | # mysql\u6570\u636E\u5E93\u8FDE\u63A5 8 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 9 | spring.datasource.url=jdbc:mysql://localhost:3306/oes?serverTimezone=GMT%2B8 10 | spring.datasource.username=study 11 | spring.datasource.password=123456789 -------------------------------------------------------------------------------- /OnlineEducationSystem/common/common_utils/src/main/java/com/zh/oes/common/utils/RandomUtil.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.utils; 2 | 3 | import java.text.DecimalFormat; 4 | import java.util.Random; 5 | 6 | /** 7 | * 随机数生成器 8 | */ 9 | public class RandomUtil { 10 | private static final DecimalFormat codeFormat = new DecimalFormat("000000"); 11 | 12 | /** 13 | * 获取6位的手机验证码 14 | * 15 | * @return 6位的手机验证码 16 | */ 17 | public static String getSixBitRandom() { 18 | Random random = new Random(); 19 | return codeFormat.format(random.nextInt(1000000)); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/common_utils/src/main/java/com/zh/oes/common/utils/ResponseUtil.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.utils; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import org.springframework.http.HttpStatus; 5 | import org.springframework.http.MediaType; 6 | 7 | import javax.servlet.http.HttpServletResponse; 8 | import java.io.IOException; 9 | 10 | public class ResponseUtil { 11 | public static void out(HttpServletResponse response, Result result) { 12 | ObjectMapper mapper = new ObjectMapper(); 13 | response.setStatus(HttpStatus.OK.value()); 14 | response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE); 15 | try { 16 | mapper.writeValue(response.getWriter(), result); 17 | } catch (IOException e) { 18 | e.printStackTrace(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/CourseClient.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.model.vo.edu.user.CourseUserInfoVO; 4 | import io.swagger.annotations.ApiParam; 5 | import org.springframework.cloud.openfeign.FeignClient; 6 | import org.springframework.stereotype.Component; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PathVariable; 9 | 10 | @Component 11 | @FeignClient(name = "service-edu",fallback = CourseClientHystrix.class) 12 | public interface CourseClient { 13 | @GetMapping("user/edu/course/remoteGetCourseInfo/{courseId}") 14 | CourseUserInfoVO remoteGetCourseInfo( 15 | @ApiParam(name = "courseId", value = "课程id", required = true) 16 | @PathVariable("courseId") Long courseId); 17 | } 18 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/CourseClientHystrix.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.common.base.exception.OESException; 4 | import com.zh.oes.model.vo.edu.user.CourseUserInfoVO; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class CourseClientHystrix implements CourseClient{ 9 | @Override 10 | public CourseUserInfoVO remoteGetCourseInfo(Long courseId) { 11 | throw new OESException("Course服务器宕机"); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/EduClient.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.model.vo.edu.user.CourseUserInfoVO; 4 | import io.swagger.annotations.ApiParam; 5 | import org.springframework.cloud.openfeign.FeignClient; 6 | import org.springframework.stereotype.Component; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PathVariable; 9 | 10 | @Component 11 | @FeignClient(name = "service-edu",fallback = EduClientHystrix.class) 12 | public interface EduClient { 13 | @GetMapping("user/edu/course/remoteGetCourseInfo/{courseId}") 14 | CourseUserInfoVO remoteGetCourseInfo( 15 | @ApiParam(name = "courseId", value = "课程id", required = true) 16 | @PathVariable("courseId") Long courseId); 17 | 18 | @GetMapping("admin/edu/course/remoteCountCourse") 19 | Long remoteCountCourse(); 20 | 21 | @GetMapping("admin/edu/comment/remoteCountComment") 22 | Long remoteCountComment(); 23 | } 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/EduClientHystrix.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.common.base.exception.OESException; 4 | import com.zh.oes.model.vo.edu.user.CourseUserInfoVO; 5 | import org.springframework.stereotype.Component; 6 | 7 | @Component 8 | public class EduClientHystrix implements EduClient { 9 | @Override 10 | public CourseUserInfoVO remoteGetCourseInfo(Long courseId) { 11 | throw new OESException("Course服务器宕机"); 12 | } 13 | 14 | @Override 15 | public Long remoteCountCourse() { 16 | return 0L; 17 | } 18 | 19 | @Override 20 | public Long remoteCountComment() { 21 | return 0L; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/OrderClient.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import io.swagger.annotations.ApiParam; 4 | import org.springframework.cloud.openfeign.FeignClient; 5 | import org.springframework.stereotype.Component; 6 | import org.springframework.web.bind.annotation.GetMapping; 7 | import org.springframework.web.bind.annotation.PathVariable; 8 | 9 | @Component 10 | @FeignClient(name = "service-order",fallback = OrderClientHystrix.class) 11 | public interface OrderClient { 12 | @GetMapping("user/order/payOrder/remoteGetUserHaveBuyCourse/{courseId}/{memberId}") 13 | Boolean remoteGetUserHaveBuyCourse( 14 | @ApiParam(name = "courseId", value = "课程id", required = true) 15 | @PathVariable("courseId") Long courseId, 16 | @ApiParam(name = "memberId", value = "用户id", required = true) 17 | @PathVariable("memberId") Long memberId); 18 | 19 | @GetMapping("admin/order/payOrder/remoteCountOrder") 20 | Long remoteCountOrder(); 21 | } 22 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/OrderClientHystrix.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.common.base.exception.OESException; 4 | import org.springframework.stereotype.Component; 5 | 6 | @Component 7 | public class OrderClientHystrix implements OrderClient { 8 | @Override 9 | public Boolean remoteGetUserHaveBuyCourse(Long courseId, Long memberId) { 10 | throw new OESException("Order服务器宕机"); 11 | } 12 | 13 | @Override 14 | public Long remoteCountOrder() { 15 | return 0L; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/UcenterClientHystrix.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.common.base.exception.OESException; 4 | import com.zh.oes.common.utils.Result; 5 | import com.zh.oes.model.vo.edu.user.MemberVO; 6 | import org.springframework.stereotype.Component; 7 | 8 | @Component 9 | public class UcenterClientHystrix implements UcenterClient { 10 | @Override 11 | public MemberVO remoteGetUser(Long userId) { 12 | throw new OESException("Ucenter服务器宕机"); 13 | } 14 | 15 | @Override 16 | public Result remoteRegisterCount(String day) { 17 | throw new OESException("Ucenter服务器宕机"); 18 | } 19 | 20 | @Override 21 | public Long remoteCountUser() { 22 | return 0L; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/client/VodClientHystrix.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.client; 2 | 3 | import com.zh.oes.common.base.exception.OESException; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.util.List; 7 | 8 | @Component 9 | public class VodClientHystrix implements VodClient { 10 | @Override 11 | public boolean remoteDeleteAliVideo(String videoSourceId) { 12 | throw new OESException("连接VOD服务器失败"); 13 | } 14 | 15 | @Override 16 | public boolean remoteBatchDeleteAliVideo(List videoSourceIdList) { 17 | throw new OESException("连接VOD服务器失败"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/exception/OESException.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.exception; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | /** 9 | * 自定义异常类抛出异常处理类 10 | */ 11 | @EqualsAndHashCode(callSuper = true) 12 | @Data 13 | @AllArgsConstructor 14 | public class OESException extends RuntimeException { 15 | 16 | @ApiModelProperty(value = "状态码") 17 | private Integer code; 18 | 19 | @ApiModelProperty(value = "提示消息") 20 | private String message; 21 | 22 | public OESException(String message) { 23 | this.code = 20001; 24 | this.message = message; 25 | } 26 | } -------------------------------------------------------------------------------- /OnlineEducationSystem/common/service_base/src/main/java/com/zh/oes/common/base/handler/TimeFillHandler.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.base.handler; 2 | 3 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 4 | import org.apache.ibatis.reflection.MetaObject; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.Date; 8 | 9 | // 自动填充时间数据 10 | @Component 11 | public class TimeFillHandler implements MetaObjectHandler { 12 | @Override 13 | public void insertFill(MetaObject metaObject) { 14 | // fieldName为属性名 15 | this.setFieldValByName("createTime", new Date(), metaObject); 16 | this.setFieldValByName("updateTime", new Date(), metaObject); 17 | } 18 | 19 | @Override 20 | public void updateFill(MetaObject metaObject) { 21 | // fieldName为属性名 22 | this.setFieldValByName("updateTime", new Date(), metaObject); 23 | } 24 | } -------------------------------------------------------------------------------- /OnlineEducationSystem/common/spring_security/src/main/java/com/zh/oes/common/security/entity/User.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.security.entity; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | *

11 | * 用户实体类 12 | *

13 | */ 14 | @Data 15 | @ApiModel(description = "登录用户实体类") 16 | public class User implements Serializable { 17 | 18 | private static final long serialVersionUID = 1L; 19 | 20 | @ApiModelProperty(value = "用户名") 21 | private String username; 22 | 23 | @ApiModelProperty(value = "密码") 24 | private String password; 25 | } 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /OnlineEducationSystem/common/spring_security/src/main/java/com/zh/oes/common/security/security/DefaultPasswordEncoder.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.security.security; 2 | 3 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 4 | import org.springframework.security.crypto.password.PasswordEncoder; 5 | import org.springframework.stereotype.Component; 6 | 7 | // 密码处理,BCrypt加密 8 | @Component 9 | public class DefaultPasswordEncoder implements PasswordEncoder { 10 | 11 | private final BCryptPasswordEncoder passwordEncoder; 12 | 13 | public DefaultPasswordEncoder() { 14 | passwordEncoder = new BCryptPasswordEncoder(); 15 | } 16 | 17 | // 把未进行加密的密码进行BCrypt加密 18 | @Override 19 | public String encode(CharSequence rawPassword) { 20 | return passwordEncoder.encode(rawPassword); 21 | } 22 | 23 | // 将未加密密码和数据库中的密码进行比对 24 | @Override 25 | public boolean matches(CharSequence rawPassword, String encodedPassword) { 26 | return passwordEncoder.matches(rawPassword, encodedPassword); 27 | } 28 | } -------------------------------------------------------------------------------- /OnlineEducationSystem/common/spring_security/src/main/java/com/zh/oes/common/security/security/UnauthorizedEntryPoint.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.common.security.security; 2 | 3 | import com.zh.oes.common.utils.ResponseUtil; 4 | import com.zh.oes.common.utils.Result; 5 | import org.springframework.security.core.AuthenticationException; 6 | import org.springframework.security.web.AuthenticationEntryPoint; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | import javax.servlet.http.HttpServletResponse; 10 | 11 | // 未授权的统一处理方式 12 | public class UnauthorizedEntryPoint implements AuthenticationEntryPoint { 13 | 14 | @Override 15 | public void commence(HttpServletRequest request, HttpServletResponse response, 16 | AuthenticationException authException) { 17 | ResponseUtil.out(response, Result.failure().message("您没有相关权限")); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /OnlineEducationSystem/gateway/src/main/java/com/zh/oes/gateway/GatewayApplication.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.gateway; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | @SpringBootApplication 8 | @EnableDiscoveryClient 9 | public class GatewayApplication { 10 | public static void main(String[] args) { 11 | SpringApplication.run(GatewayApplication.class, args); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/auth/RoleQueryCondition.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.auth; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | 10 | @Data 11 | @ApiModel(value = "角色查询条件对象", description = "角色查询对象封装") 12 | public class RoleQueryCondition implements Serializable { 13 | @ApiModelProperty(value = "角色名称,模糊查询") 14 | private String name; 15 | 16 | @ApiModelProperty(value = "查询开始时间", example = "2022-6-24 12:00:00") 17 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 18 | private String beginTime; 19 | 20 | @ApiModelProperty(value = "查询结束时间", example = "2022-6-24 12:00:00") 21 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 22 | private String endTime; 23 | } 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/auth/UserQueryCondition.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.auth; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | 10 | @Data 11 | @ApiModel(value = "用户查询条件对象",description = "用户查询对象封装") 12 | public class UserQueryCondition implements Serializable { 13 | @ApiModelProperty(value = "用户名,模糊查询") 14 | private String name; 15 | 16 | @ApiModelProperty(value = "查询开始时间", example = "2022-6-24 12:00:00") 17 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 18 | private String beginTime; 19 | 20 | @ApiModelProperty(value = "查询结束时间", example = "2022-6-24 12:00:00") 21 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 22 | private String endTime; 23 | } 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/cms/BannerQueryCondition.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.cms; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | @Data 9 | @ApiModel(value = "banner查询对象", description = "查询banner要封装的对象") 10 | public class BannerQueryCondition { 11 | @ApiModelProperty(value = "banner标题") 12 | private String title; 13 | 14 | @ApiModelProperty(value = "banner是否启用") 15 | private Boolean isEnable; 16 | 17 | @ApiModelProperty(value = "查询开始时间", example = "2022-6-24 12:00:00") 18 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 19 | private String beginTime; 20 | 21 | @ApiModelProperty(value = "查询结束时间", example = "2022-6-24 12:00:00") 22 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 23 | private String endTime; 24 | } 25 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/edu/admin/ChapterVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.edu.admin; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @ApiModel(value = "章节VO", description = "传输章节的VO类") 11 | public class ChapterVO { 12 | @ApiModelProperty(value = "章节id") 13 | private Long id; 14 | 15 | @ApiModelProperty(value = "章节名称") 16 | private String title; 17 | 18 | @ApiModelProperty(value = "当前章节下的子小节") 19 | private List children; 20 | } -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/edu/admin/CoursePublishVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.edu.admin; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | @Data 8 | @ApiModel(value = "课程发布的VO对象", description = "课程发布时前后端交互的对象") 9 | public class CoursePublishVO { 10 | @ApiModelProperty(value = "课程id") 11 | private Long id; 12 | 13 | @ApiModelProperty(value = "课程名称") 14 | private String title; 15 | 16 | @ApiModelProperty(value = "课程封面") 17 | private String cover; 18 | 19 | @ApiModelProperty(value = "课时数") 20 | private Integer lessonNum; 21 | 22 | @ApiModelProperty(value = "一级分类名称") 23 | private String subjectName; 24 | 25 | @ApiModelProperty(value = "二级分类名称") 26 | private String typeName; 27 | 28 | @ApiModelProperty(value = "讲师名称") 29 | private String teacherName; 30 | 31 | @ApiModelProperty(value = "课程价格,只用于显示") 32 | private String price; 33 | } 34 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/edu/admin/StudyRecordQueryCondition.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.edu.admin; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | 10 | @Data 11 | @ApiModel(value = "学习记录查询对象", description = "学习记录查询对象封装") 12 | public class StudyRecordQueryCondition { 13 | @ApiModelProperty(value = "评论用户昵称") 14 | private String nickname; 15 | 16 | @ApiModelProperty(value = "课程名称") 17 | private String courseName; 18 | 19 | @ApiModelProperty(value = "查询开始时间", example = "2022-6-24 12:00:00") 20 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 21 | private String beginTime; 22 | 23 | @ApiModelProperty(value = "查询结束时间", example = "2022-6-24 12:00:00") 24 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 25 | private String endTime; 26 | } 27 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/edu/admin/SubjectDownloadVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.edu.admin; 2 | 3 | import com.alibaba.excel.annotation.ExcelProperty; 4 | import io.swagger.annotations.ApiModel; 5 | import lombok.Data; 6 | 7 | @Data 8 | @ApiModel(value = "学科下载的VO对象", description = "学科下载的VO对象") 9 | public class SubjectDownloadVO { 10 | @ExcelProperty("学科名") 11 | private String subject; 12 | 13 | @ExcelProperty("父学科名") 14 | private String parentSubject; 15 | } 16 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/edu/admin/VideoVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.edu.admin; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | @Data 8 | @ApiModel(value = "视频VO", description = "传输的视频VO类") 9 | public class VideoVO { 10 | @ApiModelProperty(value = "章节id") 11 | private Long id; 12 | 13 | @ApiModelProperty(value = "节点名称") 14 | private String title; 15 | 16 | @ApiModelProperty(value = "云端视频资源") 17 | private String videoSourceId; 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/ucenter/admin/MemberQueryCondition.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.ucenter.admin; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | @Data 9 | @ApiModel(value = "member查询对象", description = "前后端交互时查询用户的VO对象") 10 | public class MemberQueryCondition { 11 | @ApiModelProperty(value = "用户昵称") 12 | private String nickname; 13 | 14 | @ApiModelProperty(value = "用户是否启用") 15 | private Boolean isEnable; 16 | 17 | @ApiModelProperty(value = "查询开始时间", example = "2022-6-24 12:00:00") 18 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 19 | private String beginTime; 20 | 21 | @ApiModelProperty(value = "查询结束时间", example = "2022-6-24 12:00:00") 22 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 23 | private String endTime; 24 | } 25 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/ucenter/user/LoginVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.ucenter.user; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import javax.validation.constraints.NotBlank; 8 | import javax.validation.constraints.Pattern; 9 | 10 | @Data 11 | @ApiModel(value = "登录对象", description = "登录对象") 12 | public class LoginVO { 13 | @ApiModelProperty(value = "手机号") 14 | @NotBlank(message = "手机号不能为空") 15 | @Pattern(regexp = "^1[3-9]\\d{9}$") 16 | private String mobile; 17 | 18 | @ApiModelProperty(value = "密码") 19 | @NotBlank(message = "密码不能为空") 20 | private String password; 21 | } -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/ucenter/user/PasswordVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.ucenter.user; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import javax.validation.constraints.NotBlank; 8 | 9 | @Data 10 | @ApiModel(value = "修改密码VO", description = "学生端修改密码的VO") 11 | public class PasswordVO { 12 | @ApiModelProperty(value = "手机号") 13 | @NotBlank(message = "手机号不能为空") 14 | private String mobile; 15 | 16 | @ApiModelProperty(value = "密码,发送过来的密码就应该为MD5加密后的密码") 17 | @NotBlank(message = "密码不能为空") 18 | private String password; 19 | 20 | @ApiModelProperty(value = "验证码") 21 | @NotBlank(message = "验证码不能为空") 22 | private String code; 23 | } 24 | -------------------------------------------------------------------------------- /OnlineEducationSystem/model/src/main/java/com/zh/oes/model/vo/ucenter/user/RegisterVO.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.model.vo.ucenter.user; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import javax.validation.constraints.NotBlank; 8 | 9 | @Data 10 | @ApiModel(value = "注册对象", description = "注册时前后端交互对象") 11 | public class RegisterVO { 12 | @ApiModelProperty(value = "昵称") 13 | @NotBlank(message = "昵称不能为空") 14 | private String nickname; 15 | 16 | @ApiModelProperty(value = "手机号") 17 | @NotBlank(message = "手机号不能为空") 18 | private String mobile; 19 | 20 | @ApiModelProperty(value = "密码") 21 | @NotBlank(message = "密码不能为空") 22 | private String password; 23 | 24 | @ApiModelProperty(value = "验证码") 25 | @NotBlank(message = "验证码不能为空") 26 | private String code; 27 | } 28 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | service 7 | com.zh.oes 8 | 0.0.1-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | service_auth 13 | 后台登录鉴权模块 14 | jar 15 | 16 | 17 | 8 18 | 8 19 | 20 | 21 | 22 | 23 | com.zh.oes 24 | spring_security 25 | 0.0.1-SNAPSHOT 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/AuthApplication.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | @SpringBootApplication 7 | public class AuthApplication { 8 | public static void main(String[] args) { 9 | SpringApplication.run(AuthApplication.class, args); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/PermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.auth.Permission; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | *

10 | * 权限 Mapper 接口 11 | *

12 | * 13 | * @author nichijoux 14 | * @since 2022-07-21 15 | */ 16 | public interface PermissionMapper extends BaseMapper { 17 | // 根据用户名获取权限菜单 18 | List selectPermissionListByUserId(Long userId); 19 | 20 | // 获取所有的权限值 21 | List selectAllPermissionValue(); 22 | 23 | // 根据用户id获取权限值 24 | List selectPermissionValueByUserId(Long userId); 25 | } 26 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.auth.Role; 5 | 6 | /** 7 | *

8 | * Mapper 接口 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface RoleMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/RolePermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.auth.RolePermission; 5 | 6 | /** 7 | *

8 | * 角色权限 Mapper 接口 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface RolePermissionMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.auth.User; 5 | 6 | /** 7 | *

8 | * 用户表 Mapper 接口 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface UserMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.auth.UserRole; 5 | 6 | /** 7 | *

8 | * Mapper 接口 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface UserRoleMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/xml/RoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/xml/RolePermissionMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/xml/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/mapper/xml/UserRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/service/IndexService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.service; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | public interface IndexService { 9 | // 根据用户名获取菜单 10 | List getMenu(String username); 11 | 12 | // 根据用户名获取用户信息 13 | Map getUserInfo(String username); 14 | } 15 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.service; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.zh.oes.model.entity.auth.Permission; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | *

11 | * 权限 服务类 12 | *

13 | * 14 | * @author nichijoux 15 | * @since 2022-07-21 16 | */ 17 | public interface PermissionService extends IService { 18 | // 获取所有的权限信息 19 | Permission getAllPermission(); 20 | 21 | // 根据角色id获取角色的权限信息 22 | Permission getRolePermission(Long roleId); 23 | 24 | // 给roleId的角色分配权限 25 | void assignRolePermission(Long roleId, Long[] permissionIdList); 26 | 27 | // 递归删除权限菜单 28 | boolean deletePermissionById(Long permissionId); 29 | 30 | // 根据用户id获取动态菜单 31 | List getPermissionByUserId(Long id); 32 | 33 | // 根据用户id获取权限值 34 | List getPermissionValueByUserId(Long id); 35 | } 36 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/service/RolePermissionService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.zh.oes.model.entity.auth.RolePermission; 5 | 6 | /** 7 | *

8 | * 角色权限 服务类 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface RolePermissionService extends IService { 15 | 16 | // 禁用或者启用用户权限 17 | void enableOrDisableRolePermission(Long roleId, Boolean isEnable); 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.zh.oes.model.entity.auth.Role; 6 | import com.zh.oes.model.vo.auth.RoleQueryCondition; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | *

13 | * 服务类 14 | *

15 | * 16 | * @author nichijoux 17 | * @since 2022-07-21 18 | */ 19 | public interface RoleService extends IService { 20 | // 分页条件查询角色信息 21 | Page pageQueryRole(Long index, Long limit, RoleQueryCondition queryCondition); 22 | 23 | // 根据用户id获取用户角色 24 | Map getRoleByUserId(Long userId); 25 | 26 | // 根据用户id分配用户角色 27 | boolean assignRole(Long userId, Long[] roleIdList); 28 | 29 | // 获取角色列表 30 | List getRoleListByUserId(Long userId); 31 | 32 | // 根据角色id启用或者禁用某个角色 33 | void enableOrDisableRole(Long roleId, Boolean isEnable); 34 | } 35 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/service/UserRoleService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.service; 2 | 3 | import com.baomidou.mybatisplus.extension.service.IService; 4 | import com.zh.oes.model.entity.auth.UserRole; 5 | 6 | /** 7 | *

8 | * 服务类 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface UserRoleService extends IService { 15 | 16 | // 启用或者禁用用户id为userId的角色 17 | void enableOrDisableUserRole(Long userId, Boolean isEnable); 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/java/com/zh/oes/auth/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.auth.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.zh.oes.model.entity.auth.User; 6 | import com.zh.oes.model.vo.auth.UserQueryCondition; 7 | 8 | /** 9 | *

10 | * 用户表 服务类 11 | *

12 | * 13 | * @author nichijoux 14 | * @since 2022-07-21 15 | */ 16 | public interface UserService extends IService { 17 | // 分页查询用户信息 18 | Page pageQueryUser(Long index, Long limit, UserQueryCondition queryCondition); 19 | 20 | // 根据用户名获取用户 21 | User getByUsername(String username); 22 | 23 | // 根据角色id启用或者禁用某个用户 24 | void enableOrDisableUser(Long userId, Boolean isEnable); 25 | } 26 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_auth/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # \u670D\u52A1\u7AEF\u53E3 2 | server.port=8000 3 | # \u670D\u52A1\u540D,\u6700\u597D\u4E0D\u8981\u6709\u4E0B\u5212\u7EBF 4 | spring.application.name=service-auth 5 | # \u73AF\u5883\u8BBE\u7F6E\uFF1Adev\u3001test\u3001prod 6 | spring.profiles.active=dev 7 | # mysql\u6570\u636E\u5E93\u8FDE\u63A5 8 | spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver 9 | spring.datasource.url=jdbc:mysql://localhost:3306/oes?serverTimezone=GMT%2B8&useSSL=false 10 | spring.datasource.username=study 11 | spring.datasource.password=123456789 12 | # \u8FD4\u56DEjson\u7684\u5168\u5C40\u65F6\u95F4\u683C\u5F0F 13 | spring.jackson.date-format=yyyy-MM-dd HH:mm:ss 14 | spring.jackson.time-zone=GMT-8 15 | # \u914D\u7F6Emapper xml\u6587\u4EF6\u8DEF\u5F84 16 | mybatis-plus.mapper-locations=classpath:com/zh/oes/auth/mapper/xml/*.xml 17 | # nacos\u670D\u52A1\u5730\u5740 18 | spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_cms/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | service 7 | com.zh.oes 8 | 0.0.1-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | service_cms 13 | 首页轮播图服务模块 14 | jar 15 | 16 | 17 | 8 18 | 8 19 | 20 | 21 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_cms/src/main/java/com/zh/oes/cms/CmsApplication.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.cms; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | @SpringBootApplication 8 | @EnableDiscoveryClient 9 | public class CmsApplication { 10 | public static void main(String[] args) { 11 | SpringApplication.run(CmsApplication.class, args); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_cms/src/main/java/com/zh/oes/cms/mapper/BannerMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.cms.mapper; 2 | 3 | import com.zh.oes.model.entity.cms.Banner; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 首页banner表 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-07-25 14 | */ 15 | @Mapper 16 | public interface BannerMapper extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_cms/src/main/java/com/zh/oes/cms/mapper/xml/BannerMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_cms/src/main/java/com/zh/oes/cms/service/BannerService.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.cms.service; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | import com.zh.oes.model.entity.cms.Banner; 6 | import com.zh.oes.model.vo.cms.BannerQueryCondition; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | *

12 | * 首页banner表 服务类 13 | *

14 | * 15 | * @author nichijoux 16 | * @since 2022-07-25 17 | */ 18 | public interface BannerService extends IService { 19 | // 分页查询banner信息 20 | Page pageQueryBanner(Long index, Long limit, BannerQueryCondition queryCondition); 21 | 22 | // 获取所有的未被禁止的banner数据 23 | List getAllBanner(); 24 | } 25 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | service 7 | com.zh.oes 8 | 0.0.1-SNAPSHOT 9 | 10 | 4.0.0 11 | 12 | service_edu 13 | 核心业务模块 14 | jar 15 | 16 | 17 | 8 18 | 8 19 | 20 | 21 | 22 | 23 | 24 | com.alibaba 25 | easyexcel 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/EduApplication.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | import org.springframework.cloud.openfeign.EnableFeignClients; 7 | 8 | @SpringBootApplication 9 | @EnableDiscoveryClient 10 | @EnableFeignClients(basePackages = "com.zh.oes.common.base.client") 11 | public class EduApplication { 12 | public static void main(String[] args) { 13 | SpringApplication.run(EduApplication.class, args); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/ChapterMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.zh.oes.model.entity.edu.Chapter; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 课程 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-07-23 14 | */ 15 | @Mapper 16 | public interface ChapterMapper extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/CommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.zh.oes.model.entity.edu.Comment; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 评论 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-07-23 14 | */ 15 | @Mapper 16 | public interface CommentMapper extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/CourseCollectMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.zh.oes.model.entity.edu.CourseCollect; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 课程收藏 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-08-08 14 | */ 15 | @Mapper 16 | public interface CourseCollectMapper extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/CourseMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.edu.Course; 5 | import com.zh.oes.model.vo.edu.admin.CoursePublishVO; 6 | import com.zh.oes.model.vo.edu.user.CourseUserInfoVO; 7 | import org.apache.ibatis.annotations.Mapper; 8 | 9 | /** 10 | *

11 | * 课程 Mapper 接口 12 | *

13 | * 14 | * @author nichijoux 15 | * @since 2022-07-21 16 | */ 17 | @Mapper 18 | public interface CourseMapper extends BaseMapper { 19 | // 查询课程发布需要显示的内容 20 | CoursePublishVO getPublishCourse(Long courseId); 21 | 22 | // 学员端根据课程id查询课程信息,包括课程下的章节和小节 23 | CourseUserInfoVO getUserCourseInfo(Long courseId); 24 | } 25 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/StudyRecordMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.zh.oes.model.entity.edu.StudyRecord; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 学生学习记录 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-08-14 14 | */ 15 | @Mapper 16 | public interface StudyRecordMapper extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/SubjectMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.zh.oes.model.entity.edu.Subject; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 课程科目 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-07-23 14 | */ 15 | @Mapper 16 | public interface SubjectMapper extends BaseMapper { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/TeacherMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.zh.oes.model.entity.edu.Teacher; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 讲师 Mapper 接口 9 | *

10 | * 11 | * @author nichijoux 12 | * @since 2022-07-21 13 | */ 14 | public interface TeacherMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /OnlineEducationSystem/service/service_edu/src/main/java/com/zh/oes/edu/mapper/VideoMapper.java: -------------------------------------------------------------------------------- 1 | package com.zh.oes.edu.mapper; 2 | 3 | import com.zh.oes.model.entity.edu.Video; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | import org.apache.ibatis.annotations.Mapper; 6 | 7 | /** 8 | *

9 | * 课程视频 Mapper 接口 10 | *

11 | * 12 | * @author nichijoux 13 | * @since 2022-07-23 14 | */ 15 | @Mapper 16 | public interface VideoMapper extends BaseMapper