|
|
@ -142,39 +142,119 @@ public class StatisticsServiceImpl implements StatisticsService { |
|
|
|
return statisticsMapper.getMediumAreaConsume(); |
|
|
|
} |
|
|
|
|
|
|
|
@Cacheable(key = "#root.method.name+ T(java.util.Objects).hashCode(#meium)") |
|
|
|
|
|
|
|
// @Override |
|
|
|
// public List<Meium> getMee(Meium meium) { |
|
|
|
// |
|
|
|
// |
|
|
|
// if (0 == (meium.getUpdateType())) { |
|
|
|
// if ("免费金币".equals(meium.getType())) { |
|
|
|
// return statisticsMapper.getBuyAndFree(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } else if ("充值金币".equals(meium.getType())) { |
|
|
|
// return statisticsMapper.getBuyAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } else if ("任务金币".equals(meium.getType())) { |
|
|
|
// return statisticsMapper.getBuyAndTask(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } else { |
|
|
|
// return statisticsMapper.getBuy(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } |
|
|
|
// |
|
|
|
// } else if (1 == (meium.getUpdateType())) { |
|
|
|
// if ("免费金币".equals(meium.getType())) { |
|
|
|
// return statisticsMapper.getPayAndFree(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } else if ("充值金币".equals(meium.getType())) { |
|
|
|
// return statisticsMapper.getPayAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } else if ("任务金币".equals(meium.getType())) { |
|
|
|
// return statisticsMapper.getPayAndTask(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } else { |
|
|
|
// return statisticsMapper.getPay(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
// } |
|
|
|
// |
|
|
|
// } else |
|
|
|
// return null; |
|
|
|
// |
|
|
|
// |
|
|
|
// } |
|
|
|
@Override |
|
|
|
public List<Meium> getMee(Meium meium) { |
|
|
|
List<Meium> result = new ArrayList<>(); |
|
|
|
|
|
|
|
// 预定义所有十二个地区 |
|
|
|
List<String> allRegions = Arrays.asList("新加坡", "马来西亚", "香港", "泰国", "加拿大", "越南HCM", "公司", "市场部", "研发部", "深圳运营", "韩国"); |
|
|
|
|
|
|
|
Date searchStartTime = meium.getSearchStartTime(); |
|
|
|
Date searchEndTime = meium.getSearchEndTime(); |
|
|
|
Integer updateType = meium.getUpdateType(); |
|
|
|
|
|
|
|
if (0 == (meium.getUpdateType())) { |
|
|
|
// 如果开始时间和结束时间都为空,则直接返回默认统计结果,即全查 |
|
|
|
if (searchStartTime == null && searchEndTime == null) { |
|
|
|
if (0 == updateType) { |
|
|
|
return statisticsMapper.getBuy(searchStartTime, searchEndTime); |
|
|
|
} else if (1 == updateType) { |
|
|
|
return statisticsMapper.getPay(searchStartTime, searchEndTime); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 获取日期范围内的所有日期 |
|
|
|
|
|
|
|
// 根据 updateType 和类型选择查询方法 |
|
|
|
List<Meium> queryResult = null; |
|
|
|
if (0 == updateType) { |
|
|
|
if ("免费金币".equals(meium.getType())) { |
|
|
|
return statisticsMapper.getBuyAndFree(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getBuyAndFree(searchStartTime, searchEndTime); |
|
|
|
} else if ("充值金币".equals(meium.getType())) { |
|
|
|
return statisticsMapper.getBuyAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getBuyAndRecharge(searchStartTime, searchEndTime); |
|
|
|
} else if ("任务金币".equals(meium.getType())) { |
|
|
|
return statisticsMapper.getBuyAndTask(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getBuyAndTask(searchStartTime, searchEndTime); |
|
|
|
} else { |
|
|
|
return statisticsMapper.getBuy(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getBuy(searchStartTime, searchEndTime); |
|
|
|
} |
|
|
|
|
|
|
|
} else if (1 == (meium.getUpdateType())) { |
|
|
|
} else if (1 == updateType) { |
|
|
|
if ("免费金币".equals(meium.getType())) { |
|
|
|
return statisticsMapper.getPayAndFree(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getPayAndFree(searchStartTime, searchEndTime); |
|
|
|
} else if ("充值金币".equals(meium.getType())) { |
|
|
|
return statisticsMapper.getPayAndRecharge(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getPayAndRecharge(searchStartTime, searchEndTime); |
|
|
|
} else if ("任务金币".equals(meium.getType())) { |
|
|
|
return statisticsMapper.getPayAndTask(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getPayAndTask(searchStartTime, searchEndTime); |
|
|
|
} else { |
|
|
|
return statisticsMapper.getPay(meium.getSearchStartTime(), meium.getSearchEndTime()); |
|
|
|
queryResult = statisticsMapper.getPay(searchStartTime, searchEndTime); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} else |
|
|
|
return null; |
|
|
|
// 将查询结果按区域映射,方便查找 |
|
|
|
Map<String, Meium> resultMap = new HashMap<>(); |
|
|
|
if (queryResult != null) { |
|
|
|
for (Meium meiumData : queryResult) { |
|
|
|
resultMap.put(meiumData.getArea(), meiumData); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 遍历所有地区,如果没有数据,设置为默认值 |
|
|
|
for (String region : allRegions) { |
|
|
|
Meium meiumData = resultMap.get(region); |
|
|
|
if (meiumData == null) { |
|
|
|
Meium defaultMeium = createDefaultMeium(region); |
|
|
|
result.add(defaultMeium); // 如果没有数据,创建默认值 |
|
|
|
} else { |
|
|
|
result.add(meiumData); // 否则,加入已有的查询结果 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|
|
|
|
// 创建默认的 Meium 对象,并设置地区和金币数为0 |
|
|
|
private Meium createDefaultMeium(String region) { |
|
|
|
Meium defaultMeium = new Meium(); |
|
|
|
defaultMeium.setArea(region); // 设置区域 |
|
|
|
defaultMeium.setRechargeSumCoin(BigDecimal.ZERO); // 设置充值金币为0 |
|
|
|
defaultMeium.setFreeSumCoin(BigDecimal.ZERO); // 设置免费金币为0 |
|
|
|
defaultMeium.setTaskSumCoin(BigDecimal.ZERO); // 设置任务金币为0 |
|
|
|
defaultMeium.setTotalRechargeSum(BigDecimal.ZERO); // 设置总充值金币为0 |
|
|
|
return defaultMeium; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public List<SumCoin> getMediu() { |
|
|
|
return List.of(); |
|
|
@ -404,7 +484,7 @@ public class StatisticsServiceImpl implements StatisticsService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 创建一个日期范围列表 |
|
|
|
// 创建一个日期范围列表,返回给定时间范围内的所有日期 |
|
|
|
List<Date> allDates = getDateRange(searchStartTime, searchEndTime); |
|
|
|
|
|
|
|
// 将查询结果按日期映射,方便查找 |
|
|
@ -415,7 +495,7 @@ public class StatisticsServiceImpl implements StatisticsService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 填充没有数据的日期,生成完整的结果 |
|
|
|
// 填充没有数据的日期,生成完整的结果.对于每个日期,检查是否有查询结果。如果没有数据,调用 createDefaultSumCoin 方法创建一个默认的 SumCoin 对象,确保所有日期都有数据。 |
|
|
|
for (Date date : allDates) { |
|
|
|
String dateString = new SimpleDateFormat("yyyy-MM-dd").format(date); |
|
|
|
if (!resultMap.containsKey(dateString)) { |
|
|
|