@ -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 ( searchStartTime = = null & & searchEndTime = = null ) {
if ( 0 = = updateType ) {
return statisticsMapper . getBuy ( searchStartTime , searchEndTime ) ;
} else if ( 1 = = updateType ) {
return statisticsMapper . getPay ( searchStartTime , searchEndTime ) ;
}
}
/ / 获取日期范围内的所有日期
if ( 0 = = ( meium . getUpdateType ( ) ) ) {
/ / 根据 updateType 和类型选择查询方法
List < Meium > queryResult = null ;
if ( 0 = = updateType ) {
if ( "免费金币" . equals ( meium . getType ( ) ) ) {
return statisticsMapper . getBuyAndFree ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getBuyAndFree ( s earchStartTime, s earchEndTime) ;
} else if ( "充值金币" . equals ( meium . getType ( ) ) ) {
return statisticsMapper . getBuyAndRecharge ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getBuyAndRecharge ( s earchStartTime, s earchEndTime) ;
} else if ( "任务金币" . equals ( meium . getType ( ) ) ) {
return statisticsMapper . getBuyAndTask ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getBuyAndTask ( s earchStartTime, s earchEndTime) ;
} else {
return statisticsMapper . getBuy ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getBuy ( s earchStartTime, s earchEndTime) ;
}
} else if ( 1 = = ( meium . getUpdateType ( ) ) ) {
} else if ( 1 = = updateType ) {
if ( "免费金币" . equals ( meium . getType ( ) ) ) {
return statisticsMapper . getPayAndFree ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getPayAndFree ( s earchStartTime, s earchEndTime) ;
} else if ( "充值金币" . equals ( meium . getType ( ) ) ) {
return statisticsMapper . getPayAndRecharge ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getPayAndRecharge ( s earchStartTime, s earchEndTime) ;
} else if ( "任务金币" . equals ( meium . getType ( ) ) ) {
return statisticsMapper . getPayAndTask ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getPayAndTask ( s earchStartTime, s earchEndTime) ;
} else {
return statisticsMapper . getPay ( meium . getSearchStartTime ( ) , meium . getSearchEndTime ( ) ) ;
queryResult = statisticsMapper . getPay ( s earchStartTime, s earchEndTime) ;
}
}
} 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 ) ) {