Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/java/com/petlog/docs/PetGroupControllerDocs.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public interface PetGroupControllerDocs {

@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "참고사항 조회에 성공하였습니다.")
@Operation(summary = "참고사항 조회 API")
ResponseEntity<ApiResponse<GetNoteResponseDto>> getNote(@PathVariable final Long groupId);
ResponseEntity<ApiResponse<GetNoteResponseDto>> getNote(@Authenticated final Long memberId, @PathVariable final Long groupId);

@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "참고사항 수정에 성공하였습니다.")
@Operation(summary = "참고사항 수정 API")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -103,9 +104,11 @@ public ResponseEntity<ApiResponse<GetJoinCodeResponseDto>> getJoinCode(

@GetMapping("/{groupId}/note")
public ResponseEntity<ApiResponse<GetNoteResponseDto>> 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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,4 @@ public record GetNoteResponseDto(
String note

) {

public GetNoteResponseDto(final String note) {
this.note = note;
}
}
50 changes: 30 additions & 20 deletions src/main/java/com/petlog/petgroup/service/PetGroupService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -83,42 +84,53 @@ 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<Long> 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);
final Member member = getMember(memberId);
final PetGroup petGroup = getPetGroup(groupId);
validateMemberInPetGroup(member, petGroup);

petGroupMemberRepository.deleteByMemberIdAndGroupId(memberId, groupId);
}

private void validatePetGroupIsExist(final Long petGroupId) {
petGroupRepository.findById(petGroupId)
private PetGroup getPetGroup(final Long petGroupId) {
return petGroupRepository.findById(petGroupId)
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다."));
}

private void validateMemberInPetGroup(final Member member, final PetGroup petGroup) {
if(!petGroupMemberRepository.existsByMemberAndPetGroup(member, petGroup)) {
throw new IllegalArgumentException("그룹에 존재하지 않는 회원입니다.");
}
}

@Transactional(readOnly = true)
public GetJoinCodeDto getPetGroupJoinCode(final Long memberId, final Long groupId) {
final Member member = getMember(memberId);
final PetGroup petGroup = getPetGroup(groupId);
Expand All @@ -127,14 +139,12 @@ public GetJoinCodeDto getPetGroupJoinCode(final Long memberId, final Long groupI
return new GetJoinCodeDto(petGroup.getJoinCode());
}

private PetGroup getPetGroup(final Long groupId) {
return petGroupRepository.findById(groupId)
.orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다."));
}
@Transactional(readOnly = true)
public GetNoteDto getNote(final Long memberId, final Long groupId) {
final Member member = getMember(memberId);
final PetGroup petGroup = getPetGroup(groupId);
validateMemberInPetGroup(member, petGroup);

private void validateMemberInPetGroup(final Member member, final PetGroup petGroup) {
if(!petGroupMemberRepository.existsByMemberAndPetGroup(member, petGroup)) {
throw new IllegalArgumentException("그룹에 존재하지 않는 회원입니다.");
}
return new GetNoteDto(petGroup.getNote());
}
}
8 changes: 8 additions & 0 deletions src/main/java/com/petlog/petgroup/service/dto/GetNoteDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.petlog.petgroup.service.dto;

public record GetNoteDto(

String note

) {
}
Loading