From 19b3e9534d97f4974a93ff52b94634cf71fc099c Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 14:08:25 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=B0=98=EB=A0=A4=EB=8F=99=EB=AC=BC=20?= =?UTF-8?q?=EC=83=81=ED=83=9C=20=EC=B2=B4=ED=81=AC=20API=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/petlog/docs/PetControllerDocs.java | 15 +++++++ .../petlog/pet/controller/PetController.java | 40 +++++++++++++++++++ .../petlog/pet/controller/PetSuccessCode.java | 4 ++ .../CreateFeedingRecordRequestDto.java | 11 +++++ .../request/CreatePoopRecordRequestDto.java | 11 +++++ .../CreateWateringRecordRequestDto.java | 11 +++++ 6 files changed, 92 insertions(+) create mode 100644 src/main/java/com/petlog/pet/controller/dto/request/CreateFeedingRecordRequestDto.java create mode 100644 src/main/java/com/petlog/pet/controller/dto/request/CreatePoopRecordRequestDto.java create mode 100644 src/main/java/com/petlog/pet/controller/dto/request/CreateWateringRecordRequestDto.java diff --git a/src/main/java/com/petlog/docs/PetControllerDocs.java b/src/main/java/com/petlog/docs/PetControllerDocs.java index 21bcbc1..c1a4dc5 100644 --- a/src/main/java/com/petlog/docs/PetControllerDocs.java +++ b/src/main/java/com/petlog/docs/PetControllerDocs.java @@ -2,6 +2,9 @@ import com.petlog.auth.resolver.Authenticated; import com.petlog.common.response.ApiResponse; +import com.petlog.pet.controller.dto.request.CreateFeedingRecordRequestDto; +import com.petlog.pet.controller.dto.request.CreatePoopRecordRequestDto; +import com.petlog.pet.controller.dto.request.CreateWateringRecordRequestDto; import com.petlog.pet.controller.dto.request.UpdatePetProfileRequestDto; import com.petlog.pet.controller.dto.response.GetPetInfoResponseDto; import io.swagger.v3.oas.annotations.Operation; @@ -20,4 +23,16 @@ public interface PetControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "반려동물 정보 수정에 성공하였습니다.") @Operation(summary = "반려동물 정보 수정 API") ResponseEntity> updatePetProfile(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final UpdatePetProfileRequestDto request); + + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "201", description = "밥 준 기록 등록에 성공하였습니다.") + @Operation(summary = "밥 준 기록 등록 API") + ResponseEntity> createFeedingRecord(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final CreateFeedingRecordRequestDto request); + + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "201", description = "물 준 기록 등록에 성공하였습니다.") + @Operation(summary = "물 준 기록 등록 API") + ResponseEntity> createWateringRecord(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final CreateWateringRecordRequestDto request); + + @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "201", description = "배변 기록 등록에 성공하였습니다.") + @Operation(summary = "배변 기록 등록 API") + ResponseEntity> createPoopRecord(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody final CreatePoopRecordRequestDto request); } diff --git a/src/main/java/com/petlog/pet/controller/PetController.java b/src/main/java/com/petlog/pet/controller/PetController.java index 63ac517..138f3a7 100644 --- a/src/main/java/com/petlog/pet/controller/PetController.java +++ b/src/main/java/com/petlog/pet/controller/PetController.java @@ -3,6 +3,9 @@ import com.petlog.auth.resolver.Authenticated; import com.petlog.common.response.ApiResponse; import com.petlog.docs.PetControllerDocs; +import com.petlog.pet.controller.dto.request.CreateFeedingRecordRequestDto; +import com.petlog.pet.controller.dto.request.CreatePoopRecordRequestDto; +import com.petlog.pet.controller.dto.request.CreateWateringRecordRequestDto; import com.petlog.pet.controller.dto.request.UpdatePetProfileRequestDto; import com.petlog.pet.controller.dto.response.GetPetInfoResponseDto; import com.petlog.pet.service.PetService; @@ -16,10 +19,14 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import static com.petlog.pet.controller.PetSuccessCode.CREATE_FEEDING_RECORD; +import static com.petlog.pet.controller.PetSuccessCode.CREATE_POOP_RECORD; +import static com.petlog.pet.controller.PetSuccessCode.CREATE_WATERING_RECORD; import static com.petlog.pet.controller.PetSuccessCode.GET_PET_INFO; import static com.petlog.pet.controller.PetSuccessCode.UPDATE_PET_PROFILE; @@ -66,4 +73,37 @@ public ResponseEntity> updatePetProfile( ApiResponse.success(UPDATE_PET_PROFILE) ); } + + @PostMapping("/{groupId}/pet/feeding") + public ResponseEntity> createFeedingRecord( + @Authenticated final Long memberId, + @PathVariable final Long groupId, + @RequestBody final CreateFeedingRecordRequestDto request + ) { + return ResponseEntity.ok( + ApiResponse.success(CREATE_FEEDING_RECORD) + ); + } + + @PostMapping("/{groupId}/pet/watering") + public ResponseEntity> createWateringRecord( + @Authenticated final Long memberId, + @PathVariable final Long groupId, + @RequestBody final CreateWateringRecordRequestDto request + ) { + return ResponseEntity.ok( + ApiResponse.success(CREATE_WATERING_RECORD) + ); + } + + @PostMapping("/{groupId}/pet/poop") + public ResponseEntity> createPoopRecord( + @Authenticated final Long memberId, + @PathVariable final Long groupId, + @RequestBody final CreatePoopRecordRequestDto request + ) { + return ResponseEntity.ok( + ApiResponse.success(CREATE_POOP_RECORD) + ); + } } diff --git a/src/main/java/com/petlog/pet/controller/PetSuccessCode.java b/src/main/java/com/petlog/pet/controller/PetSuccessCode.java index 57fc518..67b170e 100644 --- a/src/main/java/com/petlog/pet/controller/PetSuccessCode.java +++ b/src/main/java/com/petlog/pet/controller/PetSuccessCode.java @@ -11,6 +11,10 @@ public enum PetSuccessCode implements SuccessCode { GET_PET_INFO(HttpStatus.OK.value(), "반려동물 정보 조회에 성공하였습니다."), UPDATE_PET_PROFILE(HttpStatus.OK.value(), "반려동물 정보 수정에 성공하였습니다."), + CREATE_FEEDING_RECORD(HttpStatus.CREATED.value(), "밥 준 기록 등록에 성공하였습니다."), + CREATE_WATERING_RECORD(HttpStatus.CREATED.value(), "물 준 기록 등록에 성공하였습니다."), + CREATE_POOP_RECORD(HttpStatus.CREATED.value(), "배변 기록 등록에 성공하였습니다."), + ; private final int value; diff --git a/src/main/java/com/petlog/pet/controller/dto/request/CreateFeedingRecordRequestDto.java b/src/main/java/com/petlog/pet/controller/dto/request/CreateFeedingRecordRequestDto.java new file mode 100644 index 0000000..00556b6 --- /dev/null +++ b/src/main/java/com/petlog/pet/controller/dto/request/CreateFeedingRecordRequestDto.java @@ -0,0 +1,11 @@ +package com.petlog.pet.controller.dto.request; + +import io.swagger.v3.oas.annotations.media.Schema; + +public record CreateFeedingRecordRequestDto( + + @Schema(description = "100글자 제한") + String memo + +) { +} diff --git a/src/main/java/com/petlog/pet/controller/dto/request/CreatePoopRecordRequestDto.java b/src/main/java/com/petlog/pet/controller/dto/request/CreatePoopRecordRequestDto.java new file mode 100644 index 0000000..388b09c --- /dev/null +++ b/src/main/java/com/petlog/pet/controller/dto/request/CreatePoopRecordRequestDto.java @@ -0,0 +1,11 @@ +package com.petlog.pet.controller.dto.request; + +import io.swagger.v3.oas.annotations.media.Schema; + +public record CreatePoopRecordRequestDto( + + @Schema(description = "100글자 제한") + String memo + +) { +} diff --git a/src/main/java/com/petlog/pet/controller/dto/request/CreateWateringRecordRequestDto.java b/src/main/java/com/petlog/pet/controller/dto/request/CreateWateringRecordRequestDto.java new file mode 100644 index 0000000..fc64c48 --- /dev/null +++ b/src/main/java/com/petlog/pet/controller/dto/request/CreateWateringRecordRequestDto.java @@ -0,0 +1,11 @@ +package com.petlog.pet.controller.dto.request; + +import io.swagger.v3.oas.annotations.media.Schema; + +public record CreateWateringRecordRequestDto( + + @Schema(description = "100글자 제한") + String memo + +) { +}