diff --git a/src/main/java/com/petlog/docs/PetGroupControllerDocs.java b/src/main/java/com/petlog/docs/PetGroupControllerDocs.java index 17aeebe..3057d79 100644 --- a/src/main/java/com/petlog/docs/PetGroupControllerDocs.java +++ b/src/main/java/com/petlog/docs/PetGroupControllerDocs.java @@ -43,5 +43,5 @@ public interface PetGroupControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "참고사항 수정에 성공하였습니다.") @Operation(summary = "참고사항 수정 API") - ResponseEntity> updateNote(@PathVariable final Long groupId, @RequestBody final UpdateNoteRequestDto request); + ResponseEntity> updateNote(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final UpdateNoteRequestDto request); } diff --git a/src/main/java/com/petlog/petgroup/controller/PetGroupController.java b/src/main/java/com/petlog/petgroup/controller/PetGroupController.java index a1f36ce..4c4bcbd 100644 --- a/src/main/java/com/petlog/petgroup/controller/PetGroupController.java +++ b/src/main/java/com/petlog/petgroup/controller/PetGroupController.java @@ -94,7 +94,7 @@ public ResponseEntity> getJoinCode( @Authenticated final Long memberId, @PathVariable final Long groupId ) { - final GetJoinCodeDto dto = petGroupService.getPetGroupJoinCode(memberId, groupId); + final GetJoinCodeDto dto = petGroupService.getJoinCode(memberId, groupId); final GetJoinCodeResponseDto response = new GetJoinCodeResponseDto(dto.joinCode()); return ResponseEntity.ok( @@ -117,9 +117,12 @@ public ResponseEntity> getNote( @PatchMapping("/{groupId}/note") public ResponseEntity> updateNote( + @Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final UpdateNoteRequestDto request ) { + petGroupService.updateNote(memberId, groupId, request.note()); + return ResponseEntity.ok( ApiResponse.success(UPDATE_NOTE) ); diff --git a/src/main/java/com/petlog/petgroup/entity/PetGroup.java b/src/main/java/com/petlog/petgroup/entity/PetGroup.java index 2fecdd0..93884d0 100644 --- a/src/main/java/com/petlog/petgroup/entity/PetGroup.java +++ b/src/main/java/com/petlog/petgroup/entity/PetGroup.java @@ -34,4 +34,8 @@ public PetGroup( this.joinCode = joinCode; this.note = note; } + + public void updateNote(final String note) { + this.note = note; + } } diff --git a/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java b/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java index 39ea48a..efaa19f 100644 --- a/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java +++ b/src/main/java/com/petlog/petgroup/repository/PetGroupMemberRepository.java @@ -8,6 +8,7 @@ import org.springframework.data.jpa.repository.Query; import java.util.List; +import java.util.Optional; public interface PetGroupMemberRepository extends JpaRepository { @@ -27,4 +28,6 @@ public interface PetGroupMemberRepository extends JpaRepository findByMemberAndPetGroup(final Member member, final PetGroup group); } diff --git a/src/main/java/com/petlog/petgroup/service/PetGroupService.java b/src/main/java/com/petlog/petgroup/service/PetGroupService.java index 1a9134b..572fc02 100644 --- a/src/main/java/com/petlog/petgroup/service/PetGroupService.java +++ b/src/main/java/com/petlog/petgroup/service/PetGroupService.java @@ -131,7 +131,7 @@ private void validateMemberInPetGroup(final Member member, final PetGroup petGro } @Transactional(readOnly = true) - public GetJoinCodeDto getPetGroupJoinCode(final Long memberId, final Long groupId) { + public GetJoinCodeDto getJoinCode(final Long memberId, final Long groupId) { final Member member = getMember(memberId); final PetGroup petGroup = getPetGroup(groupId); validateMemberInPetGroup(member, petGroup); @@ -147,4 +147,26 @@ public GetNoteDto getNote(final Long memberId, final Long groupId) { return new GetNoteDto(petGroup.getNote()); } + + @Transactional + public void updateNote(final Long memberId, final Long groupId, final String note) { + final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroup(groupId); + final PetGroupMember petGroupMember = getPetGroupMember(member, petGroup); + + validateMemberIsGroupOwner(petGroupMember); + + petGroup.updateNote(note); + } + + private PetGroupMember getPetGroupMember(final Member member, final PetGroup petGroup) { + return petGroupMemberRepository.findByMemberAndPetGroup(member, petGroup) + .orElseThrow(() -> new IllegalArgumentException("그룹에 존재하지 않는 회원입니다.")); + } + + private void validateMemberIsGroupOwner(final PetGroupMember petGroupMember) { + if(!petGroupMember.isGroupOwner()) { + throw new IllegalArgumentException("참고사항 수정은 그룹장만 할 수 있습니다."); + } + } }