From 87a5ceee9c2ad2eda6423501e9a0353edfee5127 Mon Sep 17 00:00:00 2001 From: Klaus Date: Sun, 6 Aug 2023 22:03:25 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20-=20=EA=B0=9C?= =?UTF-8?q?=EC=9D=B8=EC=A0=95=EB=B3=B4=EC=B2=98=EB=A6=AC=EB=B0=A9=EC=B9=A8?= =?UTF-8?q?,=20=EC=9D=B4=EC=9A=A9=EC=95=BD=EA=B4=80=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stipulation/StipulationController.kt | 33 ++++++++++++++++ .../member/stipulation/StipulationDto.kt | 11 ++++++ .../stipulation/StipulationModifyRequest.kt | 6 +++ .../member/stipulation/StipulationService.kt | 38 +++++++++++++++++++ 4 files changed, 88 insertions(+) create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationController.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationDto.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationModifyRequest.kt create mode 100644 src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationService.kt diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationController.kt new file mode 100644 index 0000000..89163e7 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationController.kt @@ -0,0 +1,33 @@ +package kr.co.vividnext.sodalive.member.stipulation + +import kr.co.vividnext.sodalive.common.ApiResponse +import org.springframework.security.access.prepost.PreAuthorize +import org.springframework.web.bind.annotation.GetMapping +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 + +@RestController +@RequestMapping("/stplat") +class StipulationController(private val service: StipulationService) { + @PostMapping + @PreAuthorize("hasRole('ADMIN')") + fun enrollment(@RequestBody request: StipulationDto) = ApiResponse.ok( + service.enrollment(request), + "등록되었습니다." + ) + + @PostMapping("/modify") + @PreAuthorize("hasRole('ADMIN')") + fun modify(@RequestBody request: StipulationModifyRequest) = ApiResponse.ok( + service.modify(request), + "수정되었습니다." + ) + + @GetMapping("/terms_of_service") + fun getTermsOfService() = ApiResponse.ok(service.getTermsOfService()) + + @GetMapping("/privacy_policy") + fun getPrivacyPolicy() = ApiResponse.ok(service.getPrivacyPolicy()) +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationDto.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationDto.kt new file mode 100644 index 0000000..effec70 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationDto.kt @@ -0,0 +1,11 @@ +package kr.co.vividnext.sodalive.member.stipulation + +data class StipulationDto( + val id: Long = 0, + val title: String, + val description: String +) { + constructor(stipulation: Stipulation) : this(stipulation.id!!, stipulation.title, stipulation.description) + + fun toEntity() = Stipulation(title, description) +} diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationModifyRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationModifyRequest.kt new file mode 100644 index 0000000..9e49c05 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationModifyRequest.kt @@ -0,0 +1,6 @@ +package kr.co.vividnext.sodalive.member.stipulation + +data class StipulationModifyRequest( + val id: Long, + val description: String +) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationService.kt new file mode 100644 index 0000000..617b071 --- /dev/null +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/stipulation/StipulationService.kt @@ -0,0 +1,38 @@ +package kr.co.vividnext.sodalive.member.stipulation + +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.member.stipulation.StipulationIds.PRIVACY_POLICY_ID +import kr.co.vividnext.sodalive.member.stipulation.StipulationIds.TERMS_OF_SERVICE_ID +import org.springframework.data.repository.findByIdOrNull +import org.springframework.stereotype.Service +import org.springframework.transaction.annotation.Transactional + +@Service +@Transactional(readOnly = true) +class StipulationService(private val repository: StipulationRepository) { + fun enrollment(request: StipulationDto) { + repository.save(request.toEntity()) + } + + fun getTermsOfService(): StipulationDto { + val stipulation = repository.findByIdOrNull(TERMS_OF_SERVICE_ID) + ?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.") + + return StipulationDto(stipulation) + } + + fun getPrivacyPolicy(): StipulationDto { + val stipulation = repository.findByIdOrNull(PRIVACY_POLICY_ID) + ?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.") + + return StipulationDto(stipulation) + } + + @Transactional + fun modify(request: StipulationModifyRequest) { + val stipulation = repository.findByIdOrNull(request.id) + ?: throw SodaException("잘못된 요청입니다\n앱 종료 후 다시 시도해 주세요.") + + stipulation.description = request.description + } +}