gitextract_r94k4dmb/ ├── .gitignore ├── README.md ├── acimage_admin/ │ ├── .gitignore │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── acimage/ │ │ │ └── admin/ │ │ │ ├── AdminApplication.java │ │ │ ├── config/ │ │ │ │ ├── WebMvcConfig.java │ │ │ │ └── mybatis/ │ │ │ │ ├── CommunityDataSourceConfig.java │ │ │ │ ├── GlobalConfigBean.java │ │ │ │ └── ImageDataSourceConfig.java │ │ │ ├── dao/ │ │ │ │ ├── community/ │ │ │ │ │ ├── CategoryDao.java │ │ │ │ │ ├── CommentDao.java │ │ │ │ │ ├── HomeCarouselDao.java │ │ │ │ │ └── TopicDao.java │ │ │ │ ├── sys/ │ │ │ │ │ ├── ApiDao.java │ │ │ │ │ ├── AuthorizeDao.java │ │ │ │ │ ├── PermissionDao.java │ │ │ │ │ ├── RoleDao.java │ │ │ │ │ └── UserRoleDao.java │ │ │ │ └── user/ │ │ │ │ ├── UserDao.java │ │ │ │ └── UserPrivacyDao.java │ │ │ ├── global/ │ │ │ │ └── consts/ │ │ │ │ └── ModuleConstants.java │ │ │ ├── model/ │ │ │ │ ├── request/ │ │ │ │ │ ├── AdminLoginReq.java │ │ │ │ │ ├── ApiAddReq.java │ │ │ │ │ ├── ApiModifyReq.java │ │ │ │ │ ├── ApiQueryReq.java │ │ │ │ │ ├── CarouselAddReq.java │ │ │ │ │ ├── CarouselModifyReq.java │ │ │ │ │ ├── CommentQueryReq.java │ │ │ │ │ ├── PermissionAddReq.java │ │ │ │ │ ├── PermissionModifyReq.java │ │ │ │ │ ├── RoleAddReq.java │ │ │ │ │ ├── RoleModifyReq.java │ │ │ │ │ ├── TopicQueryReq.java │ │ │ │ │ └── UserQueryReq.java │ │ │ │ └── vo/ │ │ │ │ └── WebsiteDataVo.java │ │ │ ├── service/ │ │ │ │ ├── api/ │ │ │ │ │ ├── ApiQueryService.java │ │ │ │ │ ├── ApiWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── ApiQueryServiceImpl.java │ │ │ │ │ └── ApiWriteServiceImpl.java │ │ │ │ ├── authorize/ │ │ │ │ │ ├── AuthorizeQueryService.java │ │ │ │ │ ├── AuthorizeWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── AuthorizeQueryServiceImpl.java │ │ │ │ │ └── AuthorizeWriteServiceImpl.java │ │ │ │ ├── category/ │ │ │ │ │ ├── CategoryQueryService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── CategoryQueryServiceImpl.java │ │ │ │ ├── comment/ │ │ │ │ │ ├── CommentQueryService.java │ │ │ │ │ ├── CommentWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CommentQueryServiceImpl.java │ │ │ │ │ └── CommentWriteServiceImpl.java │ │ │ │ ├── homecarousel/ │ │ │ │ │ ├── HomeCarouselQueryService.java │ │ │ │ │ ├── HomeCarouselWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── HomeCarouselQueryServiceImpl.java │ │ │ │ │ └── HomeCarouselWriteServiceImpl.java │ │ │ │ ├── login/ │ │ │ │ │ ├── LoginService.java │ │ │ │ │ ├── VerifyCodeService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── LoginServiceImpl.java │ │ │ │ │ └── VerifyCodeServiceImpl.java │ │ │ │ ├── permission/ │ │ │ │ │ ├── PermissionQueryService.java │ │ │ │ │ ├── PermissionWriteSercice.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── PermissionQueryServiceImpl.java │ │ │ │ │ └── PermissionWriteServiceImpl.java │ │ │ │ ├── role/ │ │ │ │ │ ├── RoleQueryService.java │ │ │ │ │ ├── RoleWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── RoleQueryServiceImpl.java │ │ │ │ │ └── RoleWriteServiceImpl.java │ │ │ │ ├── topic/ │ │ │ │ │ ├── TopicQueryService.java │ │ │ │ │ ├── TopicWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── TopicQueryServiceImpl.java │ │ │ │ │ └── TopicWriteServiceImpl.java │ │ │ │ ├── user/ │ │ │ │ │ ├── UserQueryService.java │ │ │ │ │ ├── UserWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── UserQueryServiceImpl.java │ │ │ │ │ └── UserWriteServiceImpl.java │ │ │ │ ├── userrole/ │ │ │ │ │ ├── UserRoleQueryService.java │ │ │ │ │ ├── UserRoleWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── UserRoleQueryServiceImpl.java │ │ │ │ │ └── UserRoleWriteServiceImpl.java │ │ │ │ └── websitedata/ │ │ │ │ ├── WebsiteDataService.java │ │ │ │ └── impl/ │ │ │ │ └── WebsiteDataServiceImpl.java │ │ │ └── web/ │ │ │ └── controller/ │ │ │ ├── AdminLoginController.java │ │ │ ├── ApiOperateController.java │ │ │ ├── ApiQueryController.java │ │ │ ├── AuthorizeOperateController.java │ │ │ ├── AuthorizeQueryController.java │ │ │ ├── CategoryController.java │ │ │ ├── CommentOperateController.java │ │ │ ├── CommentQueryController.java │ │ │ ├── HomeCarouselController.java │ │ │ ├── PermissionOperateController.java │ │ │ ├── PermissionQueryController.java │ │ │ ├── RoleController.java │ │ │ ├── TopicOperateController.java │ │ │ ├── TopicQueryController.java │ │ │ ├── UserQueryController.java │ │ │ ├── UserRoleOperateController.java │ │ │ └── WebsiteDataController.java │ │ └── resources/ │ │ ├── application-dev.yml │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── mapper/ │ │ ├── community/ │ │ │ └── TopicMapper.xml │ │ ├── image/ │ │ │ └── HomeCarouselMapper.xml │ │ ├── sys/ │ │ │ ├── ApiMapper.xml │ │ │ └── PermissionMapper.xml │ │ └── user/ │ │ └── TopicMapper.xml │ └── test/ │ └── java/ │ └── com/ │ └── acimage/ │ └── admin/ │ ├── AdminApplicationTest.java │ ├── dao/ │ │ ├── community/ │ │ │ ├── SpDaoTest.java │ │ │ └── TopicDaoTest.java │ │ └── sys/ │ │ └── ApiDaoTest.java │ └── service/ │ └── HomeCarouselWriteServiceTest.java ├── acimage_common/ │ ├── .gitignore │ ├── lib/ │ │ └── webp-imageio-core-0.1.0.jar │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── acimage/ │ │ └── common/ │ │ ├── CommonMain.java │ │ ├── config/ │ │ │ ├── EsConfig.java │ │ │ ├── EsProdConfig.java │ │ │ ├── FilterConfig.java │ │ │ ├── JacksonConfig.java │ │ │ ├── PaginationConfig.java │ │ │ └── RabbitmqConvertConfig.java │ │ ├── deprecated/ │ │ │ ├── IpInterceptorBak.java │ │ │ ├── JwtInterceptorBak.java │ │ │ ├── PermissionInterceptorBak.java │ │ │ ├── QiniuUtils.java │ │ │ ├── QiniuUtilsBak.java │ │ │ ├── UserCommunityStatistic.java │ │ │ ├── annotation/ │ │ │ │ ├── Authentication.java │ │ │ │ └── utils/ │ │ │ │ └── AuthenticationUtils.java │ │ │ └── typehandler/ │ │ │ └── MatchRuleTypeHandler.java │ │ ├── global/ │ │ │ ├── aop/ │ │ │ │ └── LogAdvice.java │ │ │ ├── consts/ │ │ │ │ ├── EsConstants.java │ │ │ │ ├── FileFormatConstants.java │ │ │ │ ├── HeaderKeyConstants.java │ │ │ │ ├── JwtConstants.java │ │ │ │ ├── MqConstants.java │ │ │ │ ├── StorePrefixConstants.java │ │ │ │ ├── SysKeyConstants.java │ │ │ │ └── TimeConstants.java │ │ │ ├── context/ │ │ │ │ └── UserContext.java │ │ │ ├── enums/ │ │ │ │ ├── AuthenticationType.java │ │ │ │ ├── MatchRule.java │ │ │ │ ├── MyHttpMethod.java │ │ │ │ ├── ServiceType.java │ │ │ │ └── TokenStatus.java │ │ │ └── exception/ │ │ │ ├── BaseException.java │ │ │ ├── BusinessException.java │ │ │ ├── NullTokenException.java │ │ │ └── SystemException.java │ │ ├── model/ │ │ │ ├── Index/ │ │ │ │ └── TopicIndex.java │ │ │ ├── domain/ │ │ │ │ ├── community/ │ │ │ │ │ ├── Category.java │ │ │ │ │ ├── CmtyUser.java │ │ │ │ │ ├── Comment.java │ │ │ │ │ ├── HomeCarousel.java │ │ │ │ │ ├── Star.java │ │ │ │ │ ├── Tag.java │ │ │ │ │ ├── TagTopic.java │ │ │ │ │ ├── Topic.java │ │ │ │ │ └── TopicHtml.java │ │ │ │ ├── image/ │ │ │ │ │ ├── Image.java │ │ │ │ │ └── ImageHash.java │ │ │ │ ├── sys/ │ │ │ │ │ ├── Api.java │ │ │ │ │ ├── Authorize.java │ │ │ │ │ ├── Permission.java │ │ │ │ │ ├── Role.java │ │ │ │ │ └── UserRole.java │ │ │ │ └── user/ │ │ │ │ ├── CommentMsg.java │ │ │ │ ├── User.java │ │ │ │ ├── UserMsg.java │ │ │ │ └── UserPrivacy.java │ │ │ ├── mq/ │ │ │ │ └── dto/ │ │ │ │ ├── EsAddDto.java │ │ │ │ ├── EsDeleteDto.java │ │ │ │ ├── EsUpdateByIdDto.java │ │ │ │ ├── EsUpdateByTermDto.java │ │ │ │ ├── ImageIdWithUrl.java │ │ │ │ ├── ObjectWithClass.java │ │ │ │ ├── SyncImagesUpdateDto.java │ │ │ │ ├── UserIdWithPhotoUrl.java │ │ │ │ └── UserIdWithUsername.java │ │ │ └── page/ │ │ │ └── MyPage.java │ │ ├── redis/ │ │ │ ├── QueryRedisAdvice.java │ │ │ ├── RequestLimitAdvice.java │ │ │ ├── annotation/ │ │ │ │ ├── KeyParam.java │ │ │ │ ├── QueryRedis.java │ │ │ │ └── RequestLimit.java │ │ │ ├── enums/ │ │ │ │ ├── DataType.java │ │ │ │ └── LimitTarget.java │ │ │ └── utils/ │ │ │ └── RedisAnnotationUtils.java │ │ ├── result/ │ │ │ ├── Code.java │ │ │ └── Result.java │ │ ├── service/ │ │ │ ├── TokenService.java │ │ │ └── impl/ │ │ │ └── TokenServiceImpl.java │ │ ├── utils/ │ │ │ ├── CookieUtils.java │ │ │ ├── EsUtils.java │ │ │ ├── ExceptionUtils.java │ │ │ ├── HtmlUtils.java │ │ │ ├── IdGenerator.java │ │ │ ├── ImageUtils.java │ │ │ ├── IpUtils.java │ │ │ ├── JwtUtils.java │ │ │ ├── LambdaUtils.java │ │ │ ├── RsaUtils.java │ │ │ ├── SensitiveWordUtils.java │ │ │ ├── SpringContextUtils.java │ │ │ ├── common/ │ │ │ │ ├── AopUtils.java │ │ │ │ ├── ArrayUtils.java │ │ │ │ ├── BeanUtils.java │ │ │ │ ├── FileUtils.java │ │ │ │ ├── JacksonUtils.java │ │ │ │ ├── ListUtils.java │ │ │ │ ├── PageUtils.java │ │ │ │ ├── PairUtils.java │ │ │ │ ├── ReflectUtils.java │ │ │ │ └── StringUtils.java │ │ │ ├── minio/ │ │ │ │ ├── MinioProperties.java │ │ │ │ └── MinioUtils.java │ │ │ └── redis/ │ │ │ ├── RedisLuaUtils.java │ │ │ └── RedisUtils.java │ │ └── web/ │ │ ├── exceptionhandler/ │ │ │ ├── ArgumentValidateExceptionHandler.java │ │ │ ├── GlobalExceptionHandler.java │ │ │ └── JwtExceptionHandler.java │ │ └── interceptor/ │ │ ├── AccessInterceptor.java │ │ └── JwtInterceptor.java │ └── resources/ │ ├── application-common.yml │ ├── application-qiniu-template.yml │ ├── lua/ │ │ ├── getAndCombineAndDelete.lua │ │ ├── incrementIfPresent.lua │ │ ├── incrementIfPresentForFieldKey.lua │ │ ├── incrementIfPresentForZSet.lua │ │ ├── requestLimit.lua │ │ └── setIfPresentForFieldKey.lua │ └── sensitive_word.txt ├── acimage_community/ │ ├── lib/ │ │ └── webp-imageio-core-0.1.0.jar │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── acimage/ │ │ │ └── community/ │ │ │ ├── CommunityApplication.java │ │ │ ├── dao/ │ │ │ │ ├── CategoryDao.java │ │ │ │ ├── CmtyUserDao.java │ │ │ │ ├── CommentDao.java │ │ │ │ ├── HomeCarrouselDao.java │ │ │ │ ├── ImageDao.java │ │ │ │ ├── StarDao.java │ │ │ │ ├── TagDao.java │ │ │ │ ├── TagTopicDao.java │ │ │ │ ├── TopicDao.java │ │ │ │ └── TopicHtmlDao.java │ │ │ ├── depreted/ │ │ │ │ ├── CmtyUserDaoBak.java │ │ │ │ ├── RabbitmqConvertConfig.java │ │ │ │ ├── UserMixWriteService.java │ │ │ │ ├── UserMixWriteServiceImpl.java │ │ │ │ └── userstatistic/ │ │ │ │ ├── UserCsQueryService.java │ │ │ │ ├── UserCsRankService.java │ │ │ │ ├── UserCsWriteService.java │ │ │ │ ├── consts/ │ │ │ │ │ └── KeyConstants.java │ │ │ │ └── impl/ │ │ │ │ ├── UserCsQueryServiceImpl.java │ │ │ │ ├── UserCsRankServiceImpl.java │ │ │ │ └── UserCsWriteServiceImpl.java │ │ │ ├── esdao/ │ │ │ │ └── UserEsDao.java │ │ │ ├── global/ │ │ │ │ ├── annotation/ │ │ │ │ │ ├── RecordPageView.java │ │ │ │ │ └── TopicId.java │ │ │ │ ├── aop/ │ │ │ │ │ └── RecordPageViewAdvice.java │ │ │ │ ├── config/ │ │ │ │ │ ├── JobFactory.java │ │ │ │ │ └── WebMvcConfig.java │ │ │ │ ├── consts/ │ │ │ │ │ ├── CommentKeyConstants.java │ │ │ │ │ ├── CoverImageConstants.java │ │ │ │ │ ├── PageSizeConstants.java │ │ │ │ │ ├── StarKeyConstants.java │ │ │ │ │ └── TopicKeyConstants.java │ │ │ │ └── enums/ │ │ │ │ ├── SortMode.java │ │ │ │ └── TopicAttribute.java │ │ │ ├── listener/ │ │ │ │ ├── CommentEventListener.java │ │ │ │ ├── PublishTopicEventListener.java │ │ │ │ ├── StarEventListener.java │ │ │ │ └── event/ │ │ │ │ ├── CommentEvent.java │ │ │ │ ├── StarEvent.java │ │ │ │ └── TopicEvent.java │ │ │ ├── model/ │ │ │ │ ├── request/ │ │ │ │ │ ├── CommentAddReq.java │ │ │ │ │ ├── CommentModifyReq.java │ │ │ │ │ ├── TopicAddReq.java │ │ │ │ │ ├── TopicModifyHtmlReq.java │ │ │ │ │ ├── TopicQueryByCategoryIdReq.java │ │ │ │ │ ├── TopicQueryBySortReq.java │ │ │ │ │ ├── TopicQueryByTagIdReq.java │ │ │ │ │ ├── TopicSearchReq.java │ │ │ │ │ ├── UserLoginReq.java │ │ │ │ │ └── UserRegisterReq.java │ │ │ │ └── vo/ │ │ │ │ └── TopicInfoVo.java │ │ │ ├── mq/ │ │ │ │ ├── config/ │ │ │ │ │ ├── SyncEsMqConfig.java │ │ │ │ │ ├── SyncImagesMqConfig.java │ │ │ │ │ └── UserMsgMqConfig.java │ │ │ │ ├── consumer/ │ │ │ │ │ ├── SyncEsConsumer.java │ │ │ │ │ └── SyncUserConsumer.java │ │ │ │ └── producer/ │ │ │ │ ├── SyncEsMqProducer.java │ │ │ │ ├── UserMsgMqProducer.java │ │ │ │ └── syncImagesMqProducer.java │ │ │ ├── runner/ │ │ │ │ ├── CreateIndexRunner.java │ │ │ │ └── PreheatApplicationRunner.java │ │ │ ├── schedule/ │ │ │ │ ├── UpdateActivityTimeJob.java │ │ │ │ ├── UpdateActivityTimeJobConfig.java │ │ │ │ ├── UpdateCommentCountJob.java │ │ │ │ ├── UpdateCommentCountJobConfig.java │ │ │ │ ├── UpdatePageViewJob.java │ │ │ │ ├── UpdatePageViewJobConfig.java │ │ │ │ ├── UpdateStarCountJob.java │ │ │ │ └── UpdateStarCountJobConfig.java │ │ │ ├── service/ │ │ │ │ ├── categoty/ │ │ │ │ │ ├── CategoryQueryService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── CategoryQueryServiceImpl.java │ │ │ │ ├── cmtyuser/ │ │ │ │ │ ├── CmtyUserQueryService.java │ │ │ │ │ ├── CmtyUserRankService.java │ │ │ │ │ ├── CmtyUserWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CmtyUserQueryServiceImpl.java │ │ │ │ │ ├── CmtyUserRankServiceImpl.java │ │ │ │ │ └── CmtyUserWriteServiceImpl.java │ │ │ │ ├── comment/ │ │ │ │ │ ├── CommentInfoQueryService.java │ │ │ │ │ ├── CommentQueryService.java │ │ │ │ │ ├── CommentWriteService.java │ │ │ │ │ ├── annotation/ │ │ │ │ │ │ ├── Operation.java │ │ │ │ │ │ └── UpdateCcByReturn.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CommentInfoQueryServiceImpl.java │ │ │ │ │ ├── CommentQueryServiceImpl.java │ │ │ │ │ └── CommentWriteServiceImpl.java │ │ │ │ ├── homecarousel/ │ │ │ │ │ ├── HomeCarouselQueryService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── HomeCarouselQueryServiceImpl.java │ │ │ │ ├── star/ │ │ │ │ │ ├── StarMixQueryService.java │ │ │ │ │ ├── StarQueryService.java │ │ │ │ │ ├── StarWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── StarMixQueryServiceImpl.java │ │ │ │ │ ├── StarQueryServiceImpl.java │ │ │ │ │ └── StarWriteServiceImpl.java │ │ │ │ ├── tag/ │ │ │ │ │ ├── TagQueryService.java │ │ │ │ │ ├── TagTopicQueryService.java │ │ │ │ │ ├── TagTopicWriteService.java │ │ │ │ │ ├── TagWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── TagQueryServiceImpl.java │ │ │ │ │ ├── TagTopicQueryServiceImpl.java │ │ │ │ │ ├── TagTopicWriteServiceImpl.java │ │ │ │ │ └── TagWriteServiceImpl.java │ │ │ │ └── topic/ │ │ │ │ ├── Impl/ │ │ │ │ │ ├── TopicEsSearchServiceImpl.java │ │ │ │ │ ├── TopicHtmlQueryServiceImpl.java │ │ │ │ │ ├── TopicHtmlWriteServiceImpl.java │ │ │ │ │ ├── TopicInfoQueryServiceImpl.java │ │ │ │ │ ├── TopicInfoWriteServiceImpl.java │ │ │ │ │ ├── TopicPreheatServiceImpl.java │ │ │ │ │ ├── TopicQueryServiceImpl.java │ │ │ │ │ ├── TopicRankQueryServiceImpl.java │ │ │ │ │ ├── TopicRankWriteServiceImpl.java │ │ │ │ │ ├── TopicSpAttrQueryServiceImpl.java │ │ │ │ │ ├── TopicSpAttrWriteServiceImpl.java │ │ │ │ │ └── TopicWriteServiceImpl.java │ │ │ │ ├── TopicEsSearchService.java │ │ │ │ ├── TopicHtmlQueryService.java │ │ │ │ ├── TopicHtmlWriteService.java │ │ │ │ ├── TopicInfoQueryService.java │ │ │ │ ├── TopicInfoWriteService.java │ │ │ │ ├── TopicPreheatService.java │ │ │ │ ├── TopicQueryService.java │ │ │ │ ├── TopicRankQueryService.java │ │ │ │ ├── TopicRankWriteService.java │ │ │ │ ├── TopicSpAttrQueryService.java │ │ │ │ ├── TopicSpAttrWriteService.java │ │ │ │ └── TopicWriteService.java │ │ │ ├── utils/ │ │ │ │ └── RsaUtils.java │ │ │ └── web/ │ │ │ ├── controller/ │ │ │ │ ├── CategoryQueryController.java │ │ │ │ ├── CommentOperateController.java │ │ │ │ ├── CommentQueryController.java │ │ │ │ ├── HomeCarouselQueryController.java │ │ │ │ ├── StarOperateController.java │ │ │ │ ├── StarQueryController.java │ │ │ │ ├── TagQueryController.java │ │ │ │ ├── TopicOperateController.java │ │ │ │ ├── TopicQueryController.java │ │ │ │ ├── TopicSearchController.java │ │ │ │ └── UserRankController.java │ │ │ └── provider/ │ │ │ ├── CmtyUserProvider.java │ │ │ ├── CommentProvider.java │ │ │ └── TopicProvider.java │ │ └── resources/ │ │ ├── application-dev.yml │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── mapper/ │ │ ├── CmtyUserMapper.xml │ │ ├── CommentMapper.xml │ │ ├── ImageMapper.xml │ │ ├── StarMapper.xml │ │ ├── TagTopicMapper.xml │ │ └── TopicMapper.xml │ └── test/ │ └── java/ │ └── com/ │ └── acimage/ │ └── community/ │ ├── CasualTest.java │ ├── CommunityApplicationTests.java │ ├── dao/ │ │ ├── CommentDaoTest.java │ │ ├── ImageDaoTest.java │ │ ├── StarDaoTest.java │ │ └── TopicDaoTest.java │ ├── service/ │ │ ├── CommentWriteServiceTest.java │ │ └── TopicEsSearchServiceTest.java │ └── utils/ │ └── RedisTest.java ├── acimage_feign/ │ ├── pom.xml │ └── src/ │ └── main/ │ └── java/ │ └── com/ │ └── acimage/ │ └── feign/ │ ├── FeignMain.java │ ├── client/ │ │ ├── CmtyUserClient.java │ │ ├── CommentClient.java │ │ ├── TopicClient.java │ │ └── UserClient.java │ ├── config/ │ │ ├── FallbackFactoryBean.java │ │ ├── FeignMultipartSupportConfig.java │ │ └── FeignRequestInterceptorConfig.java │ ├── depreted/ │ │ ├── FileClient.java │ │ └── ImageClient.java │ └── fallback/ │ ├── CmtyUserClientFallbackFactory.java │ ├── CommentClientFallbackFactory.java │ ├── ImageClientFallbackFactory.java │ ├── TopicClientFallbackFactory.java │ └── UserClientFallbackFactory.java ├── acimage_gateway/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── acimage/ │ │ │ └── gateway/ │ │ │ ├── GatewayApplication.java │ │ │ ├── apitree/ │ │ │ │ ├── ApiTree.java │ │ │ │ ├── ApiTreeFactory.java │ │ │ │ ├── ApiTreeUtils.java │ │ │ │ └── InitApiTreeApplicationRunner.java │ │ │ ├── config/ │ │ │ │ ├── KeySolverConfig.java │ │ │ │ └── RoleConfig.java │ │ │ ├── dao/ │ │ │ │ ├── ApiDao.java │ │ │ │ ├── AuthorizeDao.java │ │ │ │ ├── PermissionDao.java │ │ │ │ ├── RoleDao.java │ │ │ │ └── UserRoleDao.java │ │ │ ├── global/ │ │ │ │ └── consts/ │ │ │ │ └── NotationConstants.java │ │ │ ├── globalfilter/ │ │ │ │ ├── AuthenticationFilter.java │ │ │ │ ├── CustomWebsocketRoutingFilter.java │ │ │ │ ├── PermissionFilter.java │ │ │ │ ├── RemoveContextFilter.java │ │ │ │ └── RequestLimitFilter.java │ │ │ ├── schedule/ │ │ │ │ └── RefreshApiTreeSchedule.java │ │ │ └── serivce/ │ │ │ ├── ApiQueryService.java │ │ │ ├── AuthorizeQueryService.java │ │ │ ├── RoleQueryService.java │ │ │ ├── UserRoleQueryService.java │ │ │ └── impl/ │ │ │ ├── ApiQueryQueryServiceImpl.java │ │ │ ├── AuthorizeQueryServiceImpl.java │ │ │ ├── RoleQueryServiceImpl.java │ │ │ └── UserRoleQueryQueryServiceImpl.java │ │ └── resources/ │ │ ├── application-dev.yml │ │ ├── application.yml │ │ └── logback-spring.xml │ └── test/ │ └── java/ │ └── com/ │ └── acimage/ │ └── gateway/ │ ├── GatewayApplicationTest.java │ └── apitree/ │ └── ApiTreeTest.java ├── acimage_image/ │ ├── lib/ │ │ └── webp-imageio-core-0.1.0.jar │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── acimage/ │ │ │ └── image/ │ │ │ ├── ImageApplication.java │ │ │ ├── dao/ │ │ │ │ ├── ImageDao.java │ │ │ │ └── ImageHashDao.java │ │ │ ├── global/ │ │ │ │ ├── consts/ │ │ │ │ │ ├── MyFileConstants.java │ │ │ │ │ └── TopicImageKeyConstants.java │ │ │ │ └── context/ │ │ │ │ └── DirectoryContext.java │ │ │ ├── mq/ │ │ │ │ └── consumer/ │ │ │ │ └── SyncImagesConsumer.java │ │ │ ├── service/ │ │ │ │ ├── config/ │ │ │ │ │ └── DhashTaskPoolConfig.java │ │ │ │ ├── image/ │ │ │ │ │ ├── ImageMixWriteService.java │ │ │ │ │ ├── ImageQueryService.java │ │ │ │ │ ├── ImageWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── ImageMixWriteServiceImpl.java │ │ │ │ │ ├── ImageQueryServiceImpl.java │ │ │ │ │ └── ImageWriteServiceImpl.java │ │ │ │ ├── imagehash/ │ │ │ │ │ ├── ImageHashWriteService.java │ │ │ │ │ ├── SearchImageService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── ImageHashWriteServiceImpl.java │ │ │ │ │ └── SearchImageServiceImpl.java │ │ │ │ └── photo/ │ │ │ │ ├── PhotoService.java │ │ │ │ └── impl/ │ │ │ │ └── PhotoServiceImpl.java │ │ │ ├── utils/ │ │ │ │ ├── BitUtils.java │ │ │ │ ├── DhashUtils.java │ │ │ │ ├── ImageFileUtils.java │ │ │ │ └── ImageUtils.java │ │ │ └── web/ │ │ │ ├── config/ │ │ │ │ └── WebMvcConfig.java │ │ │ ├── controller/ │ │ │ │ ├── ImageOperateController.java │ │ │ │ ├── PhotoOperateController.java │ │ │ │ └── SearchImageController.java │ │ │ └── provider/ │ │ │ └── ImageProvider.java │ │ └── resources/ │ │ ├── application-dev.yml │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── mapper/ │ │ └── ImageMapper.xml │ └── test/ │ └── java/ │ └── com/ │ └── acimage/ │ └── image/ │ ├── CasualTest.java │ ├── ImageApplicationTests.java │ ├── dao/ │ │ ├── ImageDaoTest.java │ │ └── ImageHashDaoDaoTest.java │ ├── service/ │ │ ├── FileServiceTest.java │ │ └── SearchImageServiceTest.java │ └── utils/ │ └── ImageHashDaoUtilsTest.java ├── acimage_user/ │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── acimage/ │ │ │ └── user/ │ │ │ ├── UserApplication.java │ │ │ ├── dao/ │ │ │ │ ├── CommentMsgDao.java │ │ │ │ ├── UserDao.java │ │ │ │ ├── UserMsgDao.java │ │ │ │ └── UserPrivacyDao.java │ │ │ ├── global/ │ │ │ │ ├── config/ │ │ │ │ │ ├── WebMvcConfig.java │ │ │ │ │ └── WebSocketConfig.java │ │ │ │ └── consts/ │ │ │ │ ├── PageSizeConsts.java │ │ │ │ ├── StorePrefixConst.java │ │ │ │ └── WebSocketSessionConstants.java │ │ │ ├── model/ │ │ │ │ ├── request/ │ │ │ │ │ ├── UserLoginReq.java │ │ │ │ │ └── UserRegisterReq.java │ │ │ │ └── vo/ │ │ │ │ └── ProfileVo.java │ │ │ ├── mq/ │ │ │ │ ├── config/ │ │ │ │ │ └── SyncUserMqConfig.java │ │ │ │ ├── consumer/ │ │ │ │ │ └── UserMsgConsumer.java │ │ │ │ └── producer/ │ │ │ │ └── SyncUserMqProducer.java │ │ │ ├── service/ │ │ │ │ ├── commentmsg/ │ │ │ │ │ ├── CommentMsgQueryService.java │ │ │ │ │ ├── CommentMsgWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── CommentMsgQueryServiceImpl.java │ │ │ │ │ └── CommentMsgWriteServiceImpl.java │ │ │ │ ├── mail/ │ │ │ │ │ ├── MainService.java │ │ │ │ │ └── impl/ │ │ │ │ │ └── MailServiceImpl.java │ │ │ │ ├── user/ │ │ │ │ │ ├── LoginService.java │ │ │ │ │ ├── UserInfoService.java │ │ │ │ │ ├── UserQueryService.java │ │ │ │ │ ├── UserRankService.java │ │ │ │ │ ├── UserWriteService.java │ │ │ │ │ ├── consts/ │ │ │ │ │ │ └── KeyConstants.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── LoginServiceImpl.java │ │ │ │ │ ├── UserInfoServiceImpl.java │ │ │ │ │ ├── UserQueryServiceImpl.java │ │ │ │ │ ├── UserRankServiceImpl.java │ │ │ │ │ └── UserWriteServiceImpl.java │ │ │ │ ├── usermsg/ │ │ │ │ │ ├── UserMsgQueryService.java │ │ │ │ │ ├── UserMsgWriteService.java │ │ │ │ │ └── impl/ │ │ │ │ │ ├── UserMsgQueryServiceImpl.java │ │ │ │ │ └── UserMsgWriteServiceImpl.java │ │ │ │ └── verify/ │ │ │ │ ├── VerifyCodeService.java │ │ │ │ └── impl/ │ │ │ │ └── VerifyCodeServiceImpl.java │ │ │ └── web/ │ │ │ ├── controller/ │ │ │ │ ├── LoginController.java │ │ │ │ ├── MessageController.java │ │ │ │ ├── UserOperateController.java │ │ │ │ ├── UserQueryController.java │ │ │ │ └── VerifyCodeController.java │ │ │ ├── provider/ │ │ │ │ └── UserProvider.java │ │ │ └── websocket/ │ │ │ ├── MyHandshakeInterceptor.java │ │ │ └── MyWebSocketHandler.java │ │ └── resources/ │ │ ├── application-dev.yml │ │ ├── application.yml │ │ ├── logback-spring.xml │ │ └── mapper/ │ │ ├── CommentMsgMapper.xml │ │ └── UserMapper.xml │ └── test/ │ └── java/ │ └── com/ │ └── acimage/ │ └── user/ │ └── AppTest.java ├── doc/ │ └── sql/ │ ├── .gitignore │ ├── acimage_community.sql │ ├── acimage_image.sql │ ├── acimage_sys.sql │ └── acimage_user.sql ├── pom.xml ├── vue-manage-system/ │ ├── .github/ │ │ └── FUNDING.yml │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── README_EN.md │ ├── auto-imports.d.ts │ ├── components.d.ts │ ├── index.html │ ├── package.json │ ├── public/ │ │ ├── table.json │ │ └── template.xlsx │ ├── src/ │ │ ├── App.vue │ │ ├── api/ │ │ │ ├── HomeCarousel.ts │ │ │ ├── UserRole.ts │ │ │ ├── WebsiteData.ts │ │ │ ├── api.ts │ │ │ ├── authorize.ts │ │ │ ├── category.ts │ │ │ ├── comment.ts │ │ │ ├── index.ts │ │ │ ├── login.ts │ │ │ ├── permission.ts │ │ │ ├── role.ts │ │ │ ├── topic.ts │ │ │ └── user.ts │ │ ├── assets/ │ │ │ └── css/ │ │ │ ├── color-dark.css │ │ │ ├── icon.css │ │ │ └── main.css │ │ ├── components/ │ │ │ ├── header.vue │ │ │ ├── sidebar.vue │ │ │ └── tags.vue │ │ ├── config.ts │ │ ├── main.ts │ │ ├── router/ │ │ │ └── index.ts │ │ ├── store/ │ │ │ ├── permiss.ts │ │ │ ├── sidebar.ts │ │ │ ├── store.ts │ │ │ └── tags.ts │ │ ├── utils/ │ │ │ ├── CommonUtils.ts │ │ │ ├── MessageUtils.ts │ │ │ ├── StringUtils.ts │ │ │ ├── global.ts │ │ │ ├── request.ts │ │ │ ├── requestx.ts │ │ │ ├── result.ts │ │ │ └── utils.js │ │ ├── views/ │ │ │ ├── 403.vue │ │ │ ├── 404.vue │ │ │ ├── HomeCarousel/ │ │ │ │ └── HomeCarousel.vue │ │ │ ├── api/ │ │ │ │ └── api.vue │ │ │ ├── authorize/ │ │ │ │ └── authorize.vue │ │ │ ├── charts.vue │ │ │ ├── comment/ │ │ │ │ └── comment.vue │ │ │ ├── dashboard.vue │ │ │ ├── donate.vue │ │ │ ├── editor.vue │ │ │ ├── home.vue │ │ │ ├── icon.vue │ │ │ ├── login.vue │ │ │ ├── markdown.vue │ │ │ ├── permission/ │ │ │ │ └── permission.vue │ │ │ ├── permissionx.vue │ │ │ ├── role/ │ │ │ │ └── role.vue │ │ │ ├── table.vue │ │ │ ├── tabs.vue │ │ │ ├── topic/ │ │ │ │ └── topic.vue │ │ │ ├── upload.vue │ │ │ ├── user/ │ │ │ │ └── user.vue │ │ │ └── user.vue │ │ └── vite-env.d.ts │ ├── tsconfig.json │ ├── tsconfig.node.json │ └── vite.config.ts └── vue_acimage_web/ ├── .gitignore ├── README.md ├── babel.config.js ├── jsconfig.json ├── mock/ │ ├── HomeCarousel.js │ ├── UserRank.js │ ├── index.js │ └── topic.js ├── package.json ├── public/ │ ├── index.html │ ├── static/ │ │ └── css/ │ │ └── common.css │ └── tinymce/ │ ├── langs/ │ │ ├── README.md │ │ └── zh-Hans.js │ ├── license.txt │ ├── plugins/ │ │ └── emoticons/ │ │ └── js/ │ │ ├── emojiimages.js │ │ └── emojis.js │ └── tinymce.d.ts ├── src/ │ ├── App.vue │ ├── api/ │ │ ├── HomeCarousel.js │ │ ├── TopicSearch.js │ │ ├── UserRank.js │ │ ├── category.js │ │ ├── comment.js │ │ ├── image.js │ │ ├── login.js │ │ ├── message.js │ │ ├── photo.js │ │ ├── star.js │ │ ├── tag.js │ │ ├── topic.js │ │ └── user.js │ ├── components/ │ │ ├── BaseContainer/ │ │ │ ├── BaseContainer.css │ │ │ └── BaseContainer.vue │ │ ├── CategoryCard/ │ │ │ ├── CategoryCard.css │ │ │ └── CategoryCard.vue │ │ ├── EditBoard/ │ │ │ ├── EditBoard.css │ │ │ └── EditBoard.vue │ │ ├── FloatImage/ │ │ │ ├── FloatImage.css │ │ │ └── FloatImage.vue │ │ ├── HelloWorld.vue │ │ ├── HomeCarousel/ │ │ │ └── HomeCarousel.vue │ │ ├── MaskImage/ │ │ │ ├── MaskImage.css │ │ │ └── MaskImage.vue │ │ ├── MyHeader/ │ │ │ ├── MyHeader.css │ │ │ ├── MyHeader.vue │ │ │ └── MyNavigation/ │ │ │ └── MyNavigation.vue │ │ ├── ShowTinymce/ │ │ │ └── ShowTinymce.vue │ │ ├── TagCard/ │ │ │ ├── TagCard.css │ │ │ └── TagCard.vue │ │ ├── TopicCard/ │ │ │ ├── TopicCard.css │ │ │ └── TopicCard.vue │ │ ├── TopicList/ │ │ │ ├── TopicList.css │ │ │ └── TopicList.vue │ │ └── TopicRank/ │ │ ├── TopicRank.css │ │ └── TopicRank.vue │ ├── config.js │ ├── main.js │ ├── router/ │ │ └── index.js │ ├── store/ │ │ └── index.js │ ├── utils/ │ │ ├── CommonUtils.js │ │ ├── MessageUtils.js │ │ ├── StringUtils.js │ │ ├── global.js │ │ ├── request.js │ │ ├── result.js │ │ └── utils.js │ └── views/ │ ├── About/ │ │ ├── About.css │ │ └── About.vue │ ├── Forum/ │ │ ├── Forum.css │ │ └── Forum.vue │ ├── Home/ │ │ ├── Home.css │ │ ├── Home.vue │ │ └── UserRank/ │ │ ├── UserRank.css │ │ └── UserRank.vue │ ├── Login/ │ │ ├── Login.css │ │ └── Login.vue │ ├── MyActivity/ │ │ ├── MyActivity.css │ │ ├── MyActivity.vue │ │ ├── MyCommentActivity/ │ │ │ ├── MyCommentActivity.css │ │ │ └── MyCommentActivity.vue │ │ ├── MyStarActivity/ │ │ │ ├── MyStarActivity.css │ │ │ └── MyStarActivity.vue │ │ └── MyTopicActivity/ │ │ ├── MyTopicActivity.css │ │ └── MyTopicActivity.vue │ ├── MyMessage/ │ │ ├── CommentMessage/ │ │ │ ├── CommentMessage.css │ │ │ └── CommentMessage.vue │ │ ├── MyMessage.css │ │ └── MyMessage.vue │ ├── MyProfile/ │ │ ├── MyProfile.css │ │ └── MyProfile.vue │ ├── PublishTopic/ │ │ ├── PublishTopic.css │ │ └── PublishTopic.vue │ ├── SearchImage/ │ │ ├── SearchImage.css │ │ └── SearchImage.vue │ ├── SearchTopic/ │ │ ├── SearchTopic.css │ │ └── SearchTopic.vue │ └── TopicInfo/ │ ├── PublishComment/ │ │ ├── PublishComment.css │ │ └── PublishComment.vue │ ├── TopicInfo.css │ ├── TopicInfo.vue │ └── UserComment/ │ ├── UserComment.css │ └── UserComment.vue └── vue.config.js