diff --git a/src/main/java/com/petlog/docs/PetControllerDocs.java b/src/main/java/com/petlog/docs/PetControllerDocs.java index ab6c2d9..21bcbc1 100644 --- a/src/main/java/com/petlog/docs/PetControllerDocs.java +++ b/src/main/java/com/petlog/docs/PetControllerDocs.java @@ -19,5 +19,5 @@ public interface PetControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "반려동물 정보 수정에 성공하였습니다.") @Operation(summary = "반려동물 정보 수정 API") - ResponseEntity> updatePetProfile(@PathVariable final Long groupId, @RequestBody final UpdatePetProfileRequestDto request); + ResponseEntity> updatePetProfile(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final UpdatePetProfileRequestDto request); } diff --git a/src/main/java/com/petlog/pet/controller/PetController.java b/src/main/java/com/petlog/pet/controller/PetController.java index 4a521f4..63ac517 100644 --- a/src/main/java/com/petlog/pet/controller/PetController.java +++ b/src/main/java/com/petlog/pet/controller/PetController.java @@ -10,6 +10,7 @@ import com.petlog.pet.service.dto.GetPetProfileDto; import com.petlog.pet.service.dto.GetPoopInfoDto; import com.petlog.pet.service.dto.GetWateringInfoDto; +import com.petlog.pet.service.dto.UpdatePetProfileDto; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -48,9 +49,19 @@ public ResponseEntity> getPetInfo( @PatchMapping("/{groupId}/pet") public ResponseEntity> updatePetProfile( + @Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final UpdatePetProfileRequestDto request ) { + final UpdatePetProfileDto dto = new UpdatePetProfileDto( + request.imageUrl(), + request.name(), + request.age(), + request.weight(), + request.gender() + ); + petService.updatePetProfile(memberId, groupId, dto); + return ResponseEntity.ok( ApiResponse.success(UPDATE_PET_PROFILE) ); diff --git a/src/main/java/com/petlog/pet/entity/PetProfile.java b/src/main/java/com/petlog/pet/entity/PetProfile.java index 5e206c8..503b065 100644 --- a/src/main/java/com/petlog/pet/entity/PetProfile.java +++ b/src/main/java/com/petlog/pet/entity/PetProfile.java @@ -38,12 +38,12 @@ public class PetProfile extends BaseEntity { @Column(name = "age", length = 10, nullable = false) private String age; - @Column(name = "gender", length = 10, nullable = false) - private String gender; - @Column(name = "weight", length = 10, nullable = false) private String weight; + @Column(name = "gender", length = 10, nullable = false) + private String gender; + @Column(name = "feeding_cycle", nullable = false) private int feedingCycle; @@ -55,8 +55,8 @@ public PetProfile( final String imageUrl, final String name, final String age, - final String gender, final String weight, + final String gender, final int feedingCycle, final int wateringCycle ) { @@ -64,9 +64,23 @@ public PetProfile( this.imageUrl = imageUrl; this.name = name; this.age = age; - this.gender = gender; this.weight = weight; + this.gender = gender; this.feedingCycle = feedingCycle; this.wateringCycle = wateringCycle; } + + public void updatePetProfile( + final String imageUrl, + final String name, + final String age, + final String weight, + final String gender + ) { + this.imageUrl = imageUrl; + this.name = name; + this.age = age; + this.weight = weight; + this.gender = gender; + } } diff --git a/src/main/java/com/petlog/pet/service/PetService.java b/src/main/java/com/petlog/pet/service/PetService.java index 5018593..c4ad0e0 100644 --- a/src/main/java/com/petlog/pet/service/PetService.java +++ b/src/main/java/com/petlog/pet/service/PetService.java @@ -14,6 +14,7 @@ import com.petlog.pet.service.dto.GetPetProfileDto; import com.petlog.pet.service.dto.GetPoopInfoDto; import com.petlog.pet.service.dto.GetWateringInfoDto; +import com.petlog.pet.service.dto.UpdatePetProfileDto; import com.petlog.petgroup.entity.PetGroup; import com.petlog.petgroup.entity.PetGroupMember; import com.petlog.petgroup.repository.PetGroupMemberRepository; @@ -49,8 +50,8 @@ public GetPetProfileDto getPetProfile(final Long memberId, final Long groupId) { petProfile.getImageUrl(), petProfile.getName(), petProfile.getAge(), - petProfile.getGender(), - petProfile.getWeight() + petProfile.getWeight(), + petProfile.getGender() ); } @@ -127,4 +128,21 @@ private int getTodayPoopRecordCount(final PetProfile petProfile) { return poopDailyRecordRepository.countByPetProfileAndTimeBetween(petProfile, start, end); } + + @Transactional + public void updatePetProfile(final Long memberId, final Long groupId, final UpdatePetProfileDto dto) { + final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroup(groupId); + getPetGroupMember(member, petGroup); + + final PetProfile petProfile = petProfileRepository.findByPetGroupId(groupId); + + petProfile.updatePetProfile( + dto.imageUrl(), + dto.name(), + dto.age(), + dto.weight(), + dto.gender() + ); + } } diff --git a/src/main/java/com/petlog/pet/service/dto/GetPetProfileDto.java b/src/main/java/com/petlog/pet/service/dto/GetPetProfileDto.java index 2249590..a5b6804 100644 --- a/src/main/java/com/petlog/pet/service/dto/GetPetProfileDto.java +++ b/src/main/java/com/petlog/pet/service/dto/GetPetProfileDto.java @@ -12,11 +12,11 @@ public record GetPetProfileDto( @Schema(description = "4글자 제한") String age, - @Schema(description = "FEMALE/MALE") - String gender, - @Schema(description = "6글자 제한") - String weight + String weight, + + @Schema(description = "FEMALE/MALE") + String gender ) { @@ -24,13 +24,13 @@ public GetPetProfileDto( final String imageUrl, final String name, final String age, - final String gender, - final String weight + final String weight, + final String gender ) { this.imageUrl = imageUrl; this.name = name; this.age = age; - this.gender = gender; this.weight = weight; + this.gender = gender; } } diff --git a/src/main/java/com/petlog/pet/service/dto/UpdatePetProfileDto.java b/src/main/java/com/petlog/pet/service/dto/UpdatePetProfileDto.java new file mode 100644 index 0000000..1f80f09 --- /dev/null +++ b/src/main/java/com/petlog/pet/service/dto/UpdatePetProfileDto.java @@ -0,0 +1,12 @@ +package com.petlog.pet.service.dto; + +public record UpdatePetProfileDto( + + String imageUrl, + String name, + String age, + String weight, + String gender + +) { +} diff --git a/src/main/java/com/petlog/petgroup/service/PetGroupService.java b/src/main/java/com/petlog/petgroup/service/PetGroupService.java index dcfe44f..bb1afcd 100644 --- a/src/main/java/com/petlog/petgroup/service/PetGroupService.java +++ b/src/main/java/com/petlog/petgroup/service/PetGroupService.java @@ -51,8 +51,8 @@ public void createPetGroup(final Long memberId, final CreatePetGroupDto dto) { dto.imageUrl(), dto.name(), dto.age(), - dto.gender(), dto.weight(), + dto.gender(), dto.feedingCycle(), dto.wateringCycle() );