시그니처
- 19금 여부 추가
This commit is contained in:
		| @@ -23,9 +23,10 @@ class AdminSignatureCanController(private val service: AdminSignatureCanService) | ||||
|     fun createSignatureCan( | ||||
|         @RequestParam("can") can: Int, | ||||
|         @RequestParam("image") image: MultipartFile, | ||||
|         @RequestParam("creator_id") creatorId: Long | ||||
|         @RequestParam("creator_id") creatorId: Long, | ||||
|         @RequestParam("isAdult", required = false) isAdult: Boolean = false | ||||
|     ) = ApiResponse.ok( | ||||
|         service.createSignatureCan(can = can, creatorId = creatorId, image = image), | ||||
|         service.createSignatureCan(can = can, creatorId = creatorId, image = image, isAdult = isAdult), | ||||
|         "등록되었습니다." | ||||
|     ) | ||||
|  | ||||
| @@ -33,14 +34,15 @@ class AdminSignatureCanController(private val service: AdminSignatureCanService) | ||||
|     fun modifySignatureCan( | ||||
|         @RequestParam("id") id: Long, | ||||
|         @RequestParam("image", required = false) image: MultipartFile?, | ||||
|         @RequestParam("isActive", required = false) isActive: Boolean? | ||||
|         @RequestParam("isActive", required = false) isActive: Boolean?, | ||||
|         @RequestParam("isAdult", required = false) isAdult: Boolean? | ||||
|     ) = run { | ||||
|         if (image == null && isActive == null) { | ||||
|             throw SodaException("변경사항이 없습니다.") | ||||
|         } | ||||
|  | ||||
|         ApiResponse.ok( | ||||
|             service.modifySignatureCan(id = id, image = image, isActive = isActive), | ||||
|             service.modifySignatureCan(id = id, image = image, isActive = isActive, isAdult = isAdult), | ||||
|             "수정되었습니다." | ||||
|         ) | ||||
|     } | ||||
|   | ||||
| @@ -37,13 +37,13 @@ class AdminSignatureCanService( | ||||
|     } | ||||
|  | ||||
|     @Transactional | ||||
|     fun createSignatureCan(can: Int, creatorId: Long, image: MultipartFile) { | ||||
|     fun createSignatureCan(can: Int, creatorId: Long, image: MultipartFile, isAdult: Boolean) { | ||||
|         if (creatorId < 1) throw SodaException("올바른 크리에이터를 선택해 주세요.") | ||||
|  | ||||
|         val creator = memberRepository.findCreatorByIdOrNull(memberId = creatorId) | ||||
|             ?: throw SodaException("올바른 크리에이터를 선택해 주세요.") | ||||
|  | ||||
|         val signatureCan = SignatureCan(can = can) | ||||
|         val signatureCan = SignatureCan(can = can, isAdult = isAdult) | ||||
|         signatureCan.creator = creator | ||||
|         repository.save(signatureCan) | ||||
|  | ||||
| @@ -60,7 +60,7 @@ class AdminSignatureCanService( | ||||
|     } | ||||
|  | ||||
|     @Transactional | ||||
|     fun modifySignatureCan(id: Long, image: MultipartFile?, isActive: Boolean?) { | ||||
|     fun modifySignatureCan(id: Long, image: MultipartFile?, isActive: Boolean?, isAdult: Boolean?) { | ||||
|         val signatureCan = repository.findByIdOrNull(id = id) | ||||
|             ?: throw SodaException("잘못된 요청입니다.") | ||||
|  | ||||
| @@ -68,6 +68,10 @@ class AdminSignatureCanService( | ||||
|             signatureCan.isActive = isActive | ||||
|         } | ||||
|  | ||||
|         if (isAdult != null) { | ||||
|             signatureCan.isAdult = isAdult | ||||
|         } | ||||
|  | ||||
|         if (image != null) { | ||||
|             val metadata = ObjectMetadata() | ||||
|             metadata.contentLength = image.size | ||||
|   | ||||
| @@ -32,12 +32,13 @@ class CreatorAdminSignatureController(private val service: CreatorAdminSignature | ||||
|     fun createSignature( | ||||
|         @RequestParam("can") can: Int, | ||||
|         @RequestParam("image") image: MultipartFile, | ||||
|         @RequestParam("isAdult", required = false) isAdult: Boolean = false, | ||||
|         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? | ||||
|     ) = run { | ||||
|         if (member == null) throw SodaException("로그인 정보를 확인해주세요.") | ||||
|  | ||||
|         ApiResponse.ok( | ||||
|             service.createSignature(can = can, image = image, memberId = member.id!!), | ||||
|             service.createSignature(can = can, image = image, isAdult = isAdult, memberId = member.id!!), | ||||
|             "등록되었습니다." | ||||
|         ) | ||||
|     } | ||||
| @@ -47,13 +48,20 @@ class CreatorAdminSignatureController(private val service: CreatorAdminSignature | ||||
|         @RequestParam("id") id: Long, | ||||
|         @RequestParam("image", required = false) image: MultipartFile?, | ||||
|         @RequestParam("isActive", required = false) isActive: Boolean?, | ||||
|         @RequestParam("isAdult", required = false) isAdult: Boolean?, | ||||
|         @AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member? | ||||
|     ) = run { | ||||
|         if (member == null) throw SodaException("로그인 정보를 확인해주세요.") | ||||
|         if (image == null && isActive == null) throw SodaException("변경사항이 없습니다.") | ||||
|  | ||||
|         ApiResponse.ok( | ||||
|             service.modifySignature(id = id, image = image, isActive = isActive, memberId = member.id!!), | ||||
|             service.modifySignature( | ||||
|                 id = id, | ||||
|                 image = image, | ||||
|                 isActive = isActive, | ||||
|                 isAdult = isAdult, | ||||
|                 memberId = member.id!! | ||||
|             ), | ||||
|             if (isActive == false) "삭제되었습니다." else "수정되었습니다." | ||||
|         ) | ||||
|     } | ||||
|   | ||||
| @@ -37,11 +37,11 @@ class CreatorAdminSignatureService( | ||||
|     } | ||||
|  | ||||
|     @Transactional | ||||
|     fun createSignature(can: Int, image: MultipartFile, memberId: Long) { | ||||
|     fun createSignature(can: Int, image: MultipartFile, memberId: Long, isAdult: Boolean) { | ||||
|         val member = memberRepository.findCreatorByIdOrNull(memberId = memberId) | ||||
|             ?: throw SodaException("잘못된 접근입니다.") | ||||
|  | ||||
|         val signatureCan = SignatureCan(can = can) | ||||
|         val signatureCan = SignatureCan(can = can, isAdult = isAdult) | ||||
|         signatureCan.creator = member | ||||
|         repository.save(signatureCan) | ||||
|  | ||||
| @@ -58,7 +58,7 @@ class CreatorAdminSignatureService( | ||||
|     } | ||||
|  | ||||
|     @Transactional | ||||
|     fun modifySignature(id: Long, image: MultipartFile?, isActive: Boolean?, memberId: Long) { | ||||
|     fun modifySignature(id: Long, image: MultipartFile?, isActive: Boolean?, memberId: Long, isAdult: Boolean?) { | ||||
|         val signatureCan = repository.findSignatureByIdOrNull(id = id, memberId = memberId) | ||||
|             ?: throw SodaException("잘못된 요청입니다.") | ||||
|  | ||||
| @@ -66,6 +66,10 @@ class CreatorAdminSignatureService( | ||||
|             signatureCan.isActive = isActive | ||||
|         } | ||||
|  | ||||
|         if (isAdult != null) { | ||||
|             signatureCan.isAdult = isAdult | ||||
|         } | ||||
|  | ||||
|         if (image != null) { | ||||
|             val metadata = ObjectMetadata() | ||||
|             metadata.contentLength = image.size | ||||
|   | ||||
| @@ -1009,7 +1009,8 @@ class LiveRoomService( | ||||
|         return signatureCanRepository.findImageByCreatorIdAndCan( | ||||
|             creatorId = host.id!!, | ||||
|             can = request.can, | ||||
|             imageHost = cloudFrontHost | ||||
|             imageHost = cloudFrontHost, | ||||
|             isAdult = room.isAdult | ||||
|         ) | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -10,6 +10,7 @@ import javax.persistence.ManyToOne | ||||
| @Entity | ||||
| data class SignatureCan( | ||||
|     val can: Int, | ||||
|     var isAdult: Boolean = false, | ||||
|     var isActive: Boolean = true | ||||
| ) : BaseEntity() { | ||||
|     var image: String? = null | ||||
|   | ||||
| @@ -7,19 +7,24 @@ import org.springframework.data.jpa.repository.JpaRepository | ||||
| interface SignatureCanRepository : JpaRepository<SignatureCan, Long>, SignatureCanQueryRepository | ||||
|  | ||||
| interface SignatureCanQueryRepository { | ||||
|     fun findImageByCreatorIdAndCan(creatorId: Long, can: Int, imageHost: String): String? | ||||
|     fun findImageByCreatorIdAndCan(creatorId: Long, can: Int, imageHost: String, isAdult: Boolean): String? | ||||
| } | ||||
|  | ||||
| class SignatureCanQueryRepositoryImpl(private val queryFactory: JPAQueryFactory) : SignatureCanQueryRepository { | ||||
|     override fun findImageByCreatorIdAndCan(creatorId: Long, can: Int, imageHost: String): String? { | ||||
|     override fun findImageByCreatorIdAndCan(creatorId: Long, can: Int, imageHost: String, isAdult: Boolean): String? { | ||||
|         var where = signatureCan.creator.id.eq(creatorId) | ||||
|             .and(signatureCan.can.eq(can)) | ||||
|             .and(signatureCan.isActive.isTrue) | ||||
|  | ||||
|         if (!isAdult) { | ||||
|             where = where.and(signatureCan.isAdult.isFalse()) | ||||
|         } | ||||
|  | ||||
|         return queryFactory | ||||
|             .select(signatureCan.image.prepend("/").prepend(imageHost)) | ||||
|             .from(signatureCan) | ||||
|             .where( | ||||
|                 signatureCan.creator.id.eq(creatorId) | ||||
|                     .and(signatureCan.can.eq(can)) | ||||
|                     .and(signatureCan.isActive.isTrue) | ||||
|             ) | ||||
|             .where(where) | ||||
|             .orderBy(signatureCan.isAdult.desc()) | ||||
|             .fetchFirst() | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user