55import org .tuna .zoopzoop .backend .domain .archive .folder .service .PersonalArchiveFolderService ;
66import org .tuna .zoopzoop .backend .domain .datasource .dto .FileSummary ;
77import org .tuna .zoopzoop .backend .domain .datasource .dto .FolderFilesDto ;
8+ import org .tuna .zoopzoop .backend .domain .member .entity .Member ;
9+ import org .tuna .zoopzoop .backend .domain .member .service .MemberService ;
10+ import org .tuna .zoopzoop .backend .domain .space .archive .service .SpaceArchiveFolderService ;
811
912import java .util .Comparator ;
1013import java .util .List ;
1518@ RequiredArgsConstructor
1619public class NewsService {
1720 private final PersonalArchiveFolderService folderService ;
21+ private final SpaceArchiveFolderService spaceArchiveFolderService ;
22+ private final MemberService memberService ;
1823
1924 public List <String > getTagFrequencyFromFiles (Integer memberId , Integer folderId ) {
2025 FolderFilesDto folderFilesDto = folderService .getFilesInFolder (memberId , folderId );
@@ -39,4 +44,29 @@ public List<String> getTagFrequencyFromFiles(Integer memberId, Integer folderId)
3944
4045 return frequency ;
4146 }
47+
48+ public List <String > getTagFrequencyFromFilesInSharing (Integer spaceId , Integer memberId , Integer folderId ) {
49+ Member member = memberService .findById (memberId );
50+ FolderFilesDto folderFilesDto = spaceArchiveFolderService .getFilesInFolder (spaceId , member , folderId );
51+
52+ List <FileSummary > files = folderFilesDto .files ();
53+
54+ Map <String , Long > tags = files .stream ()
55+ .flatMap (file -> {
56+ List <String > ts = file .tags ();
57+ return (ts == null ? List .<String >of () : ts ).stream ();
58+ })
59+ .collect (Collectors .groupingBy (
60+ tagName -> tagName ,
61+ Collectors .counting ()
62+ ));
63+
64+ List <String > frequency = tags .entrySet ().stream ()
65+ .sorted (Map .Entry .comparingByValue (Comparator .reverseOrder ()))
66+ .limit (3 )
67+ .map (Map .Entry ::getKey )
68+ .toList ();
69+
70+ return frequency ;
71+ }
4272}
0 commit comments