From c7ec9c8dbf7f097b0f0c6615cd0f53c98f055719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9D=EB=B2=94?= Date: Sun, 8 Feb 2026 00:21:12 +0900 Subject: [PATCH 1/4] =?UTF-8?q?Feat:=20=EA=B7=B8=EB=A3=B9=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/adapter/in/web/GroupController.java | 15 +++++++++++++++ .../api/dto/response/FindGroupResponseDto.java | 4 ++++ .../application/port/in/FindGroupUseCase.java | 8 ++++++++ .../port/in/command/FindGroupCommand.java | 7 +++++++ .../port/in/result/FIndGroupResult.java | 4 ++++ .../application/service/FIndGroupService.java | 17 +++++++++++++++++ 6 files changed, 55 insertions(+) create mode 100644 src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java create mode 100644 src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java create mode 100644 src/main/java/flipnote/group/application/port/in/command/FindGroupCommand.java create mode 100644 src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java create mode 100644 src/main/java/flipnote/group/application/service/FIndGroupService.java diff --git a/src/main/java/flipnote/group/adapter/in/web/GroupController.java b/src/main/java/flipnote/group/adapter/in/web/GroupController.java index 5eabf88..04f12df 100644 --- a/src/main/java/flipnote/group/adapter/in/web/GroupController.java +++ b/src/main/java/flipnote/group/adapter/in/web/GroupController.java @@ -1,6 +1,7 @@ package flipnote.group.adapter.in.web; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; @@ -13,10 +14,13 @@ import flipnote.group.api.dto.request.CreateGroupRequestDto; import flipnote.group.api.dto.response.ChangeGroupResponseDto; import flipnote.group.api.dto.response.CreateGroupResponseDto; +import flipnote.group.api.dto.response.FindGroupResponseDto; import flipnote.group.application.port.in.ChangeGroupUseCase; import flipnote.group.application.port.in.CreateGroupUseCase; +import flipnote.group.application.port.in.FindGroupUseCase; import flipnote.group.application.port.in.command.ChangeGroupCommand; import flipnote.group.application.port.in.command.CreateGroupCommand; +import flipnote.group.application.port.in.command.FindGroupCommand; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; @@ -27,6 +31,7 @@ public class GroupController { private final CreateGroupUseCase createGroupUseCase; private final ChangeGroupUseCase changeGroupUseCase; + private final FindGroupUseCase findGroupUseCase; /** * 그룹 생성 API @@ -86,4 +91,14 @@ public ResponseEntity changeGroup( return ResponseEntity.ok(res); } + @GetMapping("/{groupId}") + public ResponseEntity findGroup( + @RequestHeader("X-USER-ID") Long userId, + @PathVariable("groupId") Long groupId) { + + FindGroupCommand cmd = new FindGroupCommand(userId, groupId); + + var result = findGroupUseCase.findGroup(cmd); + } + } diff --git a/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java b/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java new file mode 100644 index 0000000..2bf9326 --- /dev/null +++ b/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java @@ -0,0 +1,4 @@ +package flipnote.group.api.dto.response; + +public record FindGroupResponseDto() { +} diff --git a/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java b/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java new file mode 100644 index 0000000..029f5c4 --- /dev/null +++ b/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java @@ -0,0 +1,8 @@ +package flipnote.group.application.port.in; + +import flipnote.group.application.port.in.command.FindGroupCommand; +import flipnote.group.application.port.in.result.FIndGroupResult; + +public interface FindGroupUseCase { + FIndGroupResult findGroup(FindGroupCommand cmd); +} diff --git a/src/main/java/flipnote/group/application/port/in/command/FindGroupCommand.java b/src/main/java/flipnote/group/application/port/in/command/FindGroupCommand.java new file mode 100644 index 0000000..e94cd74 --- /dev/null +++ b/src/main/java/flipnote/group/application/port/in/command/FindGroupCommand.java @@ -0,0 +1,7 @@ +package flipnote.group.application.port.in.command; + +public record FindGroupCommand( + Long userId, + Long groupId +) { +} diff --git a/src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java b/src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java new file mode 100644 index 0000000..5de84fe --- /dev/null +++ b/src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java @@ -0,0 +1,4 @@ +package flipnote.group.application.port.in.result; + +public record FIndGroupResult() { +} diff --git a/src/main/java/flipnote/group/application/service/FIndGroupService.java b/src/main/java/flipnote/group/application/service/FIndGroupService.java new file mode 100644 index 0000000..9881046 --- /dev/null +++ b/src/main/java/flipnote/group/application/service/FIndGroupService.java @@ -0,0 +1,17 @@ +package flipnote.group.application.service; + +import org.springframework.stereotype.Service; + +import flipnote.group.application.port.in.FindGroupUseCase; +import flipnote.group.application.port.in.command.FindGroupCommand; +import flipnote.group.application.port.in.result.FIndGroupResult; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class FIndGroupService implements FindGroupUseCase { + @Override + public FIndGroupResult findGroup(FindGroupCommand cmd) { + return null; + } +} From d4bf7d44e2ebe8c1728c02a241dfab621b2e6bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9D=EB=B2=94?= Date: Tue, 10 Feb 2026 00:15:39 +0900 Subject: [PATCH 2/4] =?UTF-8?q?Feat:=20=EA=B7=B8=EB=A3=B9=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=EC=A1=B0=ED=9A=8C=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/adapter/in/web/GroupController.java | 10 +++++ .../dto/response/FindGroupResponseDto.java | 44 ++++++++++++++++++- .../application/port/in/FindGroupUseCase.java | 4 +- .../port/in/result/FIndGroupResult.java | 4 -- .../port/in/result/FindGroupResult.java | 7 +++ .../application/service/FIndGroupService.java | 17 ------- .../application/service/FindGroupService.java | 38 ++++++++++++++++ 7 files changed, 100 insertions(+), 24 deletions(-) delete mode 100644 src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java create mode 100644 src/main/java/flipnote/group/application/port/in/result/FindGroupResult.java delete mode 100644 src/main/java/flipnote/group/application/service/FIndGroupService.java create mode 100644 src/main/java/flipnote/group/application/service/FindGroupService.java diff --git a/src/main/java/flipnote/group/adapter/in/web/GroupController.java b/src/main/java/flipnote/group/adapter/in/web/GroupController.java index 04f12df..fd56c2f 100644 --- a/src/main/java/flipnote/group/adapter/in/web/GroupController.java +++ b/src/main/java/flipnote/group/adapter/in/web/GroupController.java @@ -91,6 +91,12 @@ public ResponseEntity changeGroup( return ResponseEntity.ok(res); } + /** + * 그룹 상세 조회 API + * @param userId + * @param groupId + * @return + */ @GetMapping("/{groupId}") public ResponseEntity findGroup( @RequestHeader("X-USER-ID") Long userId, @@ -99,6 +105,10 @@ public ResponseEntity findGroup( FindGroupCommand cmd = new FindGroupCommand(userId, groupId); var result = findGroupUseCase.findGroup(cmd); + + FindGroupResponseDto res = FindGroupResponseDto.from(result); + + return ResponseEntity.ok(res); } } diff --git a/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java b/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java index 2bf9326..92adfb4 100644 --- a/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java +++ b/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java @@ -1,4 +1,46 @@ package flipnote.group.api.dto.response; -public record FindGroupResponseDto() { +import java.time.LocalDateTime; + +import flipnote.group.application.port.in.result.FindGroupResult; +import flipnote.group.domain.model.group.Category; +import flipnote.group.domain.model.group.Group; +import flipnote.group.domain.model.group.JoinPolicy; +import flipnote.group.domain.model.group.Visibility; + +public record FindGroupResponseDto( + String name, + + Category category, + + String description, + + JoinPolicy joinPolicy, + + Visibility visibility, + + Integer maxMember, + + Long imageRefId, + + LocalDateTime createdAt, + + LocalDateTime modifiedAt +) { + public static FindGroupResponseDto from(FindGroupResult result) { + + Group group = result.group(); + + return new FindGroupResponseDto( + group.getName(), + group.getCategory(), + group.getDescription(), + group.getJoinPolicy(), + group.getVisibility(), + group.getMaxMember(), + group.getImageRefId(), + group.getCreatedAt(), + group.getModifiedAt() + ); + } } diff --git a/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java b/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java index 029f5c4..53f7b18 100644 --- a/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java +++ b/src/main/java/flipnote/group/application/port/in/FindGroupUseCase.java @@ -1,8 +1,8 @@ package flipnote.group.application.port.in; import flipnote.group.application.port.in.command.FindGroupCommand; -import flipnote.group.application.port.in.result.FIndGroupResult; +import flipnote.group.application.port.in.result.FindGroupResult; public interface FindGroupUseCase { - FIndGroupResult findGroup(FindGroupCommand cmd); + FindGroupResult findGroup(FindGroupCommand cmd); } diff --git a/src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java b/src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java deleted file mode 100644 index 5de84fe..0000000 --- a/src/main/java/flipnote/group/application/port/in/result/FIndGroupResult.java +++ /dev/null @@ -1,4 +0,0 @@ -package flipnote.group.application.port.in.result; - -public record FIndGroupResult() { -} diff --git a/src/main/java/flipnote/group/application/port/in/result/FindGroupResult.java b/src/main/java/flipnote/group/application/port/in/result/FindGroupResult.java new file mode 100644 index 0000000..d50209c --- /dev/null +++ b/src/main/java/flipnote/group/application/port/in/result/FindGroupResult.java @@ -0,0 +1,7 @@ +package flipnote.group.application.port.in.result; + +import flipnote.group.domain.model.group.Group; + +public record FindGroupResult( + Group group +) { } diff --git a/src/main/java/flipnote/group/application/service/FIndGroupService.java b/src/main/java/flipnote/group/application/service/FIndGroupService.java deleted file mode 100644 index 9881046..0000000 --- a/src/main/java/flipnote/group/application/service/FIndGroupService.java +++ /dev/null @@ -1,17 +0,0 @@ -package flipnote.group.application.service; - -import org.springframework.stereotype.Service; - -import flipnote.group.application.port.in.FindGroupUseCase; -import flipnote.group.application.port.in.command.FindGroupCommand; -import flipnote.group.application.port.in.result.FIndGroupResult; -import lombok.RequiredArgsConstructor; - -@Service -@RequiredArgsConstructor -public class FIndGroupService implements FindGroupUseCase { - @Override - public FIndGroupResult findGroup(FindGroupCommand cmd) { - return null; - } -} diff --git a/src/main/java/flipnote/group/application/service/FindGroupService.java b/src/main/java/flipnote/group/application/service/FindGroupService.java new file mode 100644 index 0000000..554beba --- /dev/null +++ b/src/main/java/flipnote/group/application/service/FindGroupService.java @@ -0,0 +1,38 @@ +package flipnote.group.application.service; + +import java.util.Optional; + +import org.springframework.stereotype.Service; + +import flipnote.group.adapter.out.entity.GroupEntity; +import flipnote.group.adapter.out.persistence.mapper.GroupMapper; +import flipnote.group.application.port.in.FindGroupUseCase; +import flipnote.group.application.port.in.command.FindGroupCommand; +import flipnote.group.application.port.in.result.FindGroupResult; +import flipnote.group.application.port.out.GroupRepositoryPort; +import flipnote.group.domain.model.group.Group; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class FindGroupService implements FindGroupUseCase { + + private final GroupRepositoryPort groupRepository; + + /** + * 하나의 그룹에 대한 정보 조회 + * @param cmd + * @return + */ + @Override + public FindGroupResult findGroup(FindGroupCommand cmd) { + + GroupEntity groupEntity = groupRepository.findById(cmd.groupId()).orElseThrow( + () -> new IllegalArgumentException("Group not Exists") + ); + + Group group = GroupMapper.toDomain(groupEntity); + + return new FindGroupResult(group); + } +} From 5badc92b732ea4c95094ae6d6d872ce0ec0a9092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9D=EB=B2=94?= Date: Wed, 11 Feb 2026 23:11:56 +0900 Subject: [PATCH 3/4] =?UTF-8?q?Fix:=20id=20=EB=88=84=EB=9D=BD=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../group/api/dto/response/ChangeGroupResponseDto.java | 3 +++ .../flipnote/group/api/dto/response/FindGroupResponseDto.java | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/flipnote/group/api/dto/response/ChangeGroupResponseDto.java b/src/main/java/flipnote/group/api/dto/response/ChangeGroupResponseDto.java index add99f9..f1c8503 100644 --- a/src/main/java/flipnote/group/api/dto/response/ChangeGroupResponseDto.java +++ b/src/main/java/flipnote/group/api/dto/response/ChangeGroupResponseDto.java @@ -9,6 +9,8 @@ import flipnote.group.domain.model.group.Visibility; public record ChangeGroupResponseDto( + Long groupId, + String name, Category category, @@ -32,6 +34,7 @@ public static ChangeGroupResponseDto from(ChangeGroupResult result) { Group group = result.group(); return new ChangeGroupResponseDto( + group.getId(), group.getName(), group.getCategory(), group.getDescription(), diff --git a/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java b/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java index 92adfb4..4518684 100644 --- a/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java +++ b/src/main/java/flipnote/group/api/dto/response/FindGroupResponseDto.java @@ -9,6 +9,8 @@ import flipnote.group.domain.model.group.Visibility; public record FindGroupResponseDto( + Long groupId, + String name, Category category, @@ -32,6 +34,7 @@ public static FindGroupResponseDto from(FindGroupResult result) { Group group = result.group(); return new FindGroupResponseDto( + group.getId(), group.getName(), group.getCategory(), group.getDescription(), From 3341bfdfcd80084bbfa3af0dea79159d1b59fd23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9D=EB=B2=94?= Date: Wed, 11 Feb 2026 23:18:26 +0900 Subject: [PATCH 4/4] =?UTF-8?q?Fix:=20=EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90?= =?UTF-8?q?=20=EA=B5=AC=EC=A1=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/GroupRepositoryAdapter.java | 25 ------------------- .../port/out/GroupRepositoryPort.java | 2 -- .../application/service/FindGroupService.java | 6 +---- 3 files changed, 1 insertion(+), 32 deletions(-) diff --git a/src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java b/src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java index a9bf8c8..dcba394 100644 --- a/src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java +++ b/src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java @@ -35,29 +35,4 @@ public Group findById(Long id) { ); return GroupMapper.toDomain(groupEntity); } - - /** - * 그룹 수정 - * @param group - */ - @Override - public Group update(Group group) { - - GroupEntity groupEntity = groupRepository.findById(group.getId()).orElseThrow( - () -> new IllegalArgumentException("group not Exist") - ); - - groupEntity.change( - group.getName(), - group.getCategory(), - group.getDescription(), - group.getJoinPolicy(), - group.getVisibility(), - group.getMaxMember(), - group.getImageRefId() - ); - - return GroupMapper.toDomain(groupEntity); - } - } diff --git a/src/main/java/flipnote/group/application/port/out/GroupRepositoryPort.java b/src/main/java/flipnote/group/application/port/out/GroupRepositoryPort.java index 5bc40cf..cc7ad54 100644 --- a/src/main/java/flipnote/group/application/port/out/GroupRepositoryPort.java +++ b/src/main/java/flipnote/group/application/port/out/GroupRepositoryPort.java @@ -6,6 +6,4 @@ public interface GroupRepositoryPort { Long saveNewGroup(Group group); Group findById(Long id); - - Group update(Group group); } diff --git a/src/main/java/flipnote/group/application/service/FindGroupService.java b/src/main/java/flipnote/group/application/service/FindGroupService.java index 554beba..700ec9c 100644 --- a/src/main/java/flipnote/group/application/service/FindGroupService.java +++ b/src/main/java/flipnote/group/application/service/FindGroupService.java @@ -27,11 +27,7 @@ public class FindGroupService implements FindGroupUseCase { @Override public FindGroupResult findGroup(FindGroupCommand cmd) { - GroupEntity groupEntity = groupRepository.findById(cmd.groupId()).orElseThrow( - () -> new IllegalArgumentException("Group not Exists") - ); - - Group group = GroupMapper.toDomain(groupEntity); + Group group = groupRepository.findById(cmd.groupId()); return new FindGroupResult(group); }