From c8e628d4eb7d2ef1e2bdf3f453d7b3044ce432c5 Mon Sep 17 00:00:00 2001 From: chs98412 Date: Thu, 26 Sep 2024 21:21:58 +0900 Subject: [PATCH 1/2] =?UTF-8?q?#16=20=EA=B3=B5=ED=86=B5=20=EC=9D=BC?= =?UTF-8?q?=EC=A0=95=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/schedule/ScheduleQueryService.kt | 5 ++--- .../domain/schedule/ScheduleRepository.kt | 2 +- .../presentation/handler/ScheduleHandler.kt | 15 ++++++++++++++- .../presentation/router/ScheduleRouter.kt | 2 ++ src/test/http/example.http | 7 ++++++- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/yedongsoon/example_project/application/schedule/ScheduleQueryService.kt b/src/main/kotlin/com/yedongsoon/example_project/application/schedule/ScheduleQueryService.kt index b11de5f..7688367 100644 --- a/src/main/kotlin/com/yedongsoon/example_project/application/schedule/ScheduleQueryService.kt +++ b/src/main/kotlin/com/yedongsoon/example_project/application/schedule/ScheduleQueryService.kt @@ -12,8 +12,8 @@ class ScheduleQueryService( ) { // 특정 날짜 일정 조회 - fun getScheduleByDate(accountNo: Int, searchDate: LocalDate): List { - val schedules: List = scheduleRepository.findByAccountNoAndScheduleAt(accountNo, searchDate) + fun getCommonScheduleByDate(accountNo: Int, loverNo: Int, searchDate: LocalDate): List { + val schedules: List = scheduleRepository.findByAccountNoInAndScheduleAtAndIsCommonIsTrue(listOf(accountNo, loverNo), searchDate) // 조회한 일정들 -> ScheduleDetailResponse return schedules.map { schedule -> ScheduleDetailResponse.from(schedule) } @@ -22,7 +22,6 @@ class ScheduleQueryService( fun getScheduleByDateExceptCommon(accountNo: Int, searchDate: LocalDate): List { val schedules: List = scheduleRepository.findByAccountNoAndScheduleAtAndIsCommonIsFalse(accountNo, searchDate) - // 조회한 일정들 -> ScheduleDetailResponse return schedules.map { schedule -> ScheduleDetailResponse.from(schedule) } } diff --git a/src/main/kotlin/com/yedongsoon/example_project/domain/schedule/ScheduleRepository.kt b/src/main/kotlin/com/yedongsoon/example_project/domain/schedule/ScheduleRepository.kt index a10c5f2..a1c7dd3 100644 --- a/src/main/kotlin/com/yedongsoon/example_project/domain/schedule/ScheduleRepository.kt +++ b/src/main/kotlin/com/yedongsoon/example_project/domain/schedule/ScheduleRepository.kt @@ -5,8 +5,8 @@ import java.time.LocalDate interface ScheduleRepository : JpaRepository { // 특정 일정 조회 - fun findByAccountNoAndScheduleAt(accountNo: Int, scheduleAt: LocalDate): List fun findByAccountNoAndScheduleAtAndIsCommonIsFalse(accountNo: Int, scheduleAt: LocalDate): List + fun findByAccountNoInAndScheduleAtAndIsCommonIsTrue(accountNos: List, scheduleAt: LocalDate): List // 일정 상세 조회 fun findByAccountNoAndScheduleNo(accountNo: Int, scheduleNo: Int): Schedule diff --git a/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/ScheduleHandler.kt b/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/ScheduleHandler.kt index ebbc299..beba840 100644 --- a/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/ScheduleHandler.kt +++ b/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/ScheduleHandler.kt @@ -35,7 +35,7 @@ class ScheduleHandler( suspend fun readSchedules(request: ServerRequest): ServerResponse = withContext(Dispatchers.IO) { val memberHeader = request.extractMemberCodeHeader() val searchDate = request.localDateQueryParam("searchDate") - val result = scheduleQueryService.getScheduleByDate(memberHeader.no, searchDate) + val result = scheduleQueryService.getScheduleByDateExceptCommon(memberHeader.no, searchDate) ServerResponse.ok().bodyValueAndAwait(result) } @@ -60,6 +60,19 @@ class ScheduleHandler( ServerResponse.ok().bodyValueAndAwait(result) } + suspend fun getCommonSchedules(request: ServerRequest): ServerResponse = withContext(Dispatchers.IO) { + val memberHeader = request.extractRawMemberCodeHeader() + val memberInfo = request.extractMemberCodeHeader() + + val couplePartnerResponse = coupleService.getCouplePartnerInfo(memberHeader) + val partnerNo = couplePartnerResponse.no + val searchDate = request.localDateQueryParam("searchDate") + + val result = scheduleQueryService.getCommonScheduleByDate(memberInfo.no, partnerNo, searchDate) + + ServerResponse.ok().bodyValueAndAwait(result) + } + // 일정 삭제 suspend fun deleteSchedule(request: ServerRequest): ServerResponse = withContext(Dispatchers.IO) { val scheduleNo = request.intPathVariable("scheduleNo") diff --git a/src/main/kotlin/com/yedongsoon/example_project/presentation/router/ScheduleRouter.kt b/src/main/kotlin/com/yedongsoon/example_project/presentation/router/ScheduleRouter.kt index 41ebab2..857050c 100644 --- a/src/main/kotlin/com/yedongsoon/example_project/presentation/router/ScheduleRouter.kt +++ b/src/main/kotlin/com/yedongsoon/example_project/presentation/router/ScheduleRouter.kt @@ -25,6 +25,8 @@ class ScheduleRouter(private val scheduleHandler: ScheduleHandler) { // (커플) 특정 날짜 일정 조회 GET("/couple", scheduleHandler::readCouplePartnerSchedules) + + GET("/common", scheduleHandler::getCommonSchedules) // 일정 삭제 DELETE("/{scheduleNo}", scheduleHandler::deleteSchedule) PUT("/{scheduleNo}/status", scheduleHandler::changeStatus) diff --git a/src/test/http/example.http b/src/test/http/example.http index d3153cc..a11d26e 100644 --- a/src/test/http/example.http +++ b/src/test/http/example.http @@ -52,4 +52,9 @@ Content-Type: application/json ### 일정 삭제 PUT {{url}}/schedule/7/status?status=종료 -Content-Type: application/json \ No newline at end of file +Content-Type: application/json + +### 공통 일정 +GET {{url}}/schedule/common?searchDate=2024-09-26 +Content-Type: application/json +Member-Code: eyJubyI6MSwibmFtZSI6Im5hbWUiLCJhY2NvdW50IjoiYWNjb3VudCJ9 From 483be8614c1467f0c91499dbdfb713bfa53ed9dc Mon Sep 17 00:00:00 2001 From: chs98412 Date: Thu, 26 Sep 2024 21:24:05 +0900 Subject: [PATCH 2/2] =?UTF-8?q?#16=20response=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/handler/model/ScheduleDetailResponse.kt | 2 ++ src/test/http/example.http | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/model/ScheduleDetailResponse.kt b/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/model/ScheduleDetailResponse.kt index 3947ecc..24b5ebf 100644 --- a/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/model/ScheduleDetailResponse.kt +++ b/src/main/kotlin/com/yedongsoon/example_project/presentation/handler/model/ScheduleDetailResponse.kt @@ -5,6 +5,7 @@ import java.time.LocalDateTime data class ScheduleDetailResponse( val scheduleNo: Int, + val accountNo: Int, val busyLevel: String, val scheduleName: String, val scheduleLocation: String, @@ -18,6 +19,7 @@ data class ScheduleDetailResponse( // 특정 일정 조회 (엔티티 -> response) fun from(schedule: Schedule) = ScheduleDetailResponse( scheduleNo = schedule.scheduleNo, + accountNo = schedule.accountNo, busyLevel = schedule.busyLevel, scheduleName = schedule.scheduleName, scheduleLocation = schedule.scheduleLocation, diff --git a/src/test/http/example.http b/src/test/http/example.http index a11d26e..602adb9 100644 --- a/src/test/http/example.http +++ b/src/test/http/example.http @@ -31,7 +31,7 @@ Member-Code: eyJubyI6MiwibmFtZSI6Im5hbWUiLCJhY2NvdW50IjoiYWNjb3VudCJ9 } ### 특정 날짜 일정 조회 -GET {{url}}/schedule?searchDate=2024-09-02 +GET {{url}}/schedule?searchDate=2024-09-26 Content-Type: application/json Member-Code: eyJubyI6MiwibmFtZSI6Im5hbWUiLCJhY2NvdW50IjoiYWNjb3VudCJ9 @@ -42,7 +42,7 @@ Content-Type: application/json Member-Code: eyJubyI6MSwibmFtZSI6Im5hbWUiLCJhY2NvdW50IjoiYWNjb3VudCJ9 ### (커플) 특정 날짜 일정 조회 -GET {{url}}/schedule/couple?searchDate=2024-09-02 +GET {{url}}/schedule/couple?searchDate=2024-09-26 Content-Type: application/json Member-Code: eyJubyI6MSwibmFtZSI6Im5hbWUiLCJhY2NvdW50IjoiYWNjb3VudCJ9