├── .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 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
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 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
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 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
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 extends GrantedAuthority> 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