Compare commits

...

2 Commits

Author SHA1 Message Date
Klaus 297f6555f3 라이브 방 - 후원 메시지 리스트
- 방장은 모든 후원 메시지를 볼 수 있도록 수정
2024-11-11 12:37:14 +09:00
Klaus 6111409d66 라이브 방 - 후원 메시지 리스트
- 비밀 후원 메시지 추가
2024-11-11 12:29:29 +09:00
5 changed files with 36 additions and 5 deletions

View File

@ -56,6 +56,7 @@ interface LiveRoomQueryRepository {
fun getRoomActiveAndChannelNameIsNotNull(memberId: Long): List<LiveRoom>
fun getActiveRoomIdList(memberId: Long): Int
fun getTotalHeartCount(roomId: Long): Int?
fun getLiveRoomCreatorId(roomId: Long): Long?
}
class LiveRoomQueryRepositoryImpl(
@ -334,4 +335,15 @@ class LiveRoomQueryRepositoryImpl(
.where(where)
.fetchOne()
}
override fun getLiveRoomCreatorId(roomId: Long): Long? {
return queryFactory
.select(liveRoom.member.id)
.from(liveRoom)
.where(
liveRoom.isActive.isTrue
.and(liveRoom.id.eq(roomId))
)
.fetchFirst()
}
}

View File

@ -885,10 +885,18 @@ class LiveRoomService(
}
fun getDonationMessageList(roomId: Long, member: Member): List<LiveRoomDonationMessage> {
val liveRoomCreatorId = repository.getLiveRoomCreatorId(roomId)
?: throw SodaException("해당하는 라이브의 정보가 없습니다.")
val roomInfo = roomInfoRepository.findByIdOrNull(roomId)
?: throw SodaException("해당하는 라이브의 정보가 없습니다.")
return roomInfo.donationMessageList
return if (liveRoomCreatorId != member.id!!) {
roomInfo.donationMessageList
.filter { !it.isSecret || it.memberId == member.id!! }
} else {
roomInfo.donationMessageList
}
}
fun deleteDonationMessage(request: DeleteLiveRoomDonationMessage, member: Member) {
@ -1068,14 +1076,16 @@ class LiveRoomService(
container = request.container
)
if (!request.isSecret && request.message.isNotBlank()) {
if (request.message.isNotBlank()) {
val lock = getOrCreateLock(memberId = member.id!!)
lock.write {
val roomInfo = roomInfoRepository.findByIdOrNull(room.id!!)
?: throw SodaException("해당하는 라이브의 정보가 없습니다.")
roomInfo.addDonationMessage(
memberId = member.id!!,
nickname = member.nickname,
isSecret = request.isSecret,
can = request.can,
donationMessage = request.message
)
@ -1112,14 +1122,16 @@ class LiveRoomService(
container = request.container
)
if (!request.isSecret && request.message.isNotBlank()) {
if (request.message.isNotBlank()) {
val lock = getOrCreateLock(memberId = member.id!!)
lock.write {
val roomInfo = roomInfoRepository.findByIdOrNull(room.id!!)
?: throw SodaException("해당하는 라이브의 정보가 없습니다.")
roomInfo.addDonationMessage(
memberId = member.id!!,
nickname = member.nickname,
isSecret = request.isSecret,
can = request.can,
donationMessage = request.message
)

View File

@ -4,7 +4,9 @@ import java.util.UUID
data class LiveRoomDonationMessage(
val uuid: String = UUID.randomUUID().toString(),
val memberId: Long,
val nickname: String,
val isSecret: Boolean,
val canMessage: String,
val donationMessage: String
)

View File

@ -83,11 +83,13 @@ data class LiveRoomInfo(
managerCount = managerList.size
}
fun addDonationMessage(nickname: String, can: Int, donationMessage: String) {
fun addDonationMessage(memberId: Long, nickname: String, isSecret: Boolean, can: Int, donationMessage: String) {
val donationMessageSet = donationMessageList.toMutableSet()
donationMessageSet.add(
LiveRoomDonationMessage(
memberId = memberId,
nickname = nickname,
isSecret = isSecret,
canMessage = "${can}캔을 후원하셨습니다.",
donationMessage = donationMessage
)
@ -95,11 +97,13 @@ data class LiveRoomInfo(
donationMessageList = donationMessageSet.toList()
}
fun addRouletteMessage(nickname: String, donationMessage: String) {
fun addRouletteMessage(memberId: Long, nickname: String, donationMessage: String) {
val donationMessageSet = donationMessageList.toMutableSet()
donationMessageSet.add(
LiveRoomDonationMessage(
memberId = memberId,
nickname = nickname,
isSecret = false,
canMessage = "",
donationMessage = donationMessage
)

View File

@ -162,6 +162,7 @@ class RouletteService(
?: throw SodaException("해당하는 라이브의 정보가 없습니다.")
roomInfo.addRouletteMessage(
memberId = member.id!!,
nickname = member.nickname,
donationMessage = "[$result] 당첨!"
)