├── LICENSE
├── README.md
├── blog-springboot
├── .gitignore
├── blog-api
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── cn
│ │ └── apecode
│ │ ├── WebApplication.java
│ │ ├── aspect
│ │ ├── ApiOptLogAspect.java
│ │ └── OptLogAspect.java
│ │ └── controller
│ │ ├── ArticleController.java
│ │ ├── ArticleTagController.java
│ │ ├── CategoryController.java
│ │ ├── CommentController.java
│ │ ├── DailyVisitController.java
│ │ ├── FriendLinkController.java
│ │ ├── LoginLogController.java
│ │ ├── LoginQqController.java
│ │ ├── MailLogController.java
│ │ ├── MenuController.java
│ │ ├── MessageController.java
│ │ ├── NoticeController.java
│ │ ├── OperationLogController.java
│ │ ├── PhotoAlbumController.java
│ │ ├── PictureController.java
│ │ ├── ResourceController.java
│ │ ├── RoleController.java
│ │ ├── RoleMenuController.java
│ │ ├── RoleResourceController.java
│ │ ├── TagController.java
│ │ ├── TalkController.java
│ │ ├── TalkPictureVideoController.java
│ │ ├── UserAuthController.java
│ │ ├── UserInfoController.java
│ │ ├── UserRoleController.java
│ │ └── WebsiteController.java
├── blog-auth
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── cn
│ │ └── apecode
│ │ └── auth
│ │ ├── filter
│ │ └── JwtAuthenticationTokenFilter.java
│ │ └── handler
│ │ ├── AccessDecisionManagerImpl.java
│ │ ├── AccessDeniedHandlerImpl.java
│ │ ├── AuthenticationEntryPointImpl.java
│ │ ├── AuthenticationFailHandlerImpl.java
│ │ ├── AuthenticationSuccessHandlerImpl.java
│ │ ├── LogoutSuccessHandlerImpl.java
│ │ └── UserAuthenticationProviderImpl.java
├── blog-common
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── cn
│ │ │ └── apecode
│ │ │ └── common
│ │ │ ├── annotation
│ │ │ ├── AccessLimit.java
│ │ │ └── OptLog.java
│ │ │ ├── constant
│ │ │ ├── CommonConst.java
│ │ │ ├── OptTypeConst.java
│ │ │ ├── RabbitMQPrefixConst.java
│ │ │ ├── RedisPrefixConst.java
│ │ │ └── SocialLoginConst.java
│ │ │ ├── dto
│ │ │ ├── IpSourceDto.java
│ │ │ └── UserDetailsDto.java
│ │ │ ├── enums
│ │ │ ├── ArticleStatusEnum.java
│ │ │ ├── ArticleTypeEnum.java
│ │ │ ├── CommentTypeEnum.java
│ │ │ ├── EmailTypeEnum.java
│ │ │ ├── FilePathEnum.java
│ │ │ ├── LoginTypeEnum.java
│ │ │ ├── RoleEnum.java
│ │ │ ├── StatusCodeEnum.java
│ │ │ ├── UploadModeEnum.java
│ │ │ └── ZoneEnum.java
│ │ │ ├── exception
│ │ │ ├── BizException.java
│ │ │ └── GlobalException.java
│ │ │ └── utils
│ │ │ ├── BeanCopyUtils.java
│ │ │ ├── CommonUtils.java
│ │ │ ├── FileUtils.java
│ │ │ ├── HTMLUtils.java
│ │ │ ├── IpUtils.java
│ │ │ ├── JwtUtils.java
│ │ │ ├── RandomUtils.java
│ │ │ ├── ResponseCode.java
│ │ │ ├── SecurityUtils.java
│ │ │ └── UserUtils.java
│ │ └── resources
│ │ ├── dict.txt
│ │ └── sensitive_word_allow.txt
├── blog-config
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── cn
│ │ │ └── apecode
│ │ │ ├── config
│ │ │ ├── ConnectorConfig.java
│ │ │ ├── Knife4jConfig.java
│ │ │ ├── MyBatisPlusConfig.java
│ │ │ ├── RabbitMQConfig.java
│ │ │ ├── RedisConfig.java
│ │ │ ├── SecurityConfig.java
│ │ │ └── WebMvcConfig.java
│ │ │ └── handler
│ │ │ ├── MetaObjectHandlerImpl.java
│ │ │ ├── PageableHandlerInterceptor.java
│ │ │ └── RequestAccessLimit.java
│ │ └── resources
│ │ ├── META-INF
│ │ └── services
│ │ │ └── com.anji.captcha.service.CaptchaCacheService
│ │ ├── application-dev.yml
│ │ ├── application-pro.yml
│ │ ├── application.yml
│ │ ├── images
│ │ └── jigsaw
│ │ │ ├── original
│ │ │ ├── bg1.png
│ │ │ ├── bg2.png
│ │ │ ├── bg3.png
│ │ │ ├── bg4.png
│ │ │ ├── bg5.png
│ │ │ ├── bg6.png
│ │ │ ├── bg7.png
│ │ │ ├── bg8.png
│ │ │ └── bg9.png
│ │ │ └── slidingBlock
│ │ │ ├── 11
│ │ │ ├── 10.png
│ │ │ ├── 11.png
│ │ │ ├── 12.png
│ │ │ ├── 13.png
│ │ │ ├── 14.png
│ │ │ ├── 15.png
│ │ │ ├── 16.png
│ │ │ ├── 17.png
│ │ │ ├── 18.png
│ │ │ ├── 19.png
│ │ │ ├── 8.png
│ │ │ ├── 9.png
│ │ │ ├── xin替换.zip
│ │ │ └── xin替换
│ │ │ │ ├── 1.png
│ │ │ │ ├── 2.png
│ │ │ │ ├── 3.png
│ │ │ │ ├── 4.png
│ │ │ │ ├── 5.png
│ │ │ │ ├── 6.png
│ │ │ │ └── 7.png
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ ├── 3.png
│ │ │ └── 4.png
│ │ ├── log4j2.component.properties
│ │ └── log4j2.yml
├── blog-crypto
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── cn
│ │ └── apecode
│ │ └── crypto
│ │ ├── annotation
│ │ ├── Decrypt.java
│ │ └── Encrypt.java
│ │ ├── config
│ │ └── CryptoConfig.java
│ │ ├── handler
│ │ ├── AESKey.java
│ │ ├── DecryptHttpInputMessage.java
│ │ ├── DecryptRequest.java
│ │ ├── EncryptResponse.java
│ │ ├── RequestDataExtend.java
│ │ └── RespDataExtend.java
│ │ └── utils
│ │ ├── AESUtil.java
│ │ └── RSAUtil.java
├── blog-mail
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── cn
│ │ └── apecode
│ │ └── mail
│ │ └── consumer
│ │ ├── ConsumerCommon.java
│ │ └── EmailConsumer.java
├── blog-pojo
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── cn
│ │ └── apecode
│ │ ├── dto
│ │ ├── ArchiveDto.java
│ │ ├── ArchiveMonthDto.java
│ │ ├── ArticleBackDto.java
│ │ ├── ArticleBackPreviewDto.java
│ │ ├── ArticleDto.java
│ │ ├── ArticleHomeDto.java
│ │ ├── ArticleLikeRankDto.java
│ │ ├── ArticlePaginationDto.java
│ │ ├── ArticleRankDto.java
│ │ ├── ArticleRecommendDto.java
│ │ ├── ArticleSearchDto.java
│ │ ├── ArticleStatisticsDto.java
│ │ ├── BlogBackInfoDto.java
│ │ ├── BlogHomeInfoDto.java
│ │ ├── CategoryArticleCountDto.java
│ │ ├── CategoryBackDto.java
│ │ ├── CategoryFrontDto.java
│ │ ├── CategoryOptionDto.java
│ │ ├── CategorySearchDto.java
│ │ ├── CommentBackDto.java
│ │ ├── CommentFrontDto.java
│ │ ├── ConditionSearchArticleDto.java
│ │ ├── DiskInfoDto.java
│ │ ├── EmailDto.java
│ │ ├── FriendLinkBackDto.java
│ │ ├── FriendLinkFrontDto.java
│ │ ├── LabelOptionDto.java
│ │ ├── LoginLogBackDto.java
│ │ ├── MailLogBackDto.java
│ │ ├── MemoryInfoDto.java
│ │ ├── MessageBackDto.java
│ │ ├── MessageFrontDto.java
│ │ ├── NewCommentDto.java
│ │ ├── NoticeBackDto.java
│ │ ├── NoticeFrontDto.java
│ │ ├── OperationLogBackDto.java
│ │ ├── PhotoAlbumBackDto.java
│ │ ├── PhotoAlbumFrontDto.java
│ │ ├── PhotoAlbumInfoDto.java
│ │ ├── PhotoAlbumPictureCountDto.java
│ │ ├── PictureBackDto.java
│ │ ├── PictureFrontDto.java
│ │ ├── QQTokenDto.java
│ │ ├── QQUserInfoDto.java
│ │ ├── ReplyCountDto.java
│ │ ├── ReplyDto.java
│ │ ├── ResourceDto.java
│ │ ├── RoleDto.java
│ │ ├── RoleResourceDto.java
│ │ ├── SearchDto.java
│ │ ├── SimpleUserInfoDto.java
│ │ ├── SocialTokenDto.java
│ │ ├── SocialUserInfoDto.java
│ │ ├── TagBackDto.java
│ │ ├── TagDto.java
│ │ ├── TagFrontDto.java
│ │ ├── TagSearchDto.java
│ │ ├── TagWithArticleCountDto.java
│ │ ├── TalkBackDto.java
│ │ ├── TalkBackOnlyDto.java
│ │ ├── TalkFrontDto.java
│ │ ├── TalkPictureVideoDto.java
│ │ ├── UploadFileInfoDto.java
│ │ ├── UserCacheDto.java
│ │ ├── UserInfoBackDto.java
│ │ ├── UserInfoDto.java
│ │ ├── UserInfoFrontDto.java
│ │ ├── UserMenuDto.java
│ │ ├── UserRoleDto.java
│ │ ├── UserVisitAreaStatisticsDto.java
│ │ └── VisitStatisticsDto.java
│ │ ├── entity
│ │ ├── Article.java
│ │ ├── ArticleTag.java
│ │ ├── Category.java
│ │ ├── Comment.java
│ │ ├── DailyVisit.java
│ │ ├── FriendLink.java
│ │ ├── LoginLog.java
│ │ ├── LoginQq.java
│ │ ├── MailLog.java
│ │ ├── Menu.java
│ │ ├── Message.java
│ │ ├── Notice.java
│ │ ├── OperationLog.java
│ │ ├── PhotoAlbum.java
│ │ ├── Picture.java
│ │ ├── Resource.java
│ │ ├── Role.java
│ │ ├── RoleMenu.java
│ │ ├── RoleResource.java
│ │ ├── Tag.java
│ │ ├── Talk.java
│ │ ├── TalkPictureVideo.java
│ │ ├── UserAuth.java
│ │ ├── UserInfo.java
│ │ ├── UserRole.java
│ │ └── Website.java
│ │ └── vo
│ │ ├── ArticleVo.java
│ │ ├── CategoryVo.java
│ │ ├── CommentVo.java
│ │ ├── ConditionVo.java
│ │ ├── DeleteVo.java
│ │ ├── FindPasswordVo.java
│ │ ├── FriendLinkUserVo.java
│ │ ├── FriendLinkVo.java
│ │ ├── LoginParamVo.java
│ │ ├── MenuVo.java
│ │ ├── MessageVo.java
│ │ ├── NoticeVo.java
│ │ ├── PageResult.java
│ │ ├── PageResultWithObject.java
│ │ ├── PasswordVo.java
│ │ ├── PhotoAlbumVo.java
│ │ ├── PictureInfoVo.java
│ │ ├── PictureVo.java
│ │ ├── QQLoginVo.java
│ │ ├── RegisterVo.java
│ │ ├── ResourceVo.java
│ │ ├── ReviewVo.java
│ │ ├── RoleVo.java
│ │ ├── SaveOrUnbindEmailVo.java
│ │ ├── TagVo.java
│ │ ├── TalkVo.java
│ │ ├── TopVo.java
│ │ ├── UserEnableVo.java
│ │ ├── UserInfoVo.java
│ │ ├── UserRoleVo.java
│ │ └── WebsiteConfigVo.java
├── blog-service
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ ├── java
│ │ └── cn
│ │ │ └── apecode
│ │ │ ├── handler
│ │ │ └── FilterInvocationSecurityMetadataSourceImpl.java
│ │ │ ├── mapper
│ │ │ ├── ArticleMapper.java
│ │ │ ├── ArticleTagMapper.java
│ │ │ ├── CategoryMapper.java
│ │ │ ├── CommentMapper.java
│ │ │ ├── DailyVisitMapper.java
│ │ │ ├── FriendLinkMapper.java
│ │ │ ├── LoginLogMapper.java
│ │ │ ├── LoginQqMapper.java
│ │ │ ├── MailLogMapper.java
│ │ │ ├── MenuMapper.java
│ │ │ ├── MessageMapper.java
│ │ │ ├── NoticeMapper.java
│ │ │ ├── OperationLogMapper.java
│ │ │ ├── PhotoAlbumMapper.java
│ │ │ ├── PictureMapper.java
│ │ │ ├── ResourceMapper.java
│ │ │ ├── RoleMapper.java
│ │ │ ├── RoleMenuMapper.java
│ │ │ ├── RoleResourceMapper.java
│ │ │ ├── TagMapper.java
│ │ │ ├── TalkMapper.java
│ │ │ ├── TalkPictureVideoMapper.java
│ │ │ ├── UserAuthMapper.java
│ │ │ ├── UserInfoMapper.java
│ │ │ ├── UserRoleMapper.java
│ │ │ └── WebsiteMapper.java
│ │ │ ├── schedule
│ │ │ └── Schedule.java
│ │ │ ├── service
│ │ │ ├── ArticleService.java
│ │ │ ├── ArticleTagService.java
│ │ │ ├── CategoryService.java
│ │ │ ├── CommentService.java
│ │ │ ├── DailyVisitService.java
│ │ │ ├── FriendLinkService.java
│ │ │ ├── LoginLogService.java
│ │ │ ├── LoginQqService.java
│ │ │ ├── MailLogService.java
│ │ │ ├── MenuService.java
│ │ │ ├── MessageService.java
│ │ │ ├── NoticeService.java
│ │ │ ├── OperationLogService.java
│ │ │ ├── PhotoAlbumService.java
│ │ │ ├── PictureService.java
│ │ │ ├── RedisService.java
│ │ │ ├── ResourceService.java
│ │ │ ├── RoleMenuService.java
│ │ │ ├── RoleResourceService.java
│ │ │ ├── RoleService.java
│ │ │ ├── TagService.java
│ │ │ ├── TalkPictureVideoService.java
│ │ │ ├── TalkService.java
│ │ │ ├── UserAuthService.java
│ │ │ ├── UserInfoService.java
│ │ │ ├── UserRoleService.java
│ │ │ ├── WebsiteService.java
│ │ │ └── impl
│ │ │ │ ├── ArticleServiceImpl.java
│ │ │ │ ├── ArticleTagServiceImpl.java
│ │ │ │ ├── CaptchaCacheServiceRedisImpl.java
│ │ │ │ ├── CategoryServiceImpl.java
│ │ │ │ ├── CommentServiceImpl.java
│ │ │ │ ├── DailyVisitServiceImpl.java
│ │ │ │ ├── FriendLinkServiceImpl.java
│ │ │ │ ├── LoginLogServiceImpl.java
│ │ │ │ ├── LoginQqServiceImpl.java
│ │ │ │ ├── MailLogServiceImpl.java
│ │ │ │ ├── MenuServiceImpl.java
│ │ │ │ ├── MessageServiceImpl.java
│ │ │ │ ├── NoticeServiceImpl.java
│ │ │ │ ├── OperationLogServiceImpl.java
│ │ │ │ ├── PhotoAlbumServiceImpl.java
│ │ │ │ ├── PictureServiceImpl.java
│ │ │ │ ├── RedisServiceImpl.java
│ │ │ │ ├── ResourceServiceImpl.java
│ │ │ │ ├── RoleMenuServiceImpl.java
│ │ │ │ ├── RoleResourceServiceImpl.java
│ │ │ │ ├── RoleServiceImpl.java
│ │ │ │ ├── TagServiceImpl.java
│ │ │ │ ├── TalkPictureVideoServiceImpl.java
│ │ │ │ ├── TalkServiceImpl.java
│ │ │ │ ├── UserAuthServiceImpl.java
│ │ │ │ ├── UserDetailsServiceImpl.java
│ │ │ │ ├── UserInfoServiceImpl.java
│ │ │ │ ├── UserRoleServiceImpl.java
│ │ │ │ └── WebsiteServiceImpl.java
│ │ │ ├── strategy
│ │ │ ├── SocialLoginStrategy.java
│ │ │ ├── UploadFileStrategy.java
│ │ │ ├── context
│ │ │ │ ├── SocialLoginStrategyContext.java
│ │ │ │ └── UploadFileStrategyContext.java
│ │ │ └── impl
│ │ │ │ ├── AbstractSocialLoginStrategyImpl.java
│ │ │ │ ├── AbstractUploadFileStrategyImpl.java
│ │ │ │ ├── LocalUploadFileStrategyImpl.java
│ │ │ │ ├── OssUploadFileStrategyImpl.java
│ │ │ │ └── QQLoginStrategyImpl.java
│ │ │ └── utils
│ │ │ ├── AnjiCaptchaUtils.java
│ │ │ ├── OSSConfigYml.java
│ │ │ ├── PageUtils.java
│ │ │ ├── QQConfigYml.java
│ │ │ ├── QQTokenUtils.java
│ │ │ └── SystemInfoUtils.java
│ │ └── resources
│ │ └── mapper
│ │ ├── ArticleMapper.xml
│ │ ├── ArticleTagMapper.xml
│ │ ├── CategoryMapper.xml
│ │ ├── CommentMapper.xml
│ │ ├── DailyVisitMapper.xml
│ │ ├── FriendLinkMapper.xml
│ │ ├── LoginLogMapper.xml
│ │ ├── LoginQqMapper.xml
│ │ ├── MailLogMapper.xml
│ │ ├── MenuMapper.xml
│ │ ├── MessageMapper.xml
│ │ ├── NoticeMapper.xml
│ │ ├── OperationLogMapper.xml
│ │ ├── PhotoAlbumMapper.xml
│ │ ├── PictureMapper.xml
│ │ ├── ResourceMapper.xml
│ │ ├── RoleMapper.xml
│ │ ├── RoleMenuMapper.xml
│ │ ├── RoleResourceMapper.xml
│ │ ├── TagMapper.xml
│ │ ├── TalkMapper.xml
│ │ ├── TalkPictureVideoMapper.xml
│ │ ├── UserAuthMapper.xml
│ │ ├── UserInfoMapper.xml
│ │ ├── UserRoleMapper.xml
│ │ └── WebsiteMapper.xml
├── blog-websocket
│ ├── pom.xml
│ └── src
│ │ └── main
│ │ └── java
│ │ └── cn
│ │ └── apecode
│ │ └── websocket
│ │ ├── config
│ │ ├── WebSocketConfig.java
│ │ ├── WebSocketHandshakeHandler.java
│ │ └── WebSocketHandshakeInterceptor.java
│ │ ├── controller
│ │ ├── ChatMessageController.java
│ │ └── SystemInfoController.java
│ │ ├── enums
│ │ └── ChatMessageTypeEnum.java
│ │ ├── handler
│ │ ├── ConnectListener.java
│ │ └── DisconnectListener.java
│ │ ├── pojo
│ │ ├── ChatMessage.java
│ │ ├── OnlineUser.java
│ │ └── VisitorUser.java
│ │ ├── service
│ │ ├── ChatMessageService.java
│ │ ├── SystemInfoService.java
│ │ └── impl
│ │ │ ├── ChatMessageServiceImpl.java
│ │ │ └── SystemInfoServiceImpl.java
│ │ └── utils
│ │ └── VisitorUtils.java
└── pom.xml
├── blog.sql
├── blog_admin
├── .env.development
├── .env.production
├── .gitignore
├── index.html
├── package-lock.json
├── package.json
├── public
│ └── sleaves.svg
├── src
│ ├── App.vue
│ ├── api
│ │ ├── config.ts
│ │ ├── enum
│ │ │ └── statusCode.ts
│ │ ├── model
│ │ │ ├── AlbumModel.ts
│ │ │ ├── ArticleModel.ts
│ │ │ ├── CategoryModel.ts
│ │ │ ├── CommentModel.ts
│ │ │ ├── FriendLinkModel.ts
│ │ │ ├── LogsModel.ts
│ │ │ ├── MenuModel.ts
│ │ │ ├── MessageModel.ts
│ │ │ ├── NoticeModel.ts
│ │ │ ├── PictureModel.ts
│ │ │ ├── ResourceModel.ts
│ │ │ ├── ResultObject.ts
│ │ │ ├── RoleModel.ts
│ │ │ ├── TagModel.ts
│ │ │ ├── TalkModel.ts
│ │ │ ├── UserInfoModel.ts
│ │ │ ├── UserModel.ts
│ │ │ └── WebsiteModel.ts
│ │ ├── params
│ │ │ ├── ArticleParams.ts
│ │ │ ├── CategoryParams.ts
│ │ │ ├── ConditionParams.ts
│ │ │ ├── FriendLinkParams.ts
│ │ │ ├── MenuParams.ts
│ │ │ ├── NoticeParams.ts
│ │ │ ├── PhotoAlbumParams.ts
│ │ │ ├── PictureParams.ts
│ │ │ ├── ResourceParams.ts
│ │ │ ├── ReviewParams.ts
│ │ │ ├── TagParams.ts
│ │ │ ├── TalkParams.ts
│ │ │ ├── UserParams.ts
│ │ │ └── roleParams.ts
│ │ ├── requests
│ │ │ ├── About.ts
│ │ │ ├── Album.ts
│ │ │ ├── Article.ts
│ │ │ ├── Category.ts
│ │ │ ├── Comment.ts
│ │ │ ├── FriendLink.ts
│ │ │ ├── Logs.ts
│ │ │ ├── Menu.ts
│ │ │ ├── Message.ts
│ │ │ ├── Notice.ts
│ │ │ ├── Picture.ts
│ │ │ ├── Resource.ts
│ │ │ ├── Role.ts
│ │ │ ├── Tag.ts
│ │ │ ├── Talk.ts
│ │ │ ├── UserAuth.ts
│ │ │ ├── UserInfo.ts
│ │ │ └── Website.ts
│ │ └── service.ts
│ ├── assets
│ │ ├── fonts
│ │ │ └── ZhuZiAWan.woff2
│ │ ├── imgs
│ │ │ └── local.png
│ │ └── json
│ │ │ └── china.json
│ ├── components
│ │ ├── DescSetting.vue
│ │ ├── EmojiExtension
│ │ │ ├── index.vue
│ │ │ └── staticConfig.ts
│ │ ├── GlobalDraw.vue
│ │ ├── GlobalProvider.vue
│ │ ├── TagCloud.vue
│ │ ├── comment
│ │ │ └── CommentComp.vue
│ │ ├── common
│ │ │ ├── constant.ts
│ │ │ └── dataTable
│ │ │ │ ├── DataTableSetting.vue
│ │ │ │ └── index.ts
│ │ ├── layouts
│ │ │ ├── AppMain.vue
│ │ │ ├── BaseHeader.vue
│ │ │ ├── BaseLogo.vue
│ │ │ ├── BaseSider.vue
│ │ │ ├── Breadcrumb.vue
│ │ │ ├── Menu.vue
│ │ │ ├── TriggerCollapse.vue
│ │ │ └── tagsView
│ │ │ │ ├── TagsView.vue
│ │ │ │ ├── useDropdown.ts
│ │ │ │ └── useTagsView.ts
│ │ └── verifition
│ │ │ ├── Verify.vue
│ │ │ ├── Verify
│ │ │ ├── VerifyPoints.vue
│ │ │ └── VerifySlide.vue
│ │ │ ├── api
│ │ │ └── index.js
│ │ │ └── utils
│ │ │ ├── ase.js
│ │ │ ├── axios.js
│ │ │ └── util.js
│ ├── constant.ts
│ ├── echarts
│ │ ├── echart.d.ts
│ │ └── index.ts
│ ├── env.d.ts
│ ├── layout
│ │ └── PageLayout.vue
│ ├── main.ts
│ ├── router
│ │ ├── index.ts
│ │ └── routes.ts
│ ├── settings.ts
│ ├── shims.d.ts
│ ├── store
│ │ ├── index.ts
│ │ ├── modules
│ │ │ ├── global.ts
│ │ │ ├── menu.ts
│ │ │ ├── setting.ts
│ │ │ ├── store-name.ts
│ │ │ ├── tagsView.ts
│ │ │ ├── userInfo.ts
│ │ │ └── website.ts
│ │ └── types
│ │ │ └── index.d.ts
│ ├── style
│ │ └── base.css
│ ├── utils
│ │ ├── Msp.ts
│ │ ├── aes.ts
│ │ ├── dynamicEmojis.ts
│ │ ├── emojis.ts
│ │ ├── icons.ts
│ │ ├── index.ts
│ │ ├── rsa.ts
│ │ └── utils.ts
│ ├── views
│ │ ├── about
│ │ │ ├── About.vue
│ │ │ └── data
│ │ │ │ └── useAbout.ts
│ │ ├── album
│ │ │ ├── Album.vue
│ │ │ ├── Delete.vue
│ │ │ ├── Picture.vue
│ │ │ └── data
│ │ │ │ ├── useAlbum.ts
│ │ │ │ ├── useDelete.ts
│ │ │ │ └── usePicture.ts
│ │ ├── article
│ │ │ ├── Article.vue
│ │ │ ├── ArticleList.vue
│ │ │ └── data
│ │ │ │ ├── useArticle.ts
│ │ │ │ ├── useArticleList.ts
│ │ │ │ ├── useCategory.ts
│ │ │ │ └── useUpload.ts
│ │ ├── category
│ │ │ ├── Category.vue
│ │ │ └── data
│ │ │ │ └── useCategory.ts
│ │ ├── comment
│ │ │ ├── Comment.vue
│ │ │ └── data
│ │ │ │ └── useComment.ts
│ │ ├── error
│ │ │ └── PageNotFound.vue
│ │ ├── friendLink
│ │ │ ├── FriendLink.vue
│ │ │ └── data
│ │ │ │ └── useFriendLink.ts
│ │ ├── home
│ │ │ ├── Home.vue
│ │ │ └── data
│ │ │ │ ├── area.ts
│ │ │ │ ├── articleLikeRank.ts
│ │ │ │ ├── articleRank.ts
│ │ │ │ ├── articleStatistics.ts
│ │ │ │ ├── category.ts
│ │ │ │ ├── systemDiskInfo.ts
│ │ │ │ ├── systemMemory.ts
│ │ │ │ ├── useHome.ts
│ │ │ │ └── visitStatistics.ts
│ │ ├── log
│ │ │ ├── Login.vue
│ │ │ ├── Mail.vue
│ │ │ ├── Operation.vue
│ │ │ └── data
│ │ │ │ ├── useLoginLog.ts
│ │ │ │ ├── useMailLog.ts
│ │ │ │ └── useOperationLog.ts
│ │ ├── login
│ │ │ ├── Login.vue
│ │ │ └── data
│ │ │ │ ├── monsterImg.ts
│ │ │ │ └── useUserLogin.ts
│ │ ├── menu
│ │ │ ├── Menu.vue
│ │ │ └── data
│ │ │ │ └── useMenu.ts
│ │ ├── message
│ │ │ ├── Message.vue
│ │ │ └── data
│ │ │ │ └── useMessage.ts
│ │ ├── personal
│ │ │ ├── Personal.vue
│ │ │ └── data
│ │ │ │ ├── usePassword.ts
│ │ │ │ └── usePersonal.ts
│ │ ├── resource
│ │ │ ├── Resource.vue
│ │ │ └── data
│ │ │ │ └── useResource.ts
│ │ ├── role
│ │ │ ├── Role.vue
│ │ │ └── data
│ │ │ │ └── useRole.ts
│ │ ├── tag
│ │ │ ├── Tag.vue
│ │ │ └── data
│ │ │ │ └── useTag.ts
│ │ ├── talk
│ │ │ ├── Talk.vue
│ │ │ ├── TalkList.vue
│ │ │ └── data
│ │ │ │ ├── useTalk.ts
│ │ │ │ └── useTalkList.ts
│ │ ├── users
│ │ │ ├── Users.vue
│ │ │ └── data
│ │ │ │ └── useUsers.ts
│ │ └── website
│ │ │ ├── Website.vue
│ │ │ └── data
│ │ │ ├── useAvatar.ts
│ │ │ └── useWebsite.ts
│ └── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
├── blog_start.sh
└── blog_vue
├── .env.development
├── .env.production
├── .gitignore
├── index.html
├── package-lock.json
├── package.json
├── public
└── sleaves.svg
├── src
├── App.vue
├── api
│ ├── config.ts
│ ├── entity
│ │ ├── AlbumEntity.ts
│ │ ├── ArticleEntity.ts
│ │ ├── CategoryEntity.ts
│ │ ├── ChatRoomEntity.ts
│ │ ├── CommentEntity.ts
│ │ ├── FriendLinkEntity.ts
│ │ ├── MessageEntity.ts
│ │ ├── NoticeEntity.ts
│ │ ├── PictureEntity.ts
│ │ ├── ResultObject.ts
│ │ ├── TagEntity.ts
│ │ ├── TalkEntity.ts
│ │ ├── UserEntity.ts
│ │ ├── WebSocketMessage.ts
│ │ ├── WebsiteInfoEntity.ts
│ │ └── YiYanEntity.ts
│ ├── enum
│ │ ├── StatusCode.ts
│ │ └── WebSocketEnum.ts
│ ├── params
│ │ ├── CommentParams.ts
│ │ ├── ConditionParams.ts
│ │ ├── FriendLinkParams.ts
│ │ └── UserParams.ts
│ ├── requests
│ │ ├── Album.ts
│ │ ├── Article.ts
│ │ ├── Category.ts
│ │ ├── ChatRoom.ts
│ │ ├── Comment.ts
│ │ ├── FriendLink.ts
│ │ ├── Message.ts
│ │ ├── Notice.ts
│ │ ├── Picture.ts
│ │ ├── SystemInfo.ts
│ │ ├── Tag.ts
│ │ ├── Talk.ts
│ │ ├── User.ts
│ │ ├── WebsiteInfo.ts
│ │ └── YiYan.ts
│ └── services.ts
├── assets
│ ├── css
│ │ ├── base.css
│ │ ├── dark.css
│ │ ├── header
│ │ │ └── website.css
│ │ └── light.css
│ ├── fonts
│ │ └── ZhuZiAWan.woff2
│ └── imgs
│ │ ├── heart.png
│ │ ├── public_security_record.png
│ │ └── qq_login.png
├── components
│ ├── AppMain.vue
│ ├── BoxComponent.vue
│ ├── Mask.vue
│ ├── OauthLogin.vue
│ ├── comment
│ │ ├── Comment.vue
│ │ ├── CommentHooks.ts
│ │ ├── CommentItem.vue
│ │ ├── CommentList.vue
│ │ └── Reply.vue
│ ├── layout
│ │ ├── ConfigProvider.vue
│ │ ├── footer
│ │ │ └── Footer.vue
│ │ └── header
│ │ │ ├── Header.vue
│ │ │ ├── NavPc.vue
│ │ │ ├── NavSmall.vue
│ │ │ ├── Navigation.vue
│ │ │ ├── headerHooks.ts
│ │ │ └── website
│ │ │ ├── ChatRoomBtn.vue
│ │ │ ├── WebSite.vue
│ │ │ └── WebSiteSide.vue
│ ├── loading
│ │ └── Loading.vue
│ ├── modal
│ │ ├── ArticleThemeModal.vue
│ │ ├── BindOrUnbindEmailModal.vue
│ │ ├── ForgetPasswordModal.vue
│ │ ├── FriendLinkHooks.ts
│ │ ├── FriendLinkModal.vue
│ │ ├── LoginModal.vue
│ │ ├── Modal.vue
│ │ ├── RegisterModal.vue
│ │ └── SearchModal.vue
│ ├── pagination
│ │ └── Pagination.vue
│ ├── preview
│ │ └── PreviewPicture.vue
│ ├── rightMenu
│ │ ├── RightMenu.vue
│ │ └── rightMenuHooks.ts
│ ├── scroll
│ │ └── ScrollLoad.vue
│ ├── skeleton
│ │ └── Skeleton.vue
│ └── verifition
│ │ ├── Verify.vue
│ │ ├── Verify
│ │ ├── VerifyPoints.vue
│ │ └── VerifySlide.vue
│ │ ├── api
│ │ └── index.js
│ │ └── utils
│ │ ├── ase.js
│ │ ├── axios.js
│ │ └── util.js
├── config.ts
├── constant.ts
├── directives
│ ├── Lazy.ts
│ └── index.ts
├── env.d.ts
├── layout
│ ├── LRLayout.vue
│ └── PageLayout.vue
├── main.ts
├── router
│ ├── index.ts
│ └── routers.ts
├── settings.ts
├── store
│ ├── index.ts
│ └── modules
│ │ ├── global.ts
│ │ ├── setting.ts
│ │ ├── store-name.ts
│ │ ├── userInfo.ts
│ │ ├── websiteInfo.ts
│ │ └── websocket.ts
├── utils
│ ├── WebSocketUtils.ts
│ ├── aes.ts
│ ├── emojis.ts
│ ├── rsa.ts
│ ├── sendEmailUtils.ts
│ ├── socialLoginUtils.ts
│ └── utils.ts
├── views
│ ├── about
│ │ ├── About.vue
│ │ └── AboutHooks.ts
│ ├── album
│ │ ├── Album.vue
│ │ └── AlbumHooks.ts
│ ├── archive
│ │ ├── Archive.vue
│ │ └── ArchiveHooks.ts
│ ├── article
│ │ ├── Article.vue
│ │ └── articleHooks.ts
│ ├── category
│ │ ├── ArticleList.vue
│ │ └── Category.vue
│ ├── chatroom
│ │ ├── Chat.vue
│ │ ├── ChatRoom.vue
│ │ ├── OnlineUsers.vue
│ │ └── chatRoom.ts
│ ├── comm
│ │ ├── ArticleList.vue
│ │ ├── CommentUser.vue
│ │ ├── NewsArticle.vue
│ │ └── NewsComment.vue
│ ├── error
│ │ └── PageNotFound.vue
│ ├── friendLink
│ │ ├── FriendLink.vue
│ │ └── FriendLinkHooks.ts
│ ├── home
│ │ ├── ArticleList.vue
│ │ ├── BlogInfo.vue
│ │ └── Home.vue
│ ├── message
│ │ ├── Message.vue
│ │ ├── MessageHooks.ts
│ │ └── PreviewMessage.vue
│ ├── picture
│ │ ├── Picture.vue
│ │ └── PictureHooks.ts
│ ├── profile
│ │ ├── Profile.vue
│ │ ├── ProfileHooks.ts
│ │ └── children
│ │ │ ├── FriendLink.vue
│ │ │ ├── FriendLinkHooks.ts
│ │ │ ├── Notice.vue
│ │ │ ├── NoticeHooks.ts
│ │ │ ├── Password.vue
│ │ │ ├── PasswordHooks.ts
│ │ │ ├── UserInfo.vue
│ │ │ └── UserInfoHooks.ts
│ ├── tag
│ │ ├── ArticleList.vue
│ │ └── Tag.vue
│ └── talk
│ │ ├── Talk.vue
│ │ ├── TalkHooks.ts
│ │ ├── TalkList.vue
│ │ └── TalkListHooks.ts
└── vite-env.d.ts
├── tsconfig.json
├── tsconfig.node.json
├── vite.base.config.ts
├── vite.config.ts
├── vite.dev.config.ts
├── vite.prod.config.ts
└── windi.config.ts
/blog-springboot/.gitignore:
--------------------------------------------------------------------------------
1 | HELP.md
2 | target/
3 | !.mvn/wrapper/maven-wrapper.jar
4 | !**/src/main/**/target/
5 | !**/src/test/**/target/
6 |
7 | ### STS ###
8 | .apt_generated
9 | .classpath
10 | .factorypath
11 | .project
12 | .settings
13 | .springBeans
14 | .sts4-cache
15 |
16 | ### IntelliJ IDEA ###
17 | .idea
18 | *.iws
19 | *.iml
20 | *.ipr
21 |
22 | ### NetBeans ###
23 | /nbproject/private/
24 | /nbbuild/
25 | /dist/
26 | /nbdist/
27 | /.nb-gradle/
28 | build/
29 | !**/src/main/**/build/
30 | !**/src/test/**/build/
31 |
32 | ### VS Code ###
33 | .vscode/
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/WebApplication.java:
--------------------------------------------------------------------------------
1 | package cn.apecode;
2 |
3 | import org.springframework.boot.SpringApplication;
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 |
6 | @SpringBootApplication
7 | public class WebApplication {
8 | public static void main(String[] args) {
9 | SpringApplication.run(WebApplication.class, args);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/ArticleTagController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 文章所属标签 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/articleTag")
16 | public class ArticleTagController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/DailyVisitController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 日均访问量 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/dailyVisit")
16 | public class DailyVisitController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/LoginLogController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 登录日志 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/loginLog")
16 | public class LoginLogController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/LoginQqController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * QQ登录 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2023-01-05
13 | */
14 | @RestController
15 | @RequestMapping("/blog/loginQq")
16 | public class LoginQqController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/MailLogController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 邮件发送记录 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/mailLog")
16 | public class MailLogController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/RoleMenuController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 菜单角色权限 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/roleMenu")
16 | public class RoleMenuController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/RoleResourceController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 资源角色权限 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/roleResource")
16 | public class RoleResourceController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/TalkPictureVideoController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 说说的图片和视频 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-07-06
13 | */
14 | @RestController
15 | @RequestMapping("/blog/talkPictureVideo")
16 | public class TalkPictureVideoController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-api/src/main/java/cn/apecode/controller/UserRoleController.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.controller;
2 |
3 | import org.springframework.web.bind.annotation.RequestMapping;
4 | import org.springframework.web.bind.annotation.RestController;
5 |
6 | /**
7 | *
8 | * 用户权限 前端控制器
9 | *
10 | *
11 | * @author apecode
12 | * @since 2022-05-26
13 | */
14 | @RestController
15 | @RequestMapping("/blog/userRole")
16 | public class UserRoleController {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/annotation/AccessLimit.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.annotation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * @description: 接口限流
7 | * @author: apecode
8 | * @date: 2022-12-24 20:49
9 | **/
10 | @Target(ElementType.METHOD)
11 | @Retention(RetentionPolicy.RUNTIME)
12 | @Documented
13 | public @interface AccessLimit {
14 |
15 | /**
16 | * 访问时间(秒)
17 | * @return
18 | */
19 | long seconds();
20 |
21 | /**
22 | * 最大请求次数
23 | * @return
24 | */
25 | int maxCount();
26 | }
27 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/annotation/OptLog.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.annotation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * @description: 操作日志注解
7 | * @author: apecode
8 | * @date: 2022-07-09 12:13
9 | **/
10 | @Target(ElementType.METHOD)
11 | @Retention(RetentionPolicy.RUNTIME)
12 | @Documented
13 | public @interface OptLog {
14 |
15 | /**
16 | *
17 | * @description: 操作类型
18 | *
19 | * @return String
20 | * @auther apecode
21 | * @date 2022-07-09 12:15
22 | */
23 | String optType() default "";
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/constant/OptTypeConst.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.constant;
2 |
3 | /**
4 | * @description: 操作日志类型常量
5 | * @author: apecode
6 | * @date: 2022-07-09 23:09
7 | **/
8 | public class OptTypeConst {
9 |
10 | public static final String SAVE_OR_UPDATE = "新增或修改";
11 |
12 | public static final String SAVE = "新增";
13 |
14 | public static final String UPDATE = "修改";
15 |
16 | public static final String REMOVE = "删除";
17 |
18 | public static final String COMMENT = "评论";
19 | }
20 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/constant/RabbitMQPrefixConst.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.constant;
2 |
3 | /**
4 | * @description: RabbitMQ前缀常量
5 | * @author: apecode
6 | * @date: 2022-06-09 19:10
7 | **/
8 | public class RabbitMQPrefixConst {
9 | /**
10 | * Email交换机
11 | */
12 | public static final String EMAIL_EXCHANGE_NAME = "email.exchange";
13 |
14 | /**
15 | * Email队列
16 | */
17 | public static final String EMAIL_QUEUE_NAME = "email.queue";
18 |
19 | /**
20 | * 路由键
21 | */
22 | public static final String EMAIL_ROUTING_KEY_NAME = "email.routing.key";
23 | }
24 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/constant/SocialLoginConst.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.constant;
2 |
3 | /**
4 | * @description: 第三方登录参数常量
5 | * @author: apecode
6 | * @date: 2023-01-05 12:36
7 | **/
8 | public class SocialLoginConst {
9 |
10 | // oauth2登录方式
11 | public static final String GRANT_TYPE = "grant_type";
12 |
13 | // oauth2客户端id
14 | public static final String CLIENT_ID = "client_id";
15 |
16 | // oauth2客户端密码
17 | public static final String CLIENT_SECRET = "client_secret";
18 |
19 | // CODE
20 | public static final String CODE = "code";
21 |
22 | // oauth2回调域名
23 | public static final String REDIRECT_URI = "redirect_uri";
24 |
25 | // QQ openId
26 | public static final String QQ_OPEN_ID = "openid";
27 |
28 | // 访问令牌
29 | public static final String ACCESS_TOKEN = "access_token";
30 |
31 | // QQ AppId
32 | public static final String OAUTH_CONSUMER_KEY = "oauth_consumer_key";
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/dto/IpSourceDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: IP地址信息
12 | * @author: apecode
13 | * @date: 2022-06-10 17:26
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "IP地址信息", description = "用户IP地址信息")
20 | public class IpSourceDto {
21 |
22 | @ApiModelProperty(value = "国家")
23 | private String country;
24 | @ApiModelProperty(value = "省份")
25 | private String province;
26 | @ApiModelProperty(value = "城市")
27 | private String city;
28 | @ApiModelProperty(value = "区域")
29 | private String district;
30 | @ApiModelProperty(value = "经纬度")
31 | private String location;
32 | }
33 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/ArticleStatusEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 文章状态枚举
8 | * @author: apecode
9 | * @date: 2022-06-28 17:26
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum ArticleStatusEnum {
14 |
15 | PUBLIC(1, "公开"),
16 |
17 | PRIVATE(2, "私密"),
18 |
19 | DRAFT(3, "草稿");
20 |
21 | private final Integer status;
22 | private final String desc;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/ArticleTypeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 文章类型枚举
8 | * @author: apecode
9 | * @date: 2022-06-28 17:31
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum ArticleTypeEnum {
14 |
15 | ORIGINAL(1, "原创"),
16 |
17 | REPRINT(2, "转载"),
18 |
19 | TRANSLATE(3, "翻译");
20 |
21 | private final Integer type;
22 | private final String desc;
23 |
24 | public static ArticleTypeEnum getArticleTypeEnum(Integer type) {
25 | for (ArticleTypeEnum value : ArticleTypeEnum.values()) {
26 | if (value.getType().equals(type)) {
27 | return value;
28 | }
29 | }
30 | return null;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/CommentTypeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 评论类型枚举
8 | * @author: apecode
9 | * @date: 2022-07-07 21:31
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum CommentTypeEnum {
14 |
15 | ARTICLE(1, "文章", "/article/"),
16 | TALK(2, "说说", "/talk/");
17 |
18 | // 类型
19 | private final Integer type;
20 | // 描述
21 | private final String desc;
22 | // 路径
23 | private final String path;
24 |
25 | public static CommentTypeEnum getCommentEnum(Integer type) {
26 | for (CommentTypeEnum value : CommentTypeEnum.values()) {
27 | if (value.getType().equals(type)) {
28 | return value;
29 | }
30 | }
31 | return null;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/EmailTypeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 邮件类型枚举
8 | * @author: apecode
9 | * @date: 2022-07-13 17:46
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum EmailTypeEnum {
14 |
15 | CODE(1, "验证码"),
16 | COMMENT(2, "评论"),
17 | NOTICE(3, "通知"),
18 | MESSAGE(4, "留言");
19 |
20 | private final Integer type;
21 | private final String desc;
22 |
23 | public static EmailTypeEnum getMailTypeEnum(Integer type) {
24 | for (EmailTypeEnum value : EmailTypeEnum.values()) {
25 | if (value.getType().equals(type)) {
26 | return value;
27 | }
28 | }
29 | return null;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/FilePathEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 文件路径枚举
8 | * @author: apecode
9 | * @date: 2022-06-23 16:41
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum FilePathEnum {
14 |
15 | AVATAR("avatar/", "头像路径"),
16 | ARTICLE("article/", "文章图片路径"),
17 | VOICE("voice/", "音频路径"),
18 | CONFIG("config/", "网站配置路径"),
19 | ALBUM("albums/","相册路径"),
20 | PICTURE_VIDEO("picture_video/", "说说图片视频路径");
21 |
22 | private final String path;
23 | private final String desc;
24 | }
25 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/LoginTypeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 登录方式枚举
8 | * @author: apecode
9 | * @date: 2022-05-29 20:24
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum LoginTypeEnum {
14 | /**
15 | * 邮箱登录
16 | */
17 | EMAIL(0, "邮箱登录", ""),
18 | QQ(1, "QQ登录", "qqLoginStrategyImpl");
19 |
20 | // 登录方式
21 | private final Integer type;
22 |
23 | // 描述
24 | private final String desc;
25 |
26 | // 策略
27 | private final String strategy;
28 |
29 |
30 | public static LoginTypeEnum getLoginTypeEnum(Integer type) {
31 | for (LoginTypeEnum value : LoginTypeEnum.values()) {
32 | if (value.getType().equals(type)) {
33 | return value;
34 | }
35 | }
36 | return null;
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/RoleEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 角色枚举
8 | * @author: apecode
9 | * @date: 2022-06-09 23:40
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum RoleEnum {
14 |
15 | /**
16 | * 管理员
17 | */
18 | ADMIN(1, "管理员", "admin"),
19 | /**
20 | * 普通用户
21 | */
22 | USER(2, "用户", "user"),
23 | /**
24 | * 测试账号
25 | */
26 | TEST(3, "测试", "test");
27 |
28 | /**
29 | * 角色id
30 | */
31 | private final Integer roleId;
32 |
33 | /**
34 | * 描述
35 | */
36 | private final String roleDesc;
37 |
38 | /**
39 | * 权限标签
40 | */
41 | private final String roleAuth;
42 | }
43 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/StatusCodeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 状态码
8 | * @author: apecode
9 | * @date: 2022-05-27 00:25
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum StatusCodeEnum {
14 |
15 | SUCCESS(1000, "成功"),
16 | UNAUTHORIZED(1001, "请登录"),
17 | USERNAME_PASSWORD_ERROR(1002, "用户名或密码错误"),
18 | AUTHORIZED(1003, "无权限"),
19 | EXPIRATION(1004, "登录状态过期,请重新登录"),
20 | EMAIL_EXIST(1005, "此邮箱已被注册"),
21 | EMAIL_NO_EXIST(1006, "此邮箱不存在"),
22 | NICKNAME_EXIST(1007, "昵称已存在"),
23 | DISABLE(1008, "账号被禁用"),
24 | FAIL(1009, "失败"),
25 | VALID_ERROR(1010, "参数不正确"),
26 | ACCESS_LIMIT(1011, "请求过于频繁,请稍后再试"),
27 | QQ_LOGIN_ERROR(1012, "QQ登录错误"),
28 | PAGE_NOT_FOUND(404, "页面不存在"),
29 | SERVER_ERROR(500, "服务器错误"),
30 | BAD_REQUEST(400, "请求错误");
31 |
32 | /*
33 | * 状态码
34 | * */
35 | private final Integer code;
36 | /*
37 | * 状态描述
38 | * */
39 | private final String desc;
40 | }
41 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/UploadModeEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | /**
7 | * @description: 上传模式枚举
8 | * @author: apecode
9 | * @date: 2022-06-23 16:35
10 | **/
11 | @Getter
12 | @AllArgsConstructor
13 | public enum UploadModeEnum {
14 |
15 | OSS("oss", "ossUploadFileStrategyImpl"),
16 | LOCAL("local", "localUploadFileStrategyImpl");
17 | private final String mode;
18 | private final String strategy;
19 |
20 | /**
21 | * @description: 获取策略
22 | * @param mode
23 | * @return {@link String}
24 | * @auther apecode
25 | * @date 2022/6/23 16:36
26 | */
27 | public static String getStrategy(String mode) {
28 | return valueOf(mode.toUpperCase()).getStrategy();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/enums/ZoneEnum.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.enums;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Getter;
5 |
6 | @Getter
7 | @AllArgsConstructor
8 | public enum ZoneEnum {
9 |
10 | SHANGHAI("Asia/Shanghai", "中国上海");
11 |
12 | /**
13 | * 时区
14 | */
15 | private final String zone;
16 |
17 | /**
18 | * 描述
19 | */
20 | private final String desc;
21 | }
22 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/exception/BizException.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.exception;
2 |
3 | import cn.apecode.common.enums.StatusCodeEnum;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Data;
6 | import lombok.EqualsAndHashCode;
7 |
8 | import static cn.apecode.common.enums.StatusCodeEnum.FAIL;
9 |
10 | /**
11 | * @description: 自定义异常
12 | * @author: apecode
13 | * @date: 2022-05-27 01:08
14 | **/
15 | @EqualsAndHashCode(callSuper = true)
16 | @Data
17 | @AllArgsConstructor
18 | public class BizException extends RuntimeException {
19 |
20 | /*
21 | * 错误码
22 | * */
23 | private Integer code = FAIL.getCode();
24 |
25 | /**
26 | * 错误信息
27 | */
28 | private String message;
29 |
30 | public BizException(String message) {
31 | this.message = message;
32 | }
33 |
34 | public BizException(StatusCodeEnum statusCodeEnum) {
35 | this.code = statusCodeEnum.getCode();
36 | this.message = statusCodeEnum.getDesc();
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/java/cn/apecode/common/utils/UserUtils.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.common.utils;
2 |
3 | import cn.apecode.common.dto.UserDetailsDto;
4 | import org.springframework.security.core.context.SecurityContextHolder;
5 | import org.springframework.stereotype.Component;
6 |
7 | /**
8 | * @description: 用户工具类
9 | * @author: apecode
10 | * @date: 2022-05-28 16:08
11 | **/
12 | @Component
13 | public class UserUtils {
14 |
15 | /**
16 | * @description: 获取当前登录用户
17 | * @param
18 | * @return {@link UserDetailsDto}
19 | * @auther apecode
20 | * @date 2022/5/28 16:08
21 | */
22 | public static UserDetailsDto getLoginUser() {
23 | return (UserDetailsDto) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/blog-springboot/blog-common/src/main/resources/sensitive_word_allow.txt:
--------------------------------------------------------------------------------
1 | 爆炸
2 | 炸弹
3 | 女人
4 | 屠
5 | 兽
6 | 恶
7 | 奸
8 | 鬼
9 | 魔
10 | 眯
11 | 口
12 | 大便
13 | 吸血鬼
14 | 僵尸
15 | 鸡
16 | 喷
17 | 死
18 | 头
19 | 奶
20 | 三
21 | 日
22 | 滚
23 | 操
24 | 草
25 | 贱
26 | 靠
27 | 卵
28 | 骚
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/java/cn/apecode/config/MyBatisPlusConfig.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.config;
2 |
3 | import com.baomidou.mybatisplus.annotation.DbType;
4 | import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
5 | import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
6 | import org.springframework.context.annotation.Bean;
7 | import org.springframework.context.annotation.Configuration;
8 |
9 | /**
10 | * @description: MyBatis Plus插件配置
11 | * @author: apecode
12 | * @date: 2022-05-26 23:32
13 | **/
14 | @Configuration
15 | public class MyBatisPlusConfig {
16 |
17 | @Bean
18 | public MybatisPlusInterceptor mybatisPlusInterceptor() {
19 | MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
20 | interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MARIADB));
21 | return interceptor;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/java/cn/apecode/handler/MetaObjectHandlerImpl.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.handler;
2 |
3 | import cn.apecode.common.utils.CommonUtils;
4 | import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
5 | import org.apache.ibatis.reflection.MetaObject;
6 | import org.springframework.stereotype.Component;
7 |
8 | import java.time.LocalDateTime;
9 |
10 | /**
11 | * @description: mybatis-plus自动填充
12 | * @auther apecode
13 | * @date 2022/5/28 16:53
14 | */
15 | @Component
16 | public class MetaObjectHandlerImpl implements MetaObjectHandler {
17 | @Override
18 | public void insertFill(MetaObject metaObject) {
19 | this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, CommonUtils.getLocalDateTime());
20 | }
21 |
22 | @Override
23 | public void updateFill(MetaObject metaObject) {
24 | this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, CommonUtils.getLocalDateTime());
25 | }
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaCacheService:
--------------------------------------------------------------------------------
1 | cn.apecode.service.impl.CaptchaCacheServiceRedisImpl
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/application.yml:
--------------------------------------------------------------------------------
1 | spring:
2 | profiles:
3 | active: dev
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg1.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg2.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg3.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg4.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg5.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg6.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg7.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg8.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/original/bg9.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/1.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/10.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/11.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/12.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/13.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/14.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/15.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/16.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/17.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/18.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/19.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/8.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/9.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换.zip
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/1.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/2.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/3.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/4.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/5.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/6.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/11/xin替换/7.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/2.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/3.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/apecodex/blog/b70cc7906a98a66bfd3677dc83b3aa6eef13f35f/blog-springboot/blog-config/src/main/resources/images/jigsaw/slidingBlock/4.png
--------------------------------------------------------------------------------
/blog-springboot/blog-config/src/main/resources/log4j2.component.properties:
--------------------------------------------------------------------------------
1 | Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
--------------------------------------------------------------------------------
/blog-springboot/blog-crypto/src/main/java/cn/apecode/crypto/annotation/Decrypt.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.crypto.annotation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * @author apecode.
7 | * @description: 解密注解
8 | * @date 2024/1/18 22:56
9 | */
10 | @Documented
11 | @Inherited
12 | @Retention(RetentionPolicy.RUNTIME)
13 | @Target({ElementType.METHOD, ElementType.PARAMETER})
14 | public @interface Decrypt {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/blog-springboot/blog-crypto/src/main/java/cn/apecode/crypto/annotation/Encrypt.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.crypto.annotation;
2 |
3 | import java.lang.annotation.*;
4 |
5 | /**
6 | * @author apecode.
7 | * @description: 解密注解
8 | * @date 2024/1/18 22:56
9 | */
10 | @Documented
11 | @Inherited
12 | @Retention(RetentionPolicy.RUNTIME)
13 | @Target({ElementType.METHOD, ElementType.PARAMETER})
14 | public @interface Encrypt {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/blog-springboot/blog-crypto/src/main/java/cn/apecode/crypto/handler/AESKey.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.crypto.handler;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * @author apecode.
10 | * @description: AES密钥
11 | * @date 2024/1/19 0:10
12 | */
13 | @Data
14 | @AllArgsConstructor
15 | @NoArgsConstructor
16 | @Builder
17 | public class AESKey {
18 |
19 | private String key;
20 | private String keyIV;
21 | }
22 |
--------------------------------------------------------------------------------
/blog-springboot/blog-crypto/src/main/java/cn/apecode/crypto/handler/RequestDataExtend.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.crypto.handler;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * @author apecode.
10 | * @description: 请求内容扩展
11 | * @date 2024/1/19 11:38
12 | */
13 | @Data
14 | @AllArgsConstructor
15 | @NoArgsConstructor
16 | @Builder
17 | public class RequestDataExtend {
18 |
19 | // 请求体密文
20 | private String data;
21 |
22 | // RSA私钥加密后的AES密文
23 | private String sym;
24 | }
25 |
--------------------------------------------------------------------------------
/blog-springboot/blog-crypto/src/main/java/cn/apecode/crypto/handler/RespDataExtend.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.crypto.handler;
2 |
3 | import lombok.AllArgsConstructor;
4 | import lombok.Builder;
5 | import lombok.Data;
6 | import lombok.NoArgsConstructor;
7 |
8 | /**
9 | * @author apecode.
10 | * @description: 响应体内容扩展
11 | * @date 2024/1/19 0:04
12 | */
13 | @Data
14 | @AllArgsConstructor
15 | @NoArgsConstructor
16 | @Builder
17 | public class RespDataExtend {
18 |
19 | // 响应体密文
20 | private Object body;
21 |
22 | // RSA私钥加密后的AES密文
23 | private String sym;
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArchiveDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import com.fasterxml.jackson.annotation.JsonFormat;
4 | import io.swagger.annotations.ApiModel;
5 | import io.swagger.annotations.ApiModelProperty;
6 | import lombok.AllArgsConstructor;
7 | import lombok.Builder;
8 | import lombok.Data;
9 | import lombok.NoArgsConstructor;
10 |
11 | import java.time.LocalDateTime;
12 |
13 | /**
14 | * @description: 文章归档
15 | * @author: apecode
16 | * @date: 2022-06-28 16:08
17 | **/
18 | @Data
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | @Builder
22 | @ApiModel(value = "文章归档", description = "文章归档")
23 | public class ArchiveDto {
24 |
25 | @ApiModelProperty(value = "文章id", name = "id", dataType = "String")
26 | private String id;
27 |
28 | @ApiModelProperty(value = "文章标题", name = "articleTitle", dataType = "String")
29 | private String articleTitle;
30 |
31 | @ApiModelProperty(value = "创建时间", name = "createTime", dataType = "LocalDateTime")
32 | @JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss")
33 | private LocalDateTime createTime;
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArchiveMonthDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @description: 文章归档
14 | * @author: apecode
15 | * @date: 2022-11-10 15:08
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "文章按月归档", description = "文章按月归档")
22 | public class ArchiveMonthDto {
23 |
24 | @ApiModelProperty(value = "月份", name = "month", dataType = "String")
25 | private String month;
26 |
27 | @ApiModelProperty(value = "文章列表", name = "articles", dataType = "List")
28 | private List articles;
29 | }
30 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArticleLikeRankDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 文章点赞排行
12 | * @author: apecode
13 | * @date: 2022-07-13 23:26
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "文章点赞排行", description = "文章点赞排行")
20 | public class ArticleLikeRankDto {
21 |
22 | @ApiModelProperty(value = "标题", name = "articleTitle", dataType = "String")
23 | private String articleTitle;
24 |
25 | @ApiModelProperty(value = "点赞量", name = "likeCount", dataType = "Integer")
26 | private Integer likeCount;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArticlePaginationDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 文章上下篇
12 | * @author: apecode
13 | * @date: 2022-07-04 23:13
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "文章上下篇", description = "文章上下篇")
20 | public class ArticlePaginationDto {
21 |
22 | @ApiModelProperty(value = "文章id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "文章标题", name = "articleTitle", dataType = "String")
26 | private String articleTitle;
27 |
28 | @ApiModelProperty(value = "文章缩略图", name = "articleCover", dataType = "String")
29 | private String articleCover;
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArticleRankDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 文章浏览量排行
12 | * @author: apecode
13 | * @date: 2022-07-13 23:24
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "文章浏览量排行", description = "文章浏览量排行")
20 | public class ArticleRankDto {
21 |
22 | @ApiModelProperty(value = "标题", name = "articleTitle", dataType = "String")
23 | private String articleTitle;
24 |
25 | @ApiModelProperty(value = "浏览量", name = "viewsCount", dataType = "Integer")
26 | private Integer viewsCount;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArticleSearchDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 搜索文章
12 | * @author: apecode
13 | * @date: 2022-07-05 16:58
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "搜索文章", description = "搜索文章")
20 | public class ArticleSearchDto {
21 |
22 | @ApiModelProperty(value = "文章id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "文章标题", name = "articleTitle", dataType = "String")
26 | private String articleTitle;
27 |
28 | @ApiModelProperty(value = "文章内容", name = "articleContent", dataType = "String")
29 | private String articleContent;
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ArticleStatisticsDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 文章贡献统计
12 | * @author: apecode
13 | * @date: 2022-07-13 23:19
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "文章贡献统计", description = "文章贡献统计")
20 | public class ArticleStatisticsDto {
21 |
22 | @ApiModelProperty(value = "日期", name = "date", dataType = "String")
23 | private String date;
24 |
25 | @ApiModelProperty(value = "数量", name = "count", dataType = "Integer")
26 | private Integer count;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/CategoryArticleCountDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | @Data
11 | @AllArgsConstructor
12 | @NoArgsConstructor
13 | @Builder
14 | @ApiModel(value = "分类文章数量", description = "分类文章数量")
15 | public class CategoryArticleCountDto {
16 |
17 | @ApiModelProperty(value = "id", name = "id", dataType = "String")
18 | private String id;
19 |
20 | @ApiModelProperty(value = "分类名称", name = "name", dataType = "String")
21 | private String name;
22 |
23 | @ApiModelProperty(value = "文章数量", name = "articleCount", dataType = "Integer")
24 | private Integer articleCount;
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/CategoryOptionDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description:
12 | * @author: apecode
13 | * @date: 2022-06-26 19:03
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "分类选项", description = "分类选项")
20 | public class CategoryOptionDto {
21 |
22 | @ApiModelProperty(value = "分类id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "分类名称", name = "name", dataType = "String")
26 | private String name;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/CategorySearchDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 分类搜索结果
12 | * @author: apecode
13 | * @date: 2022-07-05 17:01
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "分类搜索结果", description = "分类搜索结果")
20 | public class CategorySearchDto {
21 |
22 | @ApiModelProperty(value = "分类id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "分类名称", name = "name", dataType = "String")
26 | private String name;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/DiskInfoDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 硬盘信息
12 | * @author: apecode
13 | * @date: 2022-08-24 01:57
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "硬盘信息", description = "硬盘信息")
20 | public class DiskInfoDto {
21 |
22 | @ApiModelProperty(value = "路径", name = "path")
23 | private String path;
24 | @ApiModelProperty(value = "空闲空间", name = "free")
25 | private String free;
26 | @ApiModelProperty(value = "可用空间", name = "use")
27 | private String use;
28 | @ApiModelProperty(value = "总空间", name = "total")
29 | private String total;
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/LabelOptionDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @description: 标签选项
14 | * @author: apecode
15 | * @date: 2022-06-17 23:18
16 | **/
17 | @Data
18 | @NoArgsConstructor
19 | @AllArgsConstructor
20 | @Builder
21 | @ApiModel(value = "标签选项", description = "返回前端下拉选项")
22 | public class LabelOptionDto {
23 |
24 | @ApiModelProperty(value = "选项id", name = "id", dataType = "String")
25 | private String id;
26 |
27 | @ApiModelProperty(value = "选项名", name = "label", dataType = "String")
28 | private String label;
29 |
30 | @ApiModelProperty(value = "子选项", name = "children", dataType = "List")
31 | private List children;
32 | }
33 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/MemoryInfoDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 系统内存
12 | * @author: apecode
13 | * @date: 2022-08-24 01:27
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "系统内存", description = "系统内存")
20 | public class MemoryInfoDto {
21 |
22 | @ApiModelProperty(value = "总内存", name = "total")
23 | private String total;
24 | @ApiModelProperty(value = "可用内存", name = "available")
25 | private String available;
26 | @ApiModelProperty(value = "已用内存", name = "used")
27 | private String used;
28 | @ApiModelProperty(value = "内存使用率", name = "ute")
29 | private String ute;
30 | }
31 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/PhotoAlbumPictureCountDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 相册图片的数量
12 | * @author: apecode
13 | * @date: 2023-07-22 18:05
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "相册图片的数量", description = "相册图片的数量")
20 | public class PhotoAlbumPictureCountDto {
21 |
22 | @ApiModelProperty(value = "相册id", name = "albumId", dataType = "Integer")
23 | private Integer albumId;
24 | @ApiModelProperty(value = "图片数量", name = "count", dataType = "Integer")
25 | private Integer count;
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/QQTokenDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModelProperty;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Builder;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 |
9 | /**
10 | * @description: qq token信息
11 | * @author: apecode
12 | * @date: 2023-01-05 13:34
13 | **/
14 | @Data
15 | @AllArgsConstructor
16 | @NoArgsConstructor
17 | @Builder
18 | public class QQTokenDto {
19 |
20 | @ApiModelProperty(value = "openId", name = "openid", dataType = "String")
21 | private String openid;
22 |
23 | @ApiModelProperty(value = "clientId", name = "client_id", dataType = "String")
24 | private String client_id;
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/QQUserInfoDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModelProperty;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Builder;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 |
9 | /**
10 | * @description: QQ用户信息
11 | * @author: apecode
12 | * @date: 2023-01-05 14:22
13 | **/
14 | @Data
15 | @AllArgsConstructor
16 | @NoArgsConstructor
17 | @Builder
18 | public class QQUserInfoDto {
19 |
20 | @ApiModelProperty(value = "用户昵称", name = "nickname", dataType = "String")
21 | private String nickname;
22 |
23 | @ApiModelProperty(value = "用户QQ头像", name = "figureurl_qq_1", dataType = "String")
24 | private String figureurl_qq_2;
25 | }
26 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/ReplyCountDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 回复数量
12 | * @author: apecode
13 | * @date: 2022-07-09 00:38
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "回复数量", description = "回复数量")
20 | public class ReplyCountDto {
21 |
22 | @ApiModelProperty(value = "评论id", name = "commentId", dataType = "String")
23 | private String commentId;
24 |
25 | @ApiModelProperty(value = "回复数量", name = "replyCount", dataType = "Integer")
26 | private Integer replyCount;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/RoleResourceDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @description:
14 | * @author: apecode
15 | * @date: 2022-05-28 19:32
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "角色资源", description = "角色对应的资源")
22 | public class RoleResourceDto {
23 |
24 | @ApiModelProperty(value = "资源id", dataType = "String")
25 | private Integer id;
26 |
27 | @ApiModelProperty(value = "路径", dataType = "String")
28 | private String url;
29 |
30 | @ApiModelProperty(value = "请求方式", dataType = "String")
31 | private String requestMethod;
32 |
33 | @ApiModelProperty(value = "角色名", dataType = "List")
34 | private List roleList;
35 | }
36 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/SocialTokenDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModelProperty;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Builder;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 |
9 | /**
10 | * @description: 社交登录Token
11 | * @author: apecode
12 | * @date: 2023-01-04 22:38
13 | **/
14 |
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | public class SocialTokenDto {
20 |
21 | @ApiModelProperty(value = "开放id", name = "openId", dataType = "String")
22 | private String openId;
23 |
24 | @ApiModelProperty(value = "访问令牌", name = "accessToken", dataType = "String")
25 | private String accessToken;
26 |
27 | @ApiModelProperty(value = "登录类型", name = "loginType", dataType = "Integer")
28 | private Integer loginType;
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/SocialUserInfoDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModelProperty;
4 | import lombok.AllArgsConstructor;
5 | import lombok.Builder;
6 | import lombok.Data;
7 | import lombok.NoArgsConstructor;
8 |
9 | /**
10 | * @description: 社交账号信息
11 | * @author: apecode
12 | * @date: 2023-01-05 11:06
13 | **/
14 | @Data
15 | @AllArgsConstructor
16 | @NoArgsConstructor
17 | @Builder
18 | public class SocialUserInfoDto {
19 |
20 | @ApiModelProperty(value = "用户昵称", name = "nickname", dataType = "String")
21 | private String nickname;
22 |
23 | @ApiModelProperty(value = "用户头像", name = "avatar", dataType = "String")
24 | private String avatar;
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/TagDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 标签
12 | * @author: apecode
13 | * @date: 2022-06-25 17:40
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "标签", description = "标签")
20 | public class TagDto {
21 |
22 | @ApiModelProperty(value = "标签id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "标签名称", name = "name", dataType = "String")
26 | private String name;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/TagFrontDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @description: 前台标签
14 | * @author: apecode
15 | * @date: 2022-07-04 18:06
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "前台标签", description = "前台标签展示")
22 | public class TagFrontDto {
23 |
24 | @ApiModelProperty(value = "标签列表 ", name = "tags", dataType = "List")
25 | private List tags;
26 |
27 | @ApiModelProperty(value = "最新文章列表", name = "newsArticleList", dataType = "List")
28 | private List newsArticleList;
29 |
30 | @ApiModelProperty(value = "最新评论列表", name = "newsCommentList", dataType = "List")
31 | private List newsCommentList;
32 | }
33 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/TagSearchDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 标签搜索结果
12 | * @author: apecode
13 | * @date: 2022-07-05 17:11
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "标签搜索结果", description = "标签搜索结果")
20 | public class TagSearchDto {
21 |
22 | @ApiModelProperty(value = "标签id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "标签名称", name = "name", dataType = "String")
26 | private String name;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/TagWithArticleCountDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 标签
12 | * @author: apecode
13 | * @date: 2023-03-20 13:53
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "带有文章数量的标签", description = "带有文章数量的标签")
20 | public class TagWithArticleCountDto {
21 |
22 | @ApiModelProperty(value = "标签id", name = "id", dataType = "String")
23 | private String id;
24 |
25 | @ApiModelProperty(value = "标签名称", name = "name", dataType = "String")
26 | private String name;
27 |
28 | @ApiModelProperty(value = "文章数量", name = "articleCount", dataType = "Integer")
29 | private Integer articleCount;
30 | }
31 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/TalkPictureVideoDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | @Data
11 | @AllArgsConstructor
12 | @NoArgsConstructor
13 | @Builder
14 | @ApiModel(value = "后台说说配图", description = "后台说说配图")
15 | public class TalkPictureVideoDto {
16 |
17 | @ApiModelProperty(value = "配图id", name = "id", dataType = "String")
18 | private String id;
19 |
20 | @ApiModelProperty(value = "配图地址", name = "src", dataType = "String")
21 | private String src;
22 |
23 | @ApiModelProperty(value = "配图名称", name = "fileName", dataType = "String")
24 | private String fileName;
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/UserRoleDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 | import lombok.experimental.Accessors;
10 |
11 | /**
12 | * @description: 用户角色
13 | * @author: apecode
14 | * @date: 2022-06-09 11:42
15 | **/
16 | @Data
17 | @AllArgsConstructor
18 | @NoArgsConstructor
19 | @Accessors(chain = true)
20 | @Builder
21 | @ApiModel(value = "用户角色", description = "返回用户角色信息")
22 | public class UserRoleDto {
23 |
24 | @ApiModelProperty(value = "角色id", dataType = "String")
25 | private String id;
26 |
27 | @ApiModelProperty(value = "角色描述", dataType = "String")
28 | private String roleDesc;
29 | }
30 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/UserVisitAreaStatisticsDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 用户访问地区统计
12 | * @author: apecode
13 | * @date: 2022-07-13 23:51
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "用户访问地区统计", description = "用户访问地区统计")
20 | public class UserVisitAreaStatisticsDto {
21 |
22 | @ApiModelProperty(value = "区域", name = "area", dataType = "String")
23 | private String area;
24 |
25 | @ApiModelProperty(value = "数量", name = "count", dataType = "Integer")
26 | private Integer count;
27 | }
28 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/dto/VisitStatisticsDto.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.dto;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | /**
11 | * @description: 访问量统计
12 | * @author: apecode
13 | * @date: 2022-07-13 23:22
14 | **/
15 | @Data
16 | @AllArgsConstructor
17 | @NoArgsConstructor
18 | @Builder
19 | @ApiModel(value = "用户访问量统计", description = "用户访问量统计")
20 | public class VisitStatisticsDto {
21 |
22 | @ApiModelProperty(value = "日期", name = "date", dataType = "String")
23 | private String date;
24 |
25 | @ApiModelProperty(value = "浏览量", name = "viewsCount", dataType = "Integer")
26 | private Integer viewsCount;
27 |
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/CategoryVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotBlank;
11 |
12 | /**
13 | * @description: 分类
14 | * @author: apecode
15 | * @date: 2022-06-26 16:27
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "分类", description = "分类")
22 | public class CategoryVo {
23 |
24 | @ApiModelProperty(name = "categoryId", value = "分类id", dataType = "String")
25 | private String categoryId;
26 |
27 | @NotBlank(message = "分类名不能为空")
28 | @ApiModelProperty(name = "name", value = "分类名", dataType = "String", required = true)
29 | private String name;
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/DeleteVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotNull;
11 | import java.util.List;
12 |
13 | /**
14 | * @description: 逻辑删除
15 | * @author: apecode
16 | * @date: 2022-06-24 00:25
17 | **/
18 | @Data
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | @Builder
22 | @ApiModel(value = "逻辑删除", description = "逻辑删除")
23 | public class DeleteVo {
24 |
25 | @NotNull(message = "id不能为空")
26 | @ApiModelProperty(name = "idList", value = "id列表", required = true, dataType = "List")
27 | private List idList;
28 |
29 | @NotNull(message = "状态不能为空")
30 | @ApiModelProperty(name = "isDelete", value = "状态", required = true, dataType = "Boolean")
31 | private Boolean isDelete;
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/MessageVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotBlank;
11 |
12 | @Data
13 | @AllArgsConstructor
14 | @NoArgsConstructor
15 | @Builder
16 | @ApiModel(value = "留言", description = "添加留言")
17 | public class MessageVo {
18 |
19 | @NotBlank(message = "留言内容不能为空")
20 | @ApiModelProperty(name = "content", value = "留言内容", dataType = "String")
21 | private String content;
22 | @ApiModelProperty(name = "theme", value = "主题", dataType = "String")
23 | private String theme;
24 | }
25 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/PageResult.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | * @description: 分页对象
14 | * @author: apecode
15 | * @date: 2022-06-09 09:30
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "分页Vo", description = "分页对象")
22 | public class PageResult {
23 |
24 | @ApiModelProperty(name = "recordList", value = "分页列表", dataType = "List")
25 | private List recordList;
26 |
27 | @ApiModelProperty(name = "count", value = "总数", dataType = "Integer")
28 | private Integer count;
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/PageResultWithObject.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.NoArgsConstructor;
6 |
7 | import java.util.List;
8 |
9 | @NoArgsConstructor
10 | @ApiModel(value = "带有其他数据的页面结果", description = "带有其他数据的页面结果")
11 | public class PageResultWithObject extends PageResult {
12 |
13 | public PageResultWithObject(List recordList, Integer count, E data) {
14 | super(recordList, count);
15 | this.data = data;
16 | }
17 |
18 | public E getData() {
19 | return data;
20 | }
21 |
22 | public void setData(E data) {
23 | this.data = data;
24 | }
25 |
26 | @ApiModelProperty(name = "name", value = "数据", dataType = "E")
27 | private E data;
28 | }
29 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/PictureInfoVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotBlank;
11 | import javax.validation.constraints.NotNull;
12 |
13 | /**
14 | * @description: 图片信息
15 | * @author: apecode
16 | * @date: 2022-06-23 23:55
17 | **/
18 | @Data
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | @Builder
22 | @ApiModel(value = "图片信息", description = "图片信息")
23 | public class PictureInfoVo {
24 |
25 | @NotNull(message = "图片路径不能为空")
26 | @ApiModelProperty(name = "picturePath", value = "图片路径", required = true, dataType = "String")
27 | private String picturePath;
28 |
29 | @NotBlank(message = "图片名称不能为空")
30 | @ApiModelProperty(name = "pictureName", value = "图片名称", required = true, dataType = "String")
31 | private String pictureName;
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/QQLoginVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotBlank;
11 |
12 | /**
13 | * @description: QQ登录
14 | * @author: apecode
15 | * @date: 2023-01-05 12:15
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "QQ登录信息", description = "QQ登录信息")
22 | public class QQLoginVo {
23 |
24 | @NotBlank(message = "openId不能为空")
25 | @ApiModelProperty(name = "openId", value = "qq openId", dataType = "String")
26 | private String openId;
27 |
28 | @NotBlank(message = "accessToken不能为空")
29 | @ApiModelProperty(name = "accessToken", value = "qq accessToken", dataType = "String")
30 | private String accessToken;
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/ReviewVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotNull;
11 | import java.util.List;
12 |
13 | /**
14 | * @description: 审核
15 | * @author: apecode
16 | * @date: 2022-06-24 18:39
17 | **/
18 | @Data
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | @Builder
22 | @ApiModel(value = "审核", description = "审核留言和评论")
23 | public class ReviewVo {
24 |
25 | @ApiModelProperty(name = "idList", value = "id列表", required = true, dataType = "List")
26 | private List idList;
27 |
28 | @NotNull(message = "状态值不能为空")
29 | @ApiModelProperty(name = "isReview", value = "审核状态", required = true, dataType = "Boolean")
30 | private Boolean isReview;
31 |
32 | @ApiModelProperty(name = "remark", value = "备注", dataType = "String")
33 | private String remark;
34 | }
35 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/TagVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotBlank;
11 | import javax.validation.constraints.Size;
12 |
13 | /**
14 | * @description: 标签
15 | * @author: apecode
16 | * @date: 2022-06-26 00:05
17 | **/
18 | @Data
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | @Builder
22 | @ApiModel(value = "标签", description = "修改标签")
23 | public class TagVo {
24 |
25 | @ApiModelProperty(name = "id", value = "标签id", dataType = "String", required = true)
26 | private String id;
27 |
28 | @NotBlank(message = "标签名不能为空")
29 | @Size(max = 20, message = "最多20个字")
30 | @ApiModelProperty(name = "name", value = "标签名称", dataType = "String", required = true)
31 | private String name;
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/TopVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotNull;
11 |
12 | /**
13 | * @description: 置顶
14 | * @author: apecode
15 | * @date: 2022-06-28 15:22
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "置顶", description = "置顶")
22 | public class TopVo {
23 |
24 | @NotNull(message = "id不能为空")
25 | @ApiModelProperty(name = "id", value = "id", dataType = "String", required = true)
26 | private String id;
27 |
28 | @NotNull(message = "置顶状态不能为空")
29 | @ApiModelProperty(name = "isTop", value = "置顶状态", dataType = "Boolean", required = true)
30 | private Boolean isTop;
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/UserEnableVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotNull;
11 |
12 | /**
13 | * @description: 用户禁用状态
14 | * @author: apecode
15 | * @date: 2022-06-14 21:20
16 | **/
17 | @Data
18 | @AllArgsConstructor
19 | @NoArgsConstructor
20 | @Builder
21 | @ApiModel(value = "用户状态", description = "用户状态")
22 | public class UserEnableVo {
23 |
24 | @ApiModelProperty(name = "id", value = "用户id", required = true, dataType = "String")
25 | @NotNull(message = "用户id不能为空")
26 | private String id;
27 |
28 | @ApiModelProperty(name = "enable", value = "是否开启", required = true, dataType = "Boolean")
29 | @NotNull(message = "是否启用?")
30 | private Boolean enable;
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-pojo/src/main/java/cn/apecode/vo/UserRoleVo.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.vo;
2 |
3 | import io.swagger.annotations.ApiModel;
4 | import io.swagger.annotations.ApiModelProperty;
5 | import lombok.AllArgsConstructor;
6 | import lombok.Builder;
7 | import lombok.Data;
8 | import lombok.NoArgsConstructor;
9 |
10 | import javax.validation.constraints.NotNull;
11 | import java.util.List;
12 |
13 | /**
14 | * @description: 用户角色
15 | * @author: apecode
16 | * @date: 2022-06-14 22:44
17 | **/
18 | @Data
19 | @AllArgsConstructor
20 | @NoArgsConstructor
21 | @Builder
22 | @ApiModel(value = "用户角色", description = "用户角色")
23 | public class UserRoleVo {
24 |
25 | @NotNull(message = "用户id不能为空")
26 | @ApiModelProperty(name = "userId", value = "用户id", required = true, dataType = "String")
27 | private String userId;
28 |
29 | @NotNull(message = "用户角色不能为空")
30 | @ApiModelProperty(name = "roleList", value = "角色id集合", dataType = "List")
31 | private List roleList;
32 |
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-service/src/main/java/cn/apecode/mapper/ArticleTagMapper.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.mapper;
2 |
3 | import cn.apecode.dto.TagWithArticleCountDto;
4 | import cn.apecode.entity.ArticleTag;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import org.apache.ibatis.annotations.Mapper;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | *
12 | * 文章所属标签 Mapper 接口
13 | *
14 | *
15 | * @author apecode
16 | * @since 2022-05-26
17 | */
18 | @Mapper
19 | public interface ArticleTagMapper extends BaseMapper {
20 |
21 | /**
22 | * @description: 获取前台标签及文章数量
23 | * @param
24 | * @return {@link List}
25 | * @auther apecode
26 | * @date 20/3/2023 PM1:37
27 | */
28 | List listTagFront();
29 | }
30 |
--------------------------------------------------------------------------------
/blog-springboot/blog-service/src/main/java/cn/apecode/mapper/DailyVisitMapper.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.mapper;
2 |
3 | import cn.apecode.dto.VisitStatisticsDto;
4 | import cn.apecode.entity.DailyVisit;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import org.apache.ibatis.annotations.Mapper;
7 | import org.apache.ibatis.annotations.Param;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | *
13 | * 日均访问量 Mapper 接口
14 | *
15 | *
16 | * @author apecode
17 | * @since 2022-05-26
18 | */
19 | @Mapper
20 | public interface DailyVisitMapper extends BaseMapper {
21 |
22 | /**
23 | * @description: 用户几天访问量统计列表
24 | * @param day
25 | * @return {@link List}
26 | * @auther apecode
27 | * @date 2022/7/14 0:24
28 | */
29 | List listAFewDaysVisit(@Param("day") int day);
30 | }
31 |
--------------------------------------------------------------------------------
/blog-springboot/blog-service/src/main/java/cn/apecode/mapper/LoginLogMapper.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.mapper;
2 |
3 | import cn.apecode.dto.LoginLogBackDto;
4 | import cn.apecode.entity.LoginLog;
5 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6 | import org.apache.ibatis.annotations.Mapper;
7 | import org.apache.ibatis.annotations.Param;
8 |
9 | import java.util.List;
10 |
11 | /**
12 | *
13 | * 登录日志 Mapper 接口
14 | *
15 | *
16 | * @author apecode
17 | * @since 2022-05-26
18 | */
19 | @Mapper
20 | public interface LoginLogMapper extends BaseMapper {
21 |
22 | /**
23 | * @description: 获取登录日志
24 | * @param limitCurrent
25 | * @param size
26 | * @return {@link List}
27 | * @auther apecode
28 | * @date 2022/7/10 16:48
29 | */
30 | List listLoginLog(@Param("current") Long limitCurrent, @Param("size") Long size);
31 | }
32 |
--------------------------------------------------------------------------------
/blog-springboot/blog-service/src/main/java/cn/apecode/mapper/LoginQqMapper.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.mapper;
2 |
3 | import cn.apecode.entity.LoginQq;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Mapper;
6 |
7 | /**
8 | *
9 | * QQ登录 Mapper 接口
10 | *
11 | *
12 | * @author apecode
13 | * @since 2023-01-05
14 | */
15 | @Mapper
16 | public interface LoginQqMapper extends BaseMapper {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/blog-springboot/blog-service/src/main/java/cn/apecode/mapper/MailLogMapper.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.mapper;
2 |
3 | import cn.apecode.dto.MailLogBackDto;
4 | import cn.apecode.entity.MailLog;
5 | import cn.apecode.vo.ConditionVo;
6 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
7 | import org.apache.ibatis.annotations.Mapper;
8 | import org.apache.ibatis.annotations.Param;
9 |
10 | import java.util.List;
11 |
12 | /**
13 | *
14 | * 邮件发送记录 Mapper 接口
15 | *
16 | *
17 | * @author apecode
18 | * @since 2022-05-26
19 | */
20 | @Mapper
21 | public interface MailLogMapper extends BaseMapper {
22 |
23 | /**
24 | * @param limitCurrent
25 | * @param size
26 | * @param condition
27 | * @return {@link List}
28 | * @description: 获取邮件日志
29 | * @auther apecode
30 | * @date 2022/7/13 19:05
31 | */
32 | List listMailLog(@Param("current") Long limitCurrent, @Param("size") Long size, @Param("condition") ConditionVo condition);
33 | }
34 |
--------------------------------------------------------------------------------
/blog-springboot/blog-service/src/main/java/cn/apecode/mapper/MenuMapper.java:
--------------------------------------------------------------------------------
1 | package cn.apecode.mapper;
2 |
3 | import cn.apecode.entity.Menu;
4 | import com.baomidou.mybatisplus.core.mapper.BaseMapper;
5 | import org.apache.ibatis.annotations.Mapper;
6 | import org.apache.ibatis.annotations.Param;
7 |
8 | import java.util.List;
9 |
10 | /**
11 | *
12 | * 后台菜单 Mapper 接口
13 | *
14 | *
15 | * @author apecode
16 | * @since 2022-05-26
17 | */
18 | @Mapper
19 | public interface MenuMapper extends BaseMapper