Add country dashboard ARPU summary
This commit is contained in:
parent
0464935619
commit
8feecc423c
@ -1,6 +1,7 @@
|
||||
package com.red.circle.console.app.service.app.datav;
|
||||
|
||||
import com.red.circle.console.app.dto.clientobject.datav.CountryDashboardCO;
|
||||
import com.red.circle.console.app.dto.clientobject.datav.CountryDashboardArpuSummaryCO;
|
||||
import com.red.circle.console.app.dto.clientobject.datav.CountryDashboardMetricCO;
|
||||
import com.red.circle.console.app.dto.clientobject.datav.CountryDashboardRechargeDetailCO;
|
||||
import com.red.circle.console.app.dto.cmd.datav.CountryDashboardQryCmd;
|
||||
@ -79,6 +80,12 @@ public class CountryDashboardServiceImpl implements CountryDashboardService {
|
||||
public CountryDashboardCO query(CountryDashboardQryCmd cmd) {
|
||||
ensurePeriodMetricSchema();
|
||||
QueryCondition condition = QueryCondition.of(cmd);
|
||||
CountryDashboardCO dashboard = queryPrecomputed(condition);
|
||||
dashboard.setArpuSummary(buildArpuSummary(condition));
|
||||
return dashboard;
|
||||
}
|
||||
|
||||
private CountryDashboardCO queryPrecomputed(QueryCondition condition) {
|
||||
Map<String, CountryDashboardMetricCO> rows = new LinkedHashMap<>();
|
||||
|
||||
mergeSql(rows, countryDashboardDAO.listPrecomputedPeriodMetrics(
|
||||
@ -105,6 +112,13 @@ public class CountryDashboardServiceImpl implements CountryDashboardService {
|
||||
.setRecords(records);
|
||||
}
|
||||
|
||||
private CountryDashboardArpuSummaryCO buildArpuSummary(QueryCondition condition) {
|
||||
return new CountryDashboardArpuSummaryCO()
|
||||
.setDay(queryPrecomputed(condition.recentDays(1)))
|
||||
.setThreeDay(queryPrecomputed(condition.recentDays(3)))
|
||||
.setWeek(queryPrecomputed(condition.recentDays(7)));
|
||||
}
|
||||
|
||||
private void mergeLiveSql(Map<String, CountryDashboardMetricCO> rows, QueryCondition condition) {
|
||||
mergeSql(rows, countryDashboardDAO.listNewUsers(
|
||||
condition.periodType, condition.startTime, condition.endTime,
|
||||
@ -973,6 +987,34 @@ public class CountryDashboardServiceImpl implements CountryDashboardService {
|
||||
);
|
||||
}
|
||||
|
||||
private QueryCondition recentDays(int dayCount) {
|
||||
LocalDate end = LocalDate.now(statZoneId);
|
||||
LocalDate start = end.minusDays(Math.max(1, dayCount) - 1L);
|
||||
Instant recentStartInstant = start.atStartOfDay(statZoneId).toInstant();
|
||||
Instant recentEndInstant = end.plusDays(1).atStartOfDay(statZoneId).toInstant();
|
||||
LocalDateTime recentStorageStartTime =
|
||||
LocalDateTime.ofInstant(recentStartInstant, STORAGE_ZONE_ID);
|
||||
LocalDateTime recentStorageEndTime =
|
||||
LocalDateTime.ofInstant(recentEndInstant, STORAGE_ZONE_ID);
|
||||
return new QueryCondition(
|
||||
"DAY",
|
||||
DATE_FORMATTER.format(start),
|
||||
DATE_FORMATTER.format(end),
|
||||
statTimezone,
|
||||
statZoneId,
|
||||
storageTimezoneOffset,
|
||||
statTimezoneOffset,
|
||||
start,
|
||||
end,
|
||||
recentStorageStartTime,
|
||||
recentStorageEndTime,
|
||||
recentStartInstant,
|
||||
recentEndInstant,
|
||||
null,
|
||||
sysOrigin
|
||||
);
|
||||
}
|
||||
|
||||
private PeriodBucket toPeriodBucket(String day) {
|
||||
if (PERIOD_ALL.equals(periodType)) {
|
||||
return new PeriodBucket(PERIOD_ALL, "全部");
|
||||
|
||||
@ -0,0 +1,23 @@
|
||||
package com.red.circle.console.app.dto.clientobject.datav;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 国家数据大屏 ARPU 汇总.
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class CountryDashboardArpuSummaryCO implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private CountryDashboardCO day;
|
||||
|
||||
private CountryDashboardCO threeDay;
|
||||
|
||||
private CountryDashboardCO week;
|
||||
}
|
||||
@ -29,4 +29,6 @@ public class CountryDashboardCO implements Serializable {
|
||||
private CountryDashboardMetricCO total;
|
||||
|
||||
private List<CountryDashboardMetricCO> records;
|
||||
|
||||
private CountryDashboardArpuSummaryCO arpuSummary;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user