유저 관심사, 라이브 관심사 - 연령제한 설정 추가
This commit is contained in:
		| @@ -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() | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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<LiveTag, Long>, LiveTagQueryReposito | ||||
| } | ||||
|  | ||||
| interface LiveTagQueryRepository { | ||||
|     fun getTags(role: MemberRole, isAdult: Boolean, cloudFrontHost: String): List<GetLiveTagResponse> | ||||
|     fun getTags(member: Member, cloudFrontHost: String): List<GetLiveTagResponse> | ||||
| } | ||||
|  | ||||
| @Repository | ||||
| class LiveTagQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : LiveTagQueryRepository { | ||||
|     override fun getTags(role: MemberRole, isAdult: Boolean, cloudFrontHost: String): List<GetLiveTagResponse> { | ||||
|     override fun getTags(member: Member, cloudFrontHost: String): List<GetLiveTagResponse> { | ||||
|         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 | ||||
|   | ||||
| @@ -90,7 +90,7 @@ class LiveTagService( | ||||
|     } | ||||
|  | ||||
|     fun getTags(member: Member): List<GetLiveTagResponse> { | ||||
|         return repository.getTags(role = member.role, isAdult = member.auth != null, cloudFrontHost = cloudFrontHost) | ||||
|         return repository.getTags(member = member, cloudFrontHost = cloudFrontHost) | ||||
|     } | ||||
|  | ||||
|     fun tagExistCheck(request: CreateLiveTagRequest) { | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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)) | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -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() | ||||
|     } | ||||
|   | ||||
| @@ -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) | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user