Compare commits

..

No commits in common. "b7610641e544493e38bc42c7ecc8b801d2642417" and "04f2ac6815c9a121336704cfef9dfe772c981c96" have entirely different histories.

5 changed files with 32 additions and 43 deletions

View File

@ -6,11 +6,11 @@ import kr.co.vividnext.sodalive.content.main.banner.GetAudioContentBannerRespons
import kr.co.vividnext.sodalive.content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.event.GetEventResponse
import kr.co.vividnext.sodalive.explorer.GetExplorerSectionResponse
import kr.co.vividnext.sodalive.notice.NoticeItem
import kr.co.vividnext.sodalive.notice.NoticeTitleItem
data class GetContentMainTabHomeResponse(
val tabId: Long = 1,
val latestNotice: NoticeItem?,
val latestNotice: NoticeTitleItem?,
val bannerList: List<GetAudioContentBannerResponse>,
val rankCreatorList: GetExplorerSectionResponse,
val rankSeriesList: List<GetSeriesListResponse.SeriesListItem>,

View File

@ -7,9 +7,14 @@ data class GetNoticeResponse(
val noticeList: List<NoticeItem>
)
data class NoticeItem @QueryProjection constructor(
data class NoticeItem(
val id: Long,
val title: String,
val content: String,
val date: String
)
data class NoticeTitleItem @QueryProjection constructor(
val id: Long,
val title: String
)

View File

@ -5,6 +5,8 @@ import org.springframework.data.domain.Pageable
import org.springframework.data.repository.findByIdOrNull
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.ZoneId
import java.time.format.DateTimeFormatter
@Service
@Transactional(readOnly = true)
@ -44,11 +46,25 @@ class ServiceNoticeService(private val repository: ServiceServiceNoticeRepositor
fun getNoticeList(pageable: Pageable, timezone: String): GetNoticeResponse {
val totalCount = repository.getNoticeTotalCount()
val noticeList = repository.getNoticeList(pageable)
.asSequence()
.map {
val createdAt = it.createdAt!!
.atZone(ZoneId.of("UTC"))
.withZoneSameInstant(ZoneId.of(timezone))
NoticeItem(
it.id!!,
it.title,
it.content,
createdAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))
)
}
.toList()
return GetNoticeResponse(totalCount, noticeList)
}
fun getLatestNotice(): NoticeItem? {
fun getLatestNotice(): NoticeTitleItem? {
return repository.getLatestNotice()
}
}

View File

@ -1,22 +1,18 @@
package kr.co.vividnext.sodalive.notice
import com.querydsl.core.types.dsl.DateTimePath
import com.querydsl.core.types.dsl.Expressions
import com.querydsl.core.types.dsl.StringTemplate
import com.querydsl.jpa.impl.JPAQueryFactory
import kr.co.vividnext.sodalive.notice.QServiceNotice.serviceNotice
import org.springframework.data.domain.Pageable
import org.springframework.data.jpa.repository.JpaRepository
import org.springframework.stereotype.Repository
import java.time.LocalDateTime
@Repository
interface ServiceServiceNoticeRepository : JpaRepository<ServiceNotice, Long>, ServiceNoticeQueryRepository
interface ServiceNoticeQueryRepository {
fun getNoticeTotalCount(): Int
fun getNoticeList(pageable: Pageable): List<NoticeItem>
fun getLatestNotice(): NoticeItem?
fun getNoticeList(pageable: Pageable): List<ServiceNotice>
fun getLatestNotice(): NoticeTitleItem?
}
@Repository
@ -30,17 +26,9 @@ class ServiceNoticeQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
.size
}
override fun getNoticeList(pageable: Pageable): List<NoticeItem> {
override fun getNoticeList(pageable: Pageable): List<ServiceNotice> {
return queryFactory
.select(
QNoticeItem(
serviceNotice.id,
serviceNotice.title,
serviceNotice.content,
getFormattedDate(serviceNotice.createdAt)
)
)
.from(serviceNotice)
.selectFrom(serviceNotice)
.where(serviceNotice.isActive.isTrue)
.offset(pageable.offset)
.limit(pageable.pageSize.toLong())
@ -48,14 +36,12 @@ class ServiceNoticeQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
.fetch()
}
override fun getLatestNotice(): NoticeItem? {
override fun getLatestNotice(): NoticeTitleItem? {
return queryFactory
.select(
QNoticeItem(
QNoticeTitleItem(
serviceNotice.id,
serviceNotice.title,
serviceNotice.content,
getFormattedDate(serviceNotice.createdAt)
serviceNotice.title
)
)
.from(serviceNotice)
@ -63,18 +49,4 @@ class ServiceNoticeQueryRepositoryImpl(private val queryFactory: JPAQueryFactory
.orderBy(serviceNotice.id.desc())
.fetchFirst()
}
private fun getFormattedDate(dateTimePath: DateTimePath<LocalDateTime>): StringTemplate {
return Expressions.stringTemplate(
"DATE_FORMAT({0}, {1})",
Expressions.dateTimeTemplate(
LocalDateTime::class.java,
"CONVERT_TZ({0},{1},{2})",
dateTimePath,
"UTC",
"Asia/Seoul"
),
"%Y-%m-%d"
)
}
}

View File

@ -347,7 +347,6 @@ class RankingRepository(
.and(audioContent.isActive.isTrue)
.and(audioContent.duration.isNotNull)
.and(audioContent.limited.isNull)
.and(audioContentTheme.isActive.isTrue)
.and(order.isActive.isTrue)
.and(member.id.eq(creatorId))
@ -370,7 +369,6 @@ class RankingRepository(
)
.from(order)
.innerJoin(order.audioContent, audioContent)
.innerJoin(audioContent.theme, audioContentTheme)
.innerJoin(audioContent.member, member)
.where(where)
.groupBy(audioContent.id)
@ -386,7 +384,6 @@ class RankingRepository(
.and(audioContent.isActive.isTrue)
.and(audioContent.duration.isNotNull)
.and(audioContent.limited.isNull)
.and(audioContentTheme.isActive.isTrue)
.and(order.isActive.isTrue)
.and(member.id.eq(creatorId))
@ -409,7 +406,6 @@ class RankingRepository(
)
.from(order)
.innerJoin(order.audioContent, audioContent)
.innerJoin(audioContent.theme, audioContentTheme)
.innerJoin(audioContent.member, member)
.where(where)
.groupBy(audioContent.id)