유저 관심사, 라이브 관심사 - 연령제한 설정 추가

This commit is contained in:
2023-08-25 16:15:59 +09:00
parent 65e0b87d79
commit 7af970ace4
11 changed files with 47 additions and 18 deletions

View File

@@ -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)

View File

@@ -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))
}
}

View File

@@ -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<CreatorTag, Long>, MemberTagQueryR
}
interface MemberTagQueryRepository {
fun getTags(): List<GetMemberTagResponse>
fun getTags(member: Member): List<GetMemberTagResponse>
fun findByMember(member: Member): List<MemberCreatorTag>
}
@@ -22,7 +23,13 @@ class MemberTagQueryRepositoryImpl(
@Value("\${cloud.aws.cloud-front.host}")
private val cloudFrontHost: String
) : MemberTagQueryRepository {
override fun getTags(): List<GetMemberTagResponse> {
override fun getTags(member: Member): List<GetMemberTagResponse> {
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()
}

View File

@@ -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<GetMemberTagResponse> {
return repository.getTags()
fun getTags(member: Member): List<GetMemberTagResponse> {
return repository.getTags(member)
}
}