From ec6a2615769ebb8faf58ea935e9989143911c9d4 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 17:02:10 +0900 Subject: [PATCH 1/2] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/GetPetInfoResponseDto.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/main/java/com/petlog/pet/controller/dto/response/GetPetInfoResponseDto.java b/src/main/java/com/petlog/pet/controller/dto/response/GetPetInfoResponseDto.java index 0c812c2..3cf9cda 100644 --- a/src/main/java/com/petlog/pet/controller/dto/response/GetPetInfoResponseDto.java +++ b/src/main/java/com/petlog/pet/controller/dto/response/GetPetInfoResponseDto.java @@ -13,16 +13,4 @@ public record GetPetInfoResponseDto( GetPoopInfoDto poopInfo ) { - public GetPetInfoResponseDto( - final GetPetProfileDto profile, - final GetFeedingInfoDto feedingInfo, - final GetWateringInfoDto wateringInfo, - final GetPoopInfoDto poopInfo - - ) { - this.profile = profile; - this.feedingInfo = feedingInfo; - this.wateringInfo = wateringInfo; - this.poopInfo = poopInfo; - } } From 82f969ae95ebd3a849be874576c782fb073cc856 Mon Sep 17 00:00:00 2001 From: Hwangseoeun Date: Sun, 30 Nov 2025 17:16:57 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EC=9D=BC=EC=A0=95=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=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/ScheduleControllerDocs.java | 3 +- .../controller/ScheduleController.java | 17 ++++++ .../repository/ScheduleRepository.java | 7 +++ .../schedule/service/ScheduleService.java | 59 +++++++++++++++++++ .../service/dto/CreateScheduleDto.java | 18 ++++++ 5 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/petlog/schedule/repository/ScheduleRepository.java create mode 100644 src/main/java/com/petlog/schedule/service/ScheduleService.java create mode 100644 src/main/java/com/petlog/schedule/service/dto/CreateScheduleDto.java diff --git a/src/main/java/com/petlog/docs/ScheduleControllerDocs.java b/src/main/java/com/petlog/docs/ScheduleControllerDocs.java index 129fc54..5ec9b77 100644 --- a/src/main/java/com/petlog/docs/ScheduleControllerDocs.java +++ b/src/main/java/com/petlog/docs/ScheduleControllerDocs.java @@ -1,5 +1,6 @@ package com.petlog.docs; +import com.petlog.auth.resolver.Authenticated; import com.petlog.common.response.ApiResponse; import com.petlog.schedule.controller.dto.request.CreateScheduleRequestDto; import com.petlog.schedule.controller.dto.request.UpdateScheduleRequestDto; @@ -19,7 +20,7 @@ public interface ScheduleControllerDocs { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "201", description = "일정 생성에 성공하였습니다.") @Operation(summary = "일정 생성 API") - ResponseEntity> createSchedule(@PathVariable final Long groupId, @RequestBody CreateScheduleRequestDto request); + ResponseEntity> createSchedule(@Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody CreateScheduleRequestDto request); @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "월별 일정 전체 조회에 성공하였습니다.") @Operation(summary = "월별 일정 전체 조회 API") diff --git a/src/main/java/com/petlog/schedule/controller/ScheduleController.java b/src/main/java/com/petlog/schedule/controller/ScheduleController.java index 9dbd6b3..d422700 100644 --- a/src/main/java/com/petlog/schedule/controller/ScheduleController.java +++ b/src/main/java/com/petlog/schedule/controller/ScheduleController.java @@ -1,11 +1,14 @@ package com.petlog.schedule.controller; +import com.petlog.auth.resolver.Authenticated; import com.petlog.common.response.ApiResponse; import com.petlog.docs.ScheduleControllerDocs; import com.petlog.schedule.controller.dto.request.CreateScheduleRequestDto; import com.petlog.schedule.controller.dto.request.UpdateScheduleRequestDto; import com.petlog.schedule.controller.dto.response.GetMonthlyScheduleResponseDto; import com.petlog.schedule.entity.ScheduleType; +import com.petlog.schedule.service.ScheduleService; +import com.petlog.schedule.service.dto.CreateScheduleDto; import com.petlog.schedule.service.dto.GetDailyScheduleDto; import com.petlog.schedule.service.dto.GetScheduleInfoDto; import lombok.RequiredArgsConstructor; @@ -36,11 +39,25 @@ @RestController public class ScheduleController implements ScheduleControllerDocs { + private final ScheduleService scheduleService; + @PostMapping public ResponseEntity> createSchedule( + @Authenticated final Long memberId, @PathVariable final Long groupId, @RequestBody CreateScheduleRequestDto request ) { + final CreateScheduleDto dto = new CreateScheduleDto( + request.title(), + request.isAllDay(), + request.startTime(), + request.endTime(), + request.tag(), + request.remindNotificationAt(), + request.memo() + ); + scheduleService.createSchedule(memberId, groupId, dto); + return ResponseEntity.ok( ApiResponse.success(CREATE_SCHEDULE) ); diff --git a/src/main/java/com/petlog/schedule/repository/ScheduleRepository.java b/src/main/java/com/petlog/schedule/repository/ScheduleRepository.java new file mode 100644 index 0000000..4f1b204 --- /dev/null +++ b/src/main/java/com/petlog/schedule/repository/ScheduleRepository.java @@ -0,0 +1,7 @@ +package com.petlog.schedule.repository; + +import com.petlog.schedule.entity.Schedule; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ScheduleRepository extends JpaRepository { +} diff --git a/src/main/java/com/petlog/schedule/service/ScheduleService.java b/src/main/java/com/petlog/schedule/service/ScheduleService.java new file mode 100644 index 0000000..a645b39 --- /dev/null +++ b/src/main/java/com/petlog/schedule/service/ScheduleService.java @@ -0,0 +1,59 @@ +package com.petlog.schedule.service; + +import com.petlog.member.entity.Member; +import com.petlog.member.repository.MemberRepository; +import com.petlog.petgroup.entity.PetGroup; +import com.petlog.petgroup.entity.PetGroupMember; +import com.petlog.petgroup.repository.PetGroupMemberRepository; +import com.petlog.petgroup.repository.PetGroupRepository; +import com.petlog.schedule.entity.Schedule; +import com.petlog.schedule.repository.ScheduleRepository; +import com.petlog.schedule.service.dto.CreateScheduleDto; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@RequiredArgsConstructor +@Service +public class ScheduleService { + + private final ScheduleRepository scheduleRepository; + private final MemberRepository memberRepository; + private final PetGroupRepository petGroupRepository; + private final PetGroupMemberRepository petGroupMemberRepository; + + @Transactional + public void createSchedule(final Long memberId, final Long groupId, final CreateScheduleDto dto) { + final Member member = getMember(memberId); + final PetGroup petGroup = getPetGroup(groupId); + getPetGroupMember(member, petGroup); + + final Schedule schedule = new Schedule( + petGroup, + member, + dto.title(), + dto.isAllDay(), + dto.startTime(), + dto.endTime(), + dto.remindNotificationAt(), + dto.tag(), + dto.memo() + ); + scheduleRepository.save(schedule); + } + + private Member getMember(final Long memberId) { + return memberRepository.findById(memberId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 회원입니다.")); + } + + private PetGroup getPetGroup(final Long groupId) { + return petGroupRepository.findById(groupId) + .orElseThrow(() -> new IllegalArgumentException("존재하지 않는 그룹입니다.")); + } + + private PetGroupMember getPetGroupMember(final Member member, final PetGroup petGroup) { + return petGroupMemberRepository.findByMemberAndPetGroup(member, petGroup) + .orElseThrow(() -> new IllegalArgumentException("그룹에 존재하지 않는 회원입니다.")); + } +} diff --git a/src/main/java/com/petlog/schedule/service/dto/CreateScheduleDto.java b/src/main/java/com/petlog/schedule/service/dto/CreateScheduleDto.java new file mode 100644 index 0000000..2434603 --- /dev/null +++ b/src/main/java/com/petlog/schedule/service/dto/CreateScheduleDto.java @@ -0,0 +1,18 @@ +package com.petlog.schedule.service.dto; + +import com.petlog.schedule.entity.ScheduleType; + +import java.time.LocalDateTime; + +public record CreateScheduleDto( + + String title, + boolean isAllDay, + LocalDateTime startTime, + LocalDateTime endTime, + ScheduleType tag, + LocalDateTime remindNotificationAt, + String memo + +) { +}