From 7af970ace4055191e80e56fc78527465688ee9f8 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 25 Aug 2023 16:15:59 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EA=B4=80=EC=8B=AC?= =?UTF-8?q?=EC=82=AC,=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EA=B4=80=EC=8B=AC?= =?UTF-8?q?=EC=82=AC=20-=20=EC=97=B0=EB=A0=B9=EC=A0=9C=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 --- .../admin/member/tag/AdminMemberTagService.kt | 13 ++++++++++--- .../admin/member/tag/CreateMemberTagRequest.kt | 2 +- .../sodalive/live/tag/CreateLiveTagRequest.kt | 2 +- .../kr/co/vividnext/sodalive/live/tag/LiveTag.kt | 2 ++ .../sodalive/live/tag/LiveTagController.kt | 4 ++-- .../sodalive/live/tag/LiveTagRepository.kt | 9 +++++---- .../vividnext/sodalive/live/tag/LiveTagService.kt | 2 +- .../co/vividnext/sodalive/member/tag/CreatorTag.kt | 2 ++ .../sodalive/member/tag/MemberTagController.kt | 11 ++++++++++- .../sodalive/member/tag/MemberTagRepository.kt | 13 ++++++++++--- .../sodalive/member/tag/MemberTagService.kt | 5 +++-- 11 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/AdminMemberTagService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/AdminMemberTagService.kt index 0e60a59..f3c5806 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/AdminMemberTagService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/AdminMemberTagService.kt @@ -31,15 +31,21 @@ class AdminMemberTagService( bucket = bucket, filePath = "creator_tag/$fileName" ) - return createTag(request.tag, imagePath) + return createTag(tag = request.tag, imagePath = imagePath, isAdult = request.isAdult) } private fun tagExistCheck(request: CreateMemberTagRequest) { repository.findByTag(request.tag)?.let { throw SodaException("이미 등록된 태그 입니다.") } } - private fun createTag(tag: String, imagePath: String) { - repository.save(CreatorTag(tag, imagePath)) + private fun createTag(tag: String, imagePath: String, isAdult: Boolean) { + repository.save( + CreatorTag( + tag = tag, + isAdult = isAdult, + image = imagePath + ) + ) } @Transactional @@ -58,6 +64,7 @@ class AdminMemberTagService( val request = objectMapper.readValue(requestString, CreateMemberTagRequest::class.java) creatorTag.tag = request.tag + creatorTag.isAdult = request.isAdult if (image != null) { val fileName = generateFileName() diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/CreateMemberTagRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/CreateMemberTagRequest.kt index fa70355..7e0eb94 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/CreateMemberTagRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/admin/member/tag/CreateMemberTagRequest.kt @@ -1,3 +1,3 @@ package kr.co.vividnext.sodalive.admin.member.tag -data class CreateMemberTagRequest(val tag: String) +data class CreateMemberTagRequest(val tag: String, val isAdult: Boolean = false) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/CreateLiveTagRequest.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/CreateLiveTagRequest.kt index 80a1b59..a221d2b 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/CreateLiveTagRequest.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/CreateLiveTagRequest.kt @@ -1,3 +1,3 @@ package kr.co.vividnext.sodalive.live.tag -data class CreateLiveTagRequest(val tag: String) +data class CreateLiveTagRequest(val tag: String, val isAdult: Boolean = false) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTag.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTag.kt index 99b0735..b334dba 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTag.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTag.kt @@ -8,6 +8,8 @@ import javax.persistence.Entity data class LiveTag( @Column(unique = true, nullable = false) var tag: String, + @Column(nullable = false) + var isAdult: Boolean = false, @Column(nullable = true) var image: String? = null, @Column(nullable = false) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagController.kt index 0e29647..714f922 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagController.kt @@ -29,11 +29,11 @@ class LiveTagController(private val service: LiveTagService) { @DeleteMapping("/{id}") @PreAuthorize("hasRole('ADMIN')") - fun deleteSudaTag(@PathVariable id: Long) = ApiResponse.ok(service.deleteTag(id), "삭제되었습니다.") + fun deleteLiveTag(@PathVariable id: Long) = ApiResponse.ok(service.deleteTag(id), "삭제되었습니다.") @PutMapping("/{id}") @PreAuthorize("hasRole('ADMIN')") - fun modifySudaTag( + fun modifyLiveTag( @PathVariable id: Long, @RequestPart("image") image: MultipartFile?, @RequestPart("request") requestString: String diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt index 009768f..151b36a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.live.tag import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.live.tag.QLiveTag.liveTag +import kr.co.vividnext.sodalive.member.Member import kr.co.vividnext.sodalive.member.MemberRole import org.springframework.data.jpa.repository.JpaRepository import org.springframework.stereotype.Repository @@ -12,16 +13,16 @@ interface LiveTagRepository : JpaRepository, LiveTagQueryReposito } interface LiveTagQueryRepository { - fun getTags(role: MemberRole, isAdult: Boolean, cloudFrontHost: String): List + fun getTags(member: Member, cloudFrontHost: String): List } @Repository class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveTagQueryRepository { - override fun getTags(role: MemberRole, isAdult: Boolean, cloudFrontHost: String): List { + override fun getTags(member: Member, cloudFrontHost: String): List { var where = liveTag.isActive.isTrue - if (role != MemberRole.ADMIN && !isAdult) { - where = where.and(liveTag.tag.notIn("음담패설", "EDPS")) + if (member.role != MemberRole.ADMIN && member.auth == null) { + where = where.and(liveTag.isAdult.isFalse) } return queryFactory diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagService.kt index 6237a01..6770cd3 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagService.kt @@ -90,7 +90,7 @@ class LiveTagService( } fun getTags(member: Member): List { - return repository.getTags(role = member.role, isAdult = member.auth != null, cloudFrontHost = cloudFrontHost) + return repository.getTags(member = member, cloudFrontHost = cloudFrontHost) } fun tagExistCheck(request: CreateLiveTagRequest) { diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/CreatorTag.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/CreatorTag.kt index 99e3dfc..586b272 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/CreatorTag.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/CreatorTag.kt @@ -8,6 +8,8 @@ import javax.persistence.Entity data class CreatorTag( @Column(unique = true, nullable = false) var tag: String, + @Column(nullable = false) + var isAdult: Boolean = false, @Column(nullable = true) var image: String? = null, @Column(nullable = false) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagController.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagController.kt index ff4c7f5..e46a27c 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagController.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagController.kt @@ -1,6 +1,9 @@ package kr.co.vividnext.sodalive.member.tag import kr.co.vividnext.sodalive.common.ApiResponse +import kr.co.vividnext.sodalive.common.SodaException +import kr.co.vividnext.sodalive.member.Member +import org.springframework.security.core.annotation.AuthenticationPrincipal import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @@ -9,5 +12,11 @@ import org.springframework.web.bind.annotation.RestController @RequestMapping("/member/tag") class MemberTagController(private val service: MemberTagService) { @GetMapping - fun getTags() = ApiResponse.ok(service.getTags()) + fun getTags( + @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? + ) = run { + if (member == null) throw SodaException("로그인 정보를 확인해주세요.") + + ApiResponse.ok(service.getTags(member)) + } } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt index 43e3035..5b8171a 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt @@ -2,6 +2,7 @@ package kr.co.vividnext.sodalive.member.tag import com.querydsl.jpa.impl.JPAQueryFactory import kr.co.vividnext.sodalive.member.Member +import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.member.tag.QCreatorTag.creatorTag import kr.co.vividnext.sodalive.member.tag.QMemberCreatorTag.memberCreatorTag import org.springframework.beans.factory.annotation.Value @@ -12,7 +13,7 @@ interface MemberTagRepository : JpaRepository, MemberTagQueryR } interface MemberTagQueryRepository { - fun getTags(): List + fun getTags(member: Member): List fun findByMember(member: Member): List } @@ -22,7 +23,13 @@ class MemberTagQueryRepositoryImpl( @Value("\${cloud.aws.cloud-front.host}") private val cloudFrontHost: String ) : MemberTagQueryRepository { - override fun getTags(): List { + override fun getTags(member: Member): List { + var where = creatorTag.isActive.isTrue + + if (member.role != MemberRole.ADMIN && member.auth == null) { + where = where.and(creatorTag.isAdult.isFalse) + } + return queryFactory .select( QGetMemberTagResponse( @@ -32,7 +39,7 @@ class MemberTagQueryRepositoryImpl( ) ) .from(creatorTag) - .where(creatorTag.isActive.eq(true)) + .where(where) .orderBy(creatorTag.orders.asc()) .fetch() } diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagService.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagService.kt index 72a51b3..9633488 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagService.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagService.kt @@ -1,10 +1,11 @@ package kr.co.vividnext.sodalive.member.tag +import kr.co.vividnext.sodalive.member.Member import org.springframework.stereotype.Service @Service class MemberTagService(private val repository: MemberTagRepository) { - fun getTags(): List { - return repository.getTags() + fun getTags(member: Member): List { + return repository.getTags(member) } } From d865ec3ef80b576d7dac63d8f1366953e54a5bc5 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 25 Aug 2023 16:33:03 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EA=B4=80=EC=8B=AC?= =?UTF-8?q?=EC=82=AC,=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EA=B4=80=EC=8B=AC?= =?UTF-8?q?=EC=82=AC=20-=20=EC=97=B0=EB=A0=B9=EC=A0=9C=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 --- .../kr/co/vividnext/sodalive/live/tag/GetLiveTagResponse.kt | 3 ++- .../co/vividnext/sodalive/member/tag/GetMemberTagResponse.kt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/GetLiveTagResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/GetLiveTagResponse.kt index e478871..08b1726 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/GetLiveTagResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/GetLiveTagResponse.kt @@ -5,5 +5,6 @@ import com.querydsl.core.annotations.QueryProjection data class GetLiveTagResponse @QueryProjection constructor( val id: Long, val tag: String, - val image: String + val image: String, + val isAdult: Boolean ) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/GetMemberTagResponse.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/GetMemberTagResponse.kt index a98882b..0b5f182 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/GetMemberTagResponse.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/GetMemberTagResponse.kt @@ -5,5 +5,6 @@ import com.querydsl.core.annotations.QueryProjection data class GetMemberTagResponse @QueryProjection constructor( val id: Long, val tag: String, - val image: String + val image: String, + val isAdult: Boolean ) From 118c5c2eedd1c74ebd70282270e07ba9d560a666 Mon Sep 17 00:00:00 2001 From: Klaus Date: Fri, 25 Aug 2023 16:39:40 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EA=B4=80=EC=8B=AC?= =?UTF-8?q?=EC=82=AC,=20=EB=9D=BC=EC=9D=B4=EB=B8=8C=20=EA=B4=80=EC=8B=AC?= =?UTF-8?q?=EC=82=AC=20-=20=EC=97=B0=EB=A0=B9=EC=A0=9C=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 --- .../kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt | 3 ++- .../kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt index 151b36a..8b436f1 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/live/tag/LiveTagRepository.kt @@ -30,7 +30,8 @@ class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Li QGetLiveTagResponse( liveTag.id, liveTag.tag, - liveTag.image.prepend("/").prepend(cloudFrontHost) + liveTag.image.prepend("/").prepend(cloudFrontHost), + liveTag.isAdult ) ) .from(liveTag) diff --git a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt index 5b8171a..3d98eea 100644 --- a/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt +++ b/src/main/kotlin/kr/co/vividnext/sodalive/member/tag/MemberTagRepository.kt @@ -35,7 +35,8 @@ class MemberTagQueryRepositoryImpl( QGetMemberTagResponse( creatorTag.id, creatorTag.tag, - creatorTag.image.prepend("/").prepend(cloudFrontHost) + creatorTag.image.prepend("/").prepend(cloudFrontHost), + creatorTag.isAdult ) ) .from(creatorTag)