From f5ce9b31412b7050c8bc3fcf299f46d6311aa8f8 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Fri, 28 Nov 2025 22:22:40 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B4=88=EB=8C=80=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=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 --- .../petlog/docs/PetGroupControllerDocs.java | 2 +- .../controller/PetGroupController.java | 5 ++++- .../dto/response/GetJoinCodeResponseDto.java | 4 ---- .../repository/PetGroupMemberRepository.java | 4 ++++ .../petgroup/service/PetGroupService.java | 20 +++++++++++++++++++ .../petgroup/service/dto/GetJoinCodeDto.java | 8 ++++++++ 6 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/petlog/petgroup/service/dto/GetJoinCodeDto.java diff --git a/src/main/java/com/petlog/docs/PetGroupControllerDocs.java b/src/main/java/com/petlog/docs/PetGroupControllerDocs.java index ca3ed6f..0c3fb92 100644 --- a/src/main/java/com/petlog/docs/PetGroupControllerDocs.java +++ b/src/main/java/com/petlog/docs/PetGroupControllerDocs.java @@ -35,7 +35,7 @@ public interface PetGroupControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "초대코드 조회에 성공하였습니다.") @Operation(summary = "초대코드 조회 API") - ResponseEntity> getJoinCode(@PathVariable final Long groupId); + ResponseEntity> getJoinCode(@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 f9b47b9..950b001 100644 --- a/src/main/java/com/petlog/petgroup/controller/PetGroupController.java +++ b/src/main/java/com/petlog/petgroup/controller/PetGroupController.java @@ -11,6 +11,7 @@ import com.petlog.petgroup.controller.dto.response.GetNoteResponseDto; import com.petlog.petgroup.service.PetGroupService; import com.petlog.petgroup.service.dto.CreatePetGroupDto; +import com.petlog.petgroup.service.dto.GetJoinCodeDto; import com.petlog.petgroup.service.dto.GetMyPetGroupDto; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; @@ -89,9 +90,11 @@ public ResponseEntity> leavePetGroup( @GetMapping("/{groupId}/invite") public ResponseEntity> getJoinCode( + @Authenticated final Long memberId, @PathVariable final Long groupId ) { - final GetJoinCodeResponseDto response = new GetJoinCodeResponseDto("123ABC"); + final GetJoinCodeDto dto = petGroupService.getPetGroupJoinCode(memberId, groupId); + final GetJoinCodeResponseDto response = new GetJoinCodeResponseDto(dto.joinCode()); return ResponseEntity.ok( ApiResponse.successWithData(GET_JOIN_CODE, response) diff --git a/src/main/java/com/petlog/petgroup/controller/dto/response/GetJoinCodeResponseDto.java b/src/main/java/com/petlog/petgroup/controller/dto/response/GetJoinCodeResponseDto.java index a2d0313..cd66ae3 100644 --- a/src/main/java/com/petlog/petgroup/controller/dto/response/GetJoinCodeResponseDto.java +++ b/src/main/java/com/petlog/petgroup/controller/dto/response/GetJoinCodeResponseDto.java @@ -8,8 +8,4 @@ public record GetJoinCodeResponseDto( String joinCode ) { - - public GetJoinCodeResponseDto(final String joinCode) { - this.joinCode = joinCode; - } } diff --git a/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java b/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java index 8b848f3..39ea48a 100644 --- a/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java +++ b/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java @@ -1,5 +1,7 @@ package com.petlog.petgroup.repository; +import com.petlog.member.entity.Member; +import com.petlog.petgroup.entity.PetGroup; import com.petlog.petgroup.entity.PetGroupMember; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; @@ -23,4 +25,6 @@ public interface PetGroupMemberRepository extends JpaRepository 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()); + } + + private PetGroup getPetGroup(final Long groupId) { + return petGroupRepository.findById(groupId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다.")); + } + + private void validateMemberInPetGroup(final Member member, final PetGroup petGroup) { + if(!petGroupMemberRepository.existsByMemberAndPetGroup(member, petGroup)) { + throw new IllegalArgumentException("그룹에 존재하지 않는 회원입니다."); + } + } } diff --git a/src/main/java/com/petlog/petgroup/service/dto/GetJoinCodeDto.java b/src/main/java/com/petlog/petgroup/service/dto/GetJoinCodeDto.java new file mode 100644 index 0000000..147f7fb --- /dev/null +++ b/src/main/java/com/petlog/petgroup/service/dto/GetJoinCodeDto.java @@ -0,0 +1,8 @@ +package com.petlog.petgroup.service.dto; + +public record GetJoinCodeDto( + + String joinCode + +) { +}