From a6f8abe7a1e222429b96cda3337cd41ddcb22662 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sat, 29 Nov 2025 14:20:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=B0=B8=EA=B3=A0=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=A1=B0=ED=9A=8C=20API=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/petlog/docs/PetGroupControllerDocs.java | 2 +- .../petlog/petgroup/controller/PetGroupController.java | 5 ++++- .../controller/dto/response/GetNoteResponseDto.java | 4 ---- .../com/petlog/petgroup/service/PetGroupService.java | 9 +++++++++ .../java/com/petlog/petgroup/service/dto/GetNoteDto.java | 8 ++++++++ 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/petlog/petgroup/service/dto/GetNoteDto.java diff --git a/src/main/java/com/petlog/docs/PetGroupControllerDocs.java b/src/main/java/com/petlog/docs/PetGroupControllerDocs.java index 0c3fb92..17aeebe 100644 --- a/src/main/java/com/petlog/docs/PetGroupControllerDocs.java +++ b/src/main/java/com/petlog/docs/PetGroupControllerDocs.java @@ -39,7 +39,7 @@ public interface PetGroupControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "참고사항 조회에 성공하였습니다.") @Operation(summary = "참고사항 조회 API") - ResponseEntity> getNote(@PathVariable final Long groupId); + ResponseEntity> getNote(@Authenticated final Long memberId, @PathVariable final Long groupId); @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "참고사항 수정에 성공하였습니다.") @Operation(summary = "참고사항 수정 API") diff --git a/src/main/java/com/petlog/petgroup/controller/PetGroupController.java b/src/main/java/com/petlog/petgroup/controller/PetGroupController.java index 950b001..a1f36ce 100644 --- a/src/main/java/com/petlog/petgroup/controller/PetGroupController.java +++ b/src/main/java/com/petlog/petgroup/controller/PetGroupController.java @@ -13,6 +13,7 @@ import com.petlog.petgroup.service.dto.CreatePetGroupDto; import com.petlog.petgroup.service.dto.GetJoinCodeDto; import com.petlog.petgroup.service.dto.GetMyPetGroupDto; +import com.petlog.petgroup.service.dto.GetNoteDto; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; @@ -103,9 +104,11 @@ public ResponseEntity> getJoinCode( @GetMapping("/{groupId}/note") public ResponseEntity> getNote( + @Authenticated final Long memberId, @PathVariable final Long groupId ) { - final GetNoteResponseDto response = new GetNoteResponseDto("우리 여름이는 엄청 예쁘구~"); + final GetNoteDto dto = petGroupService.getNote(memberId, groupId); + final GetNoteResponseDto response = new GetNoteResponseDto(dto.note()); return ResponseEntity.ok( ApiResponse.successWithData(GET_NOTE, response) diff --git a/src/main/java/com/petlog/petgroup/controller/dto/response/GetNoteResponseDto.java b/src/main/java/com/petlog/petgroup/controller/dto/response/GetNoteResponseDto.java index 05bbb6c..94fd75c 100644 --- a/src/main/java/com/petlog/petgroup/controller/dto/response/GetNoteResponseDto.java +++ b/src/main/java/com/petlog/petgroup/controller/dto/response/GetNoteResponseDto.java @@ -8,8 +8,4 @@ public record GetNoteResponseDto( String note ) { - - public GetNoteResponseDto(final String note) { - this.note = note; - } } diff --git a/src/main/java/com/petlog/petgroup/service/PetGroupService.java b/src/main/java/com/petlog/petgroup/service/PetGroupService.java index 8115abf..19a4afc 100644 --- a/src/main/java/com/petlog/petgroup/service/PetGroupService.java +++ b/src/main/java/com/petlog/petgroup/service/PetGroupService.java @@ -17,6 +17,7 @@ import com.petlog.petgroup.service.dto.CreatePetGroupDto; import com.petlog.petgroup.service.dto.GetJoinCodeDto; import com.petlog.petgroup.service.dto.GetMyPetGroupDto; +import com.petlog.petgroup.service.dto.GetNoteDto; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -137,4 +138,12 @@ private void validateMemberInPetGroup(final Member member, final PetGroup petGro throw new IllegalArgumentException("그룹에 존재하지 않는 회원입니다."); } } + + public GetNoteDto getNote(final Long memberId, final Long groupId) { + final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroup(groupId); + validateMemberInPetGroup(member, petGroup); + + return new GetNoteDto(petGroup.getNote()); + } } diff --git a/src/main/java/com/petlog/petgroup/service/dto/GetNoteDto.java b/src/main/java/com/petlog/petgroup/service/dto/GetNoteDto.java new file mode 100644 index 0000000..0494f4b --- /dev/null +++ b/src/main/java/com/petlog/petgroup/service/dto/GetNoteDto.java @@ -0,0 +1,8 @@ +package com.petlog.petgroup.service.dto; + +public record GetNoteDto( + + String note + +) { +} From bdc392763a832217934bf664a75c50987956ce3b Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sat, 29 Nov 2025 14:37:18 +0900 Subject: [PATCH 2/2] =?UTF-8?q?refactor:=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EB=B9=A0=ED=8A=B8?= =?UTF-8?q?=EB=A6=B0=20=EA=B2=80=EC=A6=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../petgroup/service/PetGroupService.java | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/petlog/petgroup/service/PetGroupService.java b/src/main/java/com/petlog/petgroup/service/PetGroupService.java index 19a4afc..1a9134b 100644 --- a/src/main/java/com/petlog/petgroup/service/PetGroupService.java +++ b/src/main/java/com/petlog/petgroup/service/PetGroupService.java @@ -84,52 +84,43 @@ private Member getMember(final Long memberId) { @Transactional public void joinPetGroup(final Long memberId, final String joinCode) { - final PetGroup petGroup = getPetGroup(joinCode); final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroupByJoinCode(joinCode); + validateAlreadyMemberInPetGroup(member, petGroup); final PetGroupMember petGroupMember = new PetGroupMember(member, petGroup, false); petGroupMemberRepository.save(petGroupMember); } - private PetGroup getPetGroup(final String joinCode) { + private PetGroup getPetGroupByJoinCode(final String joinCode) { return petGroupRepository.findByJoinCode(joinCode) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다.")); } + private void validateAlreadyMemberInPetGroup(final Member member, final PetGroup petGroup) { + if(petGroupMemberRepository.existsByMemberAndPetGroup(member, petGroup)) { + throw new IllegalArgumentException("이미 그룹에 참여중인 회원입니다."); + } + } + @Transactional(readOnly = true) public GetMyPetGroupDto getMyPetGroups(final Long memberId) { - validateMemberIsExist(memberId); + getMember(memberId); final List groupIds = petGroupMemberRepository.findPetGroupIdsByMemberId(memberId); return new GetMyPetGroupDto(groupIds); } - private void validateMemberIsExist(final Long memberId) { - memberRepository.findById(memberId) - .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다.")); - } - @Transactional public void leavePetGroup(final Long memberId, final Long groupId) { - validateMemberIsExist(memberId); - validatePetGroupIsExist(groupId); - petGroupMemberRepository.deleteByMemberIdAndGroupId(memberId, groupId); - } - - private void validatePetGroupIsExist(final Long petGroupId) { - petGroupRepository.findById(petGroupId) - .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다.")); - } - - public GetJoinCodeDto getPetGroupJoinCode(final Long memberId, final Long groupId) { final Member member = getMember(memberId); final PetGroup petGroup = getPetGroup(groupId); validateMemberInPetGroup(member, petGroup); - return new GetJoinCodeDto(petGroup.getJoinCode()); + petGroupMemberRepository.deleteByMemberIdAndGroupId(memberId, groupId); } - private PetGroup getPetGroup(final Long groupId) { - return petGroupRepository.findById(groupId) + private PetGroup getPetGroup(final Long petGroupId) { + return petGroupRepository.findById(petGroupId) .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다.")); } @@ -139,6 +130,16 @@ private void validateMemberInPetGroup(final Member member, final PetGroup petGro } } + @Transactional(readOnly = true) + public GetJoinCodeDto getPetGroupJoinCode(final Long memberId, final Long groupId) { + final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroup(groupId); + validateMemberInPetGroup(member, petGroup); + + return new GetJoinCodeDto(petGroup.getJoinCode()); + } + + @Transactional(readOnly = true) public GetNoteDto getNote(final Long memberId, final Long groupId) { final Member member = getMember(memberId); final PetGroup petGroup = getPetGroup(groupId);