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