├── .gitignore ├── .idea ├── .gitignore ├── YouBili.iml ├── codeStyles │ ├── Project.xml │ └── codeStyleConfig.xml ├── compiler.xml ├── encodings.xml ├── inspectionProfiles │ └── Project_Default.xml ├── jarRepositories.xml ├── misc.xml ├── modules.xml └── vcs.xml ├── README.md ├── YouBili_front ├── .browserslistrc ├── .eslintrc.js ├── README.md ├── YouBili_front.iml ├── babel.config.js ├── jsconfig.json ├── package-lock.json ├── package.json ├── public │ ├── blLogo.png │ ├── index.html │ ├── logo.png │ └── mLogo.png ├── src │ ├── App.vue │ ├── assets │ │ └── iconfont │ │ │ ├── demo.css │ │ │ ├── demo_index.html │ │ │ ├── iconfont.css │ │ │ ├── iconfont.js │ │ │ ├── iconfont.json │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ ├── components │ │ ├── Handder.vue │ │ ├── login.vue │ │ └── sidebar.vue │ ├── main.js │ ├── router │ │ └── index.js │ ├── scrollbar.css │ ├── store │ │ └── index.js │ ├── utils │ │ ├── option.js │ │ └── request.js │ └── views │ │ ├── Home.vue │ │ ├── contribute │ │ ├── contribute.vue │ │ └── contributeManage.vue │ │ ├── pay │ │ ├── orders.vue │ │ └── pay.vue │ │ ├── personal │ │ ├── collection.vue │ │ ├── dynamic.vue │ │ ├── fans.vue │ │ ├── follow.vue │ │ ├── history.vue │ │ ├── notify.vue │ │ ├── otherSpace.vue │ │ ├── personalCenter.vue │ │ └── report.vue │ │ ├── show │ │ ├── IndexView.vue │ │ ├── Search.vue │ │ ├── classification.vue │ │ └── showHot.vue │ │ └── video │ │ └── videoIndex.vue └── vue.config.js ├── youbili-project-backend ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── README.md ├── pom.xml ├── src │ ├── main │ │ ├── java │ │ │ └── cn │ │ │ │ └── tedu │ │ │ │ └── youbiliprojectbackend │ │ │ │ ├── YoubiliProjectBackendApplication.java │ │ │ │ ├── common │ │ │ │ ├── RocketMQ │ │ │ │ │ └── RocketMQRunner.java │ │ │ │ ├── cacheUtils │ │ │ │ │ ├── classification │ │ │ │ │ │ ├── dao │ │ │ │ │ │ │ └── cache │ │ │ │ │ │ │ │ ├── ClassificationCache.java │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── ClssificationCacheImpl.java │ │ │ │ │ │ └── service │ │ │ │ │ │ │ ├── ClassificationService.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── ClassificationServiceImpl.java │ │ │ │ │ ├── count │ │ │ │ │ │ ├── user │ │ │ │ │ │ │ ├── Count.md │ │ │ │ │ │ │ ├── dao │ │ │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ │ │ ├── IUserCountsCacheRepository.java │ │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ │ │ └── UserCountsCacheRepositoryImpl.java │ │ │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ │ │ └── UserCountMapper.java │ │ │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ │ │ ├── IUserCountsRepository.java │ │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ │ └── UserCountsRepository.java │ │ │ │ │ │ │ ├── pojo │ │ │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ │ │ └── UserCountsCacheVO.java │ │ │ │ │ │ │ ├── schedule │ │ │ │ │ │ │ │ └── UserCountsCacheSchedule.java │ │ │ │ │ │ │ └── service │ │ │ │ │ │ │ │ ├── IUserCountsService.java │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── UserCountsService.java │ │ │ │ │ │ └── video │ │ │ │ │ │ │ ├── Count.md │ │ │ │ │ │ │ ├── dao │ │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ │ ├── VideoCountCache.java │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ │ └── VideoCountCacheImpl.java │ │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ │ └── VideoCountMapper.java │ │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ │ ├── VideoCountRepositroy.java │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── VideoCountRepositroyImpl.java │ │ │ │ │ │ │ ├── pojo │ │ │ │ │ │ │ └── VideoCount.java │ │ │ │ │ │ │ └── service │ │ │ │ │ │ │ ├── VideoCountService.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── VideoCountServiceImpl.java │ │ │ │ │ ├── mahout │ │ │ │ │ │ ├── dao │ │ │ │ │ │ │ └── cache │ │ │ │ │ │ │ │ ├── UserCFRun.java │ │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── UserCFRunImpl.java │ │ │ │ │ │ └── service │ │ │ │ │ │ │ ├── UserCFRunService.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── UserCFRunServiceImpl.java │ │ │ │ │ ├── schedule │ │ │ │ │ │ └── CacheSchedule.java │ │ │ │ │ └── videoList │ │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── VideoListCacheRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── VideoListCacheRepositoryImpl.java │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── VideoMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── VideoRepositroy.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── VideoRepositroyImpl.java │ │ │ │ │ │ ├── pojo │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── VideoUserCache.java │ │ │ │ │ │ └── service │ │ │ │ │ │ ├── VideoListService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── VideoListServicImpl.java │ │ │ │ ├── consts │ │ │ │ │ ├── ClssificationConsts.java │ │ │ │ │ ├── CountConsts.java │ │ │ │ │ ├── HistoryConsts.java │ │ │ │ │ ├── HttpConsts.java │ │ │ │ │ ├── MahoutConsts.java │ │ │ │ │ ├── RegisterConsts.java │ │ │ │ │ ├── UserCacheConsts.java │ │ │ │ │ └── VideoConsts.java │ │ │ │ ├── data │ │ │ │ │ ├── dao │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── DataCacheUserCF.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── DataCacheUserCFImpl.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── DataRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── DataRepositoryImpl.java │ │ │ │ │ ├── mapper │ │ │ │ │ │ └── DataMapper.java │ │ │ │ │ └── schedule │ │ │ │ │ │ └── RunnerData.java │ │ │ │ ├── ex │ │ │ │ │ └── ServiceException.java │ │ │ │ ├── pojo │ │ │ │ │ ├── po │ │ │ │ │ │ └── UserLoginInfoPO.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── PageData.java │ │ │ │ ├── security │ │ │ │ │ └── CurrentPrincipal.java │ │ │ │ ├── utils │ │ │ │ │ ├── jwt │ │ │ │ │ │ └── JwtUtils.java │ │ │ │ │ └── pagedate │ │ │ │ │ │ ├── PageData.java │ │ │ │ │ │ └── PageInfoToPageDataConverter.java │ │ │ │ └── web │ │ │ │ │ └── response │ │ │ │ │ ├── RestBean.java │ │ │ │ │ └── ServiceCode.java │ │ │ │ ├── core │ │ │ │ ├── config │ │ │ │ │ ├── AliPayConfig.java │ │ │ │ │ ├── ElasticSearchConfig.java │ │ │ │ │ ├── MybatisConfig.java │ │ │ │ │ ├── RedisConfiguration.java │ │ │ │ │ ├── ScheduleConfiguration.java │ │ │ │ │ ├── SecurityConfiguration.java │ │ │ │ │ ├── ValidationConfiguration.java │ │ │ │ │ └── WebMvcConfiguration.java │ │ │ │ ├── ex │ │ │ │ │ └── handler │ │ │ │ │ │ └── GlobalExceptionHandler.java │ │ │ │ ├── filter │ │ │ │ │ └── JwtAuthorizationFilter.java │ │ │ │ └── mybatis │ │ │ │ │ └── TimeMetaObjectHandler.java │ │ │ │ └── modules │ │ │ │ ├── orders │ │ │ │ ├── controller │ │ │ │ │ ├── AliPayController.java │ │ │ │ │ └── OrdersController.java │ │ │ │ ├── dao │ │ │ │ │ ├── mapper │ │ │ │ │ │ └── OrdersMapper.java │ │ │ │ │ └── repository │ │ │ │ │ │ ├── IOrdersRepository.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── OrdersRepositoryImpl.java │ │ │ │ ├── pojo │ │ │ │ │ ├── entity │ │ │ │ │ │ ├── AliPay.java │ │ │ │ │ │ └── Order.java │ │ │ │ │ ├── param │ │ │ │ │ │ └── OrdersParam.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── OrderListVO.java │ │ │ │ └── service │ │ │ │ │ ├── IOrdersService.java │ │ │ │ │ └── impl │ │ │ │ │ └── OrderServiceImpl.java │ │ │ │ ├── recommend │ │ │ │ ├── mahoutCF │ │ │ │ │ ├── controller │ │ │ │ │ │ └── UserCFController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ └── cache │ │ │ │ │ │ │ ├── DataMahoutCacheCF.java │ │ │ │ │ │ │ ├── UserCFCache.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── DataMahoutCacheCFImpl.java │ │ │ │ │ │ │ └── UserCFCacheImpl.java │ │ │ │ │ ├── mapper │ │ │ │ │ │ └── MahoutMapper.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── MahoutData.java │ │ │ │ │ │ └── UserArticleOperation.java │ │ │ │ │ ├── score │ │ │ │ │ │ ├── ListVideoCF.java │ │ │ │ │ │ ├── MahoutUserCF.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── ListVideoCFImpl.java │ │ │ │ │ │ │ └── MahoutUserCFImpl.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── UserCFService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── UserCFServiceImpl.java │ │ │ │ ├── recommend.md │ │ │ │ └── thermalvalue │ │ │ │ │ ├── controller │ │ │ │ │ └── HeatController.java │ │ │ │ │ ├── dao │ │ │ │ │ ├── cache │ │ │ │ │ │ ├── SaveAndDelete.java │ │ │ │ │ │ ├── Select.java │ │ │ │ │ │ ├── heatCache.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── SaveAndDeleteImpl.java │ │ │ │ │ │ │ ├── SelectImpl.java │ │ │ │ │ │ │ └── heatCacheImpl.java │ │ │ │ │ └── persist │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ └── ThermaMapper.java │ │ │ │ │ │ └── repository │ │ │ │ │ │ ├── ThremaRepository.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── ThremaRepositoryImpl.java │ │ │ │ │ ├── pojo │ │ │ │ │ └── sum │ │ │ │ │ │ ├── HeatVideo.java │ │ │ │ │ │ ├── videoDTO.java │ │ │ │ │ │ ├── videoDay.java │ │ │ │ │ │ └── videoSum.java │ │ │ │ │ ├── schedule │ │ │ │ │ └── HeatSchedule.java │ │ │ │ │ ├── score │ │ │ │ │ ├── ThermalValue.java │ │ │ │ │ └── impl │ │ │ │ │ │ └── ThermaValueImpl.java │ │ │ │ │ └── service │ │ │ │ │ ├── ThermalValueService.java │ │ │ │ │ └── impl │ │ │ │ │ └── ThermalValueServiceImpl.java │ │ │ │ ├── search │ │ │ │ ├── controller │ │ │ │ │ └── VideoSearchController.java │ │ │ │ ├── pojo │ │ │ │ │ ├── param │ │ │ │ │ │ └── VideoSearchParam.java │ │ │ │ │ └── vo │ │ │ │ │ │ └── VideoSearchVO.java │ │ │ │ ├── schedule │ │ │ │ │ └── VideoSearchSchedule.java │ │ │ │ ├── search.md │ │ │ │ └── service │ │ │ │ │ ├── IVideoSearchService.java │ │ │ │ │ └── impl │ │ │ │ │ └── VideoSearchServiceImpl.java │ │ │ │ ├── social │ │ │ │ ├── comment │ │ │ │ │ ├── controller │ │ │ │ │ │ └── CommentController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ ├── CommentMapper.java │ │ │ │ │ │ │ └── CommentreplieMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── ICommentRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── CommentRepositoryImpl.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ ├── Comment.java │ │ │ │ │ │ │ └── Commentreplie.java │ │ │ │ │ │ ├── param │ │ │ │ │ │ │ ├── CommentAddNewParam.java │ │ │ │ │ │ │ └── CommentReplyAddNewParam.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── CommentFirstVO.java │ │ │ │ │ │ │ └── CommentListVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── ICommentService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── CommentServiceImpl.java │ │ │ │ ├── dynamic │ │ │ │ │ ├── controller │ │ │ │ │ │ └── DynamicController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── IDynamicCacheRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── DynamicCacheRepositoryImpl.java │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ └── mapper │ │ │ │ │ │ │ └── DynamicMapper.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── DynamicListVO.java │ │ │ │ │ │ │ └── followedList.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── IDynameicService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── DynameicServiceImpl.java │ │ │ │ ├── like │ │ │ │ │ ├── controller │ │ │ │ │ │ └── LikeController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── LikeMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── ILikeRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── LikeRepository.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ └── Like.java │ │ │ │ │ │ ├── param │ │ │ │ │ │ │ └── LikeParam.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── LikeCountListVO.java │ │ │ │ │ │ │ └── LikeTypeVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── ILikeService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── LikeService.java │ │ │ │ ├── notice │ │ │ │ │ ├── controller │ │ │ │ │ │ └── NoticeController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── NoticeMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── INoticeRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── NoticeRepositoryImpl.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ └── Notice.java │ │ │ │ │ │ ├── param │ │ │ │ │ │ │ └── NoticeDeleteParam.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── NoticeAllListVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── INoticeService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── NoticeServiceImpl.java │ │ │ │ └── social.md │ │ │ │ ├── tag │ │ │ │ ├── classification │ │ │ │ │ ├── controller │ │ │ │ │ │ └── CategoryController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── classificationSelect.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── classificationSelectImpl.java │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── CategoryMapper.java │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── ICategoryRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── CategoryRepositoryImpl.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ └── Category.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── CategoryListVO.java │ │ │ │ │ │ │ ├── CategoryTitleVO.java │ │ │ │ │ │ │ ├── CategoryVideoVO.java │ │ │ │ │ │ │ └── VideoCategoryListVO.java │ │ │ │ │ ├── service │ │ │ │ │ │ ├── ICategoryService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── CategoryServiceImpl.java │ │ │ │ │ └── tag.md │ │ │ │ └── tag.md │ │ │ │ ├── user │ │ │ │ ├── account │ │ │ │ │ ├── account.md │ │ │ │ │ ├── controller │ │ │ │ │ │ ├── AccountController.java │ │ │ │ │ │ └── TestController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── IUserCacheRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── UserCacheRepository.java │ │ │ │ │ │ └── mapper │ │ │ │ │ │ │ └── AccountMapper.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ └── Account.java │ │ │ │ │ │ ├── param │ │ │ │ │ │ │ └── UserLoginInfoParam.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── AccountMeVO.java │ │ │ │ │ │ │ └── UserLoginVO.java │ │ │ │ │ ├── security │ │ │ │ │ │ ├── AccountServiceImpl.java │ │ │ │ │ │ └── CustomUserDetails.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── IUserService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── UserServiceImpl.java │ │ │ │ ├── favorite │ │ │ │ │ ├── controller │ │ │ │ │ │ └── FavoriteController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── FavoriteCacheRepoistory.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── FavoriteCacheRepoistoryImpl.java │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── FavoriteMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── IFavoriteRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── FavoriteRepositroy.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ └── Favorite.java │ │ │ │ │ │ ├── param │ │ │ │ │ │ │ └── FavoriteParam.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── FavoriteVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── IFavoriteService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── FavoriteService.java │ │ │ │ ├── follow │ │ │ │ │ ├── controller │ │ │ │ │ │ ├── FanController.java │ │ │ │ │ │ └── FollowController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ ├── FanMapper.java │ │ │ │ │ │ │ └── FollowMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── IFanRepository.java │ │ │ │ │ │ │ ├── IFollowRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ ├── FanRepositoryImpl.java │ │ │ │ │ │ │ └── FollowRepositoryImpl.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ ├── Follow.java │ │ │ │ │ │ │ └── followedID.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── FanListVO.java │ │ │ │ │ │ │ └── FollowListVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── IFanService.java │ │ │ │ │ │ ├── IFollowService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ ├── FanServiceImpl.java │ │ │ │ │ │ └── FollowServiceImpl.java │ │ │ │ ├── history │ │ │ │ │ ├── controller │ │ │ │ │ │ └── historyController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── HistorySelect.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── HistorySelectImpl.java │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── HistoryMapper.java │ │ │ │ │ │ └── reposity │ │ │ │ │ │ │ ├── IHistoryRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── HistoryRepositoryImpl.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── catche │ │ │ │ │ │ │ ├── HistoryCatch.java │ │ │ │ │ │ │ └── HistoryStandardCatch.java │ │ │ │ │ │ ├── entity │ │ │ │ │ │ │ └── History.java │ │ │ │ │ │ ├── param │ │ │ │ │ │ │ └── HistoryParam.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── HistoryListVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── IHistoryService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── HistoryServiceImpl.java │ │ │ │ ├── personal │ │ │ │ │ ├── controller │ │ │ │ │ │ └── personalController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ └── persist │ │ │ │ │ │ │ ├── mapper │ │ │ │ │ │ │ └── PersonalMapper.java │ │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ ├── IPersonalRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── PersonalRepository.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ ├── CenterVideoInfoVO.java │ │ │ │ │ │ │ ├── PersonalCenterInfoVO.java │ │ │ │ │ │ │ └── PersonalCenterUserInfoVO.java │ │ │ │ │ └── service │ │ │ │ │ │ ├── IPersonalService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── PersonalService.java │ │ │ │ ├── register │ │ │ │ │ ├── controller │ │ │ │ │ │ └── AuthorizeController.java │ │ │ │ │ ├── dao │ │ │ │ │ │ ├── cache │ │ │ │ │ │ │ ├── RegisteCacheRepository.java │ │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ │ └── RegisteCacheRepositoryImpl.java │ │ │ │ │ │ └── mapper │ │ │ │ │ │ │ └── UserMapper.java │ │ │ │ │ ├── pojo │ │ │ │ │ │ ├── dto │ │ │ │ │ │ │ └── AccountRegDTO.java │ │ │ │ │ │ └── vo │ │ │ │ │ │ │ └── UserRegist.java │ │ │ │ │ ├── register.md │ │ │ │ │ └── service │ │ │ │ │ │ ├── AuthorizeService.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── AuthorizeServiceImpl.java │ │ │ │ ├── user.md │ │ │ │ └── usercount │ │ │ │ │ ├── dao │ │ │ │ │ └── cache │ │ │ │ │ │ ├── UserCountCacheRepository.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── UserCountCacheRepositoryImpl.java │ │ │ │ │ └── service │ │ │ │ │ ├── CountSerivce.java │ │ │ │ │ └── impl │ │ │ │ │ └── countServiceImpl.java │ │ │ │ └── video │ │ │ │ ├── barrage │ │ │ │ ├── controller │ │ │ │ │ └── BarrageController.java │ │ │ │ ├── pojo │ │ │ │ │ ├── DTO │ │ │ │ │ │ └── BarrageDTO.java │ │ │ │ │ ├── VO │ │ │ │ │ │ └── BarrageVO.java │ │ │ │ │ └── entity │ │ │ │ │ │ └── Barrage.java │ │ │ │ └── server │ │ │ │ │ ├── BarrageService.java │ │ │ │ │ └── impl │ │ │ │ │ └── BarrageServiceImpl.java │ │ │ │ ├── index │ │ │ │ ├── controller │ │ │ │ │ └── videoController.java │ │ │ │ ├── dao │ │ │ │ │ ├── cache │ │ │ │ │ │ ├── IVideoListCache.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ │ └── VideoListCache.java │ │ │ │ │ └── persist │ │ │ │ │ │ └── mapper │ │ │ │ │ │ └── TagMapper.java │ │ │ │ ├── pojo │ │ │ │ │ └── vo │ │ │ │ │ │ ├── VideoTagVO.java │ │ │ │ │ │ └── videoListVO.java │ │ │ │ └── service │ │ │ │ │ ├── IVideoListService.java │ │ │ │ │ └── impl │ │ │ │ │ └── VideoListServiceImpl.java │ │ │ │ ├── uplaod │ │ │ │ ├── controller │ │ │ │ │ ├── Consumer.java │ │ │ │ │ └── VideoUploadController.java │ │ │ │ ├── dao │ │ │ │ │ ├── mapper │ │ │ │ │ │ ├── AddCategoryMapper.java │ │ │ │ │ │ ├── AddTagMapper.java │ │ │ │ │ │ └── VideoUploadMapper.java │ │ │ │ │ └── repository │ │ │ │ │ │ ├── IVideoUpload.java │ │ │ │ │ │ └── impl │ │ │ │ │ │ └── VideoUploadImpl.java │ │ │ │ ├── pojo │ │ │ │ │ └── dto │ │ │ │ │ │ ├── UploadContentDTO.java │ │ │ │ │ │ ├── UploadTextDTO.java │ │ │ │ │ │ ├── VideoCategoryDTO.java │ │ │ │ │ │ ├── VideoTagDTO.java │ │ │ │ │ │ └── VideoUpdateDTO.java │ │ │ │ ├── service │ │ │ │ │ ├── IVideoUploadService.java │ │ │ │ │ └── impl │ │ │ │ │ │ └── VideoUploadServiceImpl.java │ │ │ │ └── video.md │ │ │ │ ├── video.md │ │ │ │ └── videocount │ │ │ │ └── dao │ │ │ │ └── cache │ │ │ │ ├── VideoCountCacheRepository.java │ │ │ │ └── impl │ │ │ │ └── VideoCountCacheRepositoryImpl.java │ │ ├── main.iml │ │ └── resources │ │ │ ├── META-INF │ │ │ └── spring │ │ │ │ └── org.springframework.boot.autoconfigure.AutoConfiguration.imports │ │ │ ├── application.yaml │ │ │ ├── mapper │ │ │ ├── comment │ │ │ │ └── CommentMapper.xml │ │ │ ├── count │ │ │ │ ├── UserCountMapper.xml │ │ │ │ └── VideoCountMapper.xml │ │ │ ├── data │ │ │ │ └── DataMapper.xml │ │ │ ├── likes │ │ │ │ └── LikeMapper.xml │ │ │ ├── notice │ │ │ │ └── NoticeMapper.xml │ │ │ ├── order │ │ │ │ └── OrdersMapper.xml │ │ │ ├── recommend │ │ │ │ ├── MahoutMapper.xml │ │ │ │ └── ThermaMapper.xml │ │ │ ├── tag │ │ │ │ └── CategoryMapper.xml │ │ │ ├── user │ │ │ │ ├── AccountMapper.xml │ │ │ │ ├── FanMapper.xml │ │ │ │ ├── FavoriteMapper.xml │ │ │ │ ├── FollowMapper.xml │ │ │ │ ├── HistoryMapper.xml │ │ │ │ ├── PersonalMapper.xml │ │ │ │ └── UserMapper.xml │ │ │ └── video │ │ │ │ ├── TagMapper.xml │ │ │ │ ├── VideoCategoryMapper.xml │ │ │ │ ├── VideoMapper.xml │ │ │ │ ├── VideoTagMapper.xml │ │ │ │ └── VideoUploadMapper.xml │ │ │ └── static │ │ │ └── banner.txt │ └── test │ │ └── java │ │ └── cn │ │ └── tedu │ │ └── youbiliprojectbackend │ │ ├── RocketMQ.java │ │ ├── YoubiliProjectBackendApplicationTests.java │ │ ├── config │ │ ├── CountDemo.java │ │ ├── ServiceTest.java │ │ └── video.java │ │ ├── favoriteTest.java │ │ ├── history.http │ │ ├── mahout │ │ ├── Heat.java │ │ └── Mahout.java │ │ └── thermalValue │ │ └── Strom.java └── 内网穿透 支付沙箱.md └── 设计部分 ├── YouBili项目文档(1).docx ├── img.png ├── img_1.png ├── img_2.png ├── script.sql └── youbili_Mysql.sql /.gitignore: -------------------------------------------------------------------------------- 1 | /YouBili_front/node_modules/ 2 | /youbili-project-backend/src/main/resources/videos/2023-04-14 10-44-46.mp4 3 | /youbili-project-backend/src/main/resources/application-dev.yaml 4 | /youbili-project-backend/src/main/resources/application-ecs.yaml 5 | /youbili-project-backend/src/main/resources/application-public.yaml 6 | 7 | -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # 默认忽略的文件 2 | /shelf/ 3 | /workspace.xml 4 | # 基于编辑器的 HTTP 客户端请求 5 | /httpRequests/ 6 | # Datasource local storage ignored files 7 | /dataSources/ 8 | /dataSources.local.xml 9 | # Zeppelin 忽略的文件 10 | /ZeppelinRemoteNotebooks/ 11 | -------------------------------------------------------------------------------- /.idea/YouBili.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/jarRepositories.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 14 | 15 | 19 | 20 | 24 | 25 | 29 | 30 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /YouBili_front/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /YouBili_front/.eslintrc.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/.eslintrc.js -------------------------------------------------------------------------------- /YouBili_front/README.md: -------------------------------------------------------------------------------- 1 | # group 2 | 3 | ## Project setup 4 | 5 | ``` 6 | npm install 7 | ``` 8 | 9 | ### Compiles and hot-reloads for development 10 | 11 | ``` 12 | npm run serve 13 | ``` 14 | 15 | ### Compiles and minifies for production 16 | 17 | ``` 18 | npm run build 19 | ``` 20 | 21 | ### Lints and fixes files 22 | 23 | ``` 24 | npm run lint 25 | ``` 26 | 27 | ### Customize configuration 28 | 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /YouBili_front/YouBili_front.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /YouBili_front/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /YouBili_front/jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "esnext", 5 | "baseUrl": "./", 6 | "moduleResolution": "node", 7 | "paths": { 8 | "@/*": [ 9 | "src/*" 10 | ] 11 | }, 12 | "lib": [ 13 | "esnext", 14 | "dom", 15 | "dom.iterable", 16 | "scripthost" 17 | ] 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /YouBili_front/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "YouBili", 3 | "version": "1.0.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve --port 8100", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "@nplayer/danmaku": "^1.0.12", 12 | "axios": "^1.4.0", 13 | "cookie-session": "^2.0.0", 14 | "core-js": "^3.8.3", 15 | "element-ui": "^2.15.13", 16 | "hls.js": "^1.4.4", 17 | "nplayer": "^1.0.15", 18 | "plyr": "^3.7.8", 19 | "qs": "^6.11.2", 20 | "vue": "^2.6.14", 21 | "vue-router": "^3.5.1", 22 | "vuex": "^3.6.2" 23 | }, 24 | "devDependencies": { 25 | "@babel/core": "^7.12.16", 26 | "@babel/eslint-parser": "^7.12.16", 27 | "@vue/cli-plugin-babel": "~5.0.0", 28 | "@vue/cli-plugin-eslint": "~5.0.0", 29 | "@vue/cli-plugin-router": "~5.0.0", 30 | "@vue/cli-plugin-vuex": "~5.0.0", 31 | "@vue/cli-service": "~5.0.0", 32 | "eslint": "^7.32.0", 33 | "eslint-plugin-vue": "^8.0.3", 34 | "vue-template-compiler": "^2.6.14", 35 | "webpack": "^5.88.2", 36 | "webpack-cli": "^5.1.4" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /YouBili_front/public/blLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/public/blLogo.png -------------------------------------------------------------------------------- /YouBili_front/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | YouBili 9 | 10 | 11 | 15 |
16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /YouBili_front/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/public/logo.png -------------------------------------------------------------------------------- /YouBili_front/public/mLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/public/mLogo.png -------------------------------------------------------------------------------- /YouBili_front/src/App.vue: -------------------------------------------------------------------------------- 1 | 13 | 14 | 17 | 18 | 38 | -------------------------------------------------------------------------------- /YouBili_front/src/assets/iconfont/iconfont.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "iconfont"; /* Project id 4186615 */ 3 | src: url('iconfont.woff2?t=1690462235934') format('woff2'), 4 | url('iconfont.woff?t=1690462235934') format('woff'), 5 | url('iconfont.ttf?t=1690462235934') format('truetype'); 6 | } 7 | 8 | .iconfont { 9 | font-family: "iconfont" !important; 10 | font-size: 16px; 11 | font-style: normal; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | .icon-shoucang:before { 17 | content: "\e617"; 18 | } 19 | 20 | .icon-shoucang-copy:before { 21 | content: "\e618"; 22 | } 23 | 24 | .icon-dianzan:before { 25 | content: "\e600"; 26 | } 27 | 28 | .icon-icon:before { 29 | content: "\e601"; 30 | } 31 | 32 | .icon-dianzan-copy:before { 33 | content: "\e602"; 34 | } 35 | 36 | .icon-icon-copy:before { 37 | content: "\e603"; 38 | } 39 | 40 | -------------------------------------------------------------------------------- /YouBili_front/src/assets/iconfont/iconfont.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "4186615", 3 | "name": "youbili", 4 | "font_family": "iconfont", 5 | "css_prefix_text": "icon-", 6 | "description": "", 7 | "glyphs": [ 8 | { 9 | "icon_id": "3267409", 10 | "name": "收藏", 11 | "font_class": "shoucang", 12 | "unicode": "e617", 13 | "unicode_decimal": 58903 14 | }, 15 | { 16 | "icon_id": "36645350", 17 | "name": "收藏-copy", 18 | "font_class": "shoucang-copy", 19 | "unicode": "e618", 20 | "unicode_decimal": 58904 21 | }, 22 | { 23 | "icon_id": "2019653", 24 | "name": "点赞", 25 | "font_class": "dianzan", 26 | "unicode": "e600", 27 | "unicode_decimal": 58880 28 | }, 29 | { 30 | "icon_id": "29048201", 31 | "name": "赞", 32 | "font_class": "icon", 33 | "unicode": "e601", 34 | "unicode_decimal": 58881 35 | }, 36 | { 37 | "icon_id": "36645343", 38 | "name": "点赞-copy", 39 | "font_class": "dianzan-copy", 40 | "unicode": "e602", 41 | "unicode_decimal": 58882 42 | }, 43 | { 44 | "icon_id": "36645346", 45 | "name": "赞-copy", 46 | "font_class": "icon-copy", 47 | "unicode": "e603", 48 | "unicode_decimal": 58883 49 | } 50 | ] 51 | } 52 | -------------------------------------------------------------------------------- /YouBili_front/src/assets/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/src/assets/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /YouBili_front/src/assets/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/src/assets/iconfont/iconfont.woff -------------------------------------------------------------------------------- /YouBili_front/src/assets/iconfont/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/YouBili_front/src/assets/iconfont/iconfont.woff2 -------------------------------------------------------------------------------- /YouBili_front/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui'; 3 | import 'element-ui/lib/theme-chalk/index.css'; 4 | import App from './App.vue' 5 | import router from './router' 6 | import store from './store' 7 | import axios from "axios"; 8 | import qs from "qs" 9 | 10 | 11 | Vue.use(qs) 12 | Vue.prototype.axios = axios; 13 | Vue.use(ElementUI); 14 | Vue.prototype.$bus = new Vue(); 15 | 16 | 17 | Vue.config.productionTip = false 18 | axios.defaults.withCredentials = true; //允许携带session 19 | 20 | 21 | new Vue({ 22 | router, 23 | store, 24 | render: h => h(App) 25 | }).$mount('#app') 26 | -------------------------------------------------------------------------------- /YouBili_front/src/scrollbar.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | ::-webkit-scrollbar { 3 | width: 5px; 4 | } 5 | 6 | /*定义滚动条轨道 内阴影+圆角*/ 7 | ::-webkit-scrollbar-track { 8 | border-radius: 10px; 9 | background-color: rgba(0, 0, 0, 0.1); 10 | } 11 | 12 | /*定义滑块 内阴影+圆角*/ 13 | ::-webkit-scrollbar-thumb { 14 | border-radius: 10px; 15 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3); 16 | background-color: rgba(0, 0, 0, 0.1); 17 | } -------------------------------------------------------------------------------- /YouBili_front/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | export default new Vuex.Store({ 7 | state: {}, 8 | getters: {}, 9 | mutations: {}, 10 | actions: {}, 11 | modules: {} 12 | }) 13 | -------------------------------------------------------------------------------- /YouBili_front/vue.config.js: -------------------------------------------------------------------------------- 1 | const {defineConfig} = require('@vue/cli-service') 2 | module.exports = defineConfig({ 3 | transpileDependencies: true, 4 | lintOnSave: false, 5 | }) 6 | -------------------------------------------------------------------------------- /youbili-project-backend/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/youbili-project-backend/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /youbili-project-backend/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.2/apache-maven-3.9.2-bin.zip 2 | wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar 3 | -------------------------------------------------------------------------------- /youbili-project-backend/README.md: -------------------------------------------------------------------------------- 1 | ### 后端 2 | 3 | 后端项目文档 4 | 5 | ##### 需要在application.yaml之中添加配置: 6 | 7 | *** 8 | 9 | * mysql 10 | * elasticsearch 11 | * mongoDB 12 | * OSS(MinIO) 注: 使用MinIO需要单独引入依赖 13 | * Redis 14 | * 支付宝沙箱配置 15 | * Spring-mail 16 | * RocketMQ 17 | 18 | ##### 应用对应版本 19 | 20 | * MySQL 8.0 21 | * elasticsearch 8.8.2 22 | * mongoDB 6.0 23 | * Redis 7.0 24 | * JDK-17 25 | * -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/YoubiliProjectBackendApplication.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | 7 | @Slf4j 8 | @SpringBootApplication 9 | public class YoubiliProjectBackendApplication { 10 | 11 | public static void main(String[] args) { 12 | SpringApplication.run(YoubiliProjectBackendApplication.class, args); 13 | log.debug("------项目启动成功!!!-----"); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/RocketMQ/RocketMQRunner.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.RocketMQ; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.controller.Consumer; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.ApplicationArguments; 7 | import org.springframework.boot.ApplicationRunner; 8 | import org.springframework.stereotype.Component; 9 | 10 | /** 11 | * @author 张岩 12 | */ 13 | @Component 14 | @Slf4j 15 | public class RocketMQRunner implements ApplicationRunner { 16 | @Autowired 17 | private Consumer consumer; 18 | 19 | @Override 20 | public void run(ApplicationArguments args) throws Exception { 21 | log.debug("------------开始!!!消息队列---------------"); 22 | consumer.consumer(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/classification/dao/cache/ClassificationCache.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.ClssificationConsts; 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 分类缓存 10 | * 11 | * @author 赵錾 12 | */ 13 | public interface ClassificationCache extends ClssificationConsts { 14 | /** 15 | * 将分类信息放入缓存之中; 16 | */ 17 | void SaveClssificationCache(List categoryTitleVOS); 18 | 19 | void deleteAll(); 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/classification/dao/cache/impl/ClssificationCacheImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.dao.cache.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.dao.cache.ClassificationCache; 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.data.redis.core.RedisTemplate; 7 | import org.springframework.data.redis.core.ValueOperations; 8 | import org.springframework.stereotype.Repository; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | /** 14 | * 实现类 15 | * 16 | * @author 赵錾 17 | */ 18 | @Repository 19 | public class ClssificationCacheImpl implements ClassificationCache { 20 | 21 | @Autowired 22 | RedisTemplate template; 23 | 24 | /** 25 | * 将分类信息放入缓存之中; 26 | */ 27 | @Override 28 | public void SaveClssificationCache(List categoryTitleVOS) { 29 | ValueOperations operations = template.opsForValue(); 30 | String key = CATEGORY_LIST; 31 | operations.set(key, (Serializable) categoryTitleVOS); 32 | } 33 | 34 | @Override 35 | public void deleteAll() { 36 | String key = CATEGORY_LIST; 37 | template.delete(key); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/classification/service/ClassificationService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.service; 2 | 3 | /** 4 | * 分类 5 | * 6 | * @author 赵錾 7 | */ 8 | 9 | public interface ClassificationService { 10 | /** 11 | * 启动时将分类列表放入redis之中 12 | */ 13 | void CacheClassification(); 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/classification/service/impl/ClassificationServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.dao.cache.ClassificationCache; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.classification.service.ClassificationService; 5 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.repository.ICategoryRepository; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | /** 11 | * 实现类 12 | * 13 | * @author 赵錾 14 | */ 15 | @Slf4j 16 | @Service 17 | public class ClassificationServiceImpl implements ClassificationService { 18 | 19 | @Autowired 20 | ClassificationCache classificationCache; 21 | @Autowired 22 | private ICategoryRepository categoryRepository; 23 | 24 | 25 | /** 26 | * 启动时将分类列表放入redis之中 27 | */ 28 | @Override 29 | public void CacheClassification() { 30 | log.debug("开始向缓存之中写入数据"); 31 | classificationCache.deleteAll(); 32 | classificationCache.SaveClssificationCache(categoryRepository.list()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/Count.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/Count.md -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/dao/cache/IUserCountsCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.pojo.vo.UserCountsCacheVO; 4 | 5 | import java.util.List; 6 | 7 | public interface IUserCountsCacheRepository { 8 | void save(List userCounts); 9 | 10 | void deleteAll(); 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/dao/persist/mapper/UserCountMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.pojo.vo.UserCountsCacheVO; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | @Repository 9 | public interface UserCountMapper { 10 | List selectAll(); 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/dao/persist/repository/IUserCountsRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.pojo.vo.UserCountsCacheVO; 4 | 5 | import java.util.List; 6 | 7 | public interface IUserCountsRepository { 8 | List selectAll(); 9 | } 10 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/dao/persist/repository/impl/UserCountsRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.persist.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.persist.mapper.UserCountMapper; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.persist.repository.IUserCountsRepository; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.pojo.vo.UserCountsCacheVO; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | @Repository 12 | public class UserCountsRepository implements IUserCountsRepository { 13 | @Autowired 14 | private UserCountMapper mapper; 15 | 16 | @Override 17 | public List selectAll() { 18 | return mapper.selectAll(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/pojo/vo/UserCountsCacheVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class UserCountsCacheVO implements Serializable { 9 | private Long userID; 10 | private Integer fans; 11 | private Integer follows; 12 | private Integer videoCount; 13 | private Integer totalLikes; 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/schedule/UserCountsCacheSchedule.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.schedule; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.service.IUserCountsService; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.ApplicationArguments; 7 | import org.springframework.boot.ApplicationRunner; 8 | import org.springframework.stereotype.Component; 9 | 10 | @Slf4j 11 | @Component 12 | public class UserCountsCacheSchedule implements ApplicationRunner { 13 | @Autowired 14 | private IUserCountsService service; 15 | 16 | @Override 17 | public void run(ApplicationArguments args) throws Exception { 18 | log.info("项目启动,正在处理缓存用户计数字段业务"); 19 | service.saveCacheUserCounts(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/service/IUserCountsService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | @Service 6 | public interface IUserCountsService { 7 | void saveCacheUserCounts(); 8 | } 9 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/user/service/impl/UserCountsService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.cache.IUserCountsCacheRepository; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.dao.persist.repository.IUserCountsRepository; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.service.IUserCountsService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | @Service 10 | public class UserCountsService implements IUserCountsService { 11 | @Autowired 12 | IUserCountsCacheRepository cacheRepository; 13 | @Autowired 14 | private IUserCountsRepository repository; 15 | 16 | @Override 17 | public void saveCacheUserCounts() { 18 | cacheRepository.deleteAll(); 19 | cacheRepository.save(repository.selectAll()); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/Count.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/Count.md -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/dao/cache/VideoCountCache.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.pojo.VideoCount; 4 | import cn.tedu.youbiliprojectbackend.common.consts.CountConsts; 5 | 6 | import java.util.List; 7 | 8 | public interface VideoCountCache extends CountConsts { 9 | /** 10 | * 将视频计数信息保存在缓存之中 11 | */ 12 | void save(List videoCounts); 13 | 14 | /** 15 | * 清空所有保存的视频计数信息 16 | */ 17 | void deleteAll(); 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/dao/persist/mapper/VideoCountMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.persist.mapper; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.pojo.VideoCount; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | 10 | /** 11 | * 视频计数字段Mapper 12 | */ 13 | @Repository 14 | public interface VideoCountMapper { 15 | List selectCount(); 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/dao/persist/repository/VideoCountRepositroy.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.persist.repository; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.pojo.VideoCount; 5 | 6 | import java.util.List; 7 | 8 | public interface VideoCountRepositroy { 9 | /** 10 | * 查询视频所有的计数字段; 11 | * 12 | * @return 13 | */ 14 | List videoCacheCount(); 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/dao/persist/repository/impl/VideoCountRepositroyImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.persist.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.persist.mapper.VideoCountMapper; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.persist.repository.VideoCountRepositroy; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.pojo.VideoCount; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | @Repository 12 | public class VideoCountRepositroyImpl implements VideoCountRepositroy { 13 | 14 | @Autowired 15 | VideoCountMapper videoCountMapper; 16 | 17 | @Override 18 | public List videoCacheCount() { 19 | return videoCountMapper.selectCount(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/pojo/VideoCount.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.pojo; 2 | 3 | 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class VideoCount implements Serializable { 10 | 11 | private Long videoID; 12 | private Integer viewCount; 13 | private Integer likeCount; 14 | private Integer favoriteCount; 15 | private Integer dislikeCount; 16 | private Integer barrageCount; 17 | private Integer commentCount; 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/service/VideoCountService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.service; 2 | 3 | public interface VideoCountService { 4 | void SaveCacheVideoCount(); 5 | } 6 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/count/video/service/impl/VideoCountServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.cache.VideoCountCache; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.dao.persist.repository.VideoCountRepositroy; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.service.VideoCountService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | @Slf4j 11 | @Service 12 | public class VideoCountServiceImpl implements VideoCountService { 13 | 14 | @Autowired 15 | VideoCountRepositroy videoCountRepositroy; 16 | @Autowired 17 | VideoCountCache videoCountCache; 18 | 19 | /** 20 | * 当项目启动时 先清除videoCount字段 再保存 21 | */ 22 | @Override 23 | public void SaveCacheVideoCount() { 24 | log.debug("开始向缓存之中写入数据!"); 25 | videoCountCache.deleteAll(); 26 | videoCountCache.save(videoCountRepositroy.videoCacheCount()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/mahout/dao/cache/UserCFRun.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.MahoutConsts; 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo.UserArticleOperation; 5 | 6 | import java.util.List; 7 | 8 | public interface UserCFRun extends MahoutConsts { 9 | void select(List list); 10 | 11 | void delete(); 12 | } 13 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/mahout/dao/cache/impl/UserCFRunImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.dao.cache.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.dao.cache.UserCFRun; 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo.UserArticleOperation; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.data.redis.core.RedisTemplate; 8 | import org.springframework.data.redis.core.ValueOperations; 9 | import org.springframework.stereotype.Repository; 10 | 11 | import java.io.Serializable; 12 | import java.util.List; 13 | 14 | @Repository 15 | @Slf4j 16 | public class UserCFRunImpl implements UserCFRun { 17 | 18 | 19 | @Autowired 20 | RedisTemplate redisTemplate; 21 | 22 | /** 23 | * 将查询到的所有内容存入Redis之中 24 | */ 25 | @Override 26 | public void select(List list) { 27 | log.debug("写入缓存"); 28 | ValueOperations operations = redisTemplate.opsForValue(); 29 | operations.set(MAHOUT_DATA, (Serializable) list); 30 | } 31 | 32 | 33 | /** 34 | * 清空查询内容 35 | */ 36 | @Override 37 | public void delete() { 38 | log.debug("开始清理数据"); 39 | redisTemplate.delete(MAHOUT_DATA); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/mahout/service/UserCFRunService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.service; 2 | 3 | /** 4 | * @author 赵錾 5 | */ 6 | public interface UserCFRunService { 7 | void UserCFRun(); 8 | } 9 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/mahout/service/impl/UserCFRunServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.dao.cache.UserCFRun; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.service.UserCFRunService; 5 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.mapper.MahoutMapper; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | @Service 11 | @Slf4j 12 | public class UserCFRunServiceImpl implements UserCFRunService { 13 | @Autowired 14 | UserCFRun userCFRun; 15 | @Autowired 16 | MahoutMapper mahoutMapper; 17 | 18 | 19 | @Override 20 | public void UserCFRun() { 21 | log.debug("开始向缓存中写入数据"); 22 | userCFRun.delete(); 23 | userCFRun.select(mahoutMapper.selectuser()); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/dao/cache/VideoListCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.cache; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 5 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 视频列表缓存 11 | */ 12 | public interface VideoListCacheRepository extends VideoConsts { 13 | /** 14 | * 将所有视频放入Redis之中 15 | */ 16 | void save(List videoUserCaches); 17 | 18 | void deleteAll(); 19 | } 20 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/dao/persist/mapper/VideoMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 视频类mapper 10 | * 11 | * @author 赵錾 12 | */ 13 | @Repository 14 | public interface VideoMapper { 15 | List selectAll(); 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/dao/persist/repository/VideoRepositroy.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.persist.repository; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 5 | 6 | import java.util.List; 7 | 8 | public interface VideoRepositroy { 9 | /** 10 | * 查询所有视频列表集合用于存入Redis缓存之中; 11 | */ 12 | List videoCache(); 13 | } 14 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/dao/persist/repository/impl/VideoRepositroyImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.persist.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.persist.mapper.VideoMapper; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.persist.repository.VideoRepositroy; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | 12 | @Repository 13 | public class VideoRepositroyImpl implements VideoRepositroy { 14 | @Autowired 15 | VideoMapper videoMapper; 16 | 17 | 18 | /** 19 | * 查询所有视频列表集合用于存入Redis缓存之中; 20 | */ 21 | @Override 22 | public List videoCache() { 23 | List videoUserCaches = videoMapper.selectAll(); 24 | return videoUserCaches; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/pojo/vo/VideoUserCache.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo; 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | @Data 11 | public class VideoUserCache implements Serializable { 12 | /** 13 | * 视频ID 14 | */ 15 | private Long videoID; 16 | /** 17 | * 用户ID 18 | */ 19 | private Long userID; 20 | /** 21 | * 标题 22 | */ 23 | private String title; 24 | /** 25 | * 视频描述 26 | */ 27 | private String description; 28 | /** 29 | * 视频时长 30 | */ 31 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 32 | private Date duration; 33 | /** 34 | * 上传日期 35 | */ 36 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 37 | private Date uploadDate; 38 | /** 39 | * 视频源地址 40 | */ 41 | private String videoSrcUrl; 42 | /** 43 | * 封面地址 44 | */ 45 | private String videoImgUrl; 46 | /** 47 | * 作者昵称 48 | */ 49 | private String nickname; 50 | /** 51 | * 作者头像地址 52 | */ 53 | private String imgUrl; 54 | } 55 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/service/VideoListService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.service; 2 | 3 | 4 | public interface VideoListService { 5 | /** 6 | * 项目启动时,用于将视频列表放入缓存之中 7 | */ 8 | void saveCacheVideo(); 9 | } 10 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/cacheUtils/videoList/service/impl/VideoListServicImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.cache.VideoListCacheRepository; 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.dao.persist.repository.VideoRepositroy; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.service.VideoListService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | 11 | @Service 12 | @Slf4j 13 | public class VideoListServicImpl implements VideoListService { 14 | @Autowired 15 | VideoListCacheRepository cacheRepository; 16 | @Autowired 17 | VideoRepositroy videoRepositroy; 18 | 19 | 20 | /** 21 | * 项目启动时,用于将视频列表放入缓存之中 22 | */ 23 | @Override 24 | public void saveCacheVideo() { 25 | cacheRepository.deleteAll(); 26 | cacheRepository.save(videoRepositroy.videoCache()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/ClssificationConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | public interface ClssificationConsts { 4 | String CATEGORY_LIST = "Category:list"; 5 | } 6 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/CountConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | public interface CountConsts { 4 | 5 | /** 6 | * 视频计数字段 7 | */ 8 | String VIDEO_COUNT = "Video:Count:"; 9 | 10 | /** 11 | * 用户计数字段 12 | */ 13 | String USER_COUNT = "User:Count:"; 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/HistoryConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | public interface HistoryConsts { 4 | String HISTORY_DATA = "History:Data";//videoId:userId 5 | 6 | } 7 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/HttpConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | /** 4 | * HTTP相关常量 5 | * 6 | * @author java@tedu.cn 7 | * @version 1.0 8 | */ 9 | public interface HttpConsts { 10 | 11 | /** 12 | * 请求头:授权信息 13 | */ 14 | String HEADER_AUTHORIZATION = "Authorization"; 15 | 16 | /** 17 | * 请求头:客户端浏览器 18 | */ 19 | String HEADER_USER_AGENT = "User-Agent"; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/MahoutConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | public interface MahoutConsts { 4 | String MAHOUT_DATA = "Mahout:Data"; 5 | } 6 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/RegisterConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | 4 | /** 5 | * 注册接口所需常量 6 | * 7 | * @author ASUS 8 | */ 9 | public interface RegisterConsts { 10 | /** 11 | * 发送邮件请求插入缓存 12 | */ 13 | String REGISTER_EMAIL_SEND = "Account:Register:SendEmail"; 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/UserCacheConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | /** 4 | * JWT缓存相关常量 5 | * 6 | * @author java@tedu.cn 7 | * @version 1.0 8 | */ 9 | public interface UserCacheConsts { 10 | 11 | /** 12 | * 缓存的JWT前缀 13 | */ 14 | String USER_JWT_PREFIX = "Account:Login:jwt:"; 15 | /** 16 | * 用户启用状态的KEY的前缀 17 | */ 18 | String USER_ENABLE_PREFIX = "Account:Login:enable:"; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/consts/VideoConsts.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.consts; 2 | 3 | 4 | /** 5 | * 视频相关缓存 6 | * 7 | * @author 赵錾 8 | */ 9 | public interface VideoConsts { 10 | /** 11 | * 视频列表的相关缓存 12 | */ 13 | String VIDEO_LIST = "Video:List:"; //在通过userID : videoID 拼接 14 | 15 | 16 | String VIDEO_HEAT = "Video:Heat"; 17 | } 18 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/data/dao/persist/cache/DataCacheUserCF.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.data.dao.persist.cache; 2 | 3 | public interface DataCacheUserCF { 4 | void selectData(); 5 | } 6 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/data/dao/persist/cache/impl/DataCacheUserCFImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.data.dao.persist.cache.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.mahout.service.UserCFRunService; 4 | import cn.tedu.youbiliprojectbackend.common.data.dao.persist.cache.DataCacheUserCF; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * 将更新后的字段写入缓存 11 | */ 12 | @Repository 13 | @Slf4j 14 | public class DataCacheUserCFImpl implements DataCacheUserCF { 15 | @Autowired 16 | UserCFRunService userCFRun; 17 | 18 | /** 19 | * 写入更新后的字段 定时更新 20 | */ 21 | @Override 22 | public void selectData() { 23 | log.debug("开始向缓存之中写入MahoutData"); 24 | userCFRun.UserCFRun(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/data/dao/persist/repository/DataRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.data.dao.persist.repository; 2 | 3 | /** 4 | * 数据清洗类 5 | */ 6 | public interface DataRepository { 7 | 8 | /** 9 | * 将收藏表,喜欢表,历史表的数据 10 | * 定时洗入到mahout表之中, 11 | * 为后续的推荐算法做数据支撑 12 | */ 13 | void MahoutData(); 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/data/dao/persist/repository/impl/DataRepositoryImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.data.dao.persist.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.data.dao.persist.repository.DataRepository; 4 | import cn.tedu.youbiliprojectbackend.common.data.mapper.DataMapper; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * @author 赵錾 11 | */ 12 | @Repository 13 | @Slf4j 14 | public class DataRepositoryImpl implements DataRepository { 15 | 16 | @Autowired 17 | DataMapper dataMapper; 18 | 19 | /** 20 | * 将收藏表,喜欢表,历史表的数据 21 | * 定时洗入到mahout表之中, 22 | * 为后续的推荐算法做数据支撑 23 | */ 24 | @Override 25 | public void MahoutData() { 26 | log.debug("开始向数据库之中清洗数据"); 27 | dataMapper.FavoriteMahoutMapper(); 28 | dataMapper.LikesMahoutMapper(); 29 | dataMapper.HistoryMahoutMapper(); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/data/mapper/DataMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.data.mapper; 2 | 3 | import org.springframework.stereotype.Repository; 4 | 5 | /** 6 | * 数据清洗类; 7 | * 8 | * @author 赵錾 9 | */ 10 | @Repository 11 | public interface DataMapper { 12 | void HistoryMahoutMapper(); 13 | 14 | void LikesMahoutMapper(); 15 | 16 | void FavoriteMahoutMapper(); 17 | 18 | void VideoDateMapper(); 19 | } 20 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/data/schedule/RunnerData.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.data.schedule; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.data.dao.persist.cache.DataCacheUserCF; 4 | import cn.tedu.youbiliprojectbackend.common.data.dao.persist.repository.DataRepository; 5 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.service.ThermalValueService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.scheduling.annotation.Scheduled; 9 | import org.springframework.stereotype.Component; 10 | 11 | /** 12 | * 定时跟新类 13 | */ 14 | @Slf4j 15 | @Component 16 | public class RunnerData { 17 | @Autowired 18 | DataRepository dataRepository; 19 | @Autowired 20 | DataCacheUserCF cacheUserCF; 21 | @Autowired 22 | ThermalValueService thermalValueService; 23 | 24 | /** 25 | * 每天9点会将 点赞收藏历史表的前一天数据写入到mahout表之中 26 | * 在将数据写入到Redis之中 27 | */ 28 | @Scheduled(cron = "0 0 9 * * *") 29 | public void RunnerDataSchedule() { 30 | log.debug("开始重写数据--------------"); 31 | dataRepository.MahoutData(); 32 | cacheUserCF.selectData(); 33 | thermalValueService.Runner(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/ex/ServiceException.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.ex; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.web.response.ServiceCode; 5 | import lombok.Getter; 6 | 7 | /** 8 | * 业务异常 9 | * 10 | * @author java@tedu.cn 11 | * @version 1.0 12 | */ 13 | @Getter 14 | public class ServiceException extends RuntimeException { 15 | 16 | private ServiceCode serviceCode; 17 | 18 | public ServiceException(ServiceCode serviceCode, String message) { 19 | super(message); 20 | this.serviceCode = serviceCode; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/pojo/po/UserLoginInfoPO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.pojo.po; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * 用户登录信息的PO,此类数据将存入到Redis中 10 | * 11 | * @author java@tedu.cn 12 | * @version 1.0 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | public class UserLoginInfoPO implements Serializable { 17 | 18 | /** 19 | * 用户登录时使用的浏览器的信息 20 | */ 21 | private String userAgent; 22 | /** 23 | * 用户登录时的IP地址 24 | */ 25 | private String ip; 26 | } 27 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/pojo/vo/PageData.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.pojo.vo; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.io.Serializable; 7 | import java.util.List; 8 | 9 | /** 10 | * 分页数据类 11 | * 12 | * @author java@tedu.cn 13 | * @version 1.0 14 | */ 15 | @Data 16 | @Accessors(chain = true) 17 | public class PageData implements Serializable { 18 | 19 | /** 20 | * 每页记录数 21 | */ 22 | private Integer pageSize; 23 | /** 24 | * 记录总数 25 | */ 26 | private Long total; 27 | /** 28 | * 当前页码 29 | */ 30 | private Integer currentPage; 31 | /** 32 | * 最大页码 33 | */ 34 | private Integer maxPage; 35 | /** 36 | * 数据列表 37 | */ 38 | private List list; 39 | 40 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/security/CurrentPrincipal.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.security; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * 用于Security框架的当前认证信息中的当事人 9 | * 10 | * @author java@tedu.cn 11 | * @version 1.0 12 | */ 13 | @Data 14 | public class CurrentPrincipal implements Serializable { 15 | 16 | /** 17 | * 当事人ID 18 | */ 19 | private Long userID; 20 | /** 21 | * 当事人用户名 22 | */ 23 | private String username; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/utils/pagedate/PageData.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.utils.pagedate; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.io.Serializable; 7 | import java.util.List; 8 | 9 | /** 10 | * 分页数据类 11 | * 12 | * @author java@tedu.cn 13 | * @version 1.0 14 | */ 15 | @Data 16 | @Accessors(chain = true) 17 | public class PageData implements Serializable { 18 | 19 | /** 20 | * 每页记录数 21 | */ 22 | private Integer pageSize; 23 | /** 24 | * 记录总数 25 | */ 26 | private Long total; 27 | /** 28 | * 当前页码 29 | */ 30 | private Integer currentPage; 31 | /** 32 | * 最大页码 33 | */ 34 | private Integer maxPage; 35 | /** 36 | * 数据列表 37 | */ 38 | private List list; 39 | 40 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/common/utils/pagedate/PageInfoToPageDataConverter.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.common.utils.pagedate; 2 | 3 | import com.github.pagehelper.PageInfo; 4 | 5 | /** 6 | * 将PageInfo转换成PageData的转换器工具类 7 | * 8 | * @author java@tedu.cn 9 | * @version 1.0 10 | */ 11 | public class PageInfoToPageDataConverter { 12 | 13 | /** 14 | * 将PageHelper框架中的PageInfo类型对象转换成自定义的PageData类型对象 15 | * 16 | * @param pageInfo PageInfo对象 17 | * @param PageInfo对象中的列表数据中的元素数据的类型 18 | * @return 自定义的PageData类型的对象 19 | */ 20 | public synchronized static PageData convert(PageInfo pageInfo) { 21 | PageData pageData = new PageData<>(); 22 | pageData.setPageSize(pageInfo.getPageSize()) 23 | .setTotal(pageInfo.getTotal()) 24 | .setCurrentPage(pageInfo.getPageNum()) 25 | .setMaxPage(pageInfo.getPages()) 26 | .setList(pageInfo.getList()); 27 | return pageData; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/config/AliPayConfig.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | 8 | /** 9 | * 阿里支付宝沙箱配置 10 | * 11 | * @author 万佳兴 12 | */ 13 | @Data 14 | @Component 15 | @ConfigurationProperties(prefix = "alipay") 16 | public class AliPayConfig { 17 | private String appId; 18 | private String appPrivateKey; 19 | private String alipayPublicKey; 20 | private String returnUrl; 21 | private String notifyUrl; 22 | } 23 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/config/ElasticSearchConfig.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.config; 2 | 3 | import co.elastic.clients.elasticsearch.ElasticsearchClient; 4 | import co.elastic.clients.json.jackson.JacksonJsonpMapper; 5 | import co.elastic.clients.transport.ElasticsearchTransport; 6 | import co.elastic.clients.transport.rest_client.RestClientTransport; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.apache.http.HttpHost; 9 | import org.elasticsearch.client.RestClient; 10 | import org.springframework.beans.factory.annotation.Value; 11 | import org.springframework.context.annotation.Bean; 12 | import org.springframework.context.annotation.Configuration; 13 | 14 | @Configuration 15 | @Slf4j 16 | public class ElasticSearchConfig { 17 | 18 | @Value("${youbili.els.url}") 19 | String Url; 20 | 21 | @Value("${youbili.els.port}") 22 | Integer port; 23 | 24 | @Value("${youbili.els.scheme}") 25 | String scheme; 26 | 27 | //注入IOC容器 28 | @Bean 29 | public ElasticsearchClient elasticsearchClient() { 30 | log.debug("ELasticsearch配置:URL:{},Port:{},scheme:{}", Url, port, scheme); 31 | RestClient client = RestClient.builder(new HttpHost(Url, port, scheme)).build(); 32 | ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper()); 33 | return new ElasticsearchClient(transport); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/config/RedisConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.config; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.data.redis.connection.RedisConnectionFactory; 7 | import org.springframework.data.redis.core.RedisTemplate; 8 | import org.springframework.data.redis.serializer.RedisSerializer; 9 | 10 | import java.io.Serializable; 11 | 12 | /** 13 | * Redis的配置类 14 | */ 15 | @Slf4j 16 | @Configuration 17 | public class RedisConfiguration { 18 | 19 | public RedisConfiguration() { 20 | log.debug("创建配置类对象:RedisConfiguration"); 21 | } 22 | 23 | @Bean 24 | public RedisTemplate redisTemplate( 25 | RedisConnectionFactory redisConnectionFactory) { 26 | RedisTemplate redisTemplate = new RedisTemplate<>(); 27 | redisTemplate.setConnectionFactory(redisConnectionFactory); 28 | redisTemplate.setKeySerializer(RedisSerializer.string()); 29 | redisTemplate.setValueSerializer(RedisSerializer.json()); 30 | return redisTemplate; 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/config/ScheduleConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.config; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.scheduling.annotation.EnableScheduling; 6 | 7 | /** 8 | * @author 赵錾 9 | */ 10 | @Slf4j 11 | @Configuration 12 | @EnableScheduling 13 | public class ScheduleConfiguration { 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/config/ValidationConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.config; 2 | 3 | import jakarta.validation.Validation; 4 | import jakarta.validation.Validator; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.hibernate.validator.HibernateValidator; 7 | import org.springframework.context.annotation.Bean; 8 | import org.springframework.context.annotation.Configuration; 9 | 10 | 11 | /** 12 | * Validation配置类 13 | * 14 | * @author java@tedu.cn 15 | * @version 0.0.1 16 | */ 17 | @Slf4j 18 | @Configuration 19 | public class ValidationConfiguration { 20 | 21 | public ValidationConfiguration() { 22 | log.debug("创建配置类对象:ValidationConfiguration"); 23 | } 24 | 25 | @Bean 26 | public Validator validator() { 27 | return Validation.byProvider(HibernateValidator.class) 28 | .configure() // 开始配置 29 | .failFast(true) // 配置快速失败 30 | .buildValidatorFactory() // 构建Validator工厂 31 | .getValidator(); // 从Validator工厂中获取Validator对象 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/config/WebMvcConfiguration.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.config; 2 | 3 | 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.stereotype.Component; 7 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 8 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 9 | 10 | /** 11 | * @author ASUS 12 | */ 13 | @Configuration 14 | @Slf4j 15 | @Component 16 | public class WebMvcConfiguration implements WebMvcConfigurer { 17 | 18 | public WebMvcConfiguration() { 19 | log.debug("创建配置类对象:WebMvcConfiguration"); 20 | } 21 | 22 | @Override 23 | public void addCorsMappings(CorsRegistry registry) { 24 | registry.addMapping("/**") 25 | .allowedHeaders("*") 26 | .allowedMethods("*") 27 | .allowedOriginPatterns("*") 28 | .allowCredentials(true) 29 | .maxAge(3600); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/core/mybatis/TimeMetaObjectHandler.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.core.mybatis; 2 | 3 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.apache.ibatis.reflection.MetaObject; 6 | import org.springframework.stereotype.Component; 7 | 8 | import java.time.LocalDateTime; 9 | 10 | /** 11 | * 基于MyBatis Plus的自动填充时间的处理器类 12 | * 13 | * @author java@tedu.cn 14 | * @version 1.0 15 | */ 16 | @Slf4j 17 | @Component 18 | public class TimeMetaObjectHandler implements MetaObjectHandler { 19 | 20 | /** 21 | * 数据创建时间的属性名 22 | */ 23 | public static final String FIELD_CREATE_TIME = "gmtCreate"; 24 | /** 25 | * 数据最后修改时间的属性名 26 | */ 27 | public static final String FIELD_UPDATE_TIME = "gmtModified"; 28 | 29 | public TimeMetaObjectHandler() { 30 | log.info("创建MyBatis Plus的自动填充数据的处理器对象:TimeMetaObjectHandler"); 31 | } 32 | 33 | @Override 34 | public void insertFill(MetaObject metaObject) { 35 | LocalDateTime now = LocalDateTime.now(); 36 | this.setFieldValByName(FIELD_CREATE_TIME, now, metaObject); 37 | this.setFieldValByName(FIELD_UPDATE_TIME, now, metaObject); 38 | } 39 | 40 | @Override 41 | public void updateFill(MetaObject metaObject) { 42 | LocalDateTime now = LocalDateTime.now(); 43 | this.setFieldValByName(FIELD_UPDATE_TIME, now, metaObject); 44 | } 45 | 46 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/dao/mapper/OrdersMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.dao.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.entity.Order; 4 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.vo.OrderListVO; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | @Repository 11 | public interface OrdersMapper extends BaseMapper { 12 | 13 | /** 14 | * 插入订单 15 | */ 16 | int insertOrders(Order order); 17 | 18 | /** 19 | * 更新订单数据 20 | * 21 | * @param order 22 | * @return 23 | */ 24 | int update(Order order); 25 | 26 | 27 | /** 28 | * 查询支付的订单 29 | */ 30 | Order selectOne(String orderNumber); 31 | 32 | /** 33 | * 根据ID删除订单 34 | * 35 | * @return 受影响的行数 36 | */ 37 | int deleteById(Long orderID); 38 | 39 | /** 40 | * 查询订单数据 41 | * 42 | * @return 订单数据列表 43 | */ 44 | List list(); 45 | } 46 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/dao/repository/IOrdersRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.dao.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.entity.Order; 4 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.vo.OrderListVO; 5 | 6 | import java.util.List; 7 | 8 | public interface IOrdersRepository { 9 | 10 | 11 | /** 12 | * 插入订单 13 | * 14 | * @param order 15 | * @return 16 | */ 17 | int insertOrders(Order order); 18 | 19 | 20 | void update(Order order); 21 | 22 | /** 23 | * 根据id删除订单 24 | * 25 | * @param orderID 订单ID 26 | * @return 受影响的行数 27 | */ 28 | int deleteById(Long orderID); 29 | 30 | 31 | /** 32 | * 查询支付的订单 33 | */ 34 | Order selectOne(String orderNumber); 35 | 36 | /** 37 | * 查询订单列表 38 | * 39 | * @return 文章列表 40 | */ 41 | List list(); 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/pojo/entity/AliPay.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.pojo.entity; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class AliPay { 7 | private String out_trade_no; 8 | private Double total_amount; 9 | private String subject; 10 | private String alipay_trace_no; 11 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/pojo/entity/Order.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.*; 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @TableName("orders") 12 | public class Order implements Serializable { 13 | /** 14 | * 订单ID 15 | */ 16 | @TableField(value = "orderID") 17 | @TableId(type = IdType.AUTO) 18 | private Long orderID; 19 | /** 20 | * 商品名称 21 | */ 22 | private String tradeName; 23 | /** 24 | * 订单号 25 | */ 26 | private String orderNumber; 27 | /** 28 | * 支付宝订单号 29 | */ 30 | private String zfbNumber; 31 | /** 32 | * 价格 33 | */ 34 | private Double price; 35 | /** 36 | * 支付方式 37 | */ 38 | private String payment; 39 | /** 40 | * 支付时间 41 | */ 42 | @TableField(fill = FieldFill.INSERT) 43 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 44 | private LocalDateTime payTime; 45 | /** 46 | * 订单状态 47 | */ 48 | private String enable; 49 | /** 50 | * 购买人ID 51 | */ 52 | private Long userID; 53 | } 54 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/pojo/param/OrdersParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.pojo.param; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.IdType; 5 | import com.baomidou.mybatisplus.annotation.TableField; 6 | import com.baomidou.mybatisplus.annotation.TableId; 7 | import com.fasterxml.jackson.annotation.JsonFormat; 8 | import lombok.Data; 9 | 10 | import java.io.Serializable; 11 | import java.time.LocalDateTime; 12 | 13 | @Data 14 | public class OrdersParam implements Serializable { 15 | /** 16 | * 订单ID 17 | */ 18 | @TableId(type = IdType.AUTO) 19 | private Long orderID; 20 | /** 21 | * 商品名称 22 | */ 23 | private String tradeName; 24 | /** 25 | * 订单号 26 | */ 27 | private String orderNumber; 28 | /** 29 | * 支付宝订单号 30 | */ 31 | private String zfbNumber; 32 | /** 33 | * 价格 34 | */ 35 | private Double price; 36 | /** 37 | * 支付方式 38 | */ 39 | private String payment; 40 | /** 41 | * 支付时间 42 | */ 43 | @TableField(fill = FieldFill.INSERT) 44 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 45 | private LocalDateTime payTime; 46 | /** 47 | * 订单状态 48 | */ 49 | private String enable; 50 | /** 51 | * 购买人ID 52 | */ 53 | private Long userID; 54 | /** 55 | * 56 | */ 57 | } 58 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/pojo/vo/OrderListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | public class OrderListVO implements Serializable { 11 | 12 | /** 13 | * 订单ID 14 | */ 15 | private Long orderID; 16 | /** 17 | * 商品名称 18 | */ 19 | private String tradeName; 20 | /** 21 | * 订单号 22 | */ 23 | private String orderNumber; 24 | /** 25 | * 支付宝订单号 26 | */ 27 | private String zfbNumber; 28 | /** 29 | * 价格 30 | */ 31 | private Double price; 32 | /** 33 | * 支付方式 34 | */ 35 | private String payment; 36 | /** 37 | * 支付时间 38 | */ 39 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 40 | private LocalDateTime payTime; 41 | /** 42 | * 购买人ID 43 | */ 44 | private Long userID; 45 | /** 46 | * 支付状态 47 | */ 48 | private String enable; 49 | /** 50 | * 状态 51 | */ 52 | private Boolean status; 53 | } 54 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/orders/service/IOrdersService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.orders.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.security.CurrentPrincipal; 4 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.entity.Order; 5 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.param.OrdersParam; 6 | import cn.tedu.youbiliprojectbackend.modules.orders.pojo.vo.OrderListVO; 7 | 8 | import java.util.List; 9 | 10 | public interface IOrdersService { 11 | 12 | /** 13 | * 发布文章 14 | * 15 | * @param ordersParam 新的文章数据 16 | */ 17 | void addNew(CurrentPrincipal currentPrincipal, OrdersParam ordersParam); 18 | 19 | 20 | /** 21 | * 更新订单信息 22 | */ 23 | void update(Order order); 24 | 25 | 26 | /** 27 | * 根据id删除订单 28 | * 29 | * @param orderID 订单ID 30 | * @return 受影响的行数 31 | */ 32 | void deleteById(Long orderID); 33 | 34 | 35 | /** 36 | * 查询支付的订单 37 | */ 38 | Order selectOne(String orderNumber); 39 | 40 | /** 41 | * 查询订单列表 42 | * 43 | * @return 订单列表 44 | */ 45 | List list(); 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/dao/cache/DataMahoutCacheCF.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.MahoutConsts; 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo.UserArticleOperation; 5 | 6 | import java.util.List; 7 | 8 | public interface DataMahoutCacheCF extends MahoutConsts { 9 | 10 | /** 11 | * 查找数据 12 | * 13 | * @return 返回数据集合 14 | */ 15 | List selectData(); 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/dao/cache/UserCFCache.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | import cn.tedu.youbiliprojectbackend.common.consts.MahoutConsts; 5 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 6 | import org.apache.mahout.cf.taste.common.TasteException; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 推荐视频计算出videoID以后从缓存里面拿 12 | */ 13 | public interface UserCFCache extends VideoConsts, MahoutConsts { 14 | List CFvideoList(Long userID) throws TasteException; 15 | 16 | 17 | } 18 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/dao/cache/impl/DataMahoutCacheCFImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.dao.cache.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.dao.cache.DataMahoutCacheCF; 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo.UserArticleOperation; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.data.redis.core.RedisTemplate; 7 | import org.springframework.data.redis.core.ValueOperations; 8 | import org.springframework.stereotype.Repository; 9 | 10 | import java.io.Serializable; 11 | import java.util.List; 12 | 13 | @Repository 14 | public class DataMahoutCacheCFImpl implements DataMahoutCacheCF { 15 | @Autowired 16 | RedisTemplate redisTemplate; 17 | 18 | /** 19 | * 查找数据 20 | * 21 | * @return 返回数据集合 22 | */ 23 | @Override 24 | public List selectData() { 25 | ValueOperations operations = redisTemplate.opsForValue(); 26 | List serializable = (List) operations.get(MAHOUT_DATA); 27 | 28 | return serializable; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/mapper/MahoutMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo.UserArticleOperation; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author 赵錾 10 | */ 11 | @Repository 12 | public interface MahoutMapper { 13 | // List select(); 14 | List selectuser(); 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/pojo/MahoutData.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class MahoutData implements Serializable { 10 | private Integer mahoutID; 11 | 12 | private Long userID; 13 | 14 | private Long videoID; 15 | 16 | private Integer type; 17 | 18 | @TableField(exist = false) 19 | private Integer value; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/pojo/UserArticleOperation.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.pojo; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @author 赵錾 10 | */ 11 | @Data 12 | public class UserArticleOperation implements Serializable { 13 | private Integer mahoutID; 14 | 15 | private Long userID; 16 | 17 | private Long videoID; 18 | 19 | private Integer type; 20 | 21 | @TableField(exist = false) 22 | private Integer value; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/score/ListVideoCF.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.score; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 封装推荐方法 7 | * 8 | * @author 赵錾 9 | */ 10 | public interface ListVideoCF { 11 | /** 12 | * @param userID 用户ID 13 | * @return 返回视频ID列表 14 | */ 15 | List videoIDList(Long userID); 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/score/MahoutUserCF.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.score; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 4 | import org.apache.mahout.cf.taste.common.TasteException; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 协同过滤算法 10 | * 11 | * @author 赵錾 12 | */ 13 | public interface MahoutUserCF extends VideoConsts { 14 | List recommend(Long userID) throws TasteException; 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/mahoutCF/service/UserCFService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.mahoutCF.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 基于用户的协同过滤算法 9 | * 10 | * @author 赵錾 11 | */ 12 | public interface UserCFService { 13 | List UserCF(Long userID, Integer num); 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/recommend.md: -------------------------------------------------------------------------------- 1 | ### 推荐模块 2 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/dao/cache/SaveAndDelete.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 4 | 5 | public interface SaveAndDelete extends VideoConsts { 6 | /** 7 | * 保存7天热力值到Redis之中 8 | */ 9 | void save(); 10 | 11 | void delete(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/dao/cache/Select.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 5 | 6 | import java.util.List; 7 | 8 | public interface Select extends VideoConsts { 9 | List Select(); 10 | } 11 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/dao/cache/heatCache.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | import cn.tedu.youbiliprojectbackend.common.consts.CountConsts; 5 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 6 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum.videoDTO; 7 | 8 | import java.util.List; 9 | 10 | public interface heatCache extends CountConsts, VideoConsts { 11 | 12 | /** 13 | * 将Redis之中所有的计数字段取出并计算 14 | * 15 | * @return 16 | */ 17 | List listCount(); 18 | 19 | /** 20 | * 查询热力值排行榜 并返回对应数据 21 | * 22 | * @return 23 | */ 24 | List select(); 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/dao/persist/mapper/ThermaMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum.videoDay; 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum.videoSum; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | @Repository 11 | public interface ThermaMapper extends BaseMapper { 12 | List selectByDay(); 13 | } 14 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/dao/persist/repository/ThremaRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum.videoDay; 4 | 5 | import java.util.List; 6 | 7 | public interface ThremaRepository { 8 | List video(); 9 | } 10 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/dao/persist/repository/impl/ThremaRepositoryImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.persist.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.persist.mapper.ThermaMapper; 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.persist.repository.ThremaRepository; 5 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum.videoDay; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | @Repository 12 | public class ThremaRepositoryImpl implements ThremaRepository { 13 | 14 | @Autowired 15 | ThermaMapper thermaMapper; 16 | 17 | @Override 18 | public List video() { 19 | return thermaMapper.selectByDay(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/pojo/sum/HeatVideo.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class HeatVideo implements Serializable { 9 | private Long videoID; 10 | private Double HeatDay; 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/pojo/sum/videoDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @Accessors(chain = true) 12 | public class videoDTO implements Serializable { 13 | private Long videoID; 14 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 15 | private LocalDateTime uploadDate; 16 | private Integer viewCount; 17 | private Integer likeCount; 18 | private Integer favoriteCount; 19 | private Integer dislikeCount; 20 | private Integer barrageCount; 21 | private Integer commentCount; 22 | } 23 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/pojo/sum/videoDay.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @Accessors(chain = true) 12 | public class videoDay implements Serializable { 13 | private Long videoID; 14 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 15 | private LocalDateTime uploadDate; 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/pojo/sum/videoSum.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum; 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Data; 6 | import lombok.experimental.Accessors; 7 | 8 | import java.io.Serializable; 9 | import java.time.LocalDateTime; 10 | 11 | /** 12 | * 用于查询计算 计算字段值 13 | */ 14 | @Data 15 | @Accessors(chain = true) 16 | public class videoSum implements Serializable { 17 | private Long videoID; 18 | private Double heatValue; 19 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 20 | private LocalDateTime uploadDate; 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/schedule/HeatSchedule.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.schedule; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.service.ThermalValueService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.scheduling.annotation.Scheduled; 7 | import org.springframework.stereotype.Component; 8 | 9 | @Component 10 | public class HeatSchedule { 11 | 12 | @Autowired 13 | ThermalValueService thermalValueService; 14 | 15 | 16 | @Scheduled(cron = "0 0 9 * * *") 17 | public void HeatSave() { 18 | thermalValueService.Runner(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/score/ThermalValue.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.score; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.pojo.sum.HeatVideo; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 热力值公式计算类 10 | */ 11 | public interface ThermalValue { 12 | /** 13 | * 1.查询数据获得信息 14 | * 2.通过计算每个视频的 点赞数,收藏数,观看数,弹幕数,评论数 ; 点踩数 ; 以及每个视频上传时间的衰减因子来获取每个视频的热力值; 15 | * 3.将计算好的视频按照数据再排列; 16 | * 4.用于热门推荐以及基于物品的推荐之中; 17 | */ 18 | 19 | 20 | /** 21 | * 计算近7天的视频热力值 22 | * 23 | * @return 24 | */ 25 | List heatValue(); 26 | } 27 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/recommend/thermalvalue/service/ThermalValueService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 热力值算法接口 9 | */ 10 | public interface ThermalValueService { 11 | /** 12 | * 13 | */ 14 | void Runner(); 15 | 16 | /** 17 | * 根据热度值ID查找视频列表 18 | */ 19 | List select(); 20 | 21 | 22 | List select1(); 23 | } 24 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/search/controller/VideoSearchController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.search.controller; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.web.response.RestBean; 4 | import cn.tedu.youbiliprojectbackend.modules.search.pojo.vo.VideoSearchVO; 5 | import cn.tedu.youbiliprojectbackend.modules.search.service.IVideoSearchService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.web.bind.annotation.GetMapping; 9 | import org.springframework.web.bind.annotation.RequestMapping; 10 | import org.springframework.web.bind.annotation.RestController; 11 | 12 | import java.util.List; 13 | 14 | @RestController 15 | @Slf4j 16 | @RequestMapping("/api/auth/search") 17 | public class VideoSearchController { 18 | @Autowired 19 | private IVideoSearchService videoSearchService; 20 | 21 | public VideoSearchController() { 22 | log.info("创建类别控制器:VideoSearchController"); 23 | } 24 | 25 | @GetMapping("/index") 26 | public RestBean> searchBtTitle(String title) { 27 | log.debug("开始处理【查询根据用户输入标题查询】的请求"); 28 | List videoSearchVOList = videoSearchService.searchByTitle(title); 29 | System.out.println(videoSearchVOList); 30 | return RestBean.success(videoSearchVOList); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/search/pojo/param/VideoSearchParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.search.pojo.param; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | @Data 10 | public class VideoSearchParam implements Serializable { 11 | /** 12 | * 视频ID 13 | */ 14 | private Long videoID; 15 | /** 16 | * 用户ID 17 | */ 18 | private Long userID; 19 | /** 20 | * 标题 21 | */ 22 | private String title; 23 | /** 24 | * 视频描述 25 | */ 26 | private String description; 27 | /** 28 | * 视频时长 29 | */ 30 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 31 | private Date duration; 32 | /** 33 | * 上传日期 34 | */ 35 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 36 | private Date uploadDate; 37 | /** 38 | * 视频源地址 39 | */ 40 | private String videoSrcUrl; 41 | /** 42 | * 封面地址 43 | */ 44 | private String videoImgUrl; 45 | /** 46 | * 作者昵称 47 | */ 48 | private String nickname; 49 | /** 50 | * 作者头像地址 51 | */ 52 | private String imgUrl; 53 | } 54 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/search/pojo/vo/VideoSearchVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.search.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | @Data 10 | public class VideoSearchVO implements Serializable { 11 | /** 12 | * 视频ID 13 | */ 14 | private Long videoID; 15 | /** 16 | * 用户ID 17 | */ 18 | private Long userID; 19 | /** 20 | * 标题 21 | */ 22 | private String title; 23 | /** 24 | * 视频描述 25 | */ 26 | private String description; 27 | /** 28 | * 视频时长 29 | */ 30 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 31 | private Date duration; 32 | /** 33 | * 上传日期 34 | */ 35 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 36 | private Date uploadDate; 37 | /** 38 | * 视频源地址 39 | */ 40 | private String videoSrcUrl; 41 | /** 42 | * 封面地址 43 | */ 44 | private String videoImgUrl; 45 | /** 46 | * 作者昵称 47 | */ 48 | private String nickname; 49 | /** 50 | * 作者头像地址 51 | */ 52 | private String imgUrl; 53 | } 54 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/search/schedule/VideoSearchSchedule.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.search.schedule; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.search.service.IVideoSearchService; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.scheduling.annotation.Scheduled; 7 | 8 | @Slf4j 9 | //@Component 10 | public class VideoSearchSchedule { 11 | @Autowired 12 | IVideoSearchService videoSearchService; 13 | 14 | @Scheduled(fixedRate = 10 * 1000) 15 | public void rebuildSearch() { 16 | log.debug("更新elasticsearch中的视频列表数据"); 17 | videoSearchService.rebuildSearch(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/search/search.md: -------------------------------------------------------------------------------- 1 | ### 搜索模块 -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/search/service/IVideoSearchService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.search.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.search.pojo.param.VideoSearchParam; 4 | import cn.tedu.youbiliprojectbackend.modules.search.pojo.vo.VideoSearchVO; 5 | 6 | import java.util.List; 7 | 8 | public interface IVideoSearchService { 9 | /** 10 | * 重建搜索数据(重新从数据库中获取数据并写入到ES中) 11 | */ 12 | void rebuildSearch(); 13 | 14 | List searchByTitle(String title); 15 | 16 | void insertIntoEs(VideoSearchParam videoSearchParam); 17 | 18 | void update(VideoSearchParam videoSearchParam); 19 | 20 | void deleteByUserIDAndVideoID(Long userID, Long videoID); 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/dao/persist/mapper/CommentMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.entity.Comment; 4 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo.CommentFirstVO; 5 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo.CommentListVO; 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 7 | 8 | import java.util.List; 9 | 10 | 11 | public interface CommentMapper extends BaseMapper { 12 | List selectFirstCommentByVideoID(Long videoID); 13 | 14 | List selectCommentListByCommentID(Long commentID); 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/dao/persist/mapper/CommentreplieMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.entity.Commentreplie; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | public interface CommentreplieMapper extends BaseMapper { 7 | } 8 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/dao/persist/repository/ICommentRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.utils.pagedate.PageData; 4 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.entity.Comment; 5 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.entity.Commentreplie; 6 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo.CommentFirstVO; 7 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo.CommentListVO; 8 | 9 | import java.util.List; 10 | 11 | public interface ICommentRepository { 12 | PageData selectByVideoID(Long videoID, Integer pageNum, Integer pageSize); 13 | 14 | List selectByCommentID(Long commentID); 15 | 16 | void insertComment(Comment comment); 17 | 18 | void insertCommentreplie(Commentreplie commentreplie); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/pojo/entity/Comment.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import lombok.Data; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | public class Comment { 11 | private Long commentID; 12 | private Long userID; 13 | private Long videoID; 14 | private String commentText; 15 | private String commentDate; 16 | private Integer likeCount; 17 | private Integer dislikeCount; 18 | private Integer enable; 19 | /** 20 | * 数据创建时间 21 | */ 22 | @TableField(fill = FieldFill.INSERT) 23 | private LocalDateTime gmtCreate; 24 | 25 | /** 26 | * 数据最后修改时间 27 | */ 28 | @TableField(fill = FieldFill.INSERT_UPDATE) 29 | private LocalDateTime gmtModified; 30 | } 31 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/pojo/entity/Commentreplie.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @TableName("commentreplie") 12 | public class Commentreplie { 13 | private Long replyID; 14 | private Long commentID; 15 | private Long parentReplyID; 16 | private Long userID; 17 | private String replyText; 18 | private String replyDate; 19 | private Integer likeCount; 20 | private Integer dislikeCount; 21 | private Integer enable; 22 | /** 23 | * 数据创建时间 24 | */ 25 | @TableField(fill = FieldFill.INSERT) 26 | private LocalDateTime gmtCreate; 27 | 28 | /** 29 | * 数据最后修改时间 30 | */ 31 | @TableField(fill = FieldFill.INSERT_UPDATE) 32 | private LocalDateTime gmtModified; 33 | } 34 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/pojo/param/CommentAddNewParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.param; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class CommentAddNewParam implements Serializable { 9 | private Long videoID; 10 | private String commentText; 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/pojo/param/CommentReplyAddNewParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.param; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class CommentReplyAddNewParam implements Serializable { 9 | private Long commentID; 10 | private Long parentReplyID; 11 | private String replyText; 12 | } 13 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/pojo/vo/CommentFirstVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.time.LocalDateTime; 8 | import java.util.List; 9 | 10 | @Data 11 | public class CommentFirstVO implements Serializable { 12 | private Long commentID;//comment 13 | private String nickname;//user 14 | private String imgUrl;//用户头像 15 | private String commentText;//comment 16 | private Integer likeCount;//comment 17 | private Integer dislikeCount; 18 | private Boolean isShow; 19 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 20 | private LocalDateTime gmtCreate; 21 | // 总回复数 22 | private Integer commentListLength; 23 | // 回复列表 24 | private List commentList; 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/pojo/vo/CommentListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | @Data 9 | public class CommentListVO { 10 | private Long replyID;//回复表 11 | private String nickname;//用户表 12 | private String imgUrl; 13 | private String pNickname;//用户表 14 | private String replyText;//回复表 15 | private Integer likeCount;//回复表 16 | private Integer disLikeCount;//回复表 17 | private Integer enable; 18 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 19 | private LocalDateTime gmtCreate; 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/comment/service/ICommentService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.comment.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.security.CurrentPrincipal; 4 | import cn.tedu.youbiliprojectbackend.common.utils.pagedate.PageData; 5 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.param.CommentAddNewParam; 6 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.param.CommentReplyAddNewParam; 7 | import cn.tedu.youbiliprojectbackend.modules.social.comment.pojo.vo.CommentFirstVO; 8 | 9 | public interface ICommentService { 10 | PageData getCommentTreeByVideoID(Long videoID, Integer pageNum); 11 | 12 | void insertComment(CommentAddNewParam commentAddNewParam, CurrentPrincipal principal); 13 | 14 | void insertCommentreplie(CommentReplyAddNewParam commentReplyAddNewParam, CurrentPrincipal principal); 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/dynamic/dao/cache/IDynamicCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.dynamic.dao.cache; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.utils.pagedate.PageData; 5 | import cn.tedu.youbiliprojectbackend.modules.social.dynamic.pojo.vo.DynamicListVO; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 处理类别数据的缓存的存储库接口 11 | * 12 | * @author java@tedu.cn 13 | * @version 1.0 14 | */ 15 | public interface IDynamicCacheRepository { 16 | 17 | 18 | /** 19 | * 从缓存中读取动态列表 20 | * 21 | * @param userID 用户id 22 | * @return 类别列表 23 | */ 24 | List list(Long userID); 25 | 26 | /** 27 | * 查询动态列表 28 | * 29 | * @param userID 用户id 30 | * @param pageNum 页码 31 | * @param pageSize 每页记录数 32 | * @return 动态列表 33 | */ 34 | PageData list(Long userID, Integer pageNum, Integer pageSize); 35 | 36 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/dynamic/dao/persist/mapper/DynamicMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.dynamic.dao.persist.mapper; 2 | 3 | import org.springframework.stereotype.Repository; 4 | 5 | /** 6 | * 处理动态数据的接口 7 | */ 8 | @Repository 9 | public interface DynamicMapper { 10 | // List<> 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/dynamic/pojo/vo/DynamicListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.dynamic.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 动态列表VO 7 | * 8 | * @author java@tedu.cn 9 | * @version 1.0 10 | */ 11 | @Data 12 | public class DynamicListVO { 13 | /** 14 | * 视频ID 15 | */ 16 | private Long videoID; 17 | /** 18 | * 作者头像 19 | */ 20 | private String imgUrl; 21 | /** 22 | * 作者昵称 23 | */ 24 | private String nickname; 25 | /** 26 | * 视频发布时间 27 | */ 28 | private String uploadDate; 29 | /** 30 | * 视频描述 31 | */ 32 | private String description; 33 | /** 34 | * 视频封面 35 | */ 36 | private String videoImgUrl; 37 | /** 38 | * 视频时长 39 | */ 40 | private String duration; 41 | /** 42 | * 视频标题 43 | */ 44 | private String title; 45 | /** 46 | * 视频播放量 47 | */ 48 | private Integer viewCount; 49 | /** 50 | * 点赞量 51 | */ 52 | private Integer likeCount; 53 | /** 54 | * 平论量 55 | */ 56 | private Integer commentCount; 57 | /** 58 | * 视频地址 59 | */ 60 | private String videoSrcUrl; 61 | } 62 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/dynamic/pojo/vo/followedList.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.dynamic.pojo.vo; 2 | 3 | import lombok.Data; 4 | import lombok.extern.slf4j.Slf4j; 5 | 6 | /** 7 | * @author java@tedu.cn 8 | * @version 1.0 9 | */ 10 | @Slf4j 11 | @Data 12 | public class followedList { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/dynamic/service/IDynameicService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.dynamic.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.dynamic.pojo.vo.DynamicListVO; 4 | import org.springframework.transaction.annotation.Transactional; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 处理动态数据的业务接口 10 | * 11 | * @author java@tedu.cn 12 | * @version 1.0 13 | */ 14 | @Transactional 15 | public interface IDynameicService { 16 | 17 | /** 18 | * 查询动态列表,将使用默认的每页记录数 19 | * 20 | * @return 查询标签列表 21 | */ 22 | List list(Long userId); 23 | // 24 | // /** 25 | // * 查询动态列表,将使用默认的每页记录数 26 | // * 27 | // * @param pageNum 页码 28 | // * @return 查询标签列表 29 | // */ 30 | // PageData list(Long userId,Integer pageNum); 31 | // 32 | // /** 33 | // * 查询动态列表 34 | // * 35 | // * @param pageNum 页码 36 | // * @param pageSize 每页记录数 37 | // * @return 标签列表 38 | // */ 39 | // PageData list(Long userId,Integer pageNum, Integer pageSize); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/dynamic/service/impl/DynameicServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.dynamic.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.dynamic.dao.cache.IDynamicCacheRepository; 4 | import cn.tedu.youbiliprojectbackend.modules.social.dynamic.pojo.vo.DynamicListVO; 5 | import cn.tedu.youbiliprojectbackend.modules.social.dynamic.service.IDynameicService; 6 | import lombok.extern.slf4j.Slf4j; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * @author java@tedu.cn 14 | * @version 1.0 15 | */ 16 | @Slf4j 17 | @Service 18 | public class DynameicServiceImpl implements IDynameicService { 19 | 20 | @Autowired 21 | private IDynamicCacheRepository dynamicCacheRepository; 22 | 23 | 24 | public DynameicServiceImpl() { 25 | log.info("创建业务对象:DynameicServiceImpl"); 26 | } 27 | 28 | @Override 29 | public List list(Long userId) { 30 | log.debug("开始处理【查询动态列表】的业务,参数{}", userId); 31 | return dynamicCacheRepository.list(userId); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/dao/persist/mapper/LikeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.like.pojo.entity.Like; 4 | import cn.tedu.youbiliprojectbackend.modules.social.like.pojo.vo.LikeTypeVO; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | @Repository 9 | public interface LikeMapper extends BaseMapper { 10 | /** 11 | * 插入点赞和点踩数据 12 | * 13 | * @param likes 14 | * @return 15 | */ 16 | int insert(Like likes); 17 | 18 | /** 19 | * 取消点赞 20 | * 21 | * @return 22 | */ 23 | int delete(Long userID, Long videoID); 24 | 25 | /** 26 | * 查询是否点赞 27 | */ 28 | LikeTypeVO selectTypeEnableByVideoID(Long userID, Long videoID); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/dao/persist/repository/ILikeRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.like.pojo.entity.Like; 4 | import cn.tedu.youbiliprojectbackend.modules.social.like.pojo.vo.LikeTypeVO; 5 | 6 | public interface ILikeRepository { 7 | /** 8 | * 插入点赞数据 9 | * 10 | * @param likes 11 | * @return 12 | */ 13 | int insert(Like likes); 14 | 15 | /** 16 | * 取消点赞 17 | * 18 | * @return 19 | */ 20 | int delete(Long userID, Long videoID); 21 | 22 | LikeTypeVO selectTypeEnableByVideoID(Long userID, Long videoID); 23 | 24 | 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/pojo/entity/Like.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.fasterxml.jackson.annotation.JsonFormat; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | public class Like implements Serializable { 13 | 14 | /** 15 | * 点赞ID 16 | */ 17 | private Long likeID; 18 | /** 19 | * 用户ID 20 | */ 21 | private Long userID; 22 | /** 23 | * 视频ID 24 | */ 25 | private Long videoID; 26 | /** 27 | * 点赞时间 28 | */ 29 | @TableField(fill = FieldFill.INSERT) 30 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 31 | private LocalDateTime likeDate; 32 | /** 33 | * 1表示点赞 0表示点踩 34 | */ 35 | private Integer typeEnable; 36 | /** 37 | * 创建时间 38 | */ 39 | @TableField(fill = FieldFill.INSERT) 40 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 41 | private LocalDateTime gmtCreate; 42 | /** 43 | * 点成点踩时间 44 | */ 45 | @TableField(fill = FieldFill.UPDATE) 46 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 47 | private LocalDateTime gmtModified; 48 | } 49 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/pojo/param/LikeParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.pojo.param; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class LikeParam { 7 | 8 | /** 9 | * 视频ID 10 | */ 11 | private Long videoID; 12 | } 13 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/pojo/vo/LikeCountListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class LikeCountListVO { 7 | 8 | 9 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/pojo/vo/LikeTypeVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class LikeTypeVO { 7 | /** 8 | * 状态 9 | */ 10 | private Integer typeEnable; 11 | 12 | } -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/like/service/ILikeService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.like.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.like.pojo.vo.LikeTypeVO; 4 | 5 | /** 6 | * 点赞的业务层接口 7 | * 8 | * @author 万佳兴 9 | */ 10 | public interface ILikeService { 11 | 12 | void addLike(Long userID, Long videoID); 13 | 14 | void removeLike(Long userID, Long videoID); 15 | 16 | void addDislike(Long userID, Long videoID); 17 | 18 | void removeDislike(Long userID, Long videoID); 19 | 20 | LikeTypeVO getTypeEnable(Long userID, Long videoID); 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/notice/dao/persist/mapper/NoticeMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.notice.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.entity.Notice; 4 | import cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.vo.NoticeAllListVO; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | @Repository 11 | public interface NoticeMapper extends BaseMapper { 12 | 13 | List userEnableNoticeList(Integer enable); 14 | 15 | List adminEnableNoticeList(Integer enable); 16 | 17 | List userNoticeUserId(Long userID); 18 | 19 | void deleteByUserId(Long noticeID); 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/notice/dao/persist/repository/INoticeRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.notice.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.vo.NoticeAllListVO; 4 | 5 | import java.util.List; 6 | 7 | public interface INoticeRepository { 8 | List userNoticeList(Integer enable); 9 | 10 | List adminNoticeList(Integer enable); 11 | 12 | List userNoticeUserId(Long userID); 13 | 14 | void deleteByUserId(Long noticeID); 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/notice/pojo/entity/Notice.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | @Data 10 | @TableName("notice") 11 | public class Notice implements Serializable { 12 | 13 | private Long noticeID; 14 | 15 | private Long userID; 16 | 17 | private String systemName; 18 | 19 | private Integer typeEnable; 20 | 21 | private String noticeText; 22 | 23 | private Date noticeTime; 24 | 25 | private Date gmtCreate; 26 | 27 | private Date gmtModified; 28 | } 29 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/notice/pojo/param/NoticeDeleteParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.param; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class NoticeDeleteParam implements Serializable { 9 | 10 | private Long noticeID; 11 | 12 | private Long userID; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/notice/pojo/vo/NoticeAllListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | @Data 10 | public class NoticeAllListVO implements Serializable { 11 | 12 | private Long noticeID; 13 | 14 | private Long userID; 15 | 16 | private Long videoID; 17 | 18 | private String systemName; 19 | 20 | private Integer typeEnable; 21 | 22 | private String noticeText; 23 | 24 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 25 | private Date noticeTime; 26 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 27 | private Date gmtCreate; 28 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 29 | private Date gmtModified; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/notice/service/INoticeService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.social.notice.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.security.CurrentPrincipal; 4 | import cn.tedu.youbiliprojectbackend.modules.social.notice.pojo.vo.NoticeAllListVO; 5 | 6 | import java.util.List; 7 | 8 | 9 | public interface INoticeService { 10 | List userNoticeList(NoticeAllListVO noticeAllListVOS, CurrentPrincipal principal); 11 | 12 | void deleteByUserId(Long noticeID); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/social/social.md: -------------------------------------------------------------------------------- 1 | ### 社交互动模块 2 | 3 | ### 动态 4 | 5 | ### 通知 6 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/dao/cache/classificationSelect.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.ClssificationConsts; 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 5 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryVideoVO; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 从缓存之中查询出数据信息 11 | * 12 | * @author 赵錾 13 | */ 14 | public interface classificationSelect extends ClssificationConsts { 15 | /** 16 | * 从缓存之中查询出分类列表内容 17 | * 18 | * @return 分类列表 19 | */ 20 | List list(); 21 | 22 | /** 23 | * 从缓存中查询出对应分类的视频 24 | */ 25 | List listVideo(Long categoryID, Integer pageNum, Integer pageSize); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/dao/mapper/CategoryMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.entity.Category; 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 5 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryVideoVO; 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | 12 | /** 13 | * 类别mapper接口 14 | * 15 | * @author 万佳兴 16 | */ 17 | @Repository 18 | public interface CategoryMapper extends BaseMapper { 19 | 20 | /** 21 | * 查询视频分类名称 22 | * 23 | * @return CategoryTitleVO 24 | */ 25 | List list(); 26 | 27 | 28 | /** 29 | * 查询视频分类关联表 30 | * 31 | * @return videoID 32 | */ 33 | List select(Long categoryID); 34 | } 35 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/dao/repository/ICategoryRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.repository; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 5 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryVideoVO; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 类别的repository接口 11 | * 12 | * @author 万佳兴 13 | */ 14 | public interface ICategoryRepository { 15 | 16 | /** 17 | * 查询视频分类名称 18 | * 19 | * @return CategoryTitleVO 20 | */ 21 | List list(); 22 | 23 | /** 24 | * 查询视频分类的ID 25 | */ 26 | List select(Long categoryID); 27 | } 28 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/dao/repository/impl/CategoryRepositoryImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.mapper.CategoryMapper; 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.dao.repository.ICategoryRepository; 5 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 6 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryVideoVO; 7 | import lombok.extern.slf4j.Slf4j; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Repository; 10 | 11 | import java.util.List; 12 | 13 | /** 14 | * 类别的repository实现类 15 | * 16 | * @author 万佳兴 17 | */ 18 | @Slf4j 19 | @Repository 20 | public class CategoryRepositoryImpl implements ICategoryRepository { 21 | 22 | @Autowired 23 | private CategoryMapper categoryMapper; 24 | 25 | public CategoryRepositoryImpl() { 26 | log.info("创建存储库对象:CategoryRepositoryImpl"); 27 | } 28 | 29 | @Override 30 | public List list() { 31 | return categoryMapper.list(); 32 | } 33 | 34 | @Override 35 | public List select(Long categoryID) { 36 | List select = categoryMapper.select(categoryID); 37 | return select; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/pojo/entity/Category.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.entity; 2 | 3 | 4 | import com.baomidou.mybatisplus.annotation.*; 5 | import com.fasterxml.jackson.annotation.JsonFormat; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.time.LocalDateTime; 10 | 11 | /** 12 | * 类别的实体类 13 | * 14 | * @author 万佳兴 15 | */ 16 | @Data 17 | @TableName("category") 18 | public class Category implements Serializable { 19 | /** 20 | * 分类ID 21 | */ 22 | @TableId(type = IdType.AUTO) 23 | private Long categoryID; 24 | /** 25 | * 分类名称 26 | */ 27 | private String categoryName; 28 | /** 29 | * 分类描述 30 | */ 31 | private String description; 32 | /** 33 | * 状态 1表示启用 0表示未启用 34 | */ 35 | private Integer enable; 36 | /** 37 | * 创建时间 38 | */ 39 | @TableField(fill = FieldFill.INSERT) 40 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 41 | private LocalDateTime gmtCreate; 42 | 43 | @TableField(fill = FieldFill.UPDATE) 44 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 45 | private LocalDateTime gmtModified; 46 | } 47 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/pojo/vo/CategoryListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * 类别的vo类 11 | * 12 | * @author 万佳兴 13 | */ 14 | @Data 15 | public class CategoryListVO implements Serializable { 16 | /** 17 | * 分类ID 18 | */ 19 | @TableId(type = IdType.AUTO) 20 | private Long categoryID; 21 | /** 22 | * 分类名称 23 | */ 24 | private String categoryName; 25 | 26 | /** 27 | * 视频ID 28 | */ 29 | private Long videoID; 30 | } 31 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/pojo/vo/CategoryTitleVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo; 2 | 3 | import com.baomidou.mybatisplus.annotation.IdType; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | @Data 10 | public class CategoryTitleVO implements Serializable { 11 | 12 | /** 13 | * 分类ID 14 | */ 15 | @TableId(type = IdType.AUTO) 16 | private Long categoryID; 17 | /** 18 | * 分类名称 19 | */ 20 | private String categoryName; 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/pojo/vo/CategoryVideoVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * 类别视频的VO类 9 | */ 10 | @Data 11 | public class CategoryVideoVO implements Serializable { 12 | 13 | /** 14 | * 视频ID 15 | */ 16 | private Long videoID; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/pojo/vo/VideoCategoryListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | @Data 11 | public class VideoCategoryListVO extends VideoUserCache implements Serializable { 12 | /** 13 | * 视频ID 14 | */ 15 | private Long videoID; 16 | /** 17 | * 用户ID 18 | */ 19 | private Long userID; 20 | /** 21 | * 标题 22 | */ 23 | private String title; 24 | /** 25 | * 视频描述 26 | */ 27 | private String description; 28 | /** 29 | * 视频时长 30 | */ 31 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 32 | private Date duration; 33 | /** 34 | * 上传日期 35 | */ 36 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 37 | private Date uploadDate; 38 | /** 39 | * 视频源地址 40 | */ 41 | private String videoSrcUrl; 42 | /** 43 | * 封面地址 44 | */ 45 | private String videoImgUrl; 46 | /** 47 | * 作者昵称 48 | */ 49 | private String nickname; 50 | /** 51 | * 作者头像地址 52 | */ 53 | private String imgUrl; 54 | } 55 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/service/ICategoryService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.tag.classification.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 4 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.pojo.vo.CategoryTitleVO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 类别的service接口 10 | * 11 | * @author 万佳兴 12 | */ 13 | public interface ICategoryService { 14 | 15 | /** 16 | * 查询视频分类名称 17 | * 18 | * @return CategoryTitleVO 19 | */ 20 | List listTile(); 21 | 22 | /** 23 | * 根据分类ID查询出视频相关信息 24 | */ 25 | List selectVideo(Long categoryID); 26 | } 27 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/classification/tag.md: -------------------------------------------------------------------------------- 1 | ### 标签分类模块 -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/tag/tag.md: -------------------------------------------------------------------------------- 1 | ### 标签分类模块 -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/account.md: -------------------------------------------------------------------------------- 1 | ### 此包仅限于登录功能实现 -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/controller/TestController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.controller; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.security.CurrentPrincipal; 4 | import cn.tedu.youbiliprojectbackend.common.web.response.RestBean; 5 | import org.springframework.security.core.annotation.AuthenticationPrincipal; 6 | import org.springframework.web.bind.annotation.PostMapping; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | 11 | @RestController 12 | @RequestMapping("/api/auth") 13 | public class TestController { 14 | 15 | /** 16 | * 测试JwtAuthorizationFilter过滤器是否有效! 17 | * 18 | * @param currentPrincipal 当事人信息 19 | * @return 发送响应, 返回一个当事人信息, 并接收 20 | */ 21 | @PostMapping("/bcd") 22 | public RestBean Test(@AuthenticationPrincipal CurrentPrincipal currentPrincipal) { 23 | 24 | return RestBean.success(currentPrincipal); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/dao/cache/IUserCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.UserCacheConsts; 4 | import cn.tedu.youbiliprojectbackend.common.pojo.po.UserLoginInfoPO; 5 | 6 | public interface IUserCacheRepository extends UserCacheConsts { 7 | 8 | /** 9 | * \ 10 | * 保存用户登录信息到Redis中; 11 | * 12 | * @param Token JWT工具类生成的Token令牌 13 | * @param userLoginInfoPO 用户登录信息;包括IP,浏览器信息 14 | */ 15 | void saveLoginInfo(String Token, UserLoginInfoPO userLoginInfoPO); 16 | 17 | /** 18 | * 根据JWT从redis之中取出用户的登录信息 19 | * 20 | * @param Token JWT 21 | * @return 返回用户登录的信息 22 | */ 23 | UserLoginInfoPO getLoginStatus(String Token); 24 | 25 | /** 26 | * 保存用户的账号状态进redis中 27 | * 28 | * @param userID 用户ID 29 | * @param enable 账号状态: 1表示启用,0表示禁用 30 | */ 31 | void saveEnableByUserID(Long userID, int enable); 32 | 33 | 34 | /** 35 | * 通过用户ID取出用户状态 36 | * 37 | * @param userID 用户ID 38 | * @return 返回值为true时, 账号被封禁;为false时,账号开启; 39 | */ 40 | boolean getEnableByUserID(Long userID); 41 | } 42 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/dao/mapper/AccountMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.dao.mapper; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.entity.Account; 5 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.vo.AccountMeVO; 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * @author 赵錾 11 | */ 12 | @Repository 13 | public interface AccountMapper extends BaseMapper { 14 | Account SelectByUserName(String username); 15 | 16 | AccountMeVO SelectByMe(Long userID); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/pojo/entity/Account.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | @Data 10 | @TableName("user") 11 | public class Account implements Serializable { 12 | private Long userID; 13 | private String username; 14 | private String nickname; 15 | private String password; 16 | private String email; 17 | private Date birthdaty; 18 | private int accountLevel; 19 | private int fans; 20 | private int follows; 21 | private int videoCount; 22 | private int totalLikes; 23 | private Integer enable; 24 | private Date registrationDate; 25 | private Date lastLoginDate; 26 | private String imgUrl; 27 | private Date gmtCreate; 28 | private Date gmtModified; 29 | 30 | private enum MembershipStatus { 31 | ACTIVE, 32 | INACTIVE 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/pojo/param/UserLoginInfoParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.pojo.param; 2 | 3 | import jakarta.validation.constraints.NotNull; 4 | import jakarta.validation.constraints.Pattern; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * 用户登录的参数类 11 | * 12 | * @author java@tedu.cn 13 | * @version 1.0 14 | */ 15 | @Data 16 | public class UserLoginInfoParam implements Serializable { 17 | 18 | /** 19 | * 用户名 20 | */ 21 | @NotNull(message = "请提交用户名") 22 | @Pattern(regexp = "^[a-zA-Z0-9_]{4,14}$", message = "用户名只能包含字母、数字和下划线,且长度为4-14位") 23 | private String username; 24 | 25 | /** 26 | * 密码(原文) 27 | */ 28 | @NotNull(message = "请提交密码") 29 | @Pattern(regexp = "^.{4,15}$", message = "密码必须是4~15长度的字符组成") 30 | private String password; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/pojo/vo/AccountMeVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.pojo.vo; 2 | 3 | 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * 用于登录成功之后获取到信息! 10 | * 11 | * @author ASUS 12 | */ 13 | @Data 14 | public class AccountMeVO implements Serializable { 15 | private String nickname; 16 | private Integer fans; 17 | private Integer follows; 18 | private String imgUrl; 19 | private Integer accountLevel; 20 | 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/pojo/vo/UserLoginVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.pojo.vo; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.Accessors; 5 | 6 | import java.io.Serializable; 7 | 8 | 9 | /** 10 | * @author ASUS 11 | */ 12 | @Data 13 | @Accessors(chain = true) 14 | public class UserLoginVO implements Serializable { 15 | /** 16 | * 用户ID 17 | */ 18 | private Long userID; 19 | /** 20 | * 用户名 21 | */ 22 | private String username; 23 | private String nickname; 24 | private Integer fans; 25 | private Integer follows; 26 | private Integer accountLevel; 27 | /** 28 | * 头像 29 | */ 30 | private String imgUrl; 31 | /** 32 | * 状态 33 | */ 34 | private Integer enable; 35 | /** 36 | * Token(JWT) 37 | */ 38 | private String token; 39 | } 40 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/security/CustomUserDetails.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.security; 2 | 3 | import lombok.EqualsAndHashCode; 4 | import lombok.Getter; 5 | import lombok.ToString; 6 | import org.springframework.security.core.GrantedAuthority; 7 | import org.springframework.security.core.userdetails.User; 8 | 9 | import java.util.Collection; 10 | 11 | /** 12 | * @author java@tedu.cn 13 | * @version 1.0 14 | */ 15 | @Getter 16 | @ToString(callSuper = true) 17 | @EqualsAndHashCode(callSuper = true) 18 | public class CustomUserDetails extends User { 19 | 20 | private final Long userID; 21 | private final String imgUrl; 22 | 23 | public CustomUserDetails(Long userID, 24 | String username, 25 | String password, 26 | String imgUrl, 27 | boolean enabled, 28 | Collection authorities) { 29 | super(username, password, enabled, true, true, true, authorities); 30 | this.userID = userID; 31 | this.imgUrl = imgUrl; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/account/service/IUserService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.account.service; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.param.UserLoginInfoParam; 5 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.vo.AccountMeVO; 6 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.vo.UserLoginVO; 7 | 8 | public interface IUserService { 9 | 10 | /** 11 | * 登录实习 12 | * 13 | * @param userLoginInfoParam 用户名密码表单 14 | * @param remoteAddr IP地址 15 | * @param userAgent 客户端的浏览器信息 16 | * @return 登录成功后将返回用户名, 用户ID等 17 | */ 18 | UserLoginVO login(UserLoginInfoParam userLoginInfoParam, String remoteAddr, String userAgent); 19 | 20 | AccountMeVO me(Long userID); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/dao/cache/FavoriteCacheRepoistory.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.cache; 2 | 3 | 4 | public interface FavoriteCacheRepoistory { 5 | /** 6 | * 保存 7 | */ 8 | void save(); 9 | 10 | } 11 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/dao/cache/impl/FavoriteCacheRepoistoryImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.cache.impl; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.consts.CountConsts; 5 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.cache.FavoriteCacheRepoistory; 6 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.persist.mapper.FavoriteMapper; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Repository; 9 | 10 | @Repository 11 | public class FavoriteCacheRepoistoryImpl implements FavoriteCacheRepoistory, CountConsts { 12 | 13 | @Autowired 14 | private FavoriteMapper favoriteMapper; 15 | 16 | 17 | @Override 18 | public void save() { 19 | } 20 | 21 | 22 | } 23 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/dao/persist/mapper/FavoriteMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.entity.Favorite; 4 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.vo.FavoriteVO; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @author ASUS 12 | */ 13 | @Repository 14 | public interface FavoriteMapper extends BaseMapper { 15 | 16 | List selectListById(Long userID); 17 | 18 | int deleteByFavoriteIDAndUserID(Long userID, Long favoriteID); 19 | 20 | int insertAll(Long userID, Long videoID); 21 | 22 | int deleteByuserIDandvideoID(Long userID, Long videoID); 23 | 24 | Favorite selectByEnable(Long userID, Long videoID); 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/dao/persist/repository/IFavoriteRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.persist.repository; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.vo.FavoriteVO; 5 | 6 | import java.util.List; 7 | 8 | public interface IFavoriteRepository { 9 | /** 10 | * 收藏列表接口 11 | * 12 | * @param userID 当事人ID 13 | * @return 查询出来的收藏列表 14 | */ 15 | List list(Long userID); 16 | 17 | /** 18 | * 删除收藏视频 19 | * 20 | * @param userID 21 | * @param favoriteID 收藏ID 22 | * @return 返回删除行数 23 | */ 24 | int deleteById(Long favoriteID, Long userID); 25 | 26 | /** 27 | * 添加收藏 28 | * 29 | * @param userID 当事人ID 30 | * @param videoID 视频ID 31 | * @return 返回添加行数 32 | */ 33 | int addFavorite(Long userID, Long videoID); 34 | 35 | int deleteByuserIDAndvideoID(Long userID, Long videoID); 36 | 37 | Boolean selectByEnable(Long userID, Long videoID); 38 | } 39 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/pojo/entity/Favorite.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.*; 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | @Data 11 | @TableName("favorite") 12 | public class Favorite implements Serializable { 13 | 14 | @TableId(type = IdType.AUTO) 15 | private Long favoriteID; 16 | 17 | private Long userID; 18 | 19 | private Long videoID; 20 | 21 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 22 | private Date favoriteDate; 23 | 24 | private Integer enable; 25 | 26 | @TableField(fill = FieldFill.INSERT) 27 | private Date gmtCreate; 28 | @TableField(fill = FieldFill.INSERT_UPDATE) 29 | private Date gmtModified; 30 | } 31 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/pojo/param/FavoriteParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.param; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | /** 9 | * 取消收藏视频的计数 10 | */ 11 | @Data 12 | public class FavoriteParam { 13 | /** 14 | * 用户ID 15 | */ 16 | private Long userID; 17 | /** 18 | * 视频ID 19 | */ 20 | private Long videoID; 21 | /** 22 | * 启用状态 23 | */ 24 | private Integer enable; 25 | /** 26 | * 收藏总数 27 | */ 28 | private Integer favoriteCount; 29 | /** 30 | * 修改时间 31 | */ 32 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 33 | private LocalDateTime gmtModified; 34 | } 35 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/pojo/vo/FavoriteVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.util.Date; 8 | 9 | /** 10 | * @author 赵錾 11 | * 收藏列表实体类 12 | */ 13 | @Data 14 | public class FavoriteVO implements Serializable { 15 | 16 | /** 17 | * 收藏ID 18 | */ 19 | private Long favoriteID; 20 | /** 21 | * 视频ID 22 | */ 23 | private Long videoID; 24 | /** 25 | * 昵称(视频作者昵称) 26 | */ 27 | private String nickname; 28 | /** 29 | * 收藏日期 30 | */ 31 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 32 | private Date favoriteDate; 33 | /** 34 | * 视频标题 35 | */ 36 | private String title; 37 | /** 38 | * 头像(视频作者头像) 39 | */ 40 | private String imgUrl; 41 | /** 42 | * 视频封面地址 43 | */ 44 | private String videoImgUrl; 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/favorite/service/IFavoriteService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.favorite.service; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.pojo.vo.FavoriteVO; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author ASUS 10 | */ 11 | public interface IFavoriteService { 12 | 13 | /** 14 | * 获取收藏视频列表 15 | * 16 | * @param userID 当事人ID 17 | * @return 返回列表数据 18 | */ 19 | List list(Long userID); 20 | 21 | /** 22 | * 删除收藏信息; 23 | * 24 | * @param favoriteID 25 | * @param userID 26 | */ 27 | void deleteById(Long favoriteID, Long userID, Long videoID); 28 | 29 | void insterFavorite(Long userID, Long videoID); 30 | 31 | void deleteByUserIDandVideoID(Long userID, Long videoID); 32 | } 33 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/dao/persist/mapper/FanMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.entity.Follow; 4 | import cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.vo.FanListVO; 5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | @Repository 11 | public interface FanMapper extends BaseMapper { 12 | 13 | /** 14 | * 查询粉丝列表 15 | * 16 | * @param userID 当事人ID 17 | * @return 18 | */ 19 | List selectListByUserId(Long userID); 20 | 21 | /** 22 | * 删除粉丝 23 | * 24 | * @param userID 当事人ID 25 | * @param followID 关注表的ID 26 | * @return 27 | */ 28 | int delete(Long userID, Long followID); 29 | 30 | /** 31 | * 查询用户是否有这个粉丝 32 | * 33 | * @param userID 当事人ID 34 | * @param followID 关注表的ID 35 | * @return 36 | */ 37 | int selectByUserIDAndFollowID(Long userID, Long followID); 38 | } 39 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/dao/persist/repository/IFanRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.vo.FanListVO; 4 | 5 | import java.util.List; 6 | 7 | public interface IFanRepository { 8 | /** 9 | * 查询用户关注列表 10 | * 11 | * @param userID 当事人ID 12 | * @return 返回用户粉丝列表 13 | */ 14 | List selectListByUserId(Long userID); 15 | 16 | /** 17 | * 删除粉丝 18 | * 19 | * @param userID 当事人ID 20 | * @param followID 关注表的ID 21 | * @return 22 | */ 23 | int delete(Long userID, Long followID); 24 | 25 | /** 26 | * 查询用户时候有该粉丝 27 | * 28 | * @param userID 当事人ID 29 | * @param followID 关注表的ID 30 | * @return 31 | */ 32 | int selectByUserIDAndFollowID(Long userID, Long followID); 33 | } 34 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/pojo/entity/Follow.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.util.Date; 10 | 11 | /** 12 | * @author 肖爽 13 | */ 14 | @Data 15 | @TableName("follow") 16 | public class Follow implements Serializable { 17 | private Long followID; 18 | @TableField(value = "followerID") 19 | private Long followerID; 20 | @TableField(value = "followedID") 21 | private Long followedID; 22 | private Date followDate; 23 | private Integer enable; 24 | @TableField(fill = FieldFill.INSERT) 25 | private Date gmtCreate; 26 | @TableField(fill = FieldFill.INSERT_UPDATE) 27 | private Date gmtModified; 28 | } 29 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/pojo/entity/followedID.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.entity; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class followedID implements Serializable { 9 | private Long followedID; 10 | } 11 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/pojo/vo/FanListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class FanListVO implements Serializable { 9 | private Long followID; 10 | private Long followerID; 11 | private String nickname; 12 | private Integer fansCount; 13 | private Integer followCount; 14 | private String imgUrl; 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/pojo/vo/FollowListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class FollowListVO implements Serializable { 9 | private Long followID; 10 | private Long followedID; 11 | private String nickname; 12 | private Integer fansCount; 13 | private Integer followCount; 14 | private String imgUrl; 15 | } 16 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/service/IFanService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.vo.FanListVO; 4 | 5 | import java.util.List; 6 | 7 | public interface IFanService { 8 | /** 9 | * 用户关注列表 10 | * 11 | * @param userID 当事人ID 12 | * @return 返回用户粉丝列表 13 | */ 14 | List list(Long userID); 15 | 16 | /** 17 | * 删除粉丝 18 | * 19 | * @param userID 当事人ID 20 | * @param followID 关注表的ID 21 | */ 22 | void delete(Long userID, Long followID); 23 | } 24 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/follow/service/IFollowService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.follow.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.follow.pojo.vo.FollowListVO; 4 | import org.springframework.transaction.annotation.Transactional; 5 | 6 | import java.util.List; 7 | 8 | @Transactional 9 | public interface IFollowService { 10 | /** 11 | * 添加关注 12 | * 13 | * @param userID 关注人的ID 14 | * @return 15 | */ 16 | List list(Long userID); 17 | 18 | /** 19 | * 添加关注 20 | * 21 | * @param followerID 当事人ID 22 | * @param followedID 被关注人ID 23 | */ 24 | void addFollow(Long followerID, Long followedID); 25 | 26 | /** 27 | * 取消关注 28 | * 29 | * @param userID 当事人ID 30 | * @param followID 关注表的ID 31 | */ 32 | void delete(Long userID, Long followID); 33 | 34 | Long selectByFollowIdSer(Long followID); 35 | } 36 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/history/dao/cache/HistorySelect.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.history.dao.cache; 2 | 3 | import java.time.LocalDateTime; 4 | 5 | /** 6 | * 从缓存之中添加历史记录的数据信息 7 | * 8 | * @author 杨影茹 9 | */ 10 | public interface HistorySelect { 11 | /** 12 | * 根据userID,videoID添加历史记录 13 | * 14 | * @param userID 用户ID 15 | * @param videoID 视频Id 16 | * @return 匹配的历史记录,如果没有匹配的数据,则返回null 17 | */ 18 | void insert(Long userID, Long videoID, LocalDateTime watchDuration); 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/history/pojo/catche/HistoryCatch.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.history.pojo.catche; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | @Data 9 | public class HistoryCatch implements Serializable { 10 | /** 11 | * 视频作者ID 12 | */ 13 | private Long userID; 14 | /** 15 | * 视频ID 16 | */ 17 | private Long videoID; 18 | 19 | /** 20 | * 显示状态,0=不显示,1=显示 21 | */ 22 | private Integer enable; 23 | /** 24 | * 观看日期 25 | */ 26 | @JsonFormat(pattern = "yyyy-MM-dd") 27 | private String watchDate; 28 | /** 29 | * 观看时长 30 | */ 31 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 32 | private String watchDuration; 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/history/pojo/entity/History.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.history.pojo.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.FieldFill; 4 | import com.baomidou.mybatisplus.annotation.TableField; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | //@TableName("history") 12 | public class History implements Serializable { 13 | /** 14 | * 历史记录ID 15 | */ 16 | private Long historyID; 17 | /** 18 | * 用户ID 19 | */ 20 | private Long userID; 21 | /** 22 | * 视频ID 23 | */ 24 | private Long VideoID; 25 | /** 26 | * 显示状态,0=不显示,1=显示 27 | */ 28 | private Integer enable; 29 | /** 30 | * 观看日期 31 | */ 32 | private Long watchDate; 33 | /** 34 | * 观看时长 35 | */ 36 | private Long watchDuration; 37 | /** 38 | * 数据创建时间 39 | */ 40 | @TableField(fill = FieldFill.INSERT) 41 | private LocalDateTime gmtCreate; 42 | /** 43 | * 数据最后修改时间 44 | */ 45 | @TableField(fill = FieldFill.INSERT_UPDATE) 46 | private LocalDateTime gmtModified; 47 | } 48 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/history/pojo/param/HistoryParam.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.history.pojo.param; 2 | 3 | 4 | import com.fasterxml.jackson.annotation.JsonFormat; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | public class HistoryParam implements Serializable { 12 | 13 | /** 14 | * 历史记录ID 15 | */ 16 | private Long historyID; 17 | /** 18 | * 视频作者ID 19 | */ 20 | private Long userID; 21 | /** 22 | * 视频ID 23 | */ 24 | private Long videoID; 25 | /** 26 | * 视频封面 27 | */ 28 | private String videoImgUrl; 29 | /** 30 | * 作者的头像 31 | */ 32 | private String imgUrl; 33 | /** 34 | * 视频的标题 35 | */ 36 | private String title; 37 | /** 38 | * 作者的名称 39 | */ 40 | private String nickname; 41 | /** 42 | * 显示状态,0=不显示,1=显示 43 | */ 44 | private Integer enable; 45 | /** 46 | * 观看日期 47 | */ 48 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 49 | private LocalDateTime watchDate; 50 | /** 51 | * 观看时长 52 | */ 53 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 54 | private LocalDateTime watchDuration; 55 | } 56 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/history/pojo/vo/HistoryListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.history.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | public class HistoryListVO implements Serializable { 11 | //JavaBean的写法 实体类实现序列化接口 ; private私有属性 ;提供Getter,Setter方法 12 | 13 | // 视频 : 视频封面 ,视频标题 ,作者的名称 ,作者的头像 ; 视频的ID; 14 | // 历史 : 观看日期, 观看时长 ,历史记录ID ; enable 是否删除的状态 15 | 16 | 17 | /** 18 | * 历史记录ID 19 | */ 20 | private Long historyID; 21 | /** 22 | * 视频作者ID 23 | */ 24 | private Long userID; 25 | /** 26 | * 视频ID 27 | */ 28 | private Long videoID; 29 | /** 30 | * 视频封面 31 | */ 32 | private String videoImgUrl; 33 | /** 34 | * 作者的头像 35 | */ 36 | private String imgUrl; 37 | /** 38 | * 视频的标题 39 | */ 40 | private String title; 41 | /** 42 | * 作者的名称 43 | */ 44 | private String nickname; 45 | /** 46 | * 显示状态,0=不显示,1=显示 47 | */ 48 | private Integer enable; 49 | /** 50 | * 观看日期 51 | */ 52 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 53 | private LocalDateTime watchDate; 54 | /** 55 | * 观看时长 56 | */ 57 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 58 | private LocalDateTime watchDuration; 59 | } 60 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/controller/personalController.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.controller; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.security.CurrentPrincipal; 4 | import cn.tedu.youbiliprojectbackend.common.web.response.RestBean; 5 | import cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo.PersonalCenterInfoVO; 6 | import cn.tedu.youbiliprojectbackend.modules.user.personal.service.IPersonalService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.security.core.annotation.AuthenticationPrincipal; 9 | import org.springframework.web.bind.annotation.GetMapping; 10 | import org.springframework.web.bind.annotation.PathVariable; 11 | import org.springframework.web.bind.annotation.RequestMapping; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | @RestController 15 | @RequestMapping("/user/personal/") 16 | public class personalController { 17 | @Autowired 18 | IPersonalService service; 19 | 20 | @GetMapping("{userId}/get-center") 21 | public RestBean getUserInfo(@PathVariable Long userId, @AuthenticationPrincipal CurrentPrincipal principal) { 22 | if (userId == 0) { 23 | userId = principal.getUserID(); 24 | } 25 | PersonalCenterInfoVO centerInfo = service.getCenterInfoById(userId); 26 | return RestBean.success(centerInfo); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/dao/persist/mapper/PersonalMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.entity.Account; 4 | import cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo.CenterVideoInfoVO; 5 | import cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo.PersonalCenterUserInfoVO; 6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | @Repository 12 | public interface PersonalMapper extends BaseMapper { 13 | List selectVideoInfoByUserId(Long id); 14 | 15 | List selectFavoriteInfoByUserId(Long id); 16 | 17 | List selectHistoryInfoByUserId(Long id); 18 | 19 | PersonalCenterUserInfoVO selectUserInfoByUserId(Long id); 20 | } 21 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/dao/persist/repository/IPersonalRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.dao.persist.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo.CenterVideoInfoVO; 4 | import cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo.PersonalCenterUserInfoVO; 5 | 6 | import java.util.List; 7 | 8 | public interface IPersonalRepository { 9 | List selectVideoInfoByUserId(Long id); 10 | 11 | PersonalCenterUserInfoVO selectUserInfoByUserId(Long id); 12 | 13 | List selectFavoriteInfoByUserId(Long id); 14 | 15 | List selectHistoryInfoByUserId(Long id); 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/pojo/vo/CenterVideoInfoVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class CenterVideoInfoVO implements Serializable { 9 | private String nickname; 10 | private String imgUrl; 11 | private String videoImgUrl; 12 | private String title; 13 | private Long likeCount; 14 | private String categoryName; 15 | private Long commentCount; 16 | private String description; 17 | private String viewCount; 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/pojo/vo/PersonalCenterInfoVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | import java.util.List; 7 | 8 | @Data 9 | public class PersonalCenterInfoVO implements Serializable { 10 | private String imgUrl; 11 | private String nickname; 12 | private Long fans;//粉丝数量 13 | private Long follows; //关注数量; 14 | private Long totalLikes;//总点赞数 15 | private String birthday;//生日 16 | private Long accountLevel;//账户等级 17 | private List videoList; 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/pojo/vo/PersonalCenterUserInfoVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class PersonalCenterUserInfoVO implements Serializable { 9 | private String imgUrl; 10 | private String nickname; 11 | private Long fans;//粉丝数量 12 | private Long follows; //关注数量; 13 | private Long totalLikes;//总点赞数 14 | private String birthday;//生日 15 | private Long accountLevel;//账户等级 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/personal/service/IPersonalService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.personal.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.personal.pojo.vo.PersonalCenterInfoVO; 4 | 5 | public interface IPersonalService { 6 | PersonalCenterInfoVO getCenterInfoById(Long id); 7 | } 8 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/register/dao/cache/RegisteCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.register.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.RegisterConsts; 4 | 5 | public interface RegisteCacheRepository extends RegisterConsts { 6 | 7 | /** 8 | * 发送验证码功能; 9 | * 将验证码的内容存储到redis之中,其中key为SessionID+email,value为code验证码 10 | * 11 | * @param key sessionID+email组合拼接 12 | * @param code 验证码 13 | */ 14 | void AddSendToEmail(String key, String code); 15 | 16 | /** 17 | * 查询key是否已存在与Redis之中; 18 | * 存在返回true,不存在返回false 19 | * 20 | * @param key Redis之中存储的key 21 | * @return key存在返回true 不存在返回false 22 | */ 23 | boolean keyByKey(String key); 24 | 25 | /** 26 | * 通过key查询这个key的剩余时间 27 | * 28 | * @param key Redis之中存储的Key 29 | * @return key存在返回true 不存在返回false 30 | */ 31 | Long timeOrdata(String key); 32 | 33 | 34 | /** 35 | * 通过key取出value的值; 36 | * 37 | * @param key 存储到Redis之中的key 38 | * @return 将value返回; 39 | */ 40 | String valueByKey(String key); 41 | } 42 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/register/dao/mapper/UserMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.register.dao.mapper; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.modules.user.account.pojo.entity.Account; 5 | import cn.tedu.youbiliprojectbackend.modules.user.register.pojo.vo.UserRegist; 6 | import com.baomidou.mybatisplus.annotation.TableName; 7 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 8 | import org.springframework.stereotype.Repository; 9 | 10 | @Repository 11 | @TableName("user") 12 | public interface UserMapper extends BaseMapper { 13 | 14 | //注册 15 | int insertUser(String username, String password, String email, String nickname); 16 | 17 | //查询邮箱 18 | UserRegist selectByEmail(String email); 19 | 20 | UserRegist selectByUsername(String username); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/register/pojo/dto/AccountRegDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.register.pojo.dto; 2 | 3 | 4 | import jakarta.validation.constraints.Email; 5 | import jakarta.validation.constraints.Pattern; 6 | import lombok.Data; 7 | import org.hibernate.validator.constraints.Length; 8 | import org.springframework.validation.annotation.Validated; 9 | 10 | import java.io.Serializable; 11 | 12 | 13 | @Validated 14 | @Data 15 | public class AccountRegDTO implements Serializable { 16 | /** 17 | * 用户名 18 | * 长度 4 - 14 19 | * 只能包含字母、数字、下划线或短横线,并且长度为 4 到 14 位 20 | */ 21 | @Pattern(regexp = "^[a-zA-Z0-9_]{4,14}$", message = "用户名只能包含字母、数字和下划线,且长度为4-14位") 22 | private String username; 23 | /** 24 | * 密码: 25 | * 长度6-18 26 | */ 27 | @Length(min = 6, max = 18) 28 | private String password; 29 | 30 | /** 31 | * 邮箱: 32 | * 格式为邮箱 33 | */ 34 | @Email(message = "您输入的邮箱格式错误,请重新输入!") 35 | private String email; 36 | 37 | /** 38 | * 昵称: 39 | * 长度1-10 40 | */ 41 | @Length(min = 1, max = 10) 42 | private String nickname; 43 | 44 | /** 45 | * 验证码 46 | */ 47 | @Length(min = 6, max = 6) 48 | private String code; 49 | 50 | } 51 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/register/pojo/vo/UserRegist.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.register.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class UserRegist implements Serializable { 9 | private Long userID; 10 | private String username; 11 | 12 | } 13 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/register/register.md: -------------------------------------------------------------------------------- 1 | ### 此包仅包含注册功能 2 | 3 | * 其中包括发送验证码,以及注册功能 4 | * 其中发送验证码功能,需要通过客户端携带的cookie来生成session.使用redis存储验证码,使用sessionId + 5 | email生成key,验证码作为value.设置存储时间为3分钟,若小于120秒时,可覆盖存储重新发送验证码. 6 | * 注册功能需要参数 username password email nickname 7 | code,将其封装在[AccountRegDTO.java](pojo%2Fdto%2FAccountRegDTO.java) 8 | 类中,并设置参数格式检查;通过接受到的请求,拿到email以及再次生成session并拼接成key,到redis中查询是否存在key.存在则比较验证码,验证码正确则查看是否有相同的username若没有相同的username则进行插入; -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/register/service/AuthorizeService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.register.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.RegisterConsts; 4 | 5 | public interface AuthorizeService extends RegisterConsts { 6 | void sendVaildateEmail(String email, String sessionId); 7 | 8 | void validateAndRegister(String username, String password, String email, String nickname, String code, String sessionId); 9 | } 10 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/user.md: -------------------------------------------------------------------------------- 1 | ### 用户管理模块 2 | 3 | * account下是有关于登录内容的包 4 | * 其中登录接口地址为 "/api/auth/login" 5 | * 测试类的接口地址为 "/test/auth/abc",此测试类返回值携带当事人信息,其中包含当事人信息的写法如下 6 | ```java 7 | @PostMapping("/abc") 8 | public RestBean Test(@AuthenticationPrincipal CurrentPrincipal currentPrincipal){ 9 | return RestBean.success(currentPrincipal); 10 | } 11 | ``` -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/usercount/dao/cache/UserCountCacheRepository.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.usercount.dao.cache; 2 | 3 | import cn.tedu.youbiliprojectbackend.common.consts.UserCacheConsts; 4 | 5 | public interface UserCountCacheRepository extends UserCacheConsts { 6 | /** 7 | * 向redis之中的计数字段添加粉丝数+1; 8 | * 9 | * @param userID 10 | */ 11 | void addFans(Long userID); 12 | 13 | /** 14 | * 向redis之中的计数字段粉丝数-1; 15 | * 16 | * @param userID 17 | */ 18 | void removeFans(Long userID); 19 | 20 | /** 21 | * 向redis之中的计数字段关注数+1; 22 | * 23 | * @param userID 24 | */ 25 | void addFollow(Long userID); 26 | 27 | 28 | /** 29 | * 向redis之中的计数字段粉丝数-1; 30 | * 31 | * @param userID 32 | */ 33 | void removeFollow(Long userID); 34 | 35 | /** 36 | * 向redis之中的计数字段视频数+1; 37 | * 38 | * @param userID 39 | */ 40 | void addVideoCount(Long userID); 41 | 42 | /** 43 | * 向redis之中的计数字段视频数-1; 44 | * 45 | * @param userID 46 | */ 47 | void removeVideoCount(Long userID); 48 | 49 | 50 | /** 51 | * 向redis之中的计数字段总点赞数-1; 52 | * 53 | * @param userID 54 | */ 55 | void addTotalCount(Long userID); 56 | 57 | 58 | /** 59 | * 向redis之中的计数字段总点赞数-1; 60 | * 61 | * @param userID 62 | */ 63 | void removeTotalCount(Long userID); 64 | } 65 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/usercount/service/CountSerivce.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.usercount.service; 2 | 3 | public interface CountSerivce { 4 | } 5 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/user/usercount/service/impl/countServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.user.usercount.service.impl; 2 | 3 | public class countServiceImpl { 4 | } 5 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/barrage/pojo/DTO/BarrageDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.barrage.pojo.DTO; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class BarrageDTO implements Serializable { 9 | private Long videoID; 10 | private Float time; 11 | private String text; 12 | private String color; 13 | private String type; 14 | private Boolean isMe; 15 | private Boolean force; 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/barrage/pojo/VO/BarrageVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.barrage.pojo.VO; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class BarrageVO implements Serializable { 9 | private Float time; 10 | private String text; 11 | private String color; 12 | private String type; 13 | private Boolean force; 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/barrage/pojo/entity/Barrage.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.barrage.pojo.entity; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | import org.springframework.data.mongodb.core.mapping.Document; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @Document(collection = "barrage") 12 | public class Barrage implements Serializable { 13 | 14 | private Long videoID; 15 | private Float time; 16 | private String text; 17 | private String color; 18 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 19 | private LocalDateTime gmtCreate; 20 | private String name; 21 | private String type; 22 | private Boolean isMe; 23 | private Boolean force; 24 | } 25 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/barrage/server/BarrageService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.barrage.server; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.barrage.pojo.DTO.BarrageDTO; 4 | import cn.tedu.youbiliprojectbackend.modules.video.barrage.pojo.VO.BarrageVO; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | @Repository 10 | public interface BarrageService { 11 | List findByVideoID(Long videoID); 12 | 13 | void sent(BarrageDTO barrageDTO); 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/index/dao/cache/IVideoListCache.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.index.dao.cache; 2 | 3 | 4 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.user.pojo.vo.UserCountsCacheVO; 5 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.count.video.pojo.VideoCount; 6 | import cn.tedu.youbiliprojectbackend.common.cacheUtils.videoList.pojo.vo.VideoUserCache; 7 | import cn.tedu.youbiliprojectbackend.common.consts.CountConsts; 8 | import cn.tedu.youbiliprojectbackend.common.consts.VideoConsts; 9 | 10 | 11 | public interface IVideoListCache extends VideoConsts, CountConsts { 12 | /** 13 | * 查询视频计数字段 14 | * 15 | * @param videoID 视频ID 16 | * @return 视频计数字段 17 | */ 18 | VideoCount listLike(Long videoID); 19 | 20 | /** 21 | * 查询视频的Url等 22 | * 23 | * @param videoID 视频ID 24 | * @return 视频url 25 | */ 26 | VideoUserCache videoListselect(Long videoID); 27 | 28 | /** 29 | * 查询作者的关注等 30 | * 31 | * @param userID 作者ID 32 | * @return 作者计数字段 33 | */ 34 | UserCountsCacheVO listFansFolCount(Long userID); 35 | } 36 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/index/dao/persist/mapper/TagMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.index.dao.persist.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.index.pojo.vo.VideoTagVO; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | @Repository 9 | public interface TagMapper { 10 | List select(Long videoID); 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/index/pojo/vo/VideoTagVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.index.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class VideoTagVO implements Serializable { 9 | private String tagName; 10 | 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/index/pojo/vo/videoListVO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.index.pojo.vo; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | import lombok.Data; 5 | import lombok.experimental.Accessors; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | @Data 11 | @Accessors(chain = true) 12 | public class videoListVO implements Serializable { 13 | private Long videoID; 14 | private Long userID; 15 | private String title; 16 | private String description; 17 | /** 18 | * 视频时长 19 | */ 20 | @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "HH:mm:ss") 21 | private Date duration; 22 | /** 23 | * 上传日期 24 | */ 25 | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 26 | private Date uploadDate; 27 | private String videoSrcUrl; 28 | private String videoImgUrl; 29 | private String nickname; 30 | private String imgUrl; 31 | 32 | /** 33 | * 总点赞数 34 | */ 35 | private Integer likeCount; 36 | private Integer viewCount; 37 | private Integer favoriteCount; 38 | private Integer dislikeCount; 39 | private Integer barrageCount; 40 | private Integer commentCount; 41 | 42 | /** 43 | * 作者的点赞总数 44 | */ 45 | private Integer fans; 46 | private Integer follow; 47 | } 48 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/index/service/IVideoListService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.index.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.index.pojo.vo.VideoTagVO; 4 | import cn.tedu.youbiliprojectbackend.modules.video.index.pojo.vo.videoListVO; 5 | 6 | import java.util.List; 7 | 8 | public interface IVideoListService { 9 | videoListVO selectAll(Long videoID); 10 | 11 | List selectTag(Long videoID); 12 | } 13 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/dao/mapper/AddCategoryMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.VideoCategoryDTO; 4 | import org.springframework.stereotype.Repository; 5 | 6 | @Repository 7 | public interface AddCategoryMapper { 8 | int insertCategory(VideoCategoryDTO videoCategoryDTO); 9 | } 10 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/dao/mapper/AddTagMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.VideoTagDTO; 4 | import org.springframework.stereotype.Repository; 5 | 6 | @Repository 7 | public interface AddTagMapper { 8 | int insertTag(VideoTagDTO videoTagDTO); 9 | } 10 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/dao/mapper/VideoUploadMapper.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.mapper; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.UploadTextDTO; 4 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.VideoUpdateDTO; 5 | import org.springframework.stereotype.Repository; 6 | 7 | @Repository 8 | public interface VideoUploadMapper { 9 | int insertVideoContent(UploadTextDTO uploadTextDTO); 10 | 11 | int changeVideoContent(VideoUpdateDTO videoUpdateDTO); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/dao/repository/IVideoUpload.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.repository; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.UploadTextDTO; 4 | 5 | public interface IVideoUpload { 6 | void videoUpload(UploadTextDTO uploadTextDTO); 7 | } 8 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/dao/repository/impl/VideoUploadImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.repository.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.mapper.VideoUploadMapper; 4 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.repository.IVideoUpload; 5 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.UploadTextDTO; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Repository; 8 | 9 | @Repository 10 | public class VideoUploadImpl implements IVideoUpload { 11 | @Autowired 12 | private VideoUploadMapper videoUploadMapper; 13 | 14 | @Override 15 | public void videoUpload(UploadTextDTO uploadTextDTO) { 16 | videoUploadMapper.insertVideoContent(uploadTextDTO); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/pojo/dto/UploadContentDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class UploadContentDTO implements Serializable { 9 | // 视频id 10 | private Long videoID; 11 | // 用户id 12 | private Long userID; 13 | // 视频标题 14 | private String title; 15 | // 视频描述 16 | private String description; 17 | // 封面 18 | private String videoImgUrl; 19 | // 视频本地路径 20 | private String videoSrcUrl; 21 | // 分类 22 | private Long type; 23 | // 标签 24 | private String[] tag; 25 | } 26 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/pojo/dto/UploadTextDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class UploadTextDTO implements Serializable { 9 | // 视频id 10 | private Long videoID; 11 | // 用户id 12 | private Long userID; 13 | // 视频标题 14 | private String title; 15 | // 视频描述 16 | private String description; 17 | // 封面 18 | private String videoImgUrl; 19 | // 视频本地路径 20 | private String videoSrcUrl; 21 | } 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/pojo/dto/VideoCategoryDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class VideoCategoryDTO implements Serializable { 9 | private Long videoID; 10 | private Long categoryID; 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/pojo/dto/VideoTagDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class VideoTagDTO implements Serializable { 9 | private Long videoID; 10 | private Long tagID; 11 | } 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/pojo/dto/VideoUpdateDTO.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | @Data 8 | public class VideoUpdateDTO implements Serializable { 9 | // 视频id 10 | private Long videoID; 11 | // 视频时长 12 | private String duration; 13 | // 视频本地路径 14 | private String videoSrcUrl; 15 | //图片本地路径 16 | private String videoImgUrl; 17 | } 18 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/service/IVideoUploadService.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.service; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.UploadTextDTO; 4 | 5 | public interface IVideoUploadService { 6 | void videoUpload(UploadTextDTO uploadTextDTO); 7 | } 8 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/service/impl/VideoUploadServiceImpl.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.modules.video.uplaod.service.impl; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.dao.repository.IVideoUpload; 4 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.pojo.dto.UploadTextDTO; 5 | import cn.tedu.youbiliprojectbackend.modules.video.uplaod.service.IVideoUploadService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | @Service 10 | public class VideoUploadServiceImpl implements IVideoUploadService { 11 | @Autowired 12 | private IVideoUpload iVideoUpload; 13 | 14 | @Override 15 | public void videoUpload(UploadTextDTO uploadTextDTO) { 16 | iVideoUpload.videoUpload(uploadTextDTO); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/uplaod/video.md: -------------------------------------------------------------------------------- 1 | ### 视频模块 -------------------------------------------------------------------------------- /youbili-project-backend/src/main/java/cn/tedu/youbiliprojectbackend/modules/video/video.md: -------------------------------------------------------------------------------- 1 | ### 视频模块 2 | 3 | ### 数据处理方面 4 | 5 | 将每一条视频的信息存入redis之中,其中redis的key为 Video: ***userID*** : ***videoID*** 6 | 7 | #### 查询操作 8 | 9 | * 直接通过videoID查到相应视频; 10 | * 通过userID查到对应的所有videoID; 11 | 12 | ### 增删操作 13 | 14 | ***例如:点赞操作;*** 15 | 16 | 1. 增加视频点赞数 17 | 18 | * 19 | * 将点赞对应的数据添加到likes表之中 20 | * 21 | * 在将video表之中的点赞数 +1 22 | * 23 | * 同时删除Redis之中的原本数据 24 | * 25 | * 在将更新后的数据插入到Redis之中 -------------------------------------------------------------------------------- /youbili-project-backend/src/main/main.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports: -------------------------------------------------------------------------------- 1 | # org.apache.rocketmq.spring.autoconfigure.RocketMQAutoConfiguration -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/application.yaml: -------------------------------------------------------------------------------- 1 | #端口号 2 | server: 3 | port: 10001 4 | # Servlet(Java用于处理请求的组件)的配置 5 | servlet: 6 | # 编码配置 7 | encoding: 8 | # 强制使用指定的编码 9 | force: true 10 | # 字符集 11 | charset: UTF-8 12 | 13 | spring: 14 | profiles: 15 | active: public 16 | banner: 17 | charset: UTF-8 18 | location: static/banner.txt 19 | servlet: 20 | multipart: 21 | max-file-size: 500MB 22 | max-request-size: 500MB 23 | 24 | 25 | youbili: 26 | jwt: 27 | # JWT的有效时长,以分钟为单位 28 | duration-in-minute: 86400L 29 | # JWT的secretKey 30 | secret-key: fNesMDkqrJFdsfDSwAbFLJ8SnsHJ438AF72D73aKJSmfdsafdLKKAFKDSJ 31 | # 分页 32 | dao: 33 | default-query-page-size: 5 34 | 35 | 36 | 37 | #设置静态资源文件夹 38 | web: 39 | resources: 40 | static-locations: file:c:/files,classpath:static 41 | 42 | # mybatis 43 | #mybatis: 44 | # mapper-locations: classpath:mapper/*.xml 45 | # configuration: 46 | # map-underscore-to-camel-case: true # 配置表字段名和属性名规范不一致时自动匹配 47 | 48 | 49 | mybatis-plus: 50 | configuration: 51 | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 52 | map-underscore-to-camel-case: false 53 | mapper-locations: classpath:mapper/**/*.xml 54 | 55 | 56 | logging: 57 | level: 58 | cn.tedu: debug 59 | 60 | 61 | 62 | 63 | 64 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/count/UserCountMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/count/VideoCountMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 18 | 19 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/data/DataMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | INSERT INTO mahout (userID, videoID, type) 9 | SELECT userID, videoID, 1 10 | FROM history 11 | WHERE watchDate > CURDATE() - INTERVAL 1 DAY; 12 | 13 | 14 | INSERT INTO mahout (userID, videoID, type) 15 | SELECT userID, 16 | videoID, 17 | case when typeEnable = 1 then 2 else 0 end as type 18 | FROM likes 19 | WHERE likeDate > CURDATE() - INTERVAL 1 DAY; 20 | 21 | 22 | INSERT INTO mahout(userID, videoID, type) 23 | SELECT userID, videoID, 3 24 | FROM favorite 25 | WHERE favoriteDate > CURDATE() - INTERVAL 1 DAY; 26 | 27 | 28 | INSERT INTO heat(upload, videoID) 29 | SELECT uploadDate, videoID 30 | FROM video 31 | WHERE uploadDate > CURDATE() - INTERVAL 1 DAY; 32 | 33 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/likes/LikeMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | INSERT INTO likes(likeID, userID, videoID, likeDate, typeEnable, gmtCreate, gmtModified) 8 | VALUES (#{likeID}, #{userID}, #{videoID}, #{likeDate}, #{typeEnable}, #{gmtCreate}, #{gmtModified}) 9 | 10 | 11 | 12 | 13 | DELETE 14 | FROM youbili_v1.likes 15 | WHERE userID = #{userID} 16 | AND videoID = #{videoID} 17 | 18 | 19 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/recommend/MahoutMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 24 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/recommend/ThermaMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/tag/CategoryMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 11 | 12 | 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/user/AccountMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 28 | 29 | 34 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/user/FanMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 15 | DELETE 16 | FROM youbili_v1.follow 17 | WHERE followID = #{followID} 18 | AND followedID = #{userID} 19 | 20 | 21 | 27 | 28 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/user/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | INSERT INTO user (username, nickname, password, email) 8 | VALUES (#{username}, #{nickname}, #{password}, #{email}) 9 | 10 | 11 | 12 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/video/TagMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/video/VideoCategoryMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | INSERT INTO videocategory (videoID, categoryID) 8 | values (#{videoID}, #{categoryID}) 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/video/VideoMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 22 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/video/VideoTagMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | INSERT INTO videotag (videoID, tagID) 8 | values (#{videoID}, #{tagID}) 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /youbili-project-backend/src/main/resources/mapper/video/VideoUploadMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | INSERT INTO video (userID, title, description, videoSrcUrl, videoImgUrl) 8 | values (#{userID}, #{title}, #{description}, #{videoSrcUrl}, #{videoImgUrl}) 9 | 10 | 11 | 13 | update video 14 | set videoSrcUrl=#{videoSrcUrl}, 15 | duration=#{duration}, 16 | videoImgUrl=#{videoImgUrl} 17 | where videoID = #{videoID} 18 | 19 | 20 | -------------------------------------------------------------------------------- /youbili-project-backend/src/test/java/cn/tedu/youbiliprojectbackend/RocketMQ.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend; 2 | 3 | import org.apache.rocketmq.spring.core.RocketMQTemplate; 4 | import org.junit.jupiter.api.Test; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.test.context.SpringBootTest; 7 | 8 | @SpringBootTest 9 | public class RocketMQ { 10 | @Autowired 11 | RocketMQTemplate rocketMQTemplate; 12 | 13 | @Test 14 | void produc() { 15 | rocketMQTemplate.destroy(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /youbili-project-backend/src/test/java/cn/tedu/youbiliprojectbackend/YoubiliProjectBackendApplicationTests.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend; 2 | 3 | import org.junit.jupiter.api.Test; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 6 | 7 | @SpringBootTest 8 | class YoubiliProjectBackendApplicationTests { 9 | 10 | @Test 11 | void contextLoads() { 12 | BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); 13 | System.out.println(encoder.encode("1234567")); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /youbili-project-backend/src/test/java/cn/tedu/youbiliprojectbackend/config/ServiceTest.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.config; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.tag.classification.service.ICategoryService; 4 | import org.junit.jupiter.api.Test; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.test.context.SpringBootTest; 7 | 8 | @SpringBootTest 9 | public class ServiceTest { 10 | @Autowired 11 | ICategoryService iCategoryService; 12 | 13 | @Test 14 | void select() { 15 | System.out.println(iCategoryService.listTile()); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /youbili-project-backend/src/test/java/cn/tedu/youbiliprojectbackend/favoriteTest.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.user.favorite.dao.persist.mapper.FavoriteMapper; 4 | import org.junit.jupiter.api.Test; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.boot.test.context.SpringBootTest; 7 | 8 | @SpringBootTest 9 | public class favoriteTest { 10 | 11 | @Autowired 12 | FavoriteMapper favoriteMapper; 13 | 14 | @Test 15 | void list() { 16 | 17 | System.out.println(favoriteMapper.selectListById(3L)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /youbili-project-backend/src/test/java/cn/tedu/youbiliprojectbackend/history.http: -------------------------------------------------------------------------------- 1 | # @no-cookie-jar 2 | GET http://localhost:8089/user/history/list -------------------------------------------------------------------------------- /youbili-project-backend/src/test/java/cn/tedu/youbiliprojectbackend/thermalValue/Strom.java: -------------------------------------------------------------------------------- 1 | package cn.tedu.youbiliprojectbackend.thermalValue; 2 | 3 | import cn.tedu.youbiliprojectbackend.modules.recommend.thermalvalue.dao.persist.mapper.ThermaMapper; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.boot.test.context.SpringBootTest; 6 | 7 | @SpringBootTest 8 | public class Strom { 9 | 10 | 11 | @Autowired 12 | ThermaMapper thermaMapper; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /youbili-project-backend/内网穿透 支付沙箱.md: -------------------------------------------------------------------------------- 1 | natapp -authtoken=74a1484dcffd9f00 2 | 3 | notifyUrl: http://youbili2303.nat300.top/alipay/notify 4 | 5 | 地址:http://localhost:8089/alipay/pay/buyorders?subject=1231231&traceNo=12341451&totalAmount=1000 6 | 7 | cvljqv1019@sandbox.com 8 | 111111 9 | -------------------------------------------------------------------------------- /设计部分/YouBili项目文档(1).docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/设计部分/YouBili项目文档(1).docx -------------------------------------------------------------------------------- /设计部分/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/设计部分/img.png -------------------------------------------------------------------------------- /设计部分/img_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/设计部分/img_1.png -------------------------------------------------------------------------------- /设计部分/img_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ZhaoZan010903/YouBili/4ff1d54354271edc4c86e49bab9b620f606e95ba/设计部分/img_2.png --------------------------------------------------------------------------------