From 319e69288409f360e78c9a68e699fe67e5850f65 Mon Sep 17 00:00:00 2001 From: ChiveHao Date: Tue, 15 Oct 2024 03:29:17 +0800 Subject: [PATCH] =?UTF-8?q?optimize:=20=E6=8F=90=E4=BE=9B=E7=BB=99?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E7=9A=84=E5=86=85=E9=83=A8=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20(#686)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 添加TagOperate以支持插件对标签的查询和新增 * feat: 出于安全性考虑插件的内部接口移除所有的删除方法 * build: upgrade to v0.16.0 --- CHANGELOG.MD | 6 ++-- .../core/attachment/AttachmentOperate.java | 6 ---- .../AttachmentReferenceOperate.java | 5 --- .../collection/EpisodeCollectionOperate.java | 2 -- .../collection/SubjectCollectionOperate.java | 2 -- .../api/core/subject/SubjectOperate.java | 1 - .../core/subject/SubjectRelationOperate.java | 1 - .../subject/SubjectSyncPlatformOperate.java | 2 -- .../run/ikaros/api/core/tag/TagOperate.java | 14 ++++++++ gradle.properties | 2 +- .../operator/AttachmentOperator.java | 11 ------ .../operator/AttachmentReferenceOperator.java | 12 ------- .../collection/EpisodeCollectionOperator.java | 5 --- .../collection/SubjectCollectionOperator.java | 5 --- .../server/core/subject/SubjectOperator.java | 5 --- .../core/subject/SubjectRelationOperator.java | 4 --- .../subject/SubjectSyncPlatformOperator.java | 5 --- .../server/core/tag/DefaultTagOperator.java | 35 +++++++++++++++++++ .../server/core/tag/DefaultTagService.java | 15 ++++++-- 19 files changed, 66 insertions(+), 72 deletions(-) create mode 100644 api/src/main/java/run/ikaros/api/core/tag/TagOperate.java create mode 100644 server/src/main/java/run/ikaros/server/core/tag/DefaultTagOperator.java diff --git a/CHANGELOG.MD b/CHANGELOG.MD index 34b23984c..5a4f4a67a 100644 --- a/CHANGELOG.MD +++ b/CHANGELOG.MD @@ -2,7 +2,7 @@ 更新日志文档,版本顺序从新到旧,最新版本在最前(上)面。 -# 0.15.11 +# 0.16.0 ## 新特性 @@ -10,7 +10,9 @@ ## 插件支持 -- 添加`MetaOperate`以支持插件调用三方元数据插件条目查寻 +- 添加`MetaOperate`以支持插件调用三方元数据插件条目查询 +- 添加`TagOperate`以支持插件对标签的查询和新增 +- 出于安全性考虑插件的内部接口移除所有的删除方法 # 0.15.10 diff --git a/api/src/main/java/run/ikaros/api/core/attachment/AttachmentOperate.java b/api/src/main/java/run/ikaros/api/core/attachment/AttachmentOperate.java index cd8a3f08f..f2d8582d6 100644 --- a/api/src/main/java/run/ikaros/api/core/attachment/AttachmentOperate.java +++ b/api/src/main/java/run/ikaros/api/core/attachment/AttachmentOperate.java @@ -13,8 +13,6 @@ public interface AttachmentOperate extends AllowPluginOperate { Mono> listByCondition(AttachmentSearchCondition searchCondition); - Mono removeById(Long attachmentId); - Mono upload(AttachmentUploadCondition uploadCondition); Mono findById(Long attachmentId); @@ -22,10 +20,6 @@ public interface AttachmentOperate extends AllowPluginOperate { Mono findByTypeAndParentIdAndName(AttachmentType type, @Nullable Long parentId, String name); - Mono removeByTypeAndParentIdAndName( - AttachmentType type, @Nullable Long parentId, String name); - - Mono createDirectory(@Nullable Long parentId, @NotBlank String name); Mono existsByParentIdAndName(@Nullable Long parentId, String name); diff --git a/api/src/main/java/run/ikaros/api/core/attachment/AttachmentReferenceOperate.java b/api/src/main/java/run/ikaros/api/core/attachment/AttachmentReferenceOperate.java index 750ed8db7..cd0f7cfae 100644 --- a/api/src/main/java/run/ikaros/api/core/attachment/AttachmentReferenceOperate.java +++ b/api/src/main/java/run/ikaros/api/core/attachment/AttachmentReferenceOperate.java @@ -11,11 +11,6 @@ public interface AttachmentReferenceOperate extends AllowPluginOperate { Flux findAllByTypeAndAttachmentId( AttachmentReferenceType type, Long attachmentId); - Mono removeById(Long attachmentRefId); - - Mono removeByTypeAndAttachmentIdAndReferenceId( - AttachmentReferenceType type, Long attachmentId, Long referenceId); - Mono matchingAttachmentsAndSubjectEpisodes(Long subjectId, Long[] attachmentIds); Mono matchingAttachmentsAndSubjectEpisodes(Long subjectId, Long[] attachmentIds, diff --git a/api/src/main/java/run/ikaros/api/core/collection/EpisodeCollectionOperate.java b/api/src/main/java/run/ikaros/api/core/collection/EpisodeCollectionOperate.java index 24561e216..493efd0f4 100644 --- a/api/src/main/java/run/ikaros/api/core/collection/EpisodeCollectionOperate.java +++ b/api/src/main/java/run/ikaros/api/core/collection/EpisodeCollectionOperate.java @@ -5,8 +5,6 @@ public interface EpisodeCollectionOperate extends CollectionOperate { Mono create(Long userId, Long episodeId); - Mono remove(Long userId, Long episodeId); - Mono findByUserIdAndEpisodeId(Long userId, Long episodeId); Mono updateEpisodeCollectionProgress(Long userId, Long episodeId, diff --git a/api/src/main/java/run/ikaros/api/core/collection/SubjectCollectionOperate.java b/api/src/main/java/run/ikaros/api/core/collection/SubjectCollectionOperate.java index 7adb3783d..e3e79e28d 100644 --- a/api/src/main/java/run/ikaros/api/core/collection/SubjectCollectionOperate.java +++ b/api/src/main/java/run/ikaros/api/core/collection/SubjectCollectionOperate.java @@ -9,8 +9,6 @@ public interface SubjectCollectionOperate extends CollectionOperate { Mono collect(Long userId, Long subjectId, CollectionType type, Boolean isPrivate); - Mono unCollect(Long userId, Long subjectId); - Mono findCollection(Long userId, Long subjectId); Mono> findCollections(Long userId, Integer page, diff --git a/api/src/main/java/run/ikaros/api/core/subject/SubjectOperate.java b/api/src/main/java/run/ikaros/api/core/subject/SubjectOperate.java index ece643e56..9e0cf3083 100644 --- a/api/src/main/java/run/ikaros/api/core/subject/SubjectOperate.java +++ b/api/src/main/java/run/ikaros/api/core/subject/SubjectOperate.java @@ -19,7 +19,6 @@ public interface SubjectOperate extends AllowPluginOperate { Mono update(Subject subject); - Mono removeById(Long id); Mono syncByPlatform(@Nullable Long subjectId, SubjectSyncPlatform platform, String platformId); diff --git a/api/src/main/java/run/ikaros/api/core/subject/SubjectRelationOperate.java b/api/src/main/java/run/ikaros/api/core/subject/SubjectRelationOperate.java index b305d8bcb..f52b08b15 100644 --- a/api/src/main/java/run/ikaros/api/core/subject/SubjectRelationOperate.java +++ b/api/src/main/java/run/ikaros/api/core/subject/SubjectRelationOperate.java @@ -12,5 +12,4 @@ public interface SubjectRelationOperate extends AllowPluginOperate { Mono createSubjectRelation(SubjectRelation subjectRelation); - Mono removeSubjectRelation(SubjectRelation subjectRelation); } diff --git a/api/src/main/java/run/ikaros/api/core/subject/SubjectSyncPlatformOperate.java b/api/src/main/java/run/ikaros/api/core/subject/SubjectSyncPlatformOperate.java index 2014d8e39..916a49da9 100644 --- a/api/src/main/java/run/ikaros/api/core/subject/SubjectSyncPlatformOperate.java +++ b/api/src/main/java/run/ikaros/api/core/subject/SubjectSyncPlatformOperate.java @@ -14,8 +14,6 @@ public interface SubjectSyncPlatformOperate extends AllowPluginOperate { Mono save(SubjectSync subjectSync); - Mono remove(SubjectSync subjectSync); - Flux findSubjectSyncsBySubjectId(long subjectId); Mono findSubjectSyncBySubjectIdAndPlatform(long subjectId, diff --git a/api/src/main/java/run/ikaros/api/core/tag/TagOperate.java b/api/src/main/java/run/ikaros/api/core/tag/TagOperate.java new file mode 100644 index 000000000..600397816 --- /dev/null +++ b/api/src/main/java/run/ikaros/api/core/tag/TagOperate.java @@ -0,0 +1,14 @@ +package run.ikaros.api.core.tag; + +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import run.ikaros.api.plugin.AllowPluginOperate; +import run.ikaros.api.store.enums.TagType; + +public interface TagOperate extends AllowPluginOperate { + Flux findAll(TagType type, Long masterId, Long userId, String name); + + Flux findSubjectTags(Long subjectId); + + Mono create(Tag tag); +} diff --git a/gradle.properties b/gradle.properties index 425fb5a31..e6bc754dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=0.15.11 +version=0.16.0 diff --git a/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentOperator.java b/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentOperator.java index b630e9fc5..917f435ab 100644 --- a/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentOperator.java +++ b/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentOperator.java @@ -31,11 +31,6 @@ public Mono> listByCondition(AttachmentSearchCondition se return service.listByCondition(searchCondition); } - @Override - public Mono removeById(Long attachmentId) { - return service.removeById(attachmentId); - } - @Override public Mono upload(AttachmentUploadCondition uploadCondition) { return service.upload(uploadCondition); @@ -52,12 +47,6 @@ public Mono findByTypeAndParentIdAndName(AttachmentType type, return service.findByTypeAndParentIdAndName(type, parentId, name); } - @Override - public Mono removeByTypeAndParentIdAndName(AttachmentType type, @Nullable Long parentId, - String name) { - return service.removeByTypeAndParentIdAndName(type, parentId, name); - } - @Override public Mono createDirectory(@Nullable Long parentId, String name) { return service.createDirectory(parentId, name); diff --git a/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentReferenceOperator.java b/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentReferenceOperator.java index b65014c36..230e9e925 100644 --- a/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentReferenceOperator.java +++ b/server/src/main/java/run/ikaros/server/core/attachment/operator/AttachmentReferenceOperator.java @@ -29,18 +29,6 @@ public Flux findAllByTypeAndAttachmentId(AttachmentReferenc return service.findAllByTypeAndAttachmentId(type, attachmentId); } - @Override - public Mono removeById(Long attachmentRefId) { - return service.removeById(attachmentRefId); - } - - @Override - public Mono removeByTypeAndAttachmentIdAndReferenceId(AttachmentReferenceType type, - Long attachmentId, - Long referenceId) { - return service.removeByTypeAndAttachmentIdAndReferenceId(type, attachmentId, referenceId); - } - @Override public Mono matchingAttachmentsAndSubjectEpisodes(Long subjectId, Long[] attachmentIds) { return service.matchingAttachmentsAndSubjectEpisodes(subjectId, attachmentIds); diff --git a/server/src/main/java/run/ikaros/server/core/collection/EpisodeCollectionOperator.java b/server/src/main/java/run/ikaros/server/core/collection/EpisodeCollectionOperator.java index 066471940..a6b5b7466 100644 --- a/server/src/main/java/run/ikaros/server/core/collection/EpisodeCollectionOperator.java +++ b/server/src/main/java/run/ikaros/server/core/collection/EpisodeCollectionOperator.java @@ -21,11 +21,6 @@ public Mono create(Long userId, Long episodeId) { return service.create(userId, episodeId); } - @Override - public Mono remove(Long userId, Long episodeId) { - return service.remove(userId, episodeId); - } - @Override public Mono findByUserIdAndEpisodeId(Long userId, Long episodeId) { return service.findByUserIdAndEpisodeId(userId, episodeId); diff --git a/server/src/main/java/run/ikaros/server/core/collection/SubjectCollectionOperator.java b/server/src/main/java/run/ikaros/server/core/collection/SubjectCollectionOperator.java index 3e45bc00c..eda32bb0c 100644 --- a/server/src/main/java/run/ikaros/server/core/collection/SubjectCollectionOperator.java +++ b/server/src/main/java/run/ikaros/server/core/collection/SubjectCollectionOperator.java @@ -22,11 +22,6 @@ public Mono collect(Long userId, Long subjectId, CollectionType type, Bool return service.collect(userId, subjectId, type, isPrivate); } - @Override - public Mono unCollect(Long userId, Long subjectId) { - return service.unCollect(userId, subjectId); - } - @Override public Mono findCollection(Long userId, Long subjectId) { return service.findCollection(userId, subjectId); diff --git a/server/src/main/java/run/ikaros/server/core/subject/SubjectOperator.java b/server/src/main/java/run/ikaros/server/core/subject/SubjectOperator.java index 639e270e7..5767752f0 100644 --- a/server/src/main/java/run/ikaros/server/core/subject/SubjectOperator.java +++ b/server/src/main/java/run/ikaros/server/core/subject/SubjectOperator.java @@ -50,11 +50,6 @@ public Mono update(Subject subject) { return subjectService.update(subject); } - @Override - public Mono removeById(Long id) { - return subjectService.deleteById(id); - } - @Override public Mono syncByPlatform(@Nullable Long subjectId, SubjectSyncPlatform platform, String platformId) { diff --git a/server/src/main/java/run/ikaros/server/core/subject/SubjectRelationOperator.java b/server/src/main/java/run/ikaros/server/core/subject/SubjectRelationOperator.java index 6eab9dd4d..8ebb22213 100644 --- a/server/src/main/java/run/ikaros/server/core/subject/SubjectRelationOperator.java +++ b/server/src/main/java/run/ikaros/server/core/subject/SubjectRelationOperator.java @@ -34,8 +34,4 @@ public Mono createSubjectRelation(SubjectRelation subjectRelati return subjectRelationService.createSubjectRelation(subjectRelation); } - @Override - public Mono removeSubjectRelation(SubjectRelation subjectRelation) { - return subjectRelationService.removeSubjectRelation(subjectRelation); - } } diff --git a/server/src/main/java/run/ikaros/server/core/subject/SubjectSyncPlatformOperator.java b/server/src/main/java/run/ikaros/server/core/subject/SubjectSyncPlatformOperator.java index 363cf6725..3d667c56e 100644 --- a/server/src/main/java/run/ikaros/server/core/subject/SubjectSyncPlatformOperator.java +++ b/server/src/main/java/run/ikaros/server/core/subject/SubjectSyncPlatformOperator.java @@ -37,11 +37,6 @@ public Mono save(SubjectSync subjectSync) { return service.save(subjectSync); } - @Override - public Mono remove(SubjectSync subjectSync) { - return service.remove(subjectSync); - } - @Override public Flux findSubjectSyncsBySubjectId(long subjectId) { return service.findSubjectSyncsBySubjectId(subjectId); diff --git a/server/src/main/java/run/ikaros/server/core/tag/DefaultTagOperator.java b/server/src/main/java/run/ikaros/server/core/tag/DefaultTagOperator.java new file mode 100644 index 000000000..48df7d883 --- /dev/null +++ b/server/src/main/java/run/ikaros/server/core/tag/DefaultTagOperator.java @@ -0,0 +1,35 @@ +package run.ikaros.server.core.tag; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import run.ikaros.api.core.tag.SubjectTag; +import run.ikaros.api.core.tag.Tag; +import run.ikaros.api.core.tag.TagOperate; +import run.ikaros.api.store.enums.TagType; + +@Slf4j +@Service +public class DefaultTagOperator implements TagOperate { + private final TagService tagService; + + public DefaultTagOperator(TagService tagService) { + this.tagService = tagService; + } + + @Override + public Flux findAll(TagType type, Long masterId, Long userId, String name) { + return tagService.findAll(type, masterId, userId, name); + } + + @Override + public Flux findSubjectTags(Long subjectId) { + return tagService.findSubjectTags(subjectId); + } + + @Override + public Mono create(Tag tag) { + return tagService.create(tag); + } +} diff --git a/server/src/main/java/run/ikaros/server/core/tag/DefaultTagService.java b/server/src/main/java/run/ikaros/server/core/tag/DefaultTagService.java index 31ae904a0..69d513bc6 100644 --- a/server/src/main/java/run/ikaros/server/core/tag/DefaultTagService.java +++ b/server/src/main/java/run/ikaros/server/core/tag/DefaultTagService.java @@ -17,6 +17,7 @@ import run.ikaros.api.infra.exception.NotFoundException; import run.ikaros.api.infra.utils.StringUtils; import run.ikaros.api.store.enums.TagType; +import run.ikaros.server.core.user.UserService; import run.ikaros.server.store.entity.TagEntity; import run.ikaros.server.store.repository.TagRepository; @@ -25,10 +26,17 @@ public class DefaultTagService implements TagService { private final TagRepository tagRepository; private final R2dbcEntityTemplate r2dbcEntityTemplate; + private final UserService userService; - public DefaultTagService(TagRepository tagRepository, R2dbcEntityTemplate r2dbcEntityTemplate) { + /** + * Construct. + */ + public DefaultTagService(TagRepository tagRepository, + R2dbcEntityTemplate r2dbcEntityTemplate, + UserService userService) { this.tagRepository = tagRepository; this.r2dbcEntityTemplate = r2dbcEntityTemplate; + this.userService = userService; } @Override @@ -76,8 +84,9 @@ public Mono create(Tag tag) { Assert.notNull(tag.getType(), "'type' must not null."); Assert.isTrue(tag.getMasterId() >= 0, "'masterId' must >=0."); Assert.hasText(tag.getName(), "'name' must has text."); - return Mono.just(tag) - .flatMap(tag1 -> copyProperties(tag1, new TagEntity())) + return userService.getUserIdFromSecurityContext() + .map(tag::setUserId) + .flatMap(t -> copyProperties(t, new TagEntity())) .flatMap(tagRepository::save) .flatMap(tagEntity -> copyProperties(tagEntity, tag)); }