From 29e43ae6697812b109f7c5be1ad39b3be881a18b Mon Sep 17 00:00:00 2001 From: Tim <135014430+nagisa77@users.noreply.github.com> Date: Tue, 8 Jul 2025 23:16:29 +0800 Subject: [PATCH] feat(search): enable comment result linking --- open-isle-cli/src/components/SearchDropdown.vue | 7 +++++-- .../com/openisle/controller/SearchController.java | 2 ++ .../java/com/openisle/service/SearchService.java | 12 ++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/open-isle-cli/src/components/SearchDropdown.vue b/open-isle-cli/src/components/SearchDropdown.vue index 4bee436a2..8666696d5 100644 --- a/open-isle-cli/src/components/SearchDropdown.vue +++ b/open-isle-cli/src/components/SearchDropdown.vue @@ -48,7 +48,8 @@ export default { text: r.text, type: r.type, subText: r.subText, - extra: r.extra + extra: r.extra, + postId: r.postId })) return results.value } @@ -76,7 +77,9 @@ export default { } else if (opt.type === 'user') { router.push(`/users/${opt.id}`) } else if (opt.type === 'comment') { - // code here + if (opt.postId) { + router.push(`/posts/${opt.postId}#comment-${opt.id}`) + } } selected.value = null keyword.value = '' diff --git a/src/main/java/com/openisle/controller/SearchController.java b/src/main/java/com/openisle/controller/SearchController.java index d9e49bf7d..dbc2d16f9 100644 --- a/src/main/java/com/openisle/controller/SearchController.java +++ b/src/main/java/com/openisle/controller/SearchController.java @@ -58,6 +58,7 @@ public class SearchController { dto.setText(r.text()); dto.setSubText(r.subText()); dto.setExtra(r.extra()); + dto.setPostId(r.postId()); return dto; }) .collect(Collectors.toList()); @@ -96,5 +97,6 @@ public class SearchController { private String text; private String subText; private String extra; + private Long postId; } } diff --git a/src/main/java/com/openisle/service/SearchService.java b/src/main/java/com/openisle/service/SearchService.java index 758583379..edfa55d62 100644 --- a/src/main/java/com/openisle/service/SearchService.java +++ b/src/main/java/com/openisle/service/SearchService.java @@ -52,6 +52,7 @@ public class SearchService { u.getId(), u.getUsername(), u.getIntroduction(), + null, null )); @@ -64,7 +65,8 @@ public class SearchService { p.getId(), p.getTitle(), p.getCategory().getName(), - extractSnippet(p.getContent(), keyword, false) + extractSnippet(p.getContent(), keyword, false), + null )), searchPostsByTitle(keyword).stream() .map(p -> new SearchResult( @@ -72,7 +74,8 @@ public class SearchService { p.getId(), p.getTitle(), p.getCategory().getName(), - extractSnippet(p.getContent(), keyword, true) + extractSnippet(p.getContent(), keyword, true), + null )) ) .collect(java.util.stream.Collectors.toMap( @@ -91,7 +94,8 @@ public class SearchService { c.getId(), extractSnippet(c.getContent(), keyword, false), c.getAuthor().getUsername(), - c.getPost().getTitle() + c.getPost().getTitle(), + c.getPost().getId() )); return Stream.concat(Stream.concat(users, mergedPosts.stream()), comments) @@ -114,5 +118,5 @@ public class SearchService { return content.substring(start, end); } - public record SearchResult(String type, Long id, String text, String subText, String extra) {} + public record SearchResult(String type, Long id, String text, String subText, String extra, Long postId) {} }