From 1288e23bbf3f48bc3851110ee3b96b050264ff9b Mon Sep 17 00:00:00 2001 From: jini Date: Fri, 2 Dec 2022 14:20:13 +0900 Subject: [PATCH] =?UTF-8?q?:sparkles:=20notice=20=EC=A0=80=EC=9E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 ++-- .../input/web/RegisterNoticeController.kt | 30 +++++++++++++++++-- .../output/persistence/NoticeEntity.kt | 7 +++++ .../persistence/NoticePersistenceAdapter.kt | 2 +- .../service/RegisterNoticeService.kt | 5 ++-- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index c082324..74a169a 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Kotlin + Spring Boot 2 + Spring MVC + Spring Data JPA ### 1.1. 프로젝트 구성 -프로젝트는 멀티 모듈로 구성되어있습니다. +demo-app 프로젝트는 멀티 모듈로 구성되어있습니다. architecture-1 @@ -72,4 +72,6 @@ demo-app은 아래와 같이 `:util:common-util`, `:core:demo-core`, `:infrastru demo-app을 하나의 모듈로 만든 웹 애플리케이션 -adapter + core + domain 을 하나의 프로젝트 내에 구성했습니다. \ No newline at end of file +adapter + core + domain 을 하나의 프로젝트 내에 구성했습니다. + +스크린샷 2022-12-02 오후 2 08 10 \ No newline at end of file diff --git a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt index d77c952..1d34851 100644 --- a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt +++ b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/input/web/RegisterNoticeController.kt @@ -1,4 +1,30 @@ package me.jiniworld.demohx.notice.adapter.input.web -internal class RegisterNoticeController { -} \ No newline at end of file +import io.swagger.v3.oas.annotations.Operation +import io.swagger.v3.oas.annotations.tags.Tag +import me.jiniworld.demohx.annotation.WebAdapter +import me.jiniworld.demohx.model.BaseResponse +import me.jiniworld.demohx.notice.application.port.input.RegisterNoticeCommand +import me.jiniworld.demohx.notice.application.port.input.RegisterNoticeUseCase +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 + +@WebAdapter +@Tag(name = "setting-system", description = "설정-시스템(공지사항, FAQ, 이용약관, 메타정보 등)") +@RestController +@RequestMapping("/v1/notices") +internal class RegisterNoticeController( + private val registerNoticeUseCase: RegisterNoticeUseCase, +) { + + @Operation(summary = "공지사항 상세조회") + @PostMapping("") + fun registerNotice(@RequestBody command: RegisterNoticeCommand): BaseResponse { + registerNoticeUseCase.registerNotice(command) + return BaseResponse.SUCCESS + } + +} + diff --git a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticeEntity.kt b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticeEntity.kt index dc639c3..66daced 100644 --- a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticeEntity.kt +++ b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticeEntity.kt @@ -27,6 +27,13 @@ internal class NoticeEntity { @LastModifiedDate var updatedAt: LocalDateTime? = null + constructor() {} + + constructor(title: String, content: String) { + this.title = title + this.content = content + } + fun mapToNotice() = Notice(id = id, noticeContent = NoticeContent(title = title, content = content), createdAt = createdAt) } diff --git a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticePersistenceAdapter.kt b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticePersistenceAdapter.kt index f3c2913..c94d14f 100644 --- a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticePersistenceAdapter.kt +++ b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/adapter/output/persistence/NoticePersistenceAdapter.kt @@ -21,6 +21,6 @@ internal class NoticePersistenceAdapter( } override fun saveNotice(noticeContent: NoticeContent) { - TODO("Not yet implemented") + noticeRepository.save(NoticeEntity(title = noticeContent.title, content = noticeContent.content)) } } \ No newline at end of file diff --git a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/application/service/RegisterNoticeService.kt b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/application/service/RegisterNoticeService.kt index 5d94268..0c97e37 100644 --- a/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/application/service/RegisterNoticeService.kt +++ b/server/demo-all-in-one-app/src/main/kotlin/me/jiniworld/demohx/notice/application/service/RegisterNoticeService.kt @@ -4,6 +4,7 @@ import me.jiniworld.demohx.annotation.UseCase import me.jiniworld.demohx.notice.application.port.input.RegisterNoticeCommand import me.jiniworld.demohx.notice.application.port.input.RegisterNoticeUseCase import me.jiniworld.demohx.notice.application.port.output.SaveNoticePort +import me.jiniworld.demohx.notice.domain.NoticeContent import org.springframework.transaction.annotation.Transactional @Transactional @@ -12,9 +13,7 @@ class RegisterNoticeService( private val saveNoticePort: SaveNoticePort, ) : RegisterNoticeUseCase { - - override fun registerNotice(command: RegisterNoticeCommand) { - TODO("Not yet implemented") + saveNoticePort.saveNotice(NoticeContent(title = command.title, content = command.content)) } } \ No newline at end of file