시그니처

- 19금 여부 추가
This commit is contained in:
Klaus 2024-03-13 16:21:10 +09:00
parent 536923c00b
commit 5732ecfbfa
7 changed files with 45 additions and 20 deletions

View File

@ -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),
"수정되었습니다."
)
}

View File

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

View File

@ -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 "수정되었습니다."
)
}

View File

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

View File

@ -1009,7 +1009,8 @@ class LiveRoomService(
return signatureCanRepository.findImageByCreatorIdAndCan(
creatorId = host.id!!,
can = request.can,
imageHost = cloudFrontHost
imageHost = cloudFrontHost,
isAdult = room.isAdult
)
}

View File

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

View File

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