관리자 마케팅 - 광고 통계

- 날짜별 검색 추가
This commit is contained in:
Klaus 2025-03-11 16:38:58 +09:00
parent 5b3c5731ee
commit 3e25accaa3
3 changed files with 29 additions and 4 deletions

View File

@ -5,6 +5,7 @@ import org.springframework.data.domain.Pageable
import org.springframework.security.access.prepost.PreAuthorize import org.springframework.security.access.prepost.PreAuthorize
import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
@RestController @RestController
@ -12,8 +13,14 @@ import org.springframework.web.bind.annotation.RestController
@RequestMapping("/admin/marketing/statistics") @RequestMapping("/admin/marketing/statistics")
class AdminAdStatisticsController(private val service: AdminAdStatisticsService) { class AdminAdStatisticsController(private val service: AdminAdStatisticsService) {
@GetMapping @GetMapping
fun getStatistics(pageable: Pageable) = ApiResponse.ok( fun getStatistics(
@RequestParam startDateStr: String,
@RequestParam endDateStr: String,
pageable: Pageable
) = ApiResponse.ok(
service.getStatistics( service.getStatistics(
startDateStr = startDateStr,
endDateStr = endDateStr,
offset = pageable.offset, offset = pageable.offset,
limit = pageable.pageSize.toLong() limit = pageable.pageSize.toLong()
) )

View File

@ -28,7 +28,12 @@ class AdminAdStatisticsRepository(private val queryFactory: JPAQueryFactory) {
).toInt() ).toInt()
} }
fun getAdStatisticsDataList(offset: Long, limit: Long): List<GetAdminAdStatisticsItem> { fun getAdStatisticsDataList(
startDate: LocalDateTime,
endDate: LocalDateTime,
offset: Long,
limit: Long
): List<GetAdminAdStatisticsItem> {
val signUpCount = CaseBuilder() val signUpCount = CaseBuilder()
.`when`(adTrackingHistory.id.type.eq(AdTrackingHistoryType.SIGNUP)) .`when`(adTrackingHistory.id.type.eq(AdTrackingHistoryType.SIGNUP))
.then(1) .then(1)
@ -101,6 +106,10 @@ class AdminAdStatisticsRepository(private val queryFactory: JPAQueryFactory) {
) )
) )
.from(adTrackingHistory) .from(adTrackingHistory)
.where(
adTrackingHistory.id.createdAt.goe(startDate),
adTrackingHistory.id.createdAt.loe(endDate)
)
.groupBy( .groupBy(
getFormattedDate(adTrackingHistory.id.createdAt), getFormattedDate(adTrackingHistory.id.createdAt),
adTrackingHistory.mediaGroup, adTrackingHistory.mediaGroup,

View File

@ -1,14 +1,23 @@
package kr.co.vividnext.sodalive.admin.marketing.statistics package kr.co.vividnext.sodalive.admin.marketing.statistics
import kr.co.vividnext.sodalive.extensions.convertLocalDateTime
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
@Service @Service
class AdminAdStatisticsService( class AdminAdStatisticsService(
private val repository: AdminAdStatisticsRepository private val repository: AdminAdStatisticsRepository
) { ) {
fun getStatistics(offset: Long, limit: Long): GetAdminAdStatisticsResponse { fun getStatistics(
startDateStr: String,
endDateStr: String,
offset: Long,
limit: Long
): GetAdminAdStatisticsResponse {
val startDate = startDateStr.convertLocalDateTime()
val endDate = endDateStr.convertLocalDateTime(hour = 23, minute = 59, second = 59)
val totalCount = repository.getAdStatisticsDataTotalCount() val totalCount = repository.getAdStatisticsDataTotalCount()
val items = repository.getAdStatisticsDataList(offset, limit) val items = repository.getAdStatisticsDataList(startDate, endDate, offset, limit)
return GetAdminAdStatisticsResponse( return GetAdminAdStatisticsResponse(
totalCount = totalCount, totalCount = totalCount,