├── .gitignore ├── LICENSE ├── README.md ├── ddd-seesee ├── ddd-seesee.iml ├── pom.xml ├── ss-base │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── whoiszxl │ │ │ ├── config │ │ │ └── OAuth2FeignConfig.java │ │ │ ├── constants │ │ │ ├── BaseRedisKeyPrefixConstants.java │ │ │ ├── RegexConstants.java │ │ │ └── RocketMQConstant.java │ │ │ ├── context │ │ │ ├── BaseContextConstants.java │ │ │ └── BaseContextHandler.java │ │ │ ├── enums │ │ │ ├── BaseEnum.java │ │ │ ├── HttpMethod.java │ │ │ ├── LikeTypeEnum.java │ │ │ ├── SexEnum.java │ │ │ ├── StatusEnum.java │ │ │ └── VideoCounterStatusEnum.java │ │ │ ├── exception │ │ │ ├── ExceptionCatchAdvice.java │ │ │ ├── ExceptionCatcher.java │ │ │ └── customize │ │ │ │ ├── AssertException.java │ │ │ │ ├── DataNullException.java │ │ │ │ ├── DatabaseUpdateException.java │ │ │ │ ├── JwtAuthException.java │ │ │ │ └── ValidateException.java │ │ │ ├── model │ │ │ ├── ddd │ │ │ │ ├── Ability.java │ │ │ │ ├── Adapter.java │ │ │ │ ├── AggregateRoot.java │ │ │ │ ├── ApplicationService.java │ │ │ │ ├── Command.java │ │ │ │ ├── DomainAbility.java │ │ │ │ ├── DomainService.java │ │ │ │ ├── Entity.java │ │ │ │ ├── Factory.java │ │ │ │ ├── Interface.java │ │ │ │ ├── MarkerInterface.java │ │ │ │ ├── QueryApplicationService.java │ │ │ │ ├── Repository.java │ │ │ │ ├── Representation.java │ │ │ │ └── ValueObject.java │ │ │ ├── query │ │ │ │ ├── KeywordQuery.java │ │ │ │ └── PageQuery.java │ │ │ └── result │ │ │ │ ├── ResponseResult.java │ │ │ │ └── StatusCode.java │ │ │ ├── permission │ │ │ ├── PermissionInterfaceImpl.java │ │ │ └── SaTokenConfiguration.java │ │ │ └── utils │ │ │ ├── AssertUtils.java │ │ │ ├── AuthUtils.java │ │ │ ├── CheckPasswordUtils.java │ │ │ ├── DateUtils.java │ │ │ ├── EncryptPropertiesUtils.java │ │ │ ├── IdWorker.java │ │ │ ├── IpUtil.java │ │ │ ├── JsonUtil.java │ │ │ ├── MapHelper.java │ │ │ ├── NumberHelper.java │ │ │ ├── RandomUtils.java │ │ │ ├── RedisUtils.java │ │ │ ├── RegexUtils.java │ │ │ ├── SpringUtils.java │ │ │ ├── StrHelper.java │ │ │ ├── TimeUtils.java │ │ │ └── ValidateUtils.java │ └── ss-base.iml ├── ss-chat │ ├── pom.xml │ ├── ss-chat-api │ │ ├── pom.xml │ │ └── ss-chat-api.iml │ ├── ss-chat-web │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── whoiszxl │ │ │ │ │ ├── ChatApplication.java │ │ │ │ │ ├── controller │ │ │ │ │ └── ChatController.java │ │ │ │ │ └── infrastructure │ │ │ │ │ └── db │ │ │ │ │ ├── mapper │ │ │ │ │ ├── ImTalkMapper.java │ │ │ │ │ ├── ImTalkMessageMapper.java │ │ │ │ │ └── xml │ │ │ │ │ │ ├── ImTalkMapper.xml │ │ │ │ │ │ └── ImTalkMessageMapper.xml │ │ │ │ │ ├── model │ │ │ │ │ ├── ImTalk.java │ │ │ │ │ └── ImTalkMessage.java │ │ │ │ │ └── repository │ │ │ │ │ ├── ImTalkMessageRepository.java │ │ │ │ │ ├── ImTalkRepository.java │ │ │ │ │ └── impl │ │ │ │ │ ├── ImTalkMessageRepositoryImpl.java │ │ │ │ │ └── ImTalkRepositoryImpl.java │ │ │ │ └── resources │ │ │ │ ├── application.yml │ │ │ │ ├── banner.txt │ │ │ │ ├── dozer │ │ │ │ └── biz.dozer.xml │ │ │ │ ├── logback-base.xml │ │ │ │ └── logback-spring.xml │ │ └── ss-chat-web.iml │ └── ss-chat.iml ├── ss-gateway │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ ├── GatewayApplication.java │ │ │ │ └── config │ │ │ │ └── CorsConfig.java │ │ │ └── resources │ │ │ └── bootstrap.yml │ └── ss-gateway.iml ├── ss-member │ ├── pom.xml │ ├── ss-member-api │ │ ├── pom.xml │ │ └── ss-member-api.iml │ ├── ss-member-application │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ ├── ability │ │ │ │ ├── member │ │ │ │ │ ├── MemberCreateAbility.java │ │ │ │ │ └── cmd │ │ │ │ │ │ └── CreateMemberAbilityCommand.java │ │ │ │ └── share │ │ │ │ │ ├── AbilityContext.java │ │ │ │ │ └── BaseAbility.java │ │ │ │ ├── command │ │ │ │ ├── FollowerApplicationService.java │ │ │ │ ├── MemberApplicationService.java │ │ │ │ ├── cmd │ │ │ │ │ ├── FollowMemberCommand.java │ │ │ │ │ ├── MemberLoginCommand.java │ │ │ │ │ ├── PhoneRegisterCommand.java │ │ │ │ │ └── UpdateMemberCommand.java │ │ │ │ ├── converter │ │ │ │ │ ├── MemberCommandConverter.java │ │ │ │ │ └── MemberInfoCommandConverter.java │ │ │ │ └── impl │ │ │ │ │ ├── FollowerApplicationServiceImpl.java │ │ │ │ │ └── MemberApplicationServiceImpl.java │ │ │ │ ├── config │ │ │ │ └── PasswordEncoderConfig.java │ │ │ │ └── query │ │ │ │ ├── MemberQueryApplicationService.java │ │ │ │ ├── impl │ │ │ │ └── MemberQueryApplicationServiceImpl.java │ │ │ │ └── model │ │ │ │ └── response │ │ │ │ ├── MemberDetailResponse.java │ │ │ │ └── MemberResponse.java │ │ └── ss-member-application.iml │ ├── ss-member-domain │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ ├── aggregate │ │ │ │ ├── model │ │ │ │ │ ├── Member.java │ │ │ │ │ ├── MemberAttention.java │ │ │ │ │ ├── MemberFollower.java │ │ │ │ │ ├── MemberInfo.java │ │ │ │ │ └── MemberReport.java │ │ │ │ └── repository │ │ │ │ │ ├── MemberAttentionRepository.java │ │ │ │ │ ├── MemberFollowerRepository.java │ │ │ │ │ ├── MemberInfoRepository.java │ │ │ │ │ └── MemberRepository.java │ │ │ │ └── event │ │ │ │ ├── FollowSuccessEvent.java │ │ │ │ ├── MemberDomainEventPublisher.java │ │ │ │ └── MemberLoginSuccessEvent.java │ │ └── ss-member-domain.iml │ ├── ss-member-infrastructure │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ ├── db │ │ │ │ ├── config │ │ │ │ │ ├── EntityMetaObjectHandler.java │ │ │ │ │ └── MyBatisConfig.java │ │ │ │ ├── converter │ │ │ │ │ ├── MemberAttentionConverter.java │ │ │ │ │ ├── MemberConverter.java │ │ │ │ │ ├── MemberFollowerConverter.java │ │ │ │ │ └── MemberInfoConverter.java │ │ │ │ ├── mapper │ │ │ │ │ ├── MemberAttentionMapper.java │ │ │ │ │ ├── MemberFollowerMapper.java │ │ │ │ │ ├── MemberInfoMapper.java │ │ │ │ │ ├── MemberMapper.java │ │ │ │ │ ├── MemberReportMapper.java │ │ │ │ │ └── xml │ │ │ │ │ │ ├── MemberAttentionMapper.xml │ │ │ │ │ │ ├── MemberFollowerMapper.xml │ │ │ │ │ │ ├── MemberInfoMapper.xml │ │ │ │ │ │ ├── MemberMapper.xml │ │ │ │ │ │ └── MemberReportMapper.xml │ │ │ │ ├── model │ │ │ │ │ ├── MemberAttentionPO.java │ │ │ │ │ ├── MemberFollowerPO.java │ │ │ │ │ ├── MemberInfoPO.java │ │ │ │ │ ├── MemberPO.java │ │ │ │ │ └── MemberReportPO.java │ │ │ │ └── repository │ │ │ │ │ ├── MemberAttentionRepositoryImpl.java │ │ │ │ │ ├── MemberFollowerRepositoryImpl.java │ │ │ │ │ ├── MemberInfoRepositoryImpl.java │ │ │ │ │ └── MemberRepositoryImpl.java │ │ │ │ ├── event │ │ │ │ └── MemberDomainEventPublisherImpl.java │ │ │ │ └── mq │ │ │ │ └── RocketMQProducer.java │ │ └── ss-member-infrastructure.iml │ ├── ss-member-interaction │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ ├── api │ │ │ │ └── MemberApiClientImpl.java │ │ │ │ └── controller │ │ │ │ ├── FriendController.java │ │ │ │ └── MemberController.java │ │ └── ss-member-interaction.iml │ ├── ss-member-rpc │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ ├── dto │ │ │ │ ├── FollowerDTO.java │ │ │ │ └── MemberDTO.java │ │ │ │ └── feign │ │ │ │ └── MemberApiClient.java │ │ └── ss-member-rpc.iml │ ├── ss-member-start │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── whoiszxl │ │ │ │ │ └── MemberApplication.java │ │ │ │ └── resources │ │ │ │ ├── application.yml │ │ │ │ ├── banner.txt │ │ │ │ ├── dozer │ │ │ │ └── biz.dozer.xml │ │ │ │ ├── logback-base.xml │ │ │ │ └── logback-spring.xml │ │ └── ss-member-start.iml │ └── ss-member.iml ├── ss-tools │ ├── pom.xml │ ├── ss-tools-dozer │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── whoiszxl │ │ │ │ │ └── dozer │ │ │ │ │ ├── DozerAutoConfiguration.java │ │ │ │ │ └── DozerUtils.java │ │ │ │ └── resources │ │ │ │ ├── META-INF │ │ │ │ └── spring.factories │ │ │ │ └── dozer │ │ │ │ ├── biz.dozer.xml │ │ │ │ └── global.dozer.xml │ │ └── ss-tools-dozer.iml │ ├── ss-tools-logger │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── whoiszxl │ │ │ │ │ └── logger │ │ │ │ │ ├── annotation │ │ │ │ │ └── SSLog.java │ │ │ │ │ ├── aspect │ │ │ │ │ └── SSLogAspect.java │ │ │ │ │ ├── configuration │ │ │ │ │ └── LogAutoConfiguration.java │ │ │ │ │ ├── entity │ │ │ │ │ └── OptLogDTO.java │ │ │ │ │ ├── event │ │ │ │ │ ├── SysLogEvent.java │ │ │ │ │ └── SysLogListener.java │ │ │ │ │ ├── init │ │ │ │ │ └── ApplicationLoggerInitializer.java │ │ │ │ │ ├── logback │ │ │ │ │ └── ss-defaults.xml │ │ │ │ │ └── utils │ │ │ │ │ ├── AddressUtil.java │ │ │ │ │ └── LogUtil.java │ │ │ │ └── resources │ │ │ │ ├── META-INF │ │ │ │ └── spring.factories │ │ │ │ └── ip2region │ │ │ │ └── ip2region.db │ │ └── ss-tools-logger.iml │ ├── ss-tools-swagger │ │ ├── pom.xml │ │ ├── src │ │ │ └── main │ │ │ │ ├── java │ │ │ │ └── com │ │ │ │ │ └── whoiszxl │ │ │ │ │ └── swagger │ │ │ │ │ ├── SwaggerAutoConfiguration.java │ │ │ │ │ ├── SwaggerConfiguration.java │ │ │ │ │ ├── SwaggerProperties.java │ │ │ │ │ └── bean │ │ │ │ │ ├── Basic.java │ │ │ │ │ ├── Contact.java │ │ │ │ │ ├── DocketInfo.java │ │ │ │ │ ├── GlobalOperationParameter.java │ │ │ │ │ └── Markdown.java │ │ │ │ └── resources │ │ │ │ └── META-INF │ │ │ │ └── spring.factories │ │ └── ss-tools-swagger.iml │ └── ss-tools.iml └── ss-video │ ├── pom.xml │ ├── ss-video-api │ ├── pom.xml │ └── ss-video-api.iml │ ├── ss-video-application │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── whoiszxl │ │ │ ├── command │ │ │ ├── CommentApplicationService.java │ │ │ ├── VideoApplicationService.java │ │ │ ├── cmd │ │ │ │ ├── LikeCommand.java │ │ │ │ ├── PublishCommentCommand.java │ │ │ │ └── PublishVideoCommand.java │ │ │ ├── converter │ │ │ │ ├── CommentCommandConverter.java │ │ │ │ └── VideoCommandConverter.java │ │ │ └── impl │ │ │ │ ├── CommentApplicationServiceImpl.java │ │ │ │ └── VideoApplicationServiceImpl.java │ │ │ ├── query │ │ │ ├── CommentQueryApplicationService.java │ │ │ ├── VideoQueryApplicationService.java │ │ │ ├── impl │ │ │ │ ├── CommentQueryApplicationServiceImpl.java │ │ │ │ └── VideoQueryApplicationServiceImpl.java │ │ │ └── model │ │ │ │ ├── dto │ │ │ │ ├── VideoCommentDTO.java │ │ │ │ └── VideoDTO.java │ │ │ │ └── qry │ │ │ │ ├── CommentListQuery.java │ │ │ │ └── MemberTimelineQuery.java │ │ │ └── strategy │ │ │ ├── LikeFactory.java │ │ │ ├── LikeStrategy.java │ │ │ └── impl │ │ │ ├── CommentLike.java │ │ │ └── VideoLike.java │ └── ss-video-application.iml │ ├── ss-video-domain │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── whoiszxl │ │ │ ├── adapter │ │ │ ├── MemberAdapter.java │ │ │ └── model │ │ │ │ ├── FollowerAdapterDTO.java │ │ │ │ └── MemberAdapterDTO.java │ │ │ ├── aggregate │ │ │ ├── model │ │ │ │ ├── Video.java │ │ │ │ └── VideoComment.java │ │ │ └── repository │ │ │ │ ├── VideoCommentRepository.java │ │ │ │ └── VideoRepository.java │ │ │ └── event │ │ │ ├── VideoDomainEventPublisher.java │ │ │ └── VideoPublishSuccessEvent.java │ └── ss-video-domain.iml │ ├── ss-video-infrastructure │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── whoiszxl │ │ │ ├── adapter │ │ │ └── MemberAdapterImpl.java │ │ │ ├── db │ │ │ ├── config │ │ │ │ ├── EntityMetaObjectHandler.java │ │ │ │ └── MyBatisConfig.java │ │ │ ├── converter │ │ │ │ ├── VideoCommentConverter.java │ │ │ │ └── VideoConverter.java │ │ │ ├── mapper │ │ │ │ ├── BgmusicMapper.java │ │ │ │ ├── VideoCommentMapper.java │ │ │ │ ├── VideoCounterMapper.java │ │ │ │ ├── VideoMapper.java │ │ │ │ ├── VideoWatchHistoryMapper.java │ │ │ │ └── xml │ │ │ │ │ ├── BgmusicMapper.xml │ │ │ │ │ ├── VideoCommentMapper.xml │ │ │ │ │ ├── VideoCounterMapper.xml │ │ │ │ │ ├── VideoMapper.xml │ │ │ │ │ └── VideoWatchHistoryMapper.xml │ │ │ ├── model │ │ │ │ ├── BgmusicPO.java │ │ │ │ ├── VideoCommentPO.java │ │ │ │ ├── VideoCounterPO.java │ │ │ │ ├── VideoPO.java │ │ │ │ └── VideoWatchHistoryPO.java │ │ │ └── repository │ │ │ │ ├── VideoCommentRepositoryImpl.java │ │ │ │ └── VideoRepositoryImpl.java │ │ │ ├── event │ │ │ └── VideoDomainEventPublisherImpl.java │ │ │ └── mq │ │ │ └── RocketMQProducer.java │ └── ss-video-infrastructure.iml │ ├── ss-video-interaction │ ├── pom.xml │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── com │ │ │ └── whoiszxl │ │ │ └── controller │ │ │ ├── CommentController.java │ │ │ └── VideoController.java │ └── ss-video-interaction.iml │ ├── ss-video-rpc │ ├── pom.xml │ └── ss-video-rpc.iml │ ├── ss-video-start │ ├── pom.xml │ ├── src │ │ └── main │ │ │ ├── java │ │ │ └── com │ │ │ │ └── whoiszxl │ │ │ │ └── VideoApplication.java │ │ │ └── resources │ │ │ ├── application.yml │ │ │ ├── banner.txt │ │ │ ├── dozer │ │ │ └── biz.dozer.xml │ │ │ ├── logback-base.xml │ │ │ └── logback-spring.xml │ └── ss-video-start.iml │ └── ss-video.iml ├── docs ├── .nojekyll ├── README.md ├── _sidebar.md ├── index.html └── markdown │ ├── backend_deploy.md │ ├── docker_build.md │ ├── frontend_deploy.md │ ├── juc_detail.md │ ├── mysql_detail.md │ ├── pattern_detail.md │ ├── prod_build.md │ └── redis_detail.md ├── flutter_seesee ├── .gitignore ├── .metadata ├── README.md ├── analysis_options.yaml ├── android │ ├── .gitignore │ ├── app │ │ ├── build.gradle │ │ └── src │ │ │ ├── debug │ │ │ └── AndroidManifest.xml │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── kotlin │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── flutter_seesee │ │ │ │ │ └── MainActivity.kt │ │ │ └── res │ │ │ │ ├── drawable-v21 │ │ │ │ └── launch_background.xml │ │ │ │ ├── drawable │ │ │ │ └── launch_background.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── values-night │ │ │ │ └── styles.xml │ │ │ │ └── values │ │ │ │ └── styles.xml │ │ │ └── profile │ │ │ └── AndroidManifest.xml │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ └── gradle-wrapper.properties │ └── settings.gradle ├── assets │ ├── images │ │ ├── login_bottom.png │ │ ├── main_bottom.png │ │ ├── main_top.png │ │ ├── member_bg.jpg │ │ └── signup_top.png │ └── lottie │ │ └── loading.json ├── ios │ ├── .gitignore │ ├── Flutter │ │ ├── AppFrameworkInfo.plist │ │ ├── Debug.xcconfig │ │ └── Release.xcconfig │ ├── Runner.xcodeproj │ │ ├── project.pbxproj │ │ ├── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcshareddata │ │ │ └── xcschemes │ │ │ └── Runner.xcscheme │ ├── Runner.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── Runner │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ │ ├── Info.plist │ │ └── Runner-Bridging-Header.h ├── lib │ ├── controller │ │ ├── all_controller_binding.dart │ │ ├── city_page_controller.dart │ │ ├── comment_page_controller.dart │ │ ├── follow_page_controller.dart │ │ ├── home_page_controller.dart │ │ ├── language_controller.dart │ │ ├── main_page_controller.dart │ │ ├── member_page_controller.dart │ │ ├── profile_page_controller.dart │ │ └── video_controller.dart │ ├── entity │ │ ├── dto │ │ │ └── error_dto.dart │ │ └── response │ │ │ ├── comment_list_response.dart │ │ │ ├── member_info_response.dart │ │ │ ├── profile_member_info_response.dart │ │ │ └── video_list_response.dart │ ├── events │ │ ├── close_main_drawer_event.dart │ │ ├── main_reset_event.dart │ │ └── stop_play_event.dart │ ├── http │ │ ├── api_urls.dart │ │ ├── base_response.dart │ │ ├── http_error.dart │ │ ├── http_manager.dart │ │ ├── http_method.dart │ │ └── interceptors │ │ │ ├── header_interceptor.dart │ │ │ └── log_interceptor.dart │ ├── i18n │ │ └── messages.dart │ ├── main.dart │ ├── pages │ │ ├── city │ │ │ ├── city_page.dart │ │ │ └── widgets │ │ │ │ └── city_header.dart │ │ ├── home │ │ │ ├── follow_tab_page.dart │ │ │ ├── home_page.dart │ │ │ ├── recommend_tab_page.dart │ │ │ └── widgets │ │ │ │ ├── follow_tab_header.dart │ │ │ │ ├── follow_tab_video_card.dart │ │ │ │ ├── music_icon.dart │ │ │ │ ├── ss_buttom_navigation_bar.dart │ │ │ │ ├── ss_video_player.dart │ │ │ │ ├── video_card.dart │ │ │ │ └── video_comment.dart │ │ ├── login │ │ │ ├── login_page.dart │ │ │ ├── register_page.dart │ │ │ └── widgets │ │ │ │ ├── already_have_an_account_acheck.dart │ │ │ │ ├── or_divider.dart │ │ │ │ ├── rounded_button.dart │ │ │ │ ├── rounded_input_field.dart │ │ │ │ ├── rounded_password_field.dart │ │ │ │ └── text_field_container.dart │ │ ├── main_page.dart │ │ ├── member │ │ │ ├── edit_member_page.dart │ │ │ ├── member_page.dart │ │ │ ├── qrcode_page.dart │ │ │ └── widgets │ │ │ │ └── member_right_menu_widget.dart │ │ ├── message │ │ │ └── message_page.dart │ │ ├── profile │ │ │ ├── profile_page.dart │ │ │ └── widgets │ │ │ │ ├── member_appbar.dart │ │ │ │ ├── member_header_tag.dart │ │ │ │ └── profile_header.dart │ │ ├── search │ │ │ └── search_page.dart │ │ ├── settings │ │ │ └── settings_page.dart │ │ ├── video_add │ │ │ └── video_add_page.dart │ │ └── video_detail │ │ │ └── video_detail_page.dart │ ├── res │ │ └── colors_manager.dart │ ├── router │ │ ├── application.dart │ │ ├── router_manager.dart │ │ └── sp_keys.dart │ ├── service │ │ ├── comment_api_service.dart │ │ ├── home_api_service.dart │ │ ├── member_api_service.dart │ │ └── video_api_service.dart │ ├── utils │ │ ├── clipboard_util.dart │ │ ├── enum_util.dart │ │ ├── image_util.dart │ │ ├── screen_util.dart │ │ └── sp_util.dart │ └── widgets │ │ ├── normal_appbar.dart │ │ ├── normal_loading.dart │ │ └── ss_navigation_bar.dart ├── pubspec.lock ├── pubspec.yaml └── web │ ├── favicon.png │ ├── icons │ ├── Icon-192.png │ ├── Icon-512.png │ ├── Icon-maskable-192.png │ └── Icon-maskable-512.png │ ├── index.html │ └── manifest.json ├── resources └── sql │ ├── mongodb.json │ └── seesee.sql └── seesee-video ├── pom.xml ├── seesee-video.iml ├── ss-admin ├── pom.xml ├── ss-admin-api │ └── pom.xml └── ss-admin-web │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── whoiszxl │ │ ├── AdminApplication.java │ │ ├── config │ │ ├── EntityMetaObjectHandler.java │ │ └── MyBatisConfig.java │ │ ├── controller │ │ ├── AdminController.java │ │ ├── AdminLoginController.java │ │ ├── AdminLoginLogController.java │ │ ├── AdminOptLogController.java │ │ ├── AdminRoleController.java │ │ ├── MenuController.java │ │ ├── PrivilegeController.java │ │ ├── RoleAuthorityController.java │ │ └── RoleController.java │ │ ├── entity │ │ ├── Admin.java │ │ ├── AdminLoginLog.java │ │ ├── AdminOptLog.java │ │ ├── AdminRole.java │ │ ├── Menu.java │ │ ├── Privilege.java │ │ ├── Role.java │ │ ├── RoleAuthority.java │ │ └── query │ │ │ ├── AdminQuery.java │ │ │ └── LoginQuery.java │ │ ├── generator │ │ └── MyBatisFastAutoGenerator.java │ │ ├── mapper │ │ ├── AdminLoginLogMapper.java │ │ ├── AdminMapper.java │ │ ├── AdminOptLogMapper.java │ │ ├── AdminRoleMapper.java │ │ ├── MenuMapper.java │ │ ├── PrivilegeMapper.java │ │ ├── RoleAuthorityMapper.java │ │ ├── RoleMapper.java │ │ └── xml │ │ │ ├── AdminLoginLogMapper.xml │ │ │ ├── AdminMapper.xml │ │ │ ├── AdminOptLogMapper.xml │ │ │ ├── AdminRoleMapper.xml │ │ │ ├── MenuMapper.xml │ │ │ ├── PrivilegeMapper.xml │ │ │ ├── RoleAuthorityMapper.xml │ │ │ └── RoleMapper.xml │ │ └── service │ │ ├── AdminLoginLogService.java │ │ ├── AdminOptLogService.java │ │ ├── AdminRoleService.java │ │ ├── AdminService.java │ │ ├── MenuService.java │ │ ├── PrivilegeService.java │ │ ├── RoleAuthorityService.java │ │ ├── RoleService.java │ │ └── impl │ │ ├── AdminLoginLogServiceImpl.java │ │ ├── AdminOptLogServiceImpl.java │ │ ├── AdminRoleServiceImpl.java │ │ ├── AdminServiceImpl.java │ │ ├── MenuServiceImpl.java │ │ ├── PrivilegeServiceImpl.java │ │ ├── RoleAuthorityServiceImpl.java │ │ └── RoleServiceImpl.java │ └── resources │ ├── application.yml │ ├── dozer │ └── biz.dozer.xml │ ├── logback-base.xml │ └── logback-spring.xml ├── ss-gateway ├── pom.xml └── src │ └── main │ ├── java │ └── com │ │ └── whoiszxl │ │ ├── GatewayApplication.java │ │ └── config │ │ └── CorsConfig.java │ └── resources │ └── bootstrap.yml ├── ss-member ├── pom.xml ├── ss-member-api │ └── pom.xml └── ss-member-web │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── whoiszxl │ │ ├── MemberApplication.java │ │ ├── config │ │ ├── LogAutoConfiguration.java │ │ └── LogService.java │ │ ├── controller │ │ ├── MemberAttentionController.java │ │ ├── MemberController.java │ │ ├── MemberFollowerController.java │ │ ├── MemberInfoController.java │ │ └── MemberReportController.java │ │ ├── entity │ │ ├── Member.java │ │ ├── MemberAttention.java │ │ ├── MemberFollower.java │ │ ├── MemberInfo.java │ │ └── MemberReport.java │ │ ├── mapper │ │ ├── MemberAttentionMapper.java │ │ ├── MemberFollowerMapper.java │ │ ├── MemberInfoMapper.java │ │ ├── MemberMapper.java │ │ ├── MemberReportMapper.java │ │ └── xml │ │ │ ├── MemberAttentionMapper.xml │ │ │ ├── MemberFollowerMapper.xml │ │ │ ├── MemberInfoMapper.xml │ │ │ ├── MemberMapper.xml │ │ │ └── MemberReportMapper.xml │ │ └── service │ │ ├── IMemberAttentionService.java │ │ ├── IMemberFollowerService.java │ │ ├── IMemberInfoService.java │ │ ├── IMemberReportService.java │ │ ├── IMemberService.java │ │ └── impl │ │ ├── MemberAttentionServiceImpl.java │ │ ├── MemberFollowerServiceImpl.java │ │ ├── MemberInfoServiceImpl.java │ │ ├── MemberReportServiceImpl.java │ │ └── MemberServiceImpl.java │ └── resources │ ├── application.yml │ ├── banner.txt │ ├── dozer │ └── biz.dozer.xml │ ├── logback-base.xml │ └── logback-spring.xml ├── ss-tools ├── pom.xml ├── ss-tools-core │ ├── pom.xml │ └── src │ │ └── main │ │ └── java │ │ └── com │ │ └── whoiszxl │ │ ├── base │ │ ├── entity │ │ │ ├── Entity.java │ │ │ └── SuperEntity.java │ │ └── id │ │ │ ├── AbstractIdGenerate.java │ │ │ ├── CodeGenerate.java │ │ │ ├── IdGenerate.java │ │ │ └── SnowflakeIdGenerate.java │ │ ├── bean │ │ ├── PageQuery.java │ │ ├── ResponseResult.java │ │ └── StatusCode.java │ │ ├── constants │ │ └── RedisKeyPrefixConstants.java │ │ ├── context │ │ ├── BaseContextConstants.java │ │ └── BaseContextHandler.java │ │ ├── enums │ │ ├── BaseEnum.java │ │ ├── HttpMethod.java │ │ └── StatusEnum.java │ │ ├── exception │ │ ├── ExceptionCatchAdvice.java │ │ ├── ExceptionCatcher.java │ │ └── custom │ │ │ ├── AssertException.java │ │ │ ├── DataNullException.java │ │ │ ├── DatabaseUpdateException.java │ │ │ ├── JwtAuthException.java │ │ │ └── ValidateException.java │ │ ├── permission │ │ ├── PermissionInterfaceImpl.java │ │ └── SaTokenConfiguration.java │ │ └── utils │ │ ├── AntiSqlFilter.java │ │ ├── AssertUtils.java │ │ ├── BeanCopierUtils.java │ │ ├── CheckPasswordUtils.java │ │ ├── DateProvider.java │ │ ├── DateProviderImpl.java │ │ ├── DateUtils.java │ │ ├── EncryptPropertiesUtils.java │ │ ├── IdWorker.java │ │ ├── IpUtil.java │ │ ├── JsonUtil.java │ │ ├── MapHelper.java │ │ ├── NumberHelper.java │ │ ├── RandomUtils.java │ │ ├── RedisUtils.java │ │ ├── RegexUtils.java │ │ ├── SpringUtils.java │ │ ├── StrHelper.java │ │ ├── TimeUtils.java │ │ └── ValidateUtils.java ├── ss-tools-dozer │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── whoiszxl │ │ │ └── dozer │ │ │ ├── DozerAutoConfiguration.java │ │ │ └── DozerUtils.java │ │ └── resources │ │ ├── META-INF │ │ └── spring.factories │ │ └── dozer │ │ ├── biz.dozer.xml │ │ └── global.dozer.xml ├── ss-tools-logger │ ├── pom.xml │ └── src │ │ └── main │ │ ├── java │ │ └── com │ │ │ └── whoiszxl │ │ │ └── logger │ │ │ ├── annotation │ │ │ └── SSLog.java │ │ │ ├── aspect │ │ │ └── SSLogAspect.java │ │ │ ├── configuration │ │ │ └── LogAutoConfiguration.java │ │ │ ├── entity │ │ │ └── OptLogDTO.java │ │ │ ├── event │ │ │ ├── SysLogEvent.java │ │ │ └── SysLogListener.java │ │ │ ├── init │ │ │ └── ApplicationLoggerInitializer.java │ │ │ ├── logback │ │ │ └── ss-defaults.xml │ │ │ └── utils │ │ │ ├── AddressUtil.java │ │ │ └── LogUtil.java │ │ └── resources │ │ ├── META-INF │ │ └── spring.factories │ │ └── ip2region │ │ └── ip2region.db └── ss-tools-swagger │ ├── pom.xml │ └── src │ └── main │ ├── java │ └── com │ │ └── whoiszxl │ │ └── swagger │ │ ├── SwaggerAutoConfiguration.java │ │ ├── SwaggerConfiguration.java │ │ ├── SwaggerProperties.java │ │ └── bean │ │ ├── Basic.java │ │ ├── Contact.java │ │ ├── DocketInfo.java │ │ ├── GlobalOperationParameter.java │ │ └── Markdown.java │ └── resources │ └── META-INF │ └── spring.factories └── ss-video ├── pom.xml ├── ss-video-api └── pom.xml └── ss-video-web ├── pom.xml └── src └── main ├── java └── com │ └── whoiszxl │ ├── VideoApplication.java │ ├── config │ ├── EntityMetaObjectHandler.java │ └── MyBatisConfig.java │ ├── controller │ ├── BgmusicController.java │ ├── VideoCommentController.java │ ├── VideoController.java │ └── VideoWatchHistoryController.java │ ├── entity │ ├── Bgmusic.java │ ├── Video.java │ ├── VideoComment.java │ ├── VideoCounter.java │ ├── VideoWatchHistory.java │ ├── query │ │ └── BgMusicQuery.java │ └── vo │ │ ├── BgmusicVO.java │ │ ├── LikeVO.java │ │ ├── VideoCommentVO.java │ │ ├── VideoVO.java │ │ └── VideoWatchHistoryVO.java │ ├── enums │ ├── LikeTypeEnum.java │ └── VideoCounterStatusEnum.java │ ├── mapper │ ├── BgmusicMapper.java │ ├── VideoCommentMapper.java │ ├── VideoCounterMapper.java │ ├── VideoMapper.java │ ├── VideoWatchHistoryMapper.java │ └── xml │ │ ├── BgmusicMapper.xml │ │ ├── VideoCommentMapper.xml │ │ ├── VideoCounterMapper.xml │ │ ├── VideoMapper.xml │ │ └── VideoWatchHistoryMapper.xml │ ├── service │ ├── BgmusicService.java │ ├── VideoCommentService.java │ ├── VideoCounterService.java │ ├── VideoService.java │ ├── VideoWatchHistoryService.java │ └── impl │ │ ├── BgmusicServiceImpl.java │ │ ├── VideoCommentServiceImpl.java │ │ ├── VideoCounterServiceImpl.java │ │ ├── VideoServiceImpl.java │ │ └── VideoWatchHistoryServiceImpl.java │ └── strategy │ ├── LikeFactory.java │ ├── LikeStrategy.java │ └── impl │ ├── CommentLike.java │ └── VideoLike.java └── resources ├── application.yml ├── banner.txt ├── dozer └── biz.dozer.xml ├── logback-base.xml └── logback-spring.xml /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | 25 | target 26 | .idea -------------------------------------------------------------------------------- /ddd-seesee/ddd-seesee.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/constants/BaseRedisKeyPrefixConstants.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.constants; 2 | 3 | public class BaseRedisKeyPrefixConstants { 4 | 5 | public static final String ADMIN_PRIVILEGE_PREFIX = "admin:privilege:"; 6 | 7 | public static final String VIDEO_PREFIX = "video:"; 8 | 9 | public static final String MEMBER_BLOOM_REGISTER_ID = "member:registerId"; 10 | public static final Integer MEMBER_BLOOM_REGISTER_ID_SIZE = 100 * 10000; 11 | public static final double MEMBER_BLOOM_REGISTER_ID_FPP = 0.03; 12 | 13 | public static final String MEMBER_CART_PREFIX = "cart:"; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/constants/RocketMQConstant.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.constants; 2 | 3 | /** 4 | * RocketMQ 常量 5 | * 6 | * @author whoiszxl 7 | * @date 2022/1/24 8 | */ 9 | public class RocketMQConstant { 10 | 11 | public static final String MEMBER_DEFAULT_PRODUCER_GROUP = "member_default_producer_group"; 12 | 13 | public static final String MEMBER_LOGIN_TOPIC = "member_login_topic"; 14 | 15 | public static final String MEMBER_FOLLOW_TOPIC = "member_follow_topic"; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/context/BaseContextConstants.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.context; 2 | 3 | /** 4 | * 常量工具类 5 | * 6 | */ 7 | public class BaseContextConstants { 8 | /** 9 | * 10 | */ 11 | public static final String TOKEN_NAME = "token"; 12 | /** 13 | * 14 | */ 15 | public static final String JWT_KEY_MEMBER_ID = "member_id"; 16 | /** 17 | * 18 | */ 19 | public static final String JWT_KEY_NAME = "name"; 20 | /** 21 | * 22 | */ 23 | public static final String JWT_KEY_ACCOUNT = "account"; 24 | } 25 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/enums/BaseEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import com.whoiszxl.utils.MapHelper; 4 | 5 | import java.util.Arrays; 6 | import java.util.Map; 7 | 8 | /** 9 | * 枚举类型基类 10 | * 11 | */ 12 | public interface BaseEnum { 13 | /** 14 | * 将制定的枚举集合转成 map 15 | * key -> name 16 | * value -> desc 17 | * 18 | * @param list 19 | * @return 20 | */ 21 | static Map getMap(BaseEnum[] list) { 22 | return MapHelper.uniqueIndex(Arrays.asList(list), BaseEnum::getCode, BaseEnum::getDesc); 23 | } 24 | 25 | 26 | /** 27 | * 编码重写 28 | * 29 | * @return 30 | */ 31 | default String getCode() { 32 | return toString(); 33 | } 34 | 35 | /** 36 | * 描述 37 | * 38 | * @return 39 | */ 40 | String getDesc(); 41 | } 42 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/enums/LikeTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 点赞器枚举 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum LikeTypeEnum { 14 | 15 | VIDEO(1, "video_like"), 16 | COMMENT(2, "comment_like"), 17 | ; 18 | private Integer code; 19 | private String typeName; 20 | 21 | public static String getTypeName(Integer type) { 22 | for (LikeTypeEnum likeTypeEnum : LikeTypeEnum.values()) { 23 | if (type.equals(likeTypeEnum.getCode())) { 24 | return likeTypeEnum.getTypeName(); 25 | } 26 | } 27 | return null; 28 | } 29 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/enums/SexEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 性别类型 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum SexEnum { 14 | 15 | 16 | UNKNOWN(0, "未知"), 17 | MAN(1, "关闭"), 18 | FEMAN(2, "开启") 19 | ; 20 | private Integer code; 21 | private String desc; 22 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/enums/StatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 状态类型 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum StatusEnum { 14 | 15 | CLOSE(0, "关闭"), 16 | OPEN(1, "开启"), 17 | ; 18 | private Integer code; 19 | private String desc; 20 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/enums/VideoCounterStatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 计数器新增减少状态枚举 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum VideoCounterStatusEnum { 14 | 15 | INCR(1, "增加"), 16 | DECR(2, "减少"), 17 | ; 18 | private Integer code; 19 | private String desc; 20 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/exception/customize/AssertException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.customize; 2 | 3 | /** 4 | * 断言异常 5 | * 6 | * @author whoiszxl 7 | * @date 2021/3/17 8 | */ 9 | public class AssertException extends RuntimeException{ 10 | 11 | private static final long serialVersionUID = 1L; 12 | 13 | public AssertException() { 14 | super(); 15 | } 16 | public AssertException(String message) { 17 | super(message); 18 | } 19 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/exception/customize/DataNullException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.customize; 2 | 3 | 4 | import com.whoiszxl.model.result.ResponseResult; 5 | 6 | /** 7 | * 校验异常 8 | * 9 | * @author whoiszxl 10 | * @date 2021/3/17 11 | */ 12 | public class DataNullException extends RuntimeException { 13 | 14 | //错误代码 15 | private final ResponseResult result; 16 | 17 | public DataNullException(ResponseResult result){ 18 | this.result = result; 19 | } 20 | public ResponseResult getResult(){ 21 | return result; 22 | } 23 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/exception/customize/DatabaseUpdateException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.customize; 2 | 3 | 4 | import com.whoiszxl.model.result.ResponseResult; 5 | 6 | /** 7 | * 数据库更新错误 8 | * 9 | * @author whoiszxl 10 | * @date 2021/3/17 11 | */ 12 | public class DatabaseUpdateException extends RuntimeException { 13 | 14 | //错误代码 15 | private final ResponseResult result; 16 | 17 | public DatabaseUpdateException(ResponseResult result){ 18 | this.result = result; 19 | } 20 | public ResponseResult getResult(){ 21 | return result; 22 | } 23 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/exception/customize/JwtAuthException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.customize; 2 | 3 | /** 4 | * 自定义jwt鉴权异常 5 | * 6 | * @author whoiszxl 7 | * @date 2021/3/17 8 | */ 9 | public class JwtAuthException extends RuntimeException { 10 | 11 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/exception/customize/ValidateException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.customize; 2 | 3 | import com.whoiszxl.model.result.ResponseResult; 4 | 5 | /** 6 | * 校验异常 7 | * 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | public class ValidateException extends RuntimeException { 12 | 13 | //错误代码 14 | private final ResponseResult result; 15 | 16 | public ValidateException(ResponseResult result){ 17 | this.result = result; 18 | } 19 | public ResponseResult getResult(){ 20 | return result; 21 | } 22 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Ability.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 能力层标记 5 | */ 6 | public interface Ability extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Adapter.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 适配器标记 5 | */ 6 | public interface Adapter extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/AggregateRoot.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 聚合根标记 5 | */ 6 | public interface AggregateRoot extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/ApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 应用服务标记 5 | */ 6 | public interface ApplicationService extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Command.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 增删改指令标记 5 | */ 6 | public interface Command extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/DomainAbility.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | import org.springframework.core.annotation.AliasFor; 4 | import org.springframework.stereotype.Component; 5 | 6 | import java.lang.annotation.*; 7 | 8 | @Target({ElementType.TYPE}) 9 | @Retention(RetentionPolicy.RUNTIME) 10 | @Documented 11 | @Inherited 12 | @Component 13 | public @interface DomainAbility { 14 | 15 | @AliasFor(annotation = Component.class, attribute = "value") String value() default ""; 16 | 17 | /** 18 | * 所属业务域. 19 | */ 20 | String domain(); 21 | 22 | /** 23 | * 能力名称. 24 | */ 25 | String name() default ""; 26 | 27 | } 28 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/DomainService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 领域服务标记 5 | */ 6 | public interface DomainService extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Entity.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 实体标记 5 | */ 6 | public interface Entity extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Factory.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 工厂类标记 5 | */ 6 | public interface Factory extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Interface.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 灰度层标记 5 | */ 6 | public interface Interface extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/MarkerInterface.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 标记接口 5 | */ 6 | public interface MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/QueryApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 查询应用服务 5 | */ 6 | public interface QueryApplicationService extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Repository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * 基础仓储接口 7 | */ 8 | public interface Repository{ 9 | 10 | /** 11 | * 删除 12 | * 13 | * @param id 14 | */ 15 | void delete(ID id); 16 | 17 | /** 18 | * 按id查找 19 | * 20 | * @param id 21 | * @return 22 | */ 23 | AGGREGATE byId(ID id); 24 | 25 | /** 26 | * 保存或更新聚合根 27 | * 28 | * @param aggregate 29 | * @param 30 | * @return 31 | */ 32 | S save(S aggregate); 33 | 34 | 35 | /** 36 | * 保存或更新聚合根【直接刷表】 37 | * 38 | * @param aggregate 39 | * @param 40 | * @return 41 | */ 42 | default S saveAndFlush(S aggregate){ 43 | return aggregate; 44 | } 45 | 46 | 47 | } 48 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/Representation.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 返回实体标记 5 | */ 6 | public interface Representation extends MarkerInterface { 7 | } 8 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/ddd/ValueObject.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.ddd; 2 | 3 | /** 4 | * 值对象标记接口 5 | */ 6 | public interface ValueObject extends MarkerInterface { 7 | 8 | /** 9 | * 值对象通过属性比较 10 | * 11 | * @param other 12 | * @return 13 | */ 14 | boolean sameValueAs(T other); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/query/KeywordQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.query; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | @Data 8 | @ApiModel("关键词查询模型") 9 | public class KeywordQuery extends PageQuery { 10 | 11 | @ApiModelProperty("关键字") 12 | private String keyword; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/query/PageQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.query; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PageQuery { 7 | 8 | private Integer page = 1; 9 | 10 | private Integer size = 10; 11 | 12 | private String sort; 13 | 14 | private String order; 15 | } 16 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/model/result/StatusCode.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.model.result; 2 | 3 | /** 4 | * 常用状态码 5 | * 6 | * @author whoiszxl 7 | * @date 2021/3/17 8 | */ 9 | public class StatusCode { 10 | public static final int OK = 0;//成功 11 | public static final int ERROR = 1;//失败 12 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/permission/SaTokenConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.permission; 2 | 3 | import cn.dev33.satoken.interceptor.SaAnnotationInterceptor; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 7 | 8 | /** 9 | * 打开注解鉴权功能配置 10 | * 11 | * @author whoiszxl 12 | * @date 2021/7/20 13 | */ 14 | @Configuration 15 | public class SaTokenConfiguration implements WebMvcConfigurer { 16 | 17 | // 注册Sa-Token的注解拦截器,打开注解式鉴权功能 18 | @Override 19 | public void addInterceptors(InterceptorRegistry registry) { 20 | // 注册注解拦截器,并排除不需要注解鉴权的接口地址 (与登录拦截器无关) 21 | registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/admin/**"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/utils/AuthUtils.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.utils; 2 | 3 | import cn.dev33.satoken.stp.StpUtil; 4 | 5 | /** 6 | * token工具类 7 | * 8 | * @author whoiszxl 9 | * @date 2022/1/24 10 | */ 11 | public class AuthUtils { 12 | 13 | /** 14 | * 获取当前用户的登录用户ID 15 | * @return 16 | */ 17 | public static Long getMemberId() { 18 | return StpUtil.getLoginIdAsLong(); 19 | } 20 | 21 | /** 22 | * 对memberId的用户进行登录操作 23 | * @param memberId 用户ID 24 | */ 25 | public static void login(Long memberId) { 26 | StpUtil.login(memberId); 27 | } 28 | 29 | /** 30 | * 获取当前登录用户的token 31 | * @return token 32 | */ 33 | public static String getToken() { 34 | return StpUtil.getTokenValue(); 35 | } 36 | 37 | /** 38 | * 对token用户进行登出操作 39 | */ 40 | public static void logout() { 41 | StpUtil.logout(); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /ddd-seesee/ss-base/src/main/java/com/whoiszxl/utils/JsonUtil.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.utils; 2 | 3 | import com.google.gson.Gson; 4 | import com.google.gson.JsonSyntaxException; 5 | 6 | import java.lang.reflect.Type; 7 | 8 | /** 9 | * json解析工具 10 | */ 11 | public class JsonUtil { 12 | 13 | static Gson gson = new Gson(); 14 | 15 | public static T fromJson(String json, Class classOfT) { 16 | return gson.fromJson(json, classOfT); 17 | } 18 | 19 | public static T fromJsonToList(String json, Type typeOfT) throws JsonSyntaxException { 20 | return gson.fromJson(json, typeOfT); 21 | } 22 | 23 | public static String toJson(Object src) { 24 | return gson.toJson(src); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ddd-seesee 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-chat 13 | pom 14 | 15 | ss-chat-api 16 | ss-chat-web 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ss-chat 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-chat-api 13 | 14 | 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/ChatApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.openfeign.EnableFeignClients; 7 | 8 | /** 9 | * IM启动类 10 | * 11 | * @author whoiszxl 12 | * @date 2021/7/19 13 | */ 14 | @SpringBootApplication 15 | @EnableFeignClients 16 | @MapperScan("com.whoiszxl.infrastructure.db.mapper") 17 | public class ChatApplication { 18 | 19 | public static void main(String[] args) { 20 | SpringApplication.run(ChatApplication.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/controller/ChatController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | import io.swagger.annotations.Api; 4 | import org.springframework.web.bind.annotation.GetMapping; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | * IM通信相关接口 10 | * 11 | * @author whoiszxl 12 | * @date 2022/2/15 13 | */ 14 | @RestController 15 | @RequestMapping("/chat") 16 | @Api(tags = "IM通信相关接口") 17 | public class ChatController { 18 | 19 | @GetMapping("/test/insert") 20 | public String test() { 21 | return "okk"; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/infrastructure/db/mapper/ImTalkMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.infrastructure.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.infrastructure.db.model.ImTalk; 5 | 6 | public interface ImTalkMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/infrastructure/db/mapper/ImTalkMessageMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.infrastructure.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.infrastructure.db.model.ImTalkMessage; 5 | 6 | public interface ImTalkMessageMapper extends BaseMapper { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/infrastructure/db/mapper/xml/ImTalkMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/infrastructure/db/mapper/xml/ImTalkMessageMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/infrastructure/db/repository/ImTalkMessageRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.infrastructure.db.repository; 2 | 3 | import com.whoiszxl.infrastructure.db.model.ImTalkMessage; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | public interface ImTalkMessageRepository extends Repository { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/java/com/whoiszxl/infrastructure/db/repository/ImTalkRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.infrastructure.db.repository; 2 | 3 | import com.whoiszxl.infrastructure.db.model.ImTalk; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | public interface ImTalkRepository extends Repository { 7 | 8 | } 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ,---. ,------. ,------. ,---. ,------. ,------. 2 | ' .-' | .---' | .---' ' .-' | .---' | .---' 3 | `. `-. | `--, | `--, `. `-. | `--, | `--, 4 | .-' | | `---. | `---. .-' | | `---. | `---. 5 | `-----' `------' `------' `-----' `------' `------' -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-chat/ss-chat-web/src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-gateway/src/main/java/com/whoiszxl/GatewayApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | import org.springframework.web.bind.annotation.CrossOrigin; 7 | 8 | /** 9 | * 网关应用启动器 10 | * 11 | * @author whoiszxl 12 | * @date 2021/4/7 13 | */ 14 | @CrossOrigin 15 | @SpringBootApplication 16 | @EnableDiscoveryClient 17 | public class GatewayApplication { 18 | 19 | public static void main(String[] args) { 20 | SpringApplication.run(GatewayApplication.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-application/src/main/java/com/whoiszxl/ability/member/cmd/CreateMemberAbilityCommand.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.ability.member.cmd; 2 | 3 | import com.whoiszxl.model.ddd.Command; 4 | import lombok.Data; 5 | 6 | /** 7 | * 创建用户能力命令 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/24 11 | */ 12 | @Data 13 | public class CreateMemberAbilityCommand implements Command { 14 | } 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-application/src/main/java/com/whoiszxl/command/FollowerApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command; 2 | 3 | import com.whoiszxl.command.cmd.FollowMemberCommand; 4 | import com.whoiszxl.model.ddd.ApplicationService; 5 | 6 | /** 7 | * 关注应用服务接口 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/27 11 | */ 12 | public interface FollowerApplicationService extends ApplicationService { 13 | 14 | /** 15 | * 关注用户 16 | * @param followMemberCommand 17 | */ 18 | void follow(FollowMemberCommand followMemberCommand); 19 | } 20 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-application/src/main/java/com/whoiszxl/command/cmd/FollowMemberCommand.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command.cmd; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | /** 8 | * 关注用户命令 9 | * 10 | * @author whoiszxl 11 | * @date 2022/1/27 12 | */ 13 | @Data 14 | @ApiModel("关注用户命令") 15 | public class FollowMemberCommand { 16 | 17 | @ApiModelProperty("被follow的用户ID") 18 | private Long memberId; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-application/src/main/java/com/whoiszxl/command/cmd/MemberLoginCommand.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command.cmd; 2 | 3 | import com.whoiszxl.model.ddd.Command; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | 10 | /** 11 | * 会员登录指令 12 | * 13 | * @author whoiszxl 14 | * @date 2022/1/24 15 | */ 16 | @Data 17 | @ApiModel("会员登录指令") 18 | public class MemberLoginCommand implements Command { 19 | 20 | @NotBlank(message = "用户名不允许为空") 21 | @ApiModelProperty("用户名") 22 | private String username; 23 | 24 | @NotBlank(message = "密码不允许为空") 25 | @ApiModelProperty("密码") 26 | private String password; 27 | } 28 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-application/src/main/java/com/whoiszxl/command/cmd/PhoneRegisterCommand.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command.cmd; 2 | 3 | import com.whoiszxl.model.ddd.Command; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import javax.validation.constraints.NotBlank; 9 | 10 | /** 11 | * 手机号注册指令 12 | * 13 | * @author whoiszxl 14 | * @date 2022/1/24 15 | */ 16 | @Data 17 | @ApiModel("手机号注册指令") 18 | public class PhoneRegisterCommand implements Command { 19 | 20 | @NotBlank(message = "用户名不允许为空") 21 | @ApiModelProperty("用户名") 22 | private String username; 23 | 24 | @NotBlank(message = "密码不允许为空") 25 | @ApiModelProperty("密码") 26 | private String password; 27 | } 28 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-application/src/main/java/com/whoiszxl/config/PasswordEncoderConfig.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 6 | import org.springframework.security.crypto.password.PasswordEncoder; 7 | 8 | 9 | @Configuration 10 | public class PasswordEncoderConfig { 11 | 12 | @Bean 13 | public PasswordEncoder passwordEncoder() { 14 | return new BCryptPasswordEncoder(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/aggregate/model/MemberAttention.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.model; 2 | 3 | import com.whoiszxl.model.ddd.AggregateRoot; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | /** 9 | *

10 | * 会员关注MemberAttention领域实体 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @Data 17 | @ApiModel(value = "MemberAttention领域实体", description = "MemberAttention领域实体") 18 | public class MemberAttention implements AggregateRoot { 19 | 20 | private static final long serialVersionUID = 1L; 21 | 22 | @ApiModelProperty("主键ID") 23 | private Long id; 24 | 25 | @ApiModelProperty("用户ID") 26 | private Long memberId; 27 | 28 | @ApiModelProperty("粉丝ID") 29 | private Long attentionId; 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/aggregate/model/MemberFollower.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.model; 2 | 3 | import com.whoiszxl.model.ddd.AggregateRoot; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.math.RoundingMode; 10 | 11 | /** 12 | *

13 | * MemberFollower领域实体对象 14 | *

15 | * 16 | * @author whoiszxl 17 | * @since 2021-12-08 18 | */ 19 | @Data 20 | @ApiModel(value = "MemberFollower领域实体对象", description = "MemberFollower领域实体对象") 21 | public class MemberFollower implements AggregateRoot { 22 | 23 | @ApiModelProperty("主键ID") 24 | private Long id; 25 | 26 | @ApiModelProperty("用户ID") 27 | private Long memberId; 28 | 29 | @ApiModelProperty("粉丝ID") 30 | private Long followerId; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/aggregate/repository/MemberAttentionRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.repository; 2 | 3 | import com.whoiszxl.aggregate.model.MemberAttention; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | /** 7 | * attention领域仓储服务 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/24 11 | */ 12 | public interface MemberAttentionRepository extends Repository { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/aggregate/repository/MemberFollowerRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.repository; 2 | 3 | import com.whoiszxl.aggregate.model.MemberFollower; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | /** 7 | * follower领域仓储服务 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/24 11 | */ 12 | public interface MemberFollowerRepository extends Repository { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/aggregate/repository/MemberInfoRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.repository; 2 | 3 | import com.whoiszxl.aggregate.model.MemberInfo; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | /** 7 | * 会员详情信息领域仓储服务 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/24 11 | */ 12 | public interface MemberInfoRepository extends Repository { 13 | 14 | MemberInfo byMemberId(Long memberId); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/aggregate/repository/MemberRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.repository; 2 | 3 | import com.whoiszxl.aggregate.model.Member; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | /** 7 | * 用户领域仓储服务 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/24 11 | */ 12 | public interface MemberRepository extends Repository { 13 | 14 | /** 15 | * 根据会员名称查询会员 16 | * @param username 会员名 17 | * @return 18 | */ 19 | Member byUsername(String username); 20 | } 21 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/event/FollowSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.event; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.AllArgsConstructor; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | /** 9 | * 用户关注成功事件 10 | * 11 | * @author whoiszxl 12 | * @date 2022/1/24 13 | */ 14 | @Data 15 | @AllArgsConstructor 16 | @NoArgsConstructor 17 | public class FollowSuccessEvent { 18 | 19 | @ApiModelProperty("用户ID") 20 | private Long memberId; 21 | 22 | @ApiModelProperty("粉丝ID") 23 | private Long attentionId; 24 | } 25 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/event/MemberDomainEventPublisher.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.event; 2 | 3 | /** 4 | * 领域事件发布服务 5 | * 6 | * @author whoiszxl 7 | * @date 2022/1/24 8 | */ 9 | public interface MemberDomainEventPublisher { 10 | 11 | /** 12 | * 发布用户登录成功的事件 13 | * @param memberLoginSuccessEvent 14 | */ 15 | public void publishMemberLoginSuccessEvent(MemberLoginSuccessEvent memberLoginSuccessEvent); 16 | 17 | /** 18 | * 发布用户关注成功的事件 19 | * @param followSuccessEvent 20 | */ 21 | public void publishFollowSuccessEvent(FollowSuccessEvent followSuccessEvent); 22 | } 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-domain/src/main/java/com/whoiszxl/event/MemberLoginSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 用户登录成功事件 9 | * 10 | * @author whoiszxl 11 | * @date 2022/1/24 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class MemberLoginSuccessEvent { 17 | 18 | private Long memberId; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/converter/MemberConverter.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.converter; 2 | 3 | import com.whoiszxl.aggregate.model.Member; 4 | import com.whoiszxl.db.model.MemberPO; 5 | import com.whoiszxl.dozer.DozerUtils; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * 用户转换器 11 | * 12 | * @author whoiszxl 13 | * @date 2022/1/24 14 | */ 15 | @Component 16 | public class MemberConverter { 17 | 18 | @Autowired 19 | private DozerUtils dozerUtils; 20 | 21 | 22 | public Member poToDomain(MemberPO memberPO) { 23 | Member member = dozerUtils.map(memberPO, Member.class); 24 | return member; 25 | } 26 | 27 | public MemberPO domainToPo(Member member) { 28 | MemberPO memberPO = dozerUtils.map(member, MemberPO.class); 29 | return memberPO; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/MemberAttentionMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.MemberAttentionPO; 5 | 6 | /** 7 | *

8 | * 会员关注表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberAttentionMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/MemberFollowerMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.MemberFollowerPO; 5 | 6 | /** 7 | *

8 | * 会员粉丝表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberFollowerMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/MemberInfoMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.MemberInfoPO; 5 | 6 | /** 7 | *

8 | * 会员详情表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberInfoMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/MemberMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.MemberPO; 5 | 6 | /** 7 | *

8 | * 会员表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/MemberReportMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.MemberReportPO; 5 | 6 | /** 7 | *

8 | * 会员举报表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberReportMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/MemberAttentionMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/MemberFollowerMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/MemberInfoMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/MemberMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/MemberReportMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-rpc/src/main/java/com/whoiszxl/dto/FollowerDTO.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 粉丝client查询DTO 7 | * 8 | * @author whoiszxl 9 | * @date 2022/1/27 10 | */ 11 | @Data 12 | public class FollowerDTO { 13 | 14 | /** 15 | * 主键ID 16 | */ 17 | private Long id; 18 | 19 | /** 20 | * 用户ID 21 | */ 22 | private Long memberId; 23 | 24 | /** 25 | * 粉丝ID 26 | */ 27 | private Long followerId; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-rpc/src/main/java/com/whoiszxl/dto/MemberDTO.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.io.Serializable; 6 | 7 | /** 8 | * 用户DTO 9 | * 10 | * @author whoiszxl 11 | * @date 2022/1/27 12 | */ 13 | @Data 14 | public class MemberDTO implements Serializable { 15 | 16 | private String id; 17 | 18 | private String nickname; 19 | 20 | private String avatar; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-rpc/src/main/java/com/whoiszxl/feign/MemberApiClient.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.feign; 2 | 3 | import com.whoiszxl.config.OAuth2FeignConfig; 4 | import com.whoiszxl.dto.FollowerDTO; 5 | import com.whoiszxl.dto.MemberDTO; 6 | import org.springframework.cloud.openfeign.FeignClient; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.PostMapping; 9 | import org.springframework.web.bind.annotation.RequestBody; 10 | 11 | import java.util.List; 12 | 13 | @FeignClient( 14 | name = "ss-member", 15 | contextId = "MemberApiClient", 16 | configuration = OAuth2FeignConfig.class 17 | ) 18 | public interface MemberApiClient { 19 | 20 | @GetMapping("/follower/list") 21 | List memberFollowerList(); 22 | 23 | @PostMapping("/member/info") 24 | List findMemberInfoByIds(@RequestBody List memberIdList); 25 | } 26 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-start/src/main/java/com/whoiszxl/MemberApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.openfeign.EnableFeignClients; 7 | 8 | /** 9 | * 会员服务启动类 10 | * 11 | * @author whoiszxl 12 | * @date 2021/7/19 13 | */ 14 | @SpringBootApplication 15 | @EnableFeignClients 16 | @MapperScan("com.whoiszxl.db.mapper") 17 | public class MemberApplication { 18 | 19 | public static void main(String[] args) { 20 | SpringApplication.run(MemberApplication.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-start/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ,---. ,------. ,------. ,---. ,------. ,------. 2 | ' .-' | .---' | .---' ' .-' | .---' | .---' 3 | `. `-. | `--, | `--, `. `-. | `--, | `--, 4 | .-' | | `---. | `---. .-' | | `---. | `---. 5 | `-----' `------' `------' `-----' `------' `------' -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-start/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member-start/src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-member/ss-member.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ddd-seesee 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-tools 13 | 14 | 15 | 8 16 | 8 17 | 18 | 19 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-dozer/src/main/java/com/whoiszxl/dozer/DozerAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.dozer; 2 | 3 | import com.github.dozermapper.core.Mapper; 4 | import org.springframework.context.annotation.Bean; 5 | 6 | /** 7 | * dozer自動配置類 8 | * 9 | * @author whoiszxl 10 | * @date 2021/11/30 11 | */ 12 | public class DozerAutoConfiguration { 13 | 14 | @Bean 15 | public DozerUtils dozerUtils(Mapper mapper) { 16 | return new DozerUtils(mapper); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-dozer/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.whoiszxl.dozer.DozerAutoConfiguration -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-dozer/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-dozer/src/main/resources/dozer/global.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 14 | 15 | yyyy-MM-dd HH:mm:ss 16 | 17 | 18 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-logger/src/main/java/com/whoiszxl/logger/annotation/SSLog.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.logger.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 日志记录注解 7 | * 8 | * @author whoiszxl 9 | * @date 2021/12/1 10 | */ 11 | @Target(ElementType.METHOD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Documented 14 | public @interface SSLog { 15 | 16 | /** 17 | * 描述 18 | * @return 19 | */ 20 | String value(); 21 | 22 | /** 23 | * 记录请求参数,默认记录 24 | * @return 25 | */ 26 | boolean recordRequestParams() default true; 27 | 28 | /** 29 | * 记录返回参数,默认记录 30 | * @return 31 | */ 32 | boolean recordResponseParams() default true; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-logger/src/main/java/com/whoiszxl/logger/event/SysLogEvent.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.logger.event; 2 | 3 | import com.whoiszxl.logger.entity.OptLogDTO; 4 | import org.springframework.context.ApplicationEvent; 5 | 6 | /** 7 | * 系统日志事件 8 | * 9 | */ 10 | public class SysLogEvent extends ApplicationEvent { 11 | 12 | public SysLogEvent(OptLogDTO source) { 13 | super(source); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-logger/src/main/java/com/whoiszxl/logger/event/SysLogListener.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.logger.event; 2 | 3 | import com.whoiszxl.logger.entity.OptLogDTO; 4 | import lombok.AllArgsConstructor; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.context.event.EventListener; 7 | import org.springframework.core.annotation.Order; 8 | import org.springframework.scheduling.annotation.Async; 9 | 10 | import java.util.function.Consumer; 11 | 12 | /** 13 | * 异步监听日志事件 14 | */ 15 | @Slf4j 16 | @AllArgsConstructor 17 | public class SysLogListener { 18 | 19 | private Consumer consumer; 20 | 21 | @Async 22 | @Order 23 | @EventListener(SysLogEvent.class) 24 | public void saveSysLog(SysLogEvent event) { 25 | OptLogDTO optLog = (OptLogDTO) event.getSource(); 26 | consumer.accept(optLog); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-logger/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.whoiszxl.logger.configuration.LogAutoConfiguration 3 | org.springframework.context.ApplicationContextInitializer=\ 4 | com.whoiszxl.logger.init.ApplicationLoggerInitializer 5 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-logger/src/main/resources/ip2region/ip2region.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/ddd-seesee/ss-tools/ss-tools-logger/src/main/resources/ip2region/ip2region.db -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-swagger/src/main/java/com/whoiszxl/swagger/bean/Basic.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.swagger.bean; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 用户认证类 9 | * 10 | * @author whoiszxl 11 | * @date 2021/11/30 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Basic { 17 | 18 | private Boolean enable = false; 19 | private String username = "seesee"; 20 | private String password = "seesee"; 21 | } 22 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-swagger/src/main/java/com/whoiszxl/swagger/bean/Contact.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.swagger.bean; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 联系人信息 7 | * 8 | * @author whoiszxl 9 | * @date 2021/11/30 10 | */ 11 | @Data 12 | public class Contact { 13 | /** 14 | * 联系人 15 | **/ 16 | private String name = "whoiszxl"; 17 | /** 18 | * 联系人url 19 | **/ 20 | private String url = "http://whoiszxl.com"; 21 | /** 22 | * 联系人email 23 | **/ 24 | private String email = "whoiszxl@gmail.com"; 25 | } -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-swagger/src/main/java/com/whoiszxl/swagger/bean/Markdown.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.swagger.bean; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 离线文档配置 9 | * 10 | * @author whoiszxl 11 | * @date 2021/11/30 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Markdown { 17 | private Boolean enable = false; 18 | private String basePath = "classpath:markdown/*"; 19 | } 20 | -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools-swagger/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.whoiszxl.swagger.SwaggerAutoConfiguration -------------------------------------------------------------------------------- /ddd-seesee/ss-tools/ss-tools.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ddd-seesee 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-video 13 | pom 14 | 15 | ss-video-api 16 | ss-video-application 17 | ss-video-domain 18 | ss-video-infrastructure 19 | ss-video-rpc 20 | ss-video-start 21 | ss-video-interaction 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/command/CommentApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command; 2 | 3 | import com.whoiszxl.command.cmd.PublishCommentCommand; 4 | 5 | /** 6 | * 评论应用服务接口 7 | * 8 | * @author whoiszxl 9 | * @date 2022/1/26 10 | */ 11 | public interface CommentApplicationService { 12 | 13 | /** 14 | * 评论点赞 15 | * @param commentId 16 | */ 17 | void commentLike(String commentId); 18 | 19 | /** 20 | * 评论取消点赞 21 | * @param commentId 22 | */ 23 | void commentLikeDislike(String commentId); 24 | 25 | /** 26 | * 提交评论 27 | * @param publishCommentCommand 28 | */ 29 | void commentPublish(PublishCommentCommand publishCommentCommand); 30 | } 31 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/command/VideoApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command; 2 | 3 | import com.whoiszxl.command.cmd.PublishVideoCommand; 4 | 5 | /** 6 | * 视频应用服务接口 7 | * 8 | * @author whoiszxl 9 | * @date 2022/1/26 10 | */ 11 | public interface VideoApplicationService { 12 | 13 | /** 14 | * 发布视频 15 | * @param publishVideoCommand 发布命令 16 | */ 17 | void publishVideo(PublishVideoCommand publishVideoCommand); 18 | 19 | /** 20 | * 视频点赞 21 | * @param videoId 视频ID 22 | */ 23 | void like(Long videoId); 24 | 25 | /** 26 | * 取消点赞 27 | * @param videoId 视频ID 28 | */ 29 | void disLike(Long videoId); 30 | } 31 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/command/cmd/LikeCommand.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.command.cmd; 2 | 3 | import com.whoiszxl.enums.VideoCounterStatusEnum; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | /** 8 | * TODO 9 | * 10 | * @author whoiszxl 11 | * @date 2022/1/27 12 | */ 13 | @Data 14 | public class LikeCommand { 15 | 16 | @ApiModelProperty("点赞id,视频id or 评论id") 17 | private Long id; 18 | 19 | /** 20 | * {@link com.whoiszxl.enums.LikeTypeEnum} 21 | */ 22 | @ApiModelProperty("点赞id: 1:视频点赞 2:评论点赞") 23 | private Integer likeType; 24 | 25 | /** 26 | * {@link VideoCounterStatusEnum} 27 | */ 28 | @ApiModelProperty("状态:1: 增加 2: 减少") 29 | private Integer status; 30 | 31 | @ApiModelProperty("用户ID") 32 | private Long memberId; 33 | 34 | } 35 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/query/CommentQueryApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.query; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | import com.whoiszxl.command.cmd.PublishCommentCommand; 5 | import com.whoiszxl.query.model.dto.VideoCommentDTO; 6 | import com.whoiszxl.query.model.qry.CommentListQuery; 7 | 8 | /** 9 | * 评论查询应用服务接口 10 | * 11 | * @author whoiszxl 12 | * @date 2022/1/26 13 | */ 14 | public interface CommentQueryApplicationService { 15 | 16 | /** 17 | * 通过视频ID查询一级评论或二级评论 18 | * @param commentListQuery 19 | * @return 20 | */ 21 | IPage commentList(CommentListQuery commentListQuery); 22 | 23 | 24 | } 25 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/query/VideoQueryApplicationService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.query; 2 | 3 | import com.baomidou.mybatisplus.core.metadata.IPage; 4 | import com.whoiszxl.model.query.PageQuery; 5 | import com.whoiszxl.query.model.dto.VideoDTO; 6 | import com.whoiszxl.query.model.qry.MemberTimelineQuery; 7 | 8 | /** 9 | * 视频查询应用服务接口 10 | * 11 | * @author whoiszxl 12 | * @date 2022/1/26 13 | */ 14 | public interface VideoQueryApplicationService { 15 | 16 | void feedList(PageQuery pageQuery); 17 | 18 | void videoVisitors(Long videoId); 19 | 20 | IPage videoList(PageQuery pageQuery); 21 | 22 | IPage attentionFeedList(PageQuery pageQuery); 23 | 24 | IPage recommendFeedList(PageQuery pageQuery); 25 | 26 | IPage timeline(MemberTimelineQuery memberTimelineQuery); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/query/model/qry/CommentListQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.query.model.qry; 2 | 3 | import com.whoiszxl.model.query.PageQuery; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | /** 9 | * 评论列表查询参数 10 | * 11 | * @author whoiszxl 12 | * @date 2022/1/26 13 | */ 14 | @Data 15 | @ApiModel("评论列表查询参数") 16 | public class CommentListQuery extends PageQuery { 17 | 18 | @ApiModelProperty("视频ID") 19 | private String videoId; 20 | 21 | @ApiModelProperty("父评论ID") 22 | private String commentId; 23 | } 24 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-application/src/main/java/com/whoiszxl/query/model/qry/MemberTimelineQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.query.model.qry; 2 | 3 | import com.whoiszxl.model.query.PageQuery; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | /** 9 | * 查询指定用户视频时间线列表的查询参数 10 | * 11 | * @author whoiszxl 12 | * @date 2022/1/26 13 | */ 14 | @Data 15 | @ApiModel("查询指定用户视频时间线列表的查询参数") 16 | public class MemberTimelineQuery extends PageQuery { 17 | 18 | @ApiModelProperty("用户ID") 19 | private String memberId; 20 | } 21 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/adapter/MemberAdapter.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.adapter; 2 | 3 | import com.whoiszxl.adapter.model.FollowerAdapterDTO; 4 | import com.whoiszxl.adapter.model.MemberAdapterDTO; 5 | import com.whoiszxl.model.ddd.Adapter; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 用户client api适配器 11 | * 12 | * @author whoiszxl 13 | * @date 2022/1/27 14 | */ 15 | public interface MemberAdapter extends Adapter { 16 | 17 | List memberFollowerList(); 18 | 19 | List findMemberInfoByIds(List memberIdList); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/adapter/model/FollowerAdapterDTO.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.adapter.model; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 粉丝client查询DTO 7 | * 8 | * @author whoiszxl 9 | * @date 2022/1/27 10 | */ 11 | @Data 12 | public class FollowerAdapterDTO { 13 | 14 | /** 15 | * 主键ID 16 | */ 17 | private Long id; 18 | 19 | /** 20 | * 用户ID 21 | */ 22 | private Long memberId; 23 | 24 | /** 25 | * 粉丝ID 26 | */ 27 | private Long followerId; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/adapter/model/MemberAdapterDTO.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.adapter.model; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * TODO 7 | * 8 | * @author whoiszxl 9 | * @date 2022/1/27 10 | */ 11 | @Data 12 | public class MemberAdapterDTO { 13 | 14 | private Long id; 15 | 16 | private String nickname; 17 | 18 | private String avatar; 19 | } 20 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/aggregate/repository/VideoCommentRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.repository; 2 | 3 | import com.whoiszxl.aggregate.model.VideoComment; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | /** 7 | * 视频评论领域仓储接口 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/26 11 | */ 12 | public interface VideoCommentRepository extends Repository { 13 | } 14 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/aggregate/repository/VideoRepository.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.aggregate.repository; 2 | 3 | import com.whoiszxl.aggregate.model.Video; 4 | import com.whoiszxl.model.ddd.Repository; 5 | 6 | /** 7 | * 视频领域仓储接口 8 | * 9 | * @author whoiszxl 10 | * @date 2022/1/26 11 | */ 12 | public interface VideoRepository extends Repository { 13 | } 14 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/event/VideoDomainEventPublisher.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.event; 2 | 3 | /** 4 | * 视频领域事件发布服务 5 | * 6 | * @author whoiszxl 7 | * @date 2022/02/09 8 | */ 9 | public interface VideoDomainEventPublisher { 10 | 11 | /** 12 | * 发布视频发布成功的事件 13 | * @param videoPublishSuccessEvent 14 | */ 15 | public void publishMemberLoginSuccessEvent(VideoPublishSuccessEvent videoPublishSuccessEvent); 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-domain/src/main/java/com/whoiszxl/event/VideoPublishSuccessEvent.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.event; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 视频发布成功事件 9 | * 10 | * @author whoiszxl 11 | * @date 2022/1/24 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class VideoPublishSuccessEvent { 17 | 18 | private Long videoId; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/converter/VideoConverter.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.converter; 2 | 3 | import com.whoiszxl.aggregate.model.Video; 4 | import com.whoiszxl.db.model.VideoPO; 5 | import com.whoiszxl.dozer.DozerUtils; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | * 视频实体转换器 11 | * 12 | * @author whoiszxl 13 | * @date 2022/1/24 14 | */ 15 | @Component 16 | public class VideoConverter { 17 | 18 | @Autowired 19 | private DozerUtils dozerUtils; 20 | 21 | 22 | public Video poToDomain(VideoPO videoPO) { 23 | Video video = dozerUtils.map(videoPO, Video.class); 24 | return video; 25 | } 26 | 27 | public VideoPO domainToPo(Video video) { 28 | VideoPO videoPO = dozerUtils.map(video, VideoPO.class); 29 | return videoPO; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/BgmusicMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.BgmusicPO; 5 | 6 | /** 7 | *

8 | * 背景音乐表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface BgmusicMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/VideoCommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.VideoCommentPO; 5 | 6 | /** 7 | *

8 | * 视频评论表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoCommentMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/VideoCounterMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.VideoCounterPO; 5 | 6 | /** 7 | *

8 | * 视频计数表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoCounterMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/VideoMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.VideoPO; 5 | 6 | /** 7 | *

8 | * 视频表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/VideoWatchHistoryMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.db.mapper; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.whoiszxl.db.model.VideoWatchHistoryPO; 5 | 6 | /** 7 | *

8 | * 浏览历史表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoWatchHistoryMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/BgmusicMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/VideoCommentMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/VideoCounterMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/VideoMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/db/mapper/xml/VideoWatchHistoryMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-infrastructure/src/main/java/com/whoiszxl/event/VideoDomainEventPublisherImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.event; 2 | 3 | import com.whoiszxl.mq.RocketMQProducer; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | * 领域事件发布服务实现 9 | * 10 | * @author whoiszxl 11 | * @date 2022/1/24 12 | */ 13 | @Component 14 | public class VideoDomainEventPublisherImpl implements VideoDomainEventPublisher { 15 | 16 | @Autowired 17 | private RocketMQProducer rocketMQProducer; 18 | 19 | @Override 20 | public void publishMemberLoginSuccessEvent(VideoPublishSuccessEvent videoPublishSuccessEvent) { 21 | 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-start/src/main/java/com/whoiszxl/VideoApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.cloud.openfeign.EnableFeignClients; 7 | 8 | /** 9 | * 视频服务启动类 10 | * 11 | * @author whoiszxl 12 | * @date 2021/7/19 13 | */ 14 | @SpringBootApplication 15 | @EnableFeignClients 16 | @MapperScan("com.whoiszxl.db.mapper") 17 | public class VideoApplication { 18 | 19 | public static void main(String[] args) { 20 | SpringApplication.run(VideoApplication.class, args); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-start/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | ,---. ,------. ,------. ,---. ,------. ,------. 2 | ' .-' | .---' | .---' ' .-' | .---' | .---' 3 | `. `-. | `--, | `--, `. `-. | `--, | `--, 4 | .-' | | `---. | `---. .-' | | `---. | `---. 5 | `-----' `------' `------' `-----' `------' `------' -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-start/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video-start/src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /ddd-seesee/ss-video/ss-video.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /docs/.nojekyll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/docs/.nojekyll -------------------------------------------------------------------------------- /docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | * 环境搭建 4 | * [Docker环境构建](markdown/docker_build.md) 5 | * [生产环境构建](markdown/prod_build.md) 6 | * [后端项目部署](markdown/backend_deploy.md) 7 | * [前端项目部署](markdown/frontend_deploy.md) 8 | 9 | * 项目中所使用到的技术详解 10 | * [Redis](markdown/redis_detail.md) 11 | * [MySQL](markdown/mysql_detail.md) 12 | * [JUC](markdown/juc_detail.md) 13 | * [设计模式](markdown/pattern_detail.md) -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | 11 | 12 | 16 |
17 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /docs/markdown/backend_deploy.md: -------------------------------------------------------------------------------- 1 | ## 后端项目部署 -------------------------------------------------------------------------------- /docs/markdown/docker_build.md: -------------------------------------------------------------------------------- 1 | ## Docker环境构建 2 | -------------------------------------------------------------------------------- /docs/markdown/frontend_deploy.md: -------------------------------------------------------------------------------- 1 | ## 前端项目部署 -------------------------------------------------------------------------------- /docs/markdown/juc_detail.md: -------------------------------------------------------------------------------- 1 | ## JUC详解 -------------------------------------------------------------------------------- /docs/markdown/mysql_detail.md: -------------------------------------------------------------------------------- 1 | ## MySQL详解 -------------------------------------------------------------------------------- /docs/markdown/pattern_detail.md: -------------------------------------------------------------------------------- 1 | ## 设计模式详解 -------------------------------------------------------------------------------- /docs/markdown/prod_build.md: -------------------------------------------------------------------------------- 1 | ## 生产环境构建 -------------------------------------------------------------------------------- /docs/markdown/redis_detail.md: -------------------------------------------------------------------------------- 1 | ## Redis详解 -------------------------------------------------------------------------------- /flutter_seesee/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | **/doc/api/ 25 | **/ios/Flutter/.last_build_id 26 | .dart_tool/ 27 | .flutter-plugins 28 | .flutter-plugins-dependencies 29 | .packages 30 | .pub-cache/ 31 | .pub/ 32 | /build/ 33 | 34 | # Web related 35 | lib/generated_plugin_registrant.dart 36 | 37 | # Symbolication related 38 | app.*.symbols 39 | 40 | # Obfuscation related 41 | app.*.map.json 42 | 43 | # Android Studio will place build artifacts here 44 | /android/app/debug 45 | /android/app/profile 46 | /android/app/release 47 | -------------------------------------------------------------------------------- /flutter_seesee/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled and should not be manually edited. 5 | 6 | version: 7 | revision: cf4400006550b70f28e4b4af815151d1e74846c6 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /flutter_seesee/README.md: -------------------------------------------------------------------------------- 1 | # flutter_seesee 2 | 3 | A new Flutter project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /flutter_seesee/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/kotlin/com/example/flutter_seesee/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.flutter_seesee 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /flutter_seesee/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_seesee/android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.5.21' 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | 8 | dependencies { 9 | classpath 'com.android.tools.build:gradle:4.1.0' 10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 11 | } 12 | } 13 | 14 | allprojects { 15 | repositories { 16 | maven { url 'https://maven.aliyun.com/repository/google' } 17 | maven { url 'https://maven.aliyun.com/repository/jcenter' } 18 | maven { url 'http://maven.aliyun.com/nexus/content/groups/public' } 19 | } 20 | } 21 | 22 | rootProject.buildDir = '../build' 23 | subprojects { 24 | project.buildDir = "${rootProject.buildDir}/${project.name}" 25 | } 26 | subprojects { 27 | project.evaluationDependsOn(':app') 28 | } 29 | 30 | task clean(type: Delete) { 31 | delete rootProject.buildDir 32 | } 33 | -------------------------------------------------------------------------------- /flutter_seesee/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /flutter_seesee/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /flutter_seesee/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /flutter_seesee/assets/images/login_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/assets/images/login_bottom.png -------------------------------------------------------------------------------- /flutter_seesee/assets/images/main_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/assets/images/main_bottom.png -------------------------------------------------------------------------------- /flutter_seesee/assets/images/main_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/assets/images/main_top.png -------------------------------------------------------------------------------- /flutter_seesee/assets/images/member_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/assets/images/member_bg.jpg -------------------------------------------------------------------------------- /flutter_seesee/assets/images/signup_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/assets/images/signup_top.png -------------------------------------------------------------------------------- /flutter_seesee/ios/.gitignore: -------------------------------------------------------------------------------- 1 | **/dgph 2 | *.mode1v3 3 | *.mode2v3 4 | *.moved-aside 5 | *.pbxuser 6 | *.perspectivev3 7 | **/*sync/ 8 | .sconsign.dblite 9 | .tags* 10 | **/.vagrant/ 11 | **/DerivedData/ 12 | Icon? 13 | **/Pods/ 14 | **/.symlinks/ 15 | profile 16 | xcuserdata 17 | **/.generated/ 18 | Flutter/App.framework 19 | Flutter/Flutter.framework 20 | Flutter/Flutter.podspec 21 | Flutter/Generated.xcconfig 22 | Flutter/ephemeral/ 23 | Flutter/app.flx 24 | Flutter/app.zip 25 | Flutter/flutter_assets/ 26 | Flutter/flutter_export_environment.sh 27 | ServiceDefinitions.json 28 | Runner/GeneratedPluginRegistrant.* 29 | 30 | # Exceptions to above rules. 31 | !default.mode1v3 32 | !default.mode2v3 33 | !default.pbxuser 34 | !default.perspectivev3 35 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 9.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include "Generated.xcconfig" 2 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | 4 | @UIApplicationMain 5 | @objc class AppDelegate: FlutterAppDelegate { 6 | override func application( 7 | _ application: UIApplication, 8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 9 | ) -> Bool { 10 | GeneratedPluginRegistrant.register(with: self) 11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /flutter_seesee/ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | -------------------------------------------------------------------------------- /flutter_seesee/lib/controller/language_controller.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:ui'; 3 | 4 | import 'package:get/get.dart'; 5 | 6 | class LanguageController extends GetxController { 7 | 8 | /// 语言切换,传入语言编码和地区编码 9 | void langSwitch(String languageCode, String regionCode) { 10 | var locale = Locale(languageCode, regionCode); 11 | Get.updateLocale(locale); 12 | } 13 | 14 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/controller/main_page_controller.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'package:get/get.dart'; 3 | 4 | class MainPageController extends GetxController { 5 | 6 | //底部bar页面切换下标 7 | var bottomPageIndex = RxInt(0); 8 | 9 | //滑动开关 10 | var slideSwitch = RxBool(true); 11 | 12 | //视频播放页的高度 13 | var videoViewHeight = 0.0.obs; 14 | 15 | //设置视频播放页视频的高度 16 | void setVideoViewHeight(double height){ 17 | videoViewHeight.value = height; 18 | } 19 | 20 | //选中指定的bar,并配置第一二个可以滑动 21 | void selectIndexBottomBarMainPage(int index){ 22 | if(index == 0 || index == 1){ 23 | updateScrollPageScrollState(true); 24 | }else{ 25 | updateScrollPageScrollState(false); 26 | } 27 | bottomPageIndex.value = index; 28 | } 29 | 30 | //ScrollPage的PageView是否可以滑动 31 | void updateScrollPageScrollState(bool scroll){ 32 | slideSwitch.value = scroll; 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/controller/video_controller.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter_seesee/service/video_api_service.dart'; 2 | import 'package:get/get.dart'; 3 | 4 | class VideoController extends GetxController { 5 | 6 | VideoApiService videoApiService = Get.find(); 7 | 8 | 9 | 10 | ///点赞 11 | videoLike(String videoId) async { 12 | await videoApiService.videoLike(videoId); 13 | } 14 | 15 | ///取消点赞 16 | videoDislike(String videoId) async { 17 | await videoApiService.videoDislike(videoId); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/entity/dto/error_dto.dart: -------------------------------------------------------------------------------- 1 | class ErrorDTO { 2 | int errorCode; 3 | String errorMessage; 4 | 5 | ErrorDTO({this.errorCode, this.errorMessage}); 6 | } 7 | -------------------------------------------------------------------------------- /flutter_seesee/lib/events/close_main_drawer_event.dart: -------------------------------------------------------------------------------- 1 | ///关闭右边菜单 2 | class CloseMainDrawerEvent{ 3 | 4 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/events/main_reset_event.dart: -------------------------------------------------------------------------------- 1 | ///首页重置事件 2 | class MainResetEvent{ 3 | 4 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/events/stop_play_event.dart: -------------------------------------------------------------------------------- 1 | ///停止视频播放的事件 2 | ///在首页点击搜索,直播等按钮时fire调用 3 | class StopPlayEvent{ 4 | 5 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/http/base_response.dart: -------------------------------------------------------------------------------- 1 | ///基础返回实体 2 | class BaseResponse { 3 | //返回的消息主体 4 | dynamic data; 5 | 6 | //状态码 7 | int code; 8 | 9 | //提示消息 10 | String message; 11 | 12 | //请求是否ok 13 | bool ok; 14 | 15 | BaseResponse(this.data, this.code, this.message, this.ok); 16 | 17 | BaseResponse.fromJson(Map json) { 18 | data = json['data']; 19 | code = json['code']; 20 | message = json['message']; 21 | ok = json['ok']; 22 | } 23 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/http/http_method.dart: -------------------------------------------------------------------------------- 1 | class HttpMethod{ 2 | 3 | static const String get = "GET"; 4 | 5 | static const String post = "POST"; 6 | 7 | static const String put = "PUT"; 8 | 9 | static const String patch = "PATCH"; 10 | 11 | static const String delete = "DELETE"; 12 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/http/interceptors/header_interceptor.dart: -------------------------------------------------------------------------------- 1 | import 'package:dio/dio.dart'; 2 | import 'package:flutter_seesee/router/sp_keys.dart'; 3 | import 'package:flutter_seesee/utils/sp_util.dart'; 4 | 5 | 6 | ///http header头拦截器,将token从sp里获取并放到Authorization中 7 | class HeaderInterceptor implements Interceptor{ 8 | @override 9 | Future onError(DioError err)async { 10 | return err; 11 | } 12 | 13 | @override 14 | Future onRequest(RequestOptions options) async{ 15 | String token = ''; 16 | await SPUtil.getString(SPKeys.token).then((text){ 17 | token = text; 18 | }); 19 | if(token != null && token.isNotEmpty) { 20 | options.headers['Authorization'] = 'Bearer ' + token??''; 21 | } 22 | return options; 23 | } 24 | 25 | @override 26 | Future onResponse(Response response) async{ 27 | return response; 28 | } 29 | 30 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/pages/login/widgets/text_field_container.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter_seesee/res/colors_manager.dart'; 3 | 4 | class TextFieldContainer extends StatelessWidget { 5 | 6 | final Widget child; 7 | const TextFieldContainer({Key key, this.child}) : super(key: key); 8 | 9 | @override 10 | Widget build(BuildContext context) { 11 | Size size = MediaQuery.of(context).size; 12 | return Container( 13 | margin: const EdgeInsets.symmetric(vertical: 10), 14 | padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 5), 15 | width: size.width * 0.8, 16 | decoration: BoxDecoration( 17 | color: ColorManager.loginSecondColor, 18 | borderRadius: BorderRadius.circular(12), 19 | ), 20 | child: child, 21 | ); 22 | } 23 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/pages/search/search_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | ///home页面 4 | class SearchPage extends StatefulWidget { 5 | const SearchPage({Key key}) : super(key: key); 6 | 7 | @override 8 | State createState() { 9 | return _SearchPageState(); 10 | } 11 | } 12 | 13 | class _SearchPageState extends State{ 14 | 15 | @override 16 | void initState() { 17 | super.initState(); 18 | } 19 | 20 | @override 21 | void dispose() { 22 | super.dispose(); 23 | } 24 | @override 25 | Widget build(BuildContext context) { 26 | return const Center(child: Text("search")); 27 | } 28 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/pages/settings/settings_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | ///设置页面 4 | class SettingsPage extends StatefulWidget { 5 | const SettingsPage({Key key}) : super(key: key); 6 | 7 | @override 8 | State createState() { 9 | return _SettingsPageState(); 10 | } 11 | } 12 | 13 | class _SettingsPageState extends State{ 14 | 15 | @override 16 | void initState() { 17 | super.initState(); 18 | } 19 | 20 | @override 21 | void dispose() { 22 | super.dispose(); 23 | } 24 | @override 25 | Widget build(BuildContext context) { 26 | return Center(child: InkWell( 27 | child: const Text("settings"), 28 | onTap: () { 29 | Navigator.pop(context); 30 | }, 31 | )); 32 | } 33 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/pages/video_add/video_add_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | ///home页面 4 | class VideoAddPage extends StatefulWidget { 5 | const VideoAddPage({Key key}) : super(key: key); 6 | 7 | @override 8 | State createState() { 9 | return _VideoAddPageState(); 10 | } 11 | } 12 | 13 | class _VideoAddPageState extends State{ 14 | 15 | @override 16 | void initState() { 17 | super.initState(); 18 | } 19 | 20 | @override 21 | void dispose() { 22 | super.dispose(); 23 | } 24 | @override 25 | Widget build(BuildContext context) { 26 | return const Center(child: Text("add_video")); 27 | } 28 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/res/colors_manager.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | ///颜色管理者 4 | class ColorManager{ 5 | static const Color main = Color.fromARGB(255,0,106,174); 6 | static const Color orange = Color.fromARGB(255,255,153,0); 7 | static const Color red = Color.fromARGB(255, 254,44,85); 8 | static const Color yellow = Color.fromARGB(255, 250,206,21); 9 | static const Color white = Colors.white; 10 | static const Color white38 = Colors.white38; 11 | static const Color white60 = Colors.white60; 12 | static const Color white70 = Colors.white70; 13 | static const Color grey = Colors.grey; 14 | static const Color black = Colors.black; 15 | static const Color bg = Colors.white60; 16 | static const Color loginMainColor = main; 17 | static const Color loginSecondColor = Color(0xFFF1E6FF); 18 | 19 | static const Color line = Colors.black12; 20 | 21 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/router/application.dart: -------------------------------------------------------------------------------- 1 | import 'package:event_bus/event_bus.dart'; 2 | 3 | class Application{ 4 | static EventBus eventBus = EventBus(); 5 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/router/sp_keys.dart: -------------------------------------------------------------------------------- 1 | class SPKeys{ 2 | 3 | ///token键名 4 | static const token = 'token'; 5 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/utils/clipboard_util.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | import 'package:oktoast/oktoast.dart'; 3 | 4 | class ClipboardUtil { 5 | 6 | ///判断类型设置值到sp 7 | static copy(String text) { 8 | showToast("复制成功"); 9 | Clipboard.setData(ClipboardData(text: text)); 10 | } 11 | 12 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/utils/enum_util.dart: -------------------------------------------------------------------------------- 1 | class EnumUtil { 2 | 3 | ///判断类型设置值到sp 4 | static getGender(int enumValue) { 5 | switch(enumValue) { 6 | case 0: 7 | return "未知"; 8 | case 1: 9 | return "男"; 10 | case 2: 11 | return "女"; 12 | default: 13 | return "未知"; 14 | } 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/utils/image_util.dart: -------------------------------------------------------------------------------- 1 | import 'package:cached_network_image/cached_network_image.dart'; 2 | import 'package:flutter/material.dart'; 3 | 4 | ///带缓存的image 5 | Widget cachedImage(String url, {double width, double height, BoxFit fit}) { 6 | return CachedNetworkImage( 7 | height: height, 8 | width: width, 9 | fit: fit, 10 | placeholder: ( 11 | BuildContext context, 12 | String url, 13 | ) => 14 | Container(color: Colors.grey[200]), 15 | errorWidget: ( 16 | BuildContext context, 17 | String url, 18 | dynamic error, 19 | ) => 20 | const Icon(Icons.error), 21 | imageUrl: url); 22 | } -------------------------------------------------------------------------------- /flutter_seesee/lib/utils/screen_util.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | /// Basically made for iPhone 12 Pro Max 4 | /// iPhone 12 Pro Max screen height 5 | const double baseHeight = 926.0; 6 | 7 | /// iPhone 12 Pro Max screen width 8 | const double baseWidth = 428.0; 9 | 10 | /// Calculate height 11 | double screenAwareHeight(double height, BuildContext context) { 12 | return height / baseHeight * MediaQuery.of(context).size.height; 13 | } 14 | 15 | /// Calculate width 16 | double screenAwareWidth(double width, BuildContext context) { 17 | return width / baseWidth * MediaQuery.of(context).size.width; 18 | } 19 | 20 | double screenWidth(BuildContext context){ 21 | return MediaQuery.of(context).size.width; 22 | } 23 | 24 | 25 | double screenHeight(BuildContext context){ 26 | return MediaQuery.of(context).size.height; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /flutter_seesee/lib/widgets/normal_loading.dart: -------------------------------------------------------------------------------- 1 | import 'package:lottie/lottie.dart'; 2 | 3 | ///自定义loading动画 4 | normalLoading() { 5 | return Lottie.asset("assets/lottie/loading.json"); 6 | } -------------------------------------------------------------------------------- /flutter_seesee/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/web/favicon.png -------------------------------------------------------------------------------- /flutter_seesee/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/web/icons/Icon-192.png -------------------------------------------------------------------------------- /flutter_seesee/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/web/icons/Icon-512.png -------------------------------------------------------------------------------- /flutter_seesee/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /flutter_seesee/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/flutter_seesee/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /resources/sql/mongodb.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "自增ID", 3 | "memberId": "用户ID", 4 | "talkId": "对话ID: 好友ID或群组ID", 5 | "talkType": "对话类型: 1-好友 2-群组", 6 | "createdAt": "创建时间", 7 | "updatedAt": "更新时间" 8 | } 9 | 10 | 11 | { 12 | "id": "自增ID", 13 | "memberId": "用户ID", 14 | "friendId": "好友ID", 15 | "talkType": "对话类型: 1-好友 2-群组", 16 | "message": "消息体", 17 | "messageTime": "消息时间", 18 | } -------------------------------------------------------------------------------- /seesee-video/seesee-video.iml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | seesee-video 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-admin 13 | pom 14 | 15 | ss-admin-api 16 | ss-admin-web 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ss-admin 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-admin-api 13 | 14 | 15 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/AdminApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.openfeign.EnableFeignClients; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 8 | import org.springframework.security.crypto.password.PasswordEncoder; 9 | 10 | /** 11 | * TODO 12 | * 13 | * @author whoiszxl 14 | * @date 2021/11/30 15 | */ 16 | @SpringBootApplication 17 | @EnableFeignClients 18 | public class AdminApplication { 19 | 20 | public static void main(String[] args) { 21 | SpringApplication.run(AdminApplication.class, args); 22 | } 23 | 24 | @Bean 25 | public PasswordEncoder passwordEncoder() { 26 | return new BCryptPasswordEncoder(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/controller/AdminOptLogController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 系统日志 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | @RestController 17 | @RequestMapping("/admin-opt-log") 18 | public class AdminOptLogController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/controller/AdminRoleController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 管理员&角色关联表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | @RestController 17 | @RequestMapping("/admin-role") 18 | public class AdminRoleController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/controller/MenuController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 系统菜单 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | @RestController 17 | @RequestMapping("/menu") 18 | public class MenuController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/controller/PrivilegeController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 权限配置 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | @RestController 17 | @RequestMapping("/privilege") 18 | public class PrivilegeController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/controller/RoleAuthorityController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 角色&(权限|菜单)关联表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | @RestController 17 | @RequestMapping("/role-authority") 18 | public class RoleAuthorityController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/controller/RoleController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 角色 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | @RestController 17 | @RequestMapping("/role") 18 | public class RoleController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/entity/query/AdminQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity.query; 2 | 3 | import com.whoiszxl.bean.PageQuery; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | @Data 9 | @ApiModel("管理员列表查询参数") 10 | public class AdminQuery extends PageQuery { 11 | 12 | @ApiModelProperty("用户名") 13 | private String username; 14 | 15 | @ApiModelProperty("手机号") 16 | private String mobile; 17 | 18 | @ApiModelProperty("邮箱") 19 | private String email; 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/entity/query/LoginQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity.query; 2 | 3 | 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | @Data 9 | @ApiModel("登录接口参数") 10 | public class LoginQuery { 11 | 12 | @ApiModelProperty("用户名") 13 | private String username; 14 | 15 | @ApiModelProperty("密码") 16 | private String password; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/AdminLoginLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.AdminLoginLog; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 登录日志 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminLoginLogMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/AdminMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.Admin; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 管理员表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/AdminOptLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.AdminOptLog; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 系统日志 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminOptLogMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/AdminRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.AdminRole; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 管理员&角色关联表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminRoleMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/MenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.Menu; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 系统菜单 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface MenuMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/RoleAuthorityMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.RoleAuthority; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 角色&(权限|菜单)关联表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface RoleAuthorityMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.Role; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 角色 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface RoleMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/AdminLoginLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/AdminMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/AdminOptLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/AdminRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/MenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/PrivilegeMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/RoleAuthorityMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/mapper/xml/RoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/AdminLoginLogService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.AdminLoginLog; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 登录日志 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminLoginLogService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/AdminOptLogService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.AdminOptLog; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 系统日志 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminOptLogService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/AdminRoleService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.AdminRole; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 管理员&角色关联表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminRoleService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/AdminService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.Admin; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 管理员表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface AdminService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.Menu; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 系统菜单 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface MenuService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/PrivilegeService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.Privilege; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | *

10 | * 权限配置 服务类 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-06 15 | */ 16 | public interface PrivilegeService extends IService { 17 | 18 | /** 19 | * 通过adminId获取到此用户的所有权限 20 | * @param adminId 管理员ID 21 | * @return 此用户的所有权限 22 | */ 23 | List getCurrentAdminAvailPrivilegeList(Integer adminId); 24 | } 25 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/RoleAuthorityService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.RoleAuthority; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 角色&(权限|菜单)关联表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface RoleAuthorityService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.Role; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 角色 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-06 13 | */ 14 | public interface RoleService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/AdminLoginLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.AdminLoginLog; 4 | import com.whoiszxl.mapper.AdminLoginLogMapper; 5 | import com.whoiszxl.service.AdminLoginLogService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 登录日志 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class AdminLoginLogServiceImpl extends ServiceImpl implements AdminLoginLogService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/AdminOptLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.AdminOptLog; 4 | import com.whoiszxl.mapper.AdminOptLogMapper; 5 | import com.whoiszxl.service.AdminOptLogService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 系统日志 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class AdminOptLogServiceImpl extends ServiceImpl implements AdminOptLogService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/AdminRoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.AdminRole; 4 | import com.whoiszxl.mapper.AdminRoleMapper; 5 | import com.whoiszxl.service.AdminRoleService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 管理员&角色关联表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class AdminRoleServiceImpl extends ServiceImpl implements AdminRoleService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/AdminServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.Admin; 4 | import com.whoiszxl.mapper.AdminMapper; 5 | import com.whoiszxl.service.AdminService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 管理员表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class AdminServiceImpl extends ServiceImpl implements AdminService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/MenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.Menu; 4 | import com.whoiszxl.mapper.MenuMapper; 5 | import com.whoiszxl.service.MenuService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 系统菜单 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class MenuServiceImpl extends ServiceImpl implements MenuService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/RoleAuthorityServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.RoleAuthority; 4 | import com.whoiszxl.mapper.RoleAuthorityMapper; 5 | import com.whoiszxl.service.RoleAuthorityService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 角色&(权限|菜单)关联表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class RoleAuthorityServiceImpl extends ServiceImpl implements RoleAuthorityService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/java/com/whoiszxl/service/impl/RoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.Role; 4 | import com.whoiszxl.mapper.RoleMapper; 5 | import com.whoiszxl.service.RoleService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 角色 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-06 16 | */ 17 | @Service 18 | public class RoleServiceImpl extends ServiceImpl implements RoleService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /seesee-video/ss-admin/ss-admin-web/src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /seesee-video/ss-gateway/src/main/java/com/whoiszxl/GatewayApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 6 | 7 | /** 8 | * 网关应用启动器 9 | * 10 | * @author whoiszxl 11 | * @date 2021/4/7 12 | */ 13 | @SpringBootApplication 14 | @EnableDiscoveryClient 15 | public class GatewayApplication { 16 | 17 | public static void main(String[] args) { 18 | SpringApplication.run(GatewayApplication.class, args); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | seesee-video 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-member 13 | pom 14 | 15 | ss-member-api 16 | ss-member-web 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ss-member 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-member-api 13 | 14 | 15 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/MemberApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * TODO 8 | * 9 | * @author whoiszxl 10 | * @date 2021/11/30 11 | */ 12 | @SpringBootApplication 13 | public class MemberApplication { 14 | 15 | public static void main(String[] args) { 16 | SpringApplication.run(MemberApplication.class, args); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/config/LogAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.config; 2 | 3 | import com.whoiszxl.logger.event.SysLogListener; 4 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * TODO 10 | * 11 | * @author whoiszxl 12 | * @date 2021/12/1 13 | */ 14 | @Configuration 15 | public class LogAutoConfiguration { 16 | 17 | @Bean 18 | @ConditionalOnMissingBean 19 | public SysLogListener sysLogListener(LogService logService) { 20 | return new SysLogListener(optLogDTO -> { 21 | logService.saveLog(optLogDTO); 22 | }); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/config/LogService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.config; 2 | 3 | import com.whoiszxl.logger.entity.OptLogDTO; 4 | import lombok.extern.slf4j.Slf4j; 5 | import org.springframework.stereotype.Service; 6 | 7 | /** 8 | * TODO 9 | * 10 | * @author whoiszxl 11 | * @date 2021/12/1 12 | */ 13 | @Service 14 | @Slf4j 15 | public class LogService { 16 | 17 | public void saveLog(OptLogDTO optLogDTO) { 18 | log.info("日志入库:{}", optLogDTO); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/controller/MemberAttentionController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 会员关注表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/member-attention") 18 | public class MemberAttentionController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/controller/MemberController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 会员表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/member") 18 | public class MemberController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/controller/MemberFollowerController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 会员粉丝表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/member-follower") 18 | public class MemberFollowerController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/controller/MemberInfoController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 会员详情表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/member-info") 18 | public class MemberInfoController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/controller/MemberReportController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 会员举报表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/member-report") 18 | public class MemberReportController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/entity/MemberAttention.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import java.io.Serializable; 5 | import io.swagger.annotations.ApiModel; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | /** 11 | *

12 | * 会员关注表 13 | *

14 | * 15 | * @author whoiszxl 16 | * @since 2021-12-08 17 | */ 18 | @Getter 19 | @Setter 20 | @TableName("ums_member_attention") 21 | @ApiModel(value = "MemberAttention对象", description = "会员关注表") 22 | public class MemberAttention implements Serializable { 23 | 24 | private static final long serialVersionUID = 1L; 25 | 26 | @ApiModelProperty("主键ID") 27 | private Long id; 28 | 29 | @ApiModelProperty("用户ID") 30 | private Long memberId; 31 | 32 | @ApiModelProperty("粉丝ID") 33 | private Long attentionId; 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/entity/MemberFollower.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import java.io.Serializable; 5 | import io.swagger.annotations.ApiModel; 6 | import io.swagger.annotations.ApiModelProperty; 7 | import lombok.Getter; 8 | import lombok.Setter; 9 | 10 | /** 11 | *

12 | * 会员粉丝表 13 | *

14 | * 15 | * @author whoiszxl 16 | * @since 2021-12-08 17 | */ 18 | @Getter 19 | @Setter 20 | @TableName("ums_member_follower") 21 | @ApiModel(value = "MemberFollower对象", description = "会员粉丝表") 22 | public class MemberFollower implements Serializable { 23 | 24 | private static final long serialVersionUID = 1L; 25 | 26 | @ApiModelProperty("主键ID") 27 | private Long id; 28 | 29 | @ApiModelProperty("用户ID") 30 | private Long memberId; 31 | 32 | @ApiModelProperty("粉丝ID") 33 | private Long followerId; 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/MemberAttentionMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.MemberAttention; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 会员关注表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberAttentionMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/MemberFollowerMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.MemberFollower; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 会员粉丝表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberFollowerMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/MemberInfoMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.MemberInfo; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 会员详情表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberInfoMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/MemberMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.Member; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 会员表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/MemberReportMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.MemberReport; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 会员举报表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface MemberReportMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/xml/MemberAttentionMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/xml/MemberFollowerMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/xml/MemberInfoMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/xml/MemberMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/mapper/xml/MemberReportMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/IMemberAttentionService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.MemberAttention; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 会员关注表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface IMemberAttentionService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/IMemberFollowerService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.MemberFollower; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 会员粉丝表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface IMemberFollowerService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/IMemberInfoService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.MemberInfo; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 会员详情表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface IMemberInfoService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/IMemberReportService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.MemberReport; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 会员举报表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface IMemberReportService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/IMemberService.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service; 2 | 3 | import com.whoiszxl.entity.Member; 4 | import com.baomidou.mybatisplus.extension.service.IService; 5 | 6 | /** 7 | *

8 | * 会员表 服务类 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface IMemberService extends IService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/impl/MemberAttentionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.MemberAttention; 4 | import com.whoiszxl.mapper.MemberAttentionMapper; 5 | import com.whoiszxl.service.IMemberAttentionService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 会员关注表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-08 16 | */ 17 | @Service 18 | public class MemberAttentionServiceImpl extends ServiceImpl implements IMemberAttentionService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/impl/MemberFollowerServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.MemberFollower; 4 | import com.whoiszxl.mapper.MemberFollowerMapper; 5 | import com.whoiszxl.service.IMemberFollowerService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 会员粉丝表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-08 16 | */ 17 | @Service 18 | public class MemberFollowerServiceImpl extends ServiceImpl implements IMemberFollowerService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/impl/MemberInfoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.MemberInfo; 4 | import com.whoiszxl.mapper.MemberInfoMapper; 5 | import com.whoiszxl.service.IMemberInfoService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 会员详情表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-08 16 | */ 17 | @Service 18 | public class MemberInfoServiceImpl extends ServiceImpl implements IMemberInfoService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/impl/MemberReportServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.MemberReport; 4 | import com.whoiszxl.mapper.MemberReportMapper; 5 | import com.whoiszxl.service.IMemberReportService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 会员举报表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-08 16 | */ 17 | @Service 18 | public class MemberReportServiceImpl extends ServiceImpl implements IMemberReportService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/java/com/whoiszxl/service/impl/MemberServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.service.impl; 2 | 3 | import com.whoiszxl.entity.Member; 4 | import com.whoiszxl.mapper.MemberMapper; 5 | import com.whoiszxl.service.IMemberService; 6 | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | *

11 | * 会员表 服务实现类 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-08 16 | */ 17 | @Service 18 | public class MemberServiceImpl extends ServiceImpl implements IMemberService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | _ _ 2 | ___ ___ ___ ___ ___ ___ ___ __ __ (_) __| | ___ ___ 3 | (_-< / -_) / -_) (_-< / -_) / -_) |___| \ V / | | / _` | / -_) / _ \ 4 | /__/_ \___| \___| /__/_ \___| \___| _____ _\_/_ _|_|_ \__,_| \___| \___/ 5 | _|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_|"""""|_| |_|"""""|_|"""""|_|"""""|_|"""""|_|"""""| 6 | "`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-' 7 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | -------------------------------------------------------------------------------- /seesee-video/ss-member/ss-member-web/src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | seesee-video 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-tools 13 | pom 14 | 15 | ss-tools-core 16 | ss-tools-swagger 17 | ss-tools-logger 18 | ss-tools-dozer 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/base/id/IdGenerate.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.base.id; 2 | 3 | 4 | import java.io.Serializable; 5 | 6 | /** 7 | * 主键(id)生成器,用于生成唯一id号 8 | * 1、注意:在写主键生成器时,请考虑主键不会重复。 9 | * 2、尤其需要考虑在短时间内大量调用生成器,也保证不要出现重复 10 | * 3、实现类必须是线程安全的,因为会应用在多线程环境中去 11 | * 12 | */ 13 | @FunctionalInterface 14 | public interface IdGenerate { 15 | /** 16 | * id 生成器 17 | * 18 | * @return 19 | */ 20 | T generate(); 21 | } 22 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/base/id/SnowflakeIdGenerate.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.base.id; 2 | 3 | /** 4 | * 1bit + 41bit + 17bit + 5bit 5 | * | | | | 6 | * | | | | 7 | * 符合位 时间戳(毫秒) 序列号 机器码 8 | * 第1bit固定是0 符号位不动 。 9 | * 第2bit到第42bit使用时间蹉,精确到毫秒 41bit。 使用年限是69年 10 | * 第43bit到第59bit使用自增的序列号 17bit 可用序列号最大131071个,说明一毫秒我们可以生成131071个不同的序列号。 11 | * 第60bit到第64bit使用机器码 5bit 可以使系统可以分布式,最大分布式数量是32台机子。 12 | * 13 | */ 14 | public class SnowflakeIdGenerate extends AbstractIdGenerate { 15 | 16 | public SnowflakeIdGenerate(final long machineCode) { 17 | super(machineCode); 18 | } 19 | 20 | @Override 21 | public Long generate() { 22 | return super.generateLong(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/bean/PageQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.bean; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * 分页查询对象 12 | * 13 | * @author whoiszxl 14 | * @date 2021/7/19 15 | */ 16 | @Data 17 | @EqualsAndHashCode(callSuper = false) 18 | @ApiModel(value="分页查询对象", description="分页查询对象") 19 | public class PageQuery implements Serializable { 20 | 21 | @ApiModelProperty(value = "页码") 22 | private Integer page = 1; 23 | 24 | @ApiModelProperty(value = "每页数量") 25 | private Integer size = 10; 26 | } 27 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/bean/StatusCode.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.bean; 2 | 3 | /** 4 | * 常用状态码 5 | * 6 | * @author whoiszxl 7 | * @date 2021/3/17 8 | */ 9 | public class StatusCode { 10 | public static final int OK = 0;//成功 11 | public static final int ERROR = 1;//失败 12 | public static final int LOGINERROR = 20002;//用户名或密码错误 13 | public static final int ACCESSERROR = 20003;//权限不足 14 | public static final int REMOTEERROR = 20004;//远程调用失败 15 | public static final int REPERROR = 20005;//重复操作 16 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/constants/RedisKeyPrefixConstants.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.constants; 2 | 3 | /** 4 | * Redis Key 前缀常量 5 | * 6 | * @author whoiszxl 7 | * @date 2021/12/7 8 | */ 9 | public class RedisKeyPrefixConstants { 10 | 11 | 12 | public static final String ADMIN_PRIVILEGE_PREFIX = "admin:privilege:"; 13 | 14 | public static final String VIDEO_PREFIX = "video:"; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/context/BaseContextConstants.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.context; 2 | 3 | /** 4 | * 常量工具类 5 | * 6 | */ 7 | public class BaseContextConstants { 8 | /** 9 | * 10 | */ 11 | public static final String TOKEN_NAME = "token"; 12 | /** 13 | * 14 | */ 15 | public static final String JWT_KEY_MEMBER_ID = "member_id"; 16 | /** 17 | * 18 | */ 19 | public static final String JWT_KEY_NAME = "name"; 20 | /** 21 | * 22 | */ 23 | public static final String JWT_KEY_ACCOUNT = "account"; 24 | } 25 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/enums/BaseEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | 4 | import com.whoiszxl.utils.MapHelper; 5 | 6 | import java.util.Arrays; 7 | import java.util.Map; 8 | 9 | /** 10 | * 枚举类型基类 11 | * 12 | */ 13 | public interface BaseEnum { 14 | /** 15 | * 将制定的枚举集合转成 map 16 | * key -> name 17 | * value -> desc 18 | * 19 | * @param list 20 | * @return 21 | */ 22 | static Map getMap(BaseEnum[] list) { 23 | return MapHelper.uniqueIndex(Arrays.asList(list), BaseEnum::getCode, BaseEnum::getDesc); 24 | } 25 | 26 | 27 | /** 28 | * 编码重写 29 | * 30 | * @return 31 | */ 32 | default String getCode() { 33 | return toString(); 34 | } 35 | 36 | /** 37 | * 描述 38 | * 39 | * @return 40 | */ 41 | String getDesc(); 42 | } 43 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/enums/StatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 状态类型 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum StatusEnum { 14 | 15 | CLOSE(0, "关闭"), 16 | OPEN(1, "开启"), 17 | ; 18 | private Integer code; 19 | private String desc; 20 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/exception/custom/AssertException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.custom; 2 | 3 | /** 4 | * 断言异常 5 | * 6 | * @author whoiszxl 7 | * @date 2021/3/17 8 | */ 9 | public class AssertException extends RuntimeException{ 10 | 11 | private static final long serialVersionUID = 1L; 12 | 13 | public AssertException() { 14 | super(); 15 | } 16 | public AssertException(String message) { 17 | super(message); 18 | } 19 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/exception/custom/DataNullException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.custom; 2 | 3 | 4 | import com.whoiszxl.bean.ResponseResult; 5 | 6 | /** 7 | * 校验异常 8 | * 9 | * @author whoiszxl 10 | * @date 2021/3/17 11 | */ 12 | public class DataNullException extends RuntimeException { 13 | 14 | //错误代码 15 | private final ResponseResult result; 16 | 17 | public DataNullException(ResponseResult result){ 18 | this.result = result; 19 | } 20 | public ResponseResult getResult(){ 21 | return result; 22 | } 23 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/exception/custom/DatabaseUpdateException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.custom; 2 | 3 | 4 | import com.whoiszxl.bean.ResponseResult; 5 | 6 | /** 7 | * 数据库更新错误 8 | * 9 | * @author whoiszxl 10 | * @date 2021/3/17 11 | */ 12 | public class DatabaseUpdateException extends RuntimeException { 13 | 14 | //错误代码 15 | private final ResponseResult result; 16 | 17 | public DatabaseUpdateException(ResponseResult result){ 18 | this.result = result; 19 | } 20 | public ResponseResult getResult(){ 21 | return result; 22 | } 23 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/exception/custom/JwtAuthException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.custom; 2 | 3 | /** 4 | * 自定义jwt鉴权异常 5 | * 6 | * @author whoiszxl 7 | * @date 2021/3/17 8 | */ 9 | public class JwtAuthException extends RuntimeException { 10 | 11 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/exception/custom/ValidateException.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.exception.custom; 2 | 3 | import com.whoiszxl.bean.ResponseResult; 4 | 5 | /** 6 | * 校验异常 7 | * 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | public class ValidateException extends RuntimeException { 12 | 13 | //错误代码 14 | private final ResponseResult result; 15 | 16 | public ValidateException(ResponseResult result){ 17 | this.result = result; 18 | } 19 | public ResponseResult getResult(){ 20 | return result; 21 | } 22 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/permission/SaTokenConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.permission; 2 | 3 | import cn.dev33.satoken.interceptor.SaAnnotationInterceptor; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 7 | 8 | /** 9 | * 打开注解鉴权功能配置 10 | * 11 | * @author whoiszxl 12 | * @date 2021/7/20 13 | */ 14 | @Configuration 15 | public class SaTokenConfiguration implements WebMvcConfigurer { 16 | 17 | // 注册Sa-Token的注解拦截器,打开注解式鉴权功能 18 | @Override 19 | public void addInterceptors(InterceptorRegistry registry) { 20 | // 注册注解拦截器,并排除不需要注解鉴权的接口地址 (与登录拦截器无关) 21 | registry.addInterceptor(new SaAnnotationInterceptor()).addPathPatterns("/admin/**"); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/utils/DateProvider.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.utils; 2 | 3 | import java.time.LocalDateTime; 4 | import java.util.Date; 5 | 6 | /** 7 | * 日期服务 8 | */ 9 | public interface DateProvider { 10 | 11 | /** 12 | * 获取当前时间 13 | * @return 14 | */ 15 | LocalDateTime now(); 16 | 17 | Date dateNow(); 18 | 19 | 20 | /** 21 | * Date 转 LocalDateTime 22 | * @param date 23 | * @return 24 | */ 25 | LocalDateTime dateToLocalDateTime(Date date); 26 | 27 | 28 | /** 29 | * 时间戳 转 LocalDateTime 30 | * @param timestamp 31 | * @return 32 | */ 33 | LocalDateTime longToLocalDateTime(Long timestamp); 34 | 35 | } 36 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-core/src/main/java/com/whoiszxl/utils/JsonUtil.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.utils; 2 | 3 | import com.google.gson.Gson; 4 | import com.google.gson.JsonSyntaxException; 5 | 6 | import java.lang.reflect.Type; 7 | 8 | /** 9 | * json解析工具 10 | */ 11 | public class JsonUtil { 12 | 13 | static Gson gson = new Gson(); 14 | 15 | public static T fromJson(String json, Class classOfT) { 16 | return gson.fromJson(json, classOfT); 17 | } 18 | 19 | public static T fromJsonToList(String json, Type typeOfT) throws JsonSyntaxException { 20 | return gson.fromJson(json, typeOfT); 21 | } 22 | 23 | public static String toJson(Object src) { 24 | return gson.toJson(src); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-dozer/src/main/java/com/whoiszxl/dozer/DozerAutoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.dozer; 2 | 3 | import com.github.dozermapper.core.Mapper; 4 | import org.springframework.context.annotation.Bean; 5 | 6 | /** 7 | * dozer自動配置類 8 | * 9 | * @author whoiszxl 10 | * @date 2021/11/30 11 | */ 12 | public class DozerAutoConfiguration { 13 | 14 | @Bean 15 | public DozerUtils dozerUtils(Mapper mapper) { 16 | DozerUtils dozerUtils = new DozerUtils(mapper); 17 | return dozerUtils; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-dozer/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.whoiszxl.dozer.DozerAutoConfiguration -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-dozer/src/main/resources/dozer/biz.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-dozer/src/main/resources/dozer/global.dozer.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 14 | 15 | yyyy-MM-dd HH:mm:ss 16 | 17 | 18 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-logger/src/main/java/com/whoiszxl/logger/annotation/SSLog.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.logger.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | * 日志记录注解 7 | * 8 | * @author whoiszxl 9 | * @date 2021/12/1 10 | */ 11 | @Target(ElementType.METHOD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Documented 14 | public @interface SSLog { 15 | 16 | /** 17 | * 描述 18 | * @return 19 | */ 20 | String value(); 21 | 22 | /** 23 | * 记录请求参数,默认记录 24 | * @return 25 | */ 26 | boolean recordRequestParams() default true; 27 | 28 | /** 29 | * 记录返回参数,默认记录 30 | * @return 31 | */ 32 | boolean recordResponseParams() default true; 33 | } 34 | 35 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-logger/src/main/java/com/whoiszxl/logger/event/SysLogEvent.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.logger.event; 2 | 3 | import com.whoiszxl.logger.entity.OptLogDTO; 4 | import org.springframework.context.ApplicationEvent; 5 | 6 | /** 7 | * 系统日志事件 8 | * 9 | */ 10 | public class SysLogEvent extends ApplicationEvent { 11 | 12 | public SysLogEvent(OptLogDTO source) { 13 | super(source); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-logger/src/main/java/com/whoiszxl/logger/event/SysLogListener.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.logger.event; 2 | 3 | import com.whoiszxl.logger.entity.OptLogDTO; 4 | import lombok.AllArgsConstructor; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.springframework.context.event.EventListener; 7 | import org.springframework.core.annotation.Order; 8 | import org.springframework.scheduling.annotation.Async; 9 | 10 | import java.util.function.Consumer; 11 | 12 | /** 13 | * 异步监听日志事件 14 | */ 15 | @Slf4j 16 | @AllArgsConstructor 17 | public class SysLogListener { 18 | 19 | private Consumer consumer; 20 | 21 | @Async 22 | @Order 23 | @EventListener(SysLogEvent.class) 24 | public void saveSysLog(SysLogEvent event) { 25 | OptLogDTO optLog = (OptLogDTO) event.getSource(); 26 | consumer.accept(optLog); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-logger/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.whoiszxl.logger.configuration.LogAutoConfiguration 3 | org.springframework.context.ApplicationContextInitializer=\ 4 | com.whoiszxl.logger.init.ApplicationLoggerInitializer 5 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-logger/src/main/resources/ip2region/ip2region.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/whoiszxl/seesee_bak/e4673d4b4584f6c3d17a36144e24bff8058b6d98/seesee-video/ss-tools/ss-tools-logger/src/main/resources/ip2region/ip2region.db -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-swagger/src/main/java/com/whoiszxl/swagger/bean/Basic.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.swagger.bean; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 用户认证类 9 | * 10 | * @author whoiszxl 11 | * @date 2021/11/30 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Basic { 17 | 18 | private Boolean enable = false; 19 | private String username = "seesee"; 20 | private String password = "seesee"; 21 | } 22 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-swagger/src/main/java/com/whoiszxl/swagger/bean/Contact.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.swagger.bean; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 联系人信息 7 | * 8 | * @author whoiszxl 9 | * @date 2021/11/30 10 | */ 11 | @Data 12 | public class Contact { 13 | /** 14 | * 联系人 15 | **/ 16 | private String name = "whoiszxl"; 17 | /** 18 | * 联系人url 19 | **/ 20 | private String url = "http://whoiszxl.com"; 21 | /** 22 | * 联系人email 23 | **/ 24 | private String email = "whoiszxl@gmail.com"; 25 | } -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-swagger/src/main/java/com/whoiszxl/swagger/bean/Markdown.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.swagger.bean; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * 离线文档配置 9 | * 10 | * @author whoiszxl 11 | * @date 2021/11/30 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Markdown { 17 | private Boolean enable = false; 18 | private String basePath = "classpath:markdown/*"; 19 | } 20 | -------------------------------------------------------------------------------- /seesee-video/ss-tools/ss-tools-swagger/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | com.whoiszxl.swagger.SwaggerAutoConfiguration -------------------------------------------------------------------------------- /seesee-video/ss-video/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | seesee-video 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-video 13 | pom 14 | 15 | ss-video-api 16 | ss-video-web 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-api/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | ss-video 7 | com.whoiszxl 8 | 1.0.0 9 | 10 | 4.0.0 11 | 12 | ss-video-api 13 | 14 | 15 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/VideoApplication.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * 视频服务启动类 8 | * 9 | * @author whoiszxl 10 | * @date 2021/11/30 11 | */ 12 | @SpringBootApplication 13 | public class VideoApplication { 14 | 15 | public static void main(String[] args) { 16 | SpringApplication.run(VideoApplication.class, args); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/controller/VideoCommentController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 视频评论表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/video-comment") 18 | public class VideoCommentController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/controller/VideoWatchHistoryController.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.controller; 2 | 3 | 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | 6 | import org.springframework.web.bind.annotation.RestController; 7 | 8 | /** 9 | *

10 | * 浏览历史表 前端控制器 11 | *

12 | * 13 | * @author whoiszxl 14 | * @since 2021-12-08 15 | */ 16 | @RestController 17 | @RequestMapping("/video-watch-history") 18 | public class VideoWatchHistoryController { 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/entity/query/BgMusicQuery.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity.query; 2 | 3 | import com.whoiszxl.bean.PageQuery; 4 | import io.swagger.annotations.ApiModel; 5 | import io.swagger.annotations.ApiModelProperty; 6 | import lombok.Data; 7 | 8 | @Data 9 | @ApiModel("背景音乐查询参数") 10 | public class BgMusicQuery extends PageQuery { 11 | 12 | @ApiModelProperty("搜索关键词") 13 | private String searchKey; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/entity/vo/LikeVO.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | *

11 | * 视频计数表 12 | *

13 | * 14 | * @author whoiszxl 15 | * @since 2021-12-08 16 | */ 17 | @Data 18 | @ApiModel(value = "点赞参数", description = "点赞参数") 19 | public class LikeVO implements Serializable { 20 | 21 | @ApiModelProperty("点赞id,视频id or 评论id") 22 | private Long id; 23 | 24 | @ApiModelProperty("点赞id: 1:视频点赞 2:评论点赞") 25 | private Integer likeType; 26 | 27 | @ApiModelProperty("状态:1: 增加 2: 减少") 28 | private Integer status; 29 | 30 | @ApiModelProperty("用户ID") 31 | private Long memberId; 32 | } 33 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/entity/vo/VideoWatchHistoryVO.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.entity.vo; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.time.LocalDateTime; 9 | 10 | /** 11 | *

12 | * 浏览历史表 13 | *

14 | * 15 | * @author whoiszxl 16 | * @since 2021-12-08 17 | */ 18 | @Data 19 | @ApiModel(value = "VideoWatchHistory对象", description = "浏览历史表") 20 | public class VideoWatchHistoryVO implements Serializable { 21 | 22 | @ApiModelProperty("主键ID") 23 | private Long id; 24 | 25 | @ApiModelProperty("会员ID") 26 | private Long memberId; 27 | 28 | @ApiModelProperty("视频ID") 29 | private Long videoId; 30 | 31 | } 32 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/enums/LikeTypeEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 点赞器枚举 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum LikeTypeEnum { 14 | 15 | VIDEO(1, "video_like"), 16 | COMMENT(2, "comment_like"), 17 | ; 18 | private Integer code; 19 | private String typeName; 20 | 21 | public static String getTypeName(Integer type) { 22 | for (LikeTypeEnum likeTypeEnum : LikeTypeEnum.values()) { 23 | if (type.equals(likeTypeEnum.getCode())) { 24 | return likeTypeEnum.getTypeName(); 25 | } 26 | } 27 | return null; 28 | } 29 | } -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/enums/VideoCounterStatusEnum.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.enums; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 计数器新增减少状态枚举 8 | * @author whoiszxl 9 | * @date 2021/3/17 10 | */ 11 | @Getter 12 | @AllArgsConstructor 13 | public enum VideoCounterStatusEnum { 14 | 15 | INCR(1, "增加"), 16 | DECR(2, "减少"), 17 | ; 18 | private Integer code; 19 | private String desc; 20 | } -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/mapper/BgmusicMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.Bgmusic; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 背景音乐表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface BgmusicMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/mapper/VideoCommentMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.VideoComment; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 视频评论表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoCommentMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/mapper/VideoCounterMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.VideoCounter; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 视频计数表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoCounterMapper extends BaseMapper { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /seesee-video/ss-video/ss-video-web/src/main/java/com/whoiszxl/mapper/VideoMapper.java: -------------------------------------------------------------------------------- 1 | package com.whoiszxl.mapper; 2 | 3 | import com.whoiszxl.entity.Video; 4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 5 | 6 | /** 7 | *

8 | * 视频表 Mapper 接口 9 | *

10 | * 11 | * @author whoiszxl 12 | * @since 2021-12-08 13 | */ 14 | public interface VideoMapper extends BaseMapper