크리에이터 프로필 API

- 랭킹, 추천 크리, 라이브, 콘텐츠, 시리즈, 커뮤니티, 활동요약을 크리에이터인 경우에만 조회하도록 수정
This commit is contained in:
Klaus 2025-01-04 00:43:10 +09:00
parent 354fbf7e29
commit eb36313c9b
2 changed files with 75 additions and 40 deletions

View File

@ -144,12 +144,16 @@ class ExplorerService(
val isBlocked = memberService.isBlocked(blockedMemberId = member.id!!, memberId = creatorId) val isBlocked = memberService.isBlocked(blockedMemberId = member.id!!, memberId = creatorId)
if (isBlocked) throw SodaException("${creatorAccount.nickname}님의 요청으로 채널 접근이 제한됩니다.") if (isBlocked) throw SodaException("${creatorAccount.nickname}님의 요청으로 채널 접근이 제한됩니다.")
val isCreator = creatorAccount.role == MemberRole.CREATOR
val notificationUserIds = queryRepository.getNotificationUserIds(creatorId) val notificationUserIds = queryRepository.getNotificationUserIds(creatorId)
val creatorFollowing = queryRepository.getCreatorFollowing(creatorId = creatorId, memberId = member.id!!) val creatorFollowing = queryRepository.getCreatorFollowing(creatorId = creatorId, memberId = member.id!!)
val notificationRecipientCount = notificationUserIds.size val notificationRecipientCount = notificationUserIds.size
// 후원랭킹 // 후원랭킹
val memberDonationRanking = if (creatorId == member.id!! || creatorAccount.isVisibleDonationRank) { val memberDonationRanking = if (
isCreator && (creatorId == member.id!! || creatorAccount.isVisibleDonationRank)
) {
queryRepository.getMemberDonationRanking( queryRepository.getMemberDonationRanking(
creatorId, creatorId,
10, 10,
@ -160,37 +164,57 @@ class ExplorerService(
} }
// 추천 크리에이터 // 추천 크리에이터
val similarCreatorList = queryRepository.getSimilarCreatorList(creatorId) val similarCreatorList = if (isCreator) {
queryRepository.getSimilarCreatorList(creatorId)
} else {
listOf()
}
// 라이브 // 라이브
val liveRoomList = queryRepository.getLiveRoomList( val liveRoomList = if (isCreator) {
creatorId, queryRepository.getLiveRoomList(
userMember = member, creatorId,
timezone = timezone, userMember = member,
limit = 3 timezone = timezone,
) limit = 3
)
} else {
listOf()
}
// 오디오 콘텐츠 // 오디오 콘텐츠
val contentList = audioContentService.getAudioContentList( val contentList = if (isCreator) {
creatorId = creatorId, audioContentService.getAudioContentList(
sortType = SortType.NEWEST, creatorId = creatorId,
member = member, sortType = SortType.NEWEST,
offset = 0, member = member,
limit = 3 offset = 0,
).items limit = 3
).items
} else {
listOf()
}
// 공지사항 // 공지사항
val notice = queryRepository.getNoticeString(creatorId) val notice = if (isCreator) {
queryRepository.getNoticeString(creatorId)
} else {
""
}
// 커뮤니티 // 커뮤니티
val communityPostList = communityService.getCommunityPostList( val communityPostList = if (isCreator) {
creatorId = creatorId, communityService.getCommunityPostList(
memberId = member.id!!, creatorId = creatorId,
timezone = timezone, memberId = member.id!!,
offset = 0, timezone = timezone,
limit = 3, offset = 0,
isAdult = member.auth != null limit = 3,
) isAdult = member.auth != null
)
} else {
listOf()
}
// 응원 // 응원
val cheers = queryRepository.getCheersList(creatorId, timezone = timezone, offset = 0, limit = 4) val cheers = queryRepository.getCheersList(creatorId, timezone = timezone, offset = 0, limit = 4)
@ -198,15 +222,29 @@ class ExplorerService(
// 차단한 크리에이터 인지 체크 // 차단한 크리에이터 인지 체크
val isBlock = memberService.isBlocked(blockedMemberId = creatorId, memberId = member.id!!) val isBlock = memberService.isBlocked(blockedMemberId = creatorId, memberId = member.id!!)
// 활동요약 (라이브 횟수, 라이브 시간, 라이브 참여자, 콘텐츠 수) val activitySummary = if (isCreator) {
val liveCount = queryRepository.getLiveCount(creatorId) ?: 0 // 활동요약 (라이브 횟수, 라이브 시간, 라이브 참여자, 콘텐츠 수)
val liveTime = queryRepository.getLiveTime(creatorId) val liveCount = queryRepository.getLiveCount(creatorId) ?: 0
val liveContributorCount = queryRepository.getLiveContributorCount(creatorId) ?: 0 val liveTime = queryRepository.getLiveTime(creatorId)
val contentCount = queryRepository.getContentCount(creatorId) ?: 0 val liveContributorCount = queryRepository.getLiveContributorCount(creatorId) ?: 0
val contentCount = queryRepository.getContentCount(creatorId) ?: 0
GetCreatorActivitySummary(
liveCount = liveCount,
liveTime = liveTime,
liveContributorCount = liveContributorCount,
contentCount = contentCount
)
} else {
GetCreatorActivitySummary(0, 0, 0, 0)
}
val seriesList = seriesService val seriesList = if (isCreator) {
.getSeriesList(creatorId = creatorId, member = member) seriesService
.items .getSeriesList(creatorId = creatorId, member = member)
.items
} else {
listOf()
}
return GetCreatorProfileResponse( return GetCreatorProfileResponse(
creator = CreatorResponse( creator = CreatorResponse(
@ -235,14 +273,10 @@ class ExplorerService(
notice = notice, notice = notice,
communityPostList = communityPostList, communityPostList = communityPostList,
cheers = cheers, cheers = cheers,
activitySummary = GetCreatorActivitySummary( activitySummary = activitySummary,
liveCount = liveCount,
liveTime = liveTime,
liveContributorCount = liveContributorCount,
contentCount = contentCount
),
seriesList = seriesList, seriesList = seriesList,
isBlock = isBlock isBlock = isBlock,
isCreator = isCreator
) )
} }

View File

@ -15,7 +15,8 @@ data class GetCreatorProfileResponse(
val cheers: GetCheersResponse, val cheers: GetCheersResponse,
val activitySummary: GetCreatorActivitySummary, val activitySummary: GetCreatorActivitySummary,
val seriesList: List<GetSeriesListResponse.SeriesListItem>, val seriesList: List<GetSeriesListResponse.SeriesListItem>,
val isBlock: Boolean val isBlock: Boolean,
val isCreator: Boolean
) )
data class GetCreatorActivitySummary( data class GetCreatorActivitySummary(