From 4c030876c3b364834bda3878318d89f044ef215e Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Tue, 2 Jan 2024 19:30:31 +0900 Subject: [PATCH 1/8] =?UTF-8?q?:memo:=20InquiryRepository=20=EC=97=90=20fi?= =?UTF-8?q?ndAllByInquiryStatusOrderByCreatedDateDesc,=20findByUserAndInqu?= =?UTF-8?q?iryStatusOrderByCreatedDateDesc=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miso/domain/inquiry/repository/InquiryRepository.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt index 2cc10229..31a93bec 100644 --- a/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt @@ -1,6 +1,7 @@ package andreas311.miso.domain.inquiry.repository import andreas311.miso.domain.inquiry.entity.Inquiry +import andreas311.miso.domain.inquiry.enums.InquiryStatus import andreas311.miso.domain.user.entity.User import org.springframework.data.repository.CrudRepository @@ -9,4 +10,8 @@ interface InquiryRepository : CrudRepository { fun findAllByOrderByCreatedDateDesc(): List fun findByUserOrderByCreatedDateDesc(user: User): List? + + fun findAllByInquiryStatusOrderByCreatedDateDesc(inquiryStatus: InquiryStatus): List + + fun findByUserAndInquiryStatusOrderByCreatedDateDesc(user: User, inquiryStatus: InquiryStatus): List } \ No newline at end of file From 6f79ced14443a3539c7cf4ba5ebe6f76f75ce3ad Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Tue, 2 Jan 2024 19:31:43 +0900 Subject: [PATCH 2/8] =?UTF-8?q?:sparkles:=20=EB=AC=B8=EC=9D=98=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EC=83=81=ED=83=9C=EB=B3=84=20=ED=95=84=ED=84=B0=20?= =?UTF-8?q?api=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ListFilterInquiryService.kt | 9 +++++ .../impl/ListFilterInquiryServiceImpl.kt | 33 +++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/main/kotlin/andreas311/miso/domain/inquiry/service/ListFilterInquiryService.kt create mode 100644 src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListFilterInquiryServiceImpl.kt diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/service/ListFilterInquiryService.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/service/ListFilterInquiryService.kt new file mode 100644 index 00000000..3ef415a4 --- /dev/null +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/service/ListFilterInquiryService.kt @@ -0,0 +1,9 @@ +package andreas311.miso.domain.inquiry.service + +import andreas311.miso.domain.inquiry.enums.InquiryStatus +import andreas311.miso.domain.inquiry.presentation.data.response.ListInquiryResponseDto + +interface ListFilterInquiryService { + + fun execute(inquiryStatus: InquiryStatus): ListInquiryResponseDto +} \ No newline at end of file diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListFilterInquiryServiceImpl.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListFilterInquiryServiceImpl.kt new file mode 100644 index 00000000..6ef45f1b --- /dev/null +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListFilterInquiryServiceImpl.kt @@ -0,0 +1,33 @@ +package andreas311.miso.domain.inquiry.service.impl + +import andreas311.miso.domain.inquiry.enums.InquiryStatus +import andreas311.miso.domain.inquiry.presentation.data.response.InquiryResponseDto +import andreas311.miso.domain.inquiry.presentation.data.response.ListInquiryResponseDto +import andreas311.miso.domain.inquiry.repository.InquiryRepository +import andreas311.miso.domain.inquiry.service.ListFilterInquiryService +import andreas311.miso.domain.user.enums.Role +import andreas311.miso.global.annotation.ReadOnlyService +import andreas311.miso.global.util.UserUtil + +@ReadOnlyService +class ListFilterInquiryServiceImpl( + private val userUtil: UserUtil, + private val inquiryRepository: InquiryRepository +) : ListFilterInquiryService { + + override fun execute(inquiryStatus: InquiryStatus): ListInquiryResponseDto { + + val user = userUtil.currentUser() + + val inquiry = + if (user.role.equals(Role.ROLE_USER)) { + inquiryRepository.findByUserAndInquiryStatusOrderByCreatedDateDesc(user, inquiryStatus) + } else { + inquiryRepository.findAllByInquiryStatusOrderByCreatedDateDesc(inquiryStatus) + } + + return ListInquiryResponseDto( + inquiryList = inquiry.map { InquiryResponseDto(it) } + ) + } +} \ No newline at end of file From 80de66044374978ec292563457dc344ab17c1da0 Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Tue, 2 Jan 2024 19:31:54 +0900 Subject: [PATCH 3/8] =?UTF-8?q?:sparkles:=20InquiryController=20=EC=97=90?= =?UTF-8?q?=20=EB=AC=B8=EC=9D=98=EC=82=AC=ED=95=AD=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=B3=84=20=ED=95=84=ED=84=B0=20api=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miso/domain/inquiry/presentation/InquiryController.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt index 3bf8afe6..e765047c 100644 --- a/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt @@ -1,5 +1,6 @@ package andreas311.miso.domain.inquiry.presentation +import andreas311.miso.domain.inquiry.enums.InquiryStatus import andreas311.miso.domain.inquiry.presentation.data.request.WriteInquiryRequestDto import andreas311.miso.domain.inquiry.presentation.data.response.DetailInquiryResponseDto import andreas311.miso.domain.inquiry.presentation.data.response.ListInquiryResponseDto @@ -23,6 +24,7 @@ class InquiryController( private val detailInquiryService: DetailInquiryService, private val listAllInquiryService: ListAllInquiryService, private val respondInquiryService: RespondInquiryService, + private val listFilterInquiryService: ListFilterInquiryService ) { @PostMapping @@ -43,6 +45,11 @@ class InquiryController( listAllInquiryService.execute() .let { ResponseEntity.status(HttpStatus.OK).body(it) } + @GetMapping("/filter/{state}") + fun inquiryFilter(@PathVariable(name = "state") inquiryStatus: InquiryStatus): ResponseEntity = + listFilterInquiryService.execute(inquiryStatus) + .let { ResponseEntity.status(HttpStatus.OK).body(it) } + @GetMapping("/{id}") fun detail(@PathVariable id: Long): ResponseEntity = detailInquiryService.execute(id) From c664cf8427fc497715606af237972a01fc4aef45 Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Tue, 2 Jan 2024 19:32:09 +0900 Subject: [PATCH 4/8] =?UTF-8?q?:sparkles:=20SecurityConfig=20=EC=97=90=20?= =?UTF-8?q?=EB=AC=B8=EC=9D=98=EC=82=AC=ED=95=AD=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=B3=84=20=ED=95=84=ED=84=B0=20api=20=EA=B6=8C=ED=95=9C=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/andreas311/miso/global/security/SecurityConfig.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt b/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt index f73ecf54..66bf1552 100644 --- a/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt +++ b/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt @@ -60,6 +60,7 @@ class SecurityConfig( .antMatchers(HttpMethod.POST, "/inquiry").authenticated() .antMatchers(HttpMethod.GET, "/inquiry").authenticated() .antMatchers(HttpMethod.GET, "/inquiry/all").hasAuthority("ROLE_ADMIN") + .antMatchers(HttpMethod.GET, "/inquiry/filter/{state}").authenticated() .antMatchers(HttpMethod.GET, "/inquiry/{id}").authenticated() .antMatchers(HttpMethod.PATCH, "/inquiry/respond/{id}").hasAuthority("ROLE_ADMIN") From ee489e6f693856b0f6ecc929682a1be15330f2ce Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Wed, 3 Jan 2024 11:03:31 +0900 Subject: [PATCH 5/8] =?UTF-8?q?:memo:=20InquiryRepository=20=EC=97=90=20?= =?UTF-8?q?=3F=20=EC=98=B5=EC=85=98=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miso/domain/inquiry/repository/InquiryRepository.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt index 31a93bec..5cba1f6c 100644 --- a/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/repository/InquiryRepository.kt @@ -9,7 +9,7 @@ interface InquiryRepository : CrudRepository { fun findAllByOrderByCreatedDateDesc(): List - fun findByUserOrderByCreatedDateDesc(user: User): List? + fun findByUserOrderByCreatedDateDesc(user: User): List fun findAllByInquiryStatusOrderByCreatedDateDesc(inquiryStatus: InquiryStatus): List From 2c7ae22844794db3f77b8c987b72eafd8baf4468 Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Wed, 3 Jan 2024 11:04:27 +0900 Subject: [PATCH 6/8] =?UTF-8?q?:sparkles:=20=EB=AC=B8=EC=9D=98=20=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20=EB=82=B4=EC=97=AD=20=EB=A6=AC=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?api=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inquiry/service/ListInquiryService.kt | 8 +++++ .../service/impl/ListInquiryServiceImpl.kt | 32 +++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 src/main/kotlin/andreas311/miso/domain/inquiry/service/ListInquiryService.kt create mode 100644 src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListInquiryServiceImpl.kt diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/service/ListInquiryService.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/service/ListInquiryService.kt new file mode 100644 index 00000000..ffd02275 --- /dev/null +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/service/ListInquiryService.kt @@ -0,0 +1,8 @@ +package andreas311.miso.domain.inquiry.service + +import andreas311.miso.domain.inquiry.presentation.data.response.ListInquiryResponseDto + +interface ListInquiryService { + + fun execute(): ListInquiryResponseDto +} \ No newline at end of file diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListInquiryServiceImpl.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListInquiryServiceImpl.kt new file mode 100644 index 00000000..e5569dd1 --- /dev/null +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/service/impl/ListInquiryServiceImpl.kt @@ -0,0 +1,32 @@ +package andreas311.miso.domain.inquiry.service.impl + +import andreas311.miso.domain.inquiry.presentation.data.response.InquiryResponseDto +import andreas311.miso.domain.inquiry.presentation.data.response.ListInquiryResponseDto +import andreas311.miso.domain.inquiry.repository.InquiryRepository +import andreas311.miso.domain.inquiry.service.ListInquiryService +import andreas311.miso.domain.user.enums.Role +import andreas311.miso.global.annotation.ReadOnlyService +import andreas311.miso.global.util.UserUtil + +@ReadOnlyService +class ListInquiryServiceImpl( + private val userUtil: UserUtil, + private val inquiryRepository: InquiryRepository +) : ListInquiryService { + + override fun execute(): ListInquiryResponseDto { + + val user = userUtil.currentUser() + + val inquiry = + if (user.role.equals(Role.ROLE_USER)) { + inquiryRepository.findByUserOrderByCreatedDateDesc(user) + } else { + inquiryRepository.findAllByOrderByCreatedDateDesc() + } + + return ListInquiryResponseDto( + inquiryList = inquiry.map { InquiryResponseDto(it) } + ) + } +} \ No newline at end of file From cb2e2ce6c61af593d70e7188637ad46b3919c1b3 Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Wed, 3 Jan 2024 11:04:56 +0900 Subject: [PATCH 7/8] =?UTF-8?q?:sparkles:=20InquiryController=20=EC=97=90?= =?UTF-8?q?=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81=ED=95=9C=20=EB=AC=B8?= =?UTF-8?q?=EC=9D=98=20=EC=82=AC=ED=95=AD=20=EB=82=B4=EC=97=AD=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20api=20=EB=93=B1=EB=A1=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../miso/domain/inquiry/presentation/InquiryController.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt b/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt index e765047c..52efb299 100644 --- a/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt +++ b/src/main/kotlin/andreas311/miso/domain/inquiry/presentation/InquiryController.kt @@ -19,6 +19,7 @@ import org.springframework.web.multipart.MultipartFile @RequestController("/inquiry") class InquiryController( + private val listInquiryService: ListInquiryService, private val writeInquiryService: WriteInquiryService, private val listMyInquiryService: ListMyInquiryService, private val detailInquiryService: DetailInquiryService, @@ -45,6 +46,11 @@ class InquiryController( listAllInquiryService.execute() .let { ResponseEntity.status(HttpStatus.OK).body(it) } + @GetMapping("/list") + fun inquiryList(): ResponseEntity = + listInquiryService.execute() + .let { ResponseEntity.status(HttpStatus.OK).body(it) } + @GetMapping("/filter/{state}") fun inquiryFilter(@PathVariable(name = "state") inquiryStatus: InquiryStatus): ResponseEntity = listFilterInquiryService.execute(inquiryStatus) From 9f0e8cb63506608161c48a8361d997e547a24094 Mon Sep 17 00:00:00 2001 From: uuuuuuuk Date: Wed, 3 Jan 2024 11:05:13 +0900 Subject: [PATCH 8/8] =?UTF-8?q?:memo:=20SecurityConfig=20=EC=97=90=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81=ED=95=9C=20=EB=AC=B8?= =?UTF-8?q?=EC=9D=98=20=EC=82=AC=ED=95=AD=20=EB=82=B4=EC=97=AD=20=EB=A6=AC?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20api=20=EA=B6=8C=ED=95=9C=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/andreas311/miso/global/security/SecurityConfig.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt b/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt index 66bf1552..60855843 100644 --- a/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt +++ b/src/main/kotlin/andreas311/miso/global/security/SecurityConfig.kt @@ -59,6 +59,7 @@ class SecurityConfig( .antMatchers(HttpMethod.POST, "/inquiry").authenticated() .antMatchers(HttpMethod.GET, "/inquiry").authenticated() + .antMatchers(HttpMethod.GET, "/inquiry/list").authenticated() .antMatchers(HttpMethod.GET, "/inquiry/all").hasAuthority("ROLE_ADMIN") .antMatchers(HttpMethod.GET, "/inquiry/filter/{state}").authenticated() .antMatchers(HttpMethod.GET, "/inquiry/{id}").authenticated()