Compare commits

..

No commits in common. "eda2193e64c9ff23c0c44f8cbd6b914620e40895" and "99bf829c8881c56f5c4ed3e4c307253064800343" have entirely different histories.

13 changed files with 22 additions and 55 deletions

View File

@ -31,21 +31,15 @@ class AdminMemberTagService(
bucket = bucket, bucket = bucket,
filePath = "creator_tag/$fileName" filePath = "creator_tag/$fileName"
) )
return createTag(tag = request.tag, imagePath = imagePath, isAdult = request.isAdult) return createTag(request.tag, imagePath)
} }
private fun tagExistCheck(request: CreateMemberTagRequest) { private fun tagExistCheck(request: CreateMemberTagRequest) {
repository.findByTag(request.tag)?.let { throw SodaException("이미 등록된 태그 입니다.") } repository.findByTag(request.tag)?.let { throw SodaException("이미 등록된 태그 입니다.") }
} }
private fun createTag(tag: String, imagePath: String, isAdult: Boolean) { private fun createTag(tag: String, imagePath: String) {
repository.save( repository.save(CreatorTag(tag, imagePath))
CreatorTag(
tag = tag,
isAdult = isAdult,
image = imagePath
)
)
} }
@Transactional @Transactional
@ -64,7 +58,6 @@ class AdminMemberTagService(
val request = objectMapper.readValue(requestString, CreateMemberTagRequest::class.java) val request = objectMapper.readValue(requestString, CreateMemberTagRequest::class.java)
creatorTag.tag = request.tag creatorTag.tag = request.tag
creatorTag.isAdult = request.isAdult
if (image != null) { if (image != null) {
val fileName = generateFileName() val fileName = generateFileName()

View File

@ -1,3 +1,3 @@
package kr.co.vividnext.sodalive.admin.member.tag package kr.co.vividnext.sodalive.admin.member.tag
data class CreateMemberTagRequest(val tag: String, val isAdult: Boolean = false) data class CreateMemberTagRequest(val tag: String)

View File

@ -1,3 +1,3 @@
package kr.co.vividnext.sodalive.live.tag package kr.co.vividnext.sodalive.live.tag
data class CreateLiveTagRequest(val tag: String, val isAdult: Boolean = false) data class CreateLiveTagRequest(val tag: String)

View File

@ -5,6 +5,5 @@ import com.querydsl.core.annotations.QueryProjection
data class GetLiveTagResponse @QueryProjection constructor( data class GetLiveTagResponse @QueryProjection constructor(
val id: Long, val id: Long,
val tag: String, val tag: String,
val image: String, val image: String
val isAdult: Boolean
) )

View File

@ -8,8 +8,6 @@ import javax.persistence.Entity
data class LiveTag( data class LiveTag(
@Column(unique = true, nullable = false) @Column(unique = true, nullable = false)
var tag: String, var tag: String,
@Column(nullable = false)
var isAdult: Boolean = false,
@Column(nullable = true) @Column(nullable = true)
var image: String? = null, var image: String? = null,
@Column(nullable = false) @Column(nullable = false)

View File

@ -29,11 +29,11 @@ class LiveTagController(private val service: LiveTagService) {
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
@PreAuthorize("hasRole('ADMIN')") @PreAuthorize("hasRole('ADMIN')")
fun deleteLiveTag(@PathVariable id: Long) = ApiResponse.ok(service.deleteTag(id), "삭제되었습니다.") fun deleteSudaTag(@PathVariable id: Long) = ApiResponse.ok(service.deleteTag(id), "삭제되었습니다.")
@PutMapping("/{id}") @PutMapping("/{id}")
@PreAuthorize("hasRole('ADMIN')") @PreAuthorize("hasRole('ADMIN')")
fun modifyLiveTag( fun modifySudaTag(
@PathVariable id: Long, @PathVariable id: Long,
@RequestPart("image") image: MultipartFile?, @RequestPart("image") image: MultipartFile?,
@RequestPart("request") requestString: String @RequestPart("request") requestString: String

View File

@ -2,7 +2,6 @@ package kr.co.vividnext.sodalive.live.tag
import com.querydsl.jpa.impl.JPAQueryFactory import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.live.tag.QLiveTag.liveTag import kr.co.vividnext.sodalive.live.tag.QLiveTag.liveTag
import kr.co.vividnext.sodalive.member.Member
import kr.co.vividnext.sodalive.member.MemberRole import kr.co.vividnext.sodalive.member.MemberRole
import org.springframework.data.jpa.repository.JpaRepository import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository import org.springframework.stereotype.Repository
@ -13,16 +12,16 @@ interface LiveTagRepository : JpaRepository<LiveTag, Long>, LiveTagQueryReposito
} }
interface LiveTagQueryRepository { interface LiveTagQueryRepository {
fun getTags(member: Member, cloudFrontHost: String): List<GetLiveTagResponse> fun getTags(role: MemberRole, isAdult: Boolean, cloudFrontHost: String): List<GetLiveTagResponse>
} }
@Repository @Repository
class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveTagQueryRepository { class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveTagQueryRepository {
override fun getTags(member: Member, cloudFrontHost: String): List<GetLiveTagResponse> { override fun getTags(role: MemberRole, isAdult: Boolean, cloudFrontHost: String): List<GetLiveTagResponse> {
var where = liveTag.isActive.isTrue var where = liveTag.isActive.isTrue
if (member.role != MemberRole.ADMIN && member.auth == null) { if (role != MemberRole.ADMIN && !isAdult) {
where = where.and(liveTag.isAdult.isFalse) where = where.and(liveTag.tag.notIn("음담패설", "EDPS"))
} }
return queryFactory return queryFactory
@ -30,8 +29,7 @@ class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : Li
QGetLiveTagResponse( QGetLiveTagResponse(
liveTag.id, liveTag.id,
liveTag.tag, liveTag.tag,
liveTag.image.prepend("/").prepend(cloudFrontHost), liveTag.image.prepend("/").prepend(cloudFrontHost)
liveTag.isAdult
) )
) )
.from(liveTag) .from(liveTag)

View File

@ -90,7 +90,7 @@ class LiveTagService(
} }
fun getTags(member: Member): List<GetLiveTagResponse> { fun getTags(member: Member): List<GetLiveTagResponse> {
return repository.getTags(member = member, cloudFrontHost = cloudFrontHost) return repository.getTags(role = member.role, isAdult = member.auth != null, cloudFrontHost = cloudFrontHost)
} }
fun tagExistCheck(request: CreateLiveTagRequest) { fun tagExistCheck(request: CreateLiveTagRequest) {

View File

@ -8,8 +8,6 @@ import javax.persistence.Entity
data class CreatorTag( data class CreatorTag(
@Column(unique = true, nullable = false) @Column(unique = true, nullable = false)
var tag: String, var tag: String,
@Column(nullable = false)
var isAdult: Boolean = false,
@Column(nullable = true) @Column(nullable = true)
var image: String? = null, var image: String? = null,
@Column(nullable = false) @Column(nullable = false)

View File

@ -5,6 +5,5 @@ import com.querydsl.core.annotations.QueryProjection
data class GetMemberTagResponse @QueryProjection constructor( data class GetMemberTagResponse @QueryProjection constructor(
val id: Long, val id: Long,
val tag: String, val tag: String,
val image: String, val image: String
val isAdult: Boolean
) )

View File

@ -1,9 +1,6 @@
package kr.co.vividnext.sodalive.member.tag package kr.co.vividnext.sodalive.member.tag
import kr.co.vividnext.sodalive.common.ApiResponse 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.GetMapping
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
@ -12,11 +9,5 @@ import org.springframework.web.bind.annotation.RestController
@RequestMapping("/member/tag") @RequestMapping("/member/tag")
class MemberTagController(private val service: MemberTagService) { class MemberTagController(private val service: MemberTagService) {
@GetMapping @GetMapping
fun getTags( fun getTags() = ApiResponse.ok(service.getTags())
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?
) = run {
if (member == null) throw SodaException("로그인 정보를 확인해주세요.")
ApiResponse.ok(service.getTags(member))
}
} }

View File

@ -2,7 +2,6 @@ package kr.co.vividnext.sodalive.member.tag
import com.querydsl.jpa.impl.JPAQueryFactory import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.member.Member 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.QCreatorTag.creatorTag
import kr.co.vividnext.sodalive.member.tag.QMemberCreatorTag.memberCreatorTag import kr.co.vividnext.sodalive.member.tag.QMemberCreatorTag.memberCreatorTag
import org.springframework.beans.factory.annotation.Value import org.springframework.beans.factory.annotation.Value
@ -13,7 +12,7 @@ interface MemberTagRepository : JpaRepository<CreatorTag, Long>, MemberTagQueryR
} }
interface MemberTagQueryRepository { interface MemberTagQueryRepository {
fun getTags(member: Member): List<GetMemberTagResponse> fun getTags(): List<GetMemberTagResponse>
fun findByMember(member: Member): List<MemberCreatorTag> fun findByMember(member: Member): List<MemberCreatorTag>
} }
@ -23,24 +22,17 @@ class MemberTagQueryRepositoryImpl(
@Value("\${cloud.aws.cloud-front.host}") @Value("\${cloud.aws.cloud-front.host}")
private val cloudFrontHost: String private val cloudFrontHost: String
) : MemberTagQueryRepository { ) : MemberTagQueryRepository {
override fun getTags(member: Member): List<GetMemberTagResponse> { override fun getTags(): List<GetMemberTagResponse> {
var where = creatorTag.isActive.isTrue
if (member.role != MemberRole.ADMIN && member.auth == null) {
where = where.and(creatorTag.isAdult.isFalse)
}
return queryFactory return queryFactory
.select( .select(
QGetMemberTagResponse( QGetMemberTagResponse(
creatorTag.id, creatorTag.id,
creatorTag.tag, creatorTag.tag,
creatorTag.image.prepend("/").prepend(cloudFrontHost), creatorTag.image.prepend("/").prepend(cloudFrontHost)
creatorTag.isAdult
) )
) )
.from(creatorTag) .from(creatorTag)
.where(where) .where(creatorTag.isActive.eq(true))
.orderBy(creatorTag.orders.asc()) .orderBy(creatorTag.orders.asc())
.fetch() .fetch()
} }

View File

@ -1,11 +1,10 @@
package kr.co.vividnext.sodalive.member.tag package kr.co.vividnext.sodalive.member.tag
import kr.co.vividnext.sodalive.member.Member
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
@Service @Service
class MemberTagService(private val repository: MemberTagRepository) { class MemberTagService(private val repository: MemberTagRepository) {
fun getTags(member: Member): List<GetMemberTagResponse> { fun getTags(): List<GetMemberTagResponse> {
return repository.getTags(member) return repository.getTags()
} }
} }