|
@@ -1,8 +1,10 @@
|
|
|
package com.zanxiang.game.data.serve.service.impl;
|
|
|
|
|
|
+import com.zanxiang.erp.security.util.SecurityUtil;
|
|
|
import com.zanxiang.game.data.serve.pojo.dto.OverallSummaryDTO;
|
|
|
-import com.zanxiang.game.data.serve.pojo.entity.AdsOverallSummary;
|
|
|
-import com.zanxiang.game.data.serve.pojo.vo.OverallSummaryLineDataVO;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.OverallSummaryAmountLineDataVO;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.OverallSummaryCostLineDataVO;
|
|
|
+import com.zanxiang.game.data.serve.pojo.vo.OverallSummaryUserLineDataVO;
|
|
|
import com.zanxiang.game.data.serve.pojo.vo.OverallSummaryVO;
|
|
|
import com.zanxiang.game.data.serve.service.IOverallSummaryService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -38,82 +40,17 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
@Autowired
|
|
|
private Dao dao;
|
|
|
|
|
|
+
|
|
|
+ * 整体概况总计数据部分
|
|
|
+ *
|
|
|
+ * @param dto 前端传递的查询条件实体
|
|
|
+ * @return 返回给前端的整体概况总计数据实体
|
|
|
+ */
|
|
|
@Override
|
|
|
public OverallSummaryVO getOverallSummaryTotalData(OverallSummaryDTO dto) {
|
|
|
|
|
|
-
|
|
|
- Condition totalDataCon = myCondition(dto, true, false, -1);
|
|
|
-
|
|
|
- String totalDataConString = totalDataCon.toSql(dao.getEntity(AdsOverallSummary.class));
|
|
|
-
|
|
|
- Sql totalDataSql = Sqls.create("""
|
|
|
- SELECT
|
|
|
- IFNULL(SUM(x.today_player_count),0) total_players ,
|
|
|
- IFNULL(SUM(x.today_total_cost),0) total_cost ,
|
|
|
- IFNULL(SUM(x.today_amount),0) total_amount ,
|
|
|
- IFNULL(SUM(x.today_agent_count),0) total_agent_count ,
|
|
|
- IFNULL(SUM(x.today_amount)/SUM(x.today_total_cost),0) total_roi
|
|
|
- FROM ads_overall_summary x
|
|
|
- """ + totalDataConString);
|
|
|
-
|
|
|
-
|
|
|
- totalDataSql.setCallback(Sqls.callback.entity());
|
|
|
- totalDataSql.setEntity(dao.getEntity(OverallSummaryVO.class));
|
|
|
-
|
|
|
- dao.execute(totalDataSql);
|
|
|
-
|
|
|
- OverallSummaryVO totalDataVO = totalDataSql.getObject(OverallSummaryVO.class);
|
|
|
-
|
|
|
-
|
|
|
- Condition todayDataCon = myCondition(dto, true, false, 1);
|
|
|
-
|
|
|
- String todayDataConString = todayDataCon.toSql(dao.getEntity(AdsOverallSummary.class));
|
|
|
- Sql todayDataSql = Sqls.create("""
|
|
|
- SELECT
|
|
|
- IFNULL(SUM(x.today_player_count),0) today_player_count ,
|
|
|
- IFNULL(SUM(x.yesterday_player_count),0) yesterday_player_count ,
|
|
|
- IFNULL(SUM(x.today_total_cost),0) today_total_cost ,
|
|
|
- IFNULL(SUM(x.yesterday_total_cost),0) yesterday_total_cost ,
|
|
|
- IFNULL(SUM(x.today_new_player_amount),0) today_new_player_amount ,
|
|
|
- IFNULL(SUM(x.today_amount),0) today_amount ,
|
|
|
- IFNULL(SUM(x.yesterday_new_player_amount),0) yesterday_new_player_amount ,
|
|
|
- IFNULL(SUM(x.yesterday_amount),0) yesterday_amount ,
|
|
|
- IFNULL(SUM(x.today_agent_count),0) today_agent_count ,
|
|
|
- IFNULL(SUM(x.yesterday_agent_count),0) yesterday_agent_count ,
|
|
|
- IFNULL(SUM(x.first_new_user_amount)/SUM(x.today_total_cost),0) first_roi
|
|
|
- FROM ads_overall_summary x
|
|
|
- """ + todayDataConString);
|
|
|
-
|
|
|
-
|
|
|
- todayDataSql.setCallback(Sqls.callback.entity());
|
|
|
- todayDataSql.setEntity(dao.getEntity(OverallSummaryVO.class));
|
|
|
-
|
|
|
- dao.execute(todayDataSql);
|
|
|
-
|
|
|
- OverallSummaryVO overallSummaryVO = todayDataSql.getObject(OverallSummaryVO.class);
|
|
|
-
|
|
|
-
|
|
|
- copyNullProperties(totalDataVO, overallSummaryVO);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- BigDecimal d7NewPlayerAmount = (BigDecimal) dao.func2(AdsOverallSummary.class, "sum", "todayAmount", myCondition(dto, true, false, 7));
|
|
|
-
|
|
|
- BigDecimal d7TotalCost = (BigDecimal) dao.func2(AdsOverallSummary.class, "sum", "todayTotalCost", myCondition(dto, true, false, 7));
|
|
|
-
|
|
|
- overallSummaryVO.setD7TotalRoi((d7TotalCost == null || BigDecimal.ZERO.compareTo(d7TotalCost) == 0) ? BigDecimal.ZERO : d7NewPlayerAmount.multiply(BigDecimal.valueOf(100)).divide(d7TotalCost, 4, RoundingMode.HALF_UP));
|
|
|
-
|
|
|
-
|
|
|
- BigDecimal d30NewPlayerAmount = (BigDecimal) dao.func2(AdsOverallSummary.class, "sum", "todayAmount", myCondition(dto, true, false, 30));
|
|
|
-
|
|
|
- BigDecimal d30TotalCost = (BigDecimal) dao.func2(AdsOverallSummary.class, "sum", "todayTotalCost", myCondition(dto, true, false, 30));
|
|
|
-
|
|
|
-
|
|
|
- overallSummaryVO.setD30TotalRoi((d30TotalCost == null || BigDecimal.ZERO.compareTo(d30TotalCost) == 0) ? BigDecimal.ZERO : d30NewPlayerAmount.multiply(BigDecimal.valueOf(100)).divide(d30TotalCost, 4, RoundingMode.HALF_UP));
|
|
|
-
|
|
|
-
|
|
|
- overallSummaryVO.setFirstRoi(overallSummaryVO.getFirstRoi().multiply(BigDecimal.valueOf(100)));
|
|
|
- overallSummaryVO.setTotalRoi(overallSummaryVO.getTotalRoi().multiply(BigDecimal.valueOf(100)));
|
|
|
+
|
|
|
+ OverallSummaryVO overallSummaryVO = new OverallSummaryVO();
|
|
|
|
|
|
|
|
|
Condition totalCri = myCondition(dto, true, false, -1);
|
|
@@ -121,6 +58,10 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
Condition todayCri = myCondition(dto, true, false, 1);
|
|
|
|
|
|
Condition yesterdayCri = myCondition(dto, true, false, 0);
|
|
|
+
|
|
|
+ Condition d7Cri = myCondition(dto, true, false, 7);
|
|
|
+
|
|
|
+ Condition d30Cri = myCondition(dto, true, false, 30);
|
|
|
|
|
|
|
|
|
|
|
@@ -142,65 +83,122 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
|
|
|
overallSummaryVO.setTotalAgentCount(getResultBySql(1, "today_agent_count-ads_overall_summary_agent", totalCri));
|
|
|
|
|
|
- overallSummaryVO.setTotalAgentCount(getResultBySql(1, "today_agent_count-ads_overall_summary_agent", todayCri));
|
|
|
+ overallSummaryVO.setTodayAgentCount(getResultBySql(1, "today_agent_count-ads_overall_summary_agent", todayCri));
|
|
|
|
|
|
- overallSummaryVO.setTotalAgentCount(getResultBySql(1, "today_agent_count-ads_overall_summary_agent", yesterdayCri));
|
|
|
+ overallSummaryVO.setYesterdayAgentCount(getResultBySql(1, "today_agent_count-ads_overall_summary_agent", yesterdayCri));
|
|
|
|
|
|
|
|
|
|
|
|
- overallSummaryVO.setTotalAmount(getResultBySql("today_amount-ads_overall_summary_amount",totalCri));
|
|
|
-
|
|
|
- overallSummaryVO.setTodayAmount(getResultBySql("today_amount-ads_overall_summary_amount",totalCri));
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ overallSummaryVO.setTotalAmount(getResultBySql("today_amount-ads_overall_summary_amount", totalCri));
|
|
|
+
|
|
|
+ overallSummaryVO.setTodayAmount(getResultBySql("today_amount-ads_overall_summary_amount", todayCri));
|
|
|
+
|
|
|
+ overallSummaryVO.setYesterdayAmount(getResultBySql("today_amount-ads_overall_summary_amount", yesterdayCri));
|
|
|
+
|
|
|
+ overallSummaryVO.setTodayNewPlayerAmount(getResultBySql("today_new_user_amount-ads_overall_summary_amount", todayCri));
|
|
|
+
|
|
|
+ overallSummaryVO.setYesterdayNewPlayerAmount(getResultBySql("today_new_user_amount-ads_overall_summary_amount", yesterdayCri));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ overallSummaryVO.setTotalCost(getResultBySql("today_cost-ads_overall_summary_cost", totalCri));
|
|
|
+
|
|
|
+ overallSummaryVO.setTodayTotalCost(getResultBySql("today_cost-ads_overall_summary_cost", todayCri));
|
|
|
+
|
|
|
+ overallSummaryVO.setYesterdayTotalCost(getResultBySql("today_cost-ads_overall_summary_cost", yesterdayCri));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ overallSummaryVO.setTotalRoi(overallSummaryVO.getTotalCost().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
|
|
|
+ overallSummaryVO.getTotalAmount().divide(overallSummaryVO.getTotalCost(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal todayFirstNewUserAmount = getResultBySql("today_first_new_user_amount-ads_overall_summary_amount", todayCri);
|
|
|
+ overallSummaryVO.setFirstRoi(overallSummaryVO.getTodayTotalCost().compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
|
|
|
+ todayFirstNewUserAmount.divide(overallSummaryVO.getTodayTotalCost(), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal d7Amount = getResultBySql("today_amount-ads_overall_summary_amount", d7Cri);
|
|
|
+ BigDecimal d7Cost = getResultBySql("today_cost-ads_overall_summary_cost", d7Cri);
|
|
|
+ overallSummaryVO.setD7TotalRoi(d7Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
|
|
|
+ d7Amount.divide(d7Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
|
|
|
+
|
|
|
+
|
|
|
+ BigDecimal d30Amount = getResultBySql("today_amount-ads_overall_summary_amount", d30Cri);
|
|
|
+ BigDecimal d30Cost = getResultBySql("today_cost-ads_overall_summary_cost", d30Cri);
|
|
|
+ overallSummaryVO.setD30TotalRoi(d30Cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
|
|
|
+ d30Amount.divide(d30Cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
|
|
|
|
|
|
return overallSummaryVO;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 整体概况折线图数据部分
|
|
|
+ *
|
|
|
+ * @param dto 前端传递的查询条件实体
|
|
|
+ * @return 返回给前端的整体概况折线图数据实体
|
|
|
+ */
|
|
|
@Override
|
|
|
- public List<OverallSummaryLineDataVO> getOverallSummaryLineData(OverallSummaryDTO dto) {
|
|
|
+ public Map<String, List> getOverallSummaryLineData(OverallSummaryDTO dto) {
|
|
|
|
|
|
|
|
|
Condition lineCon = myCondition(dto, true, true, -1);
|
|
|
-
|
|
|
- String lineConString = lineCon.toSql(dao.getEntity(AdsOverallSummary.class));
|
|
|
-
|
|
|
- Sql sql = Sqls.create("""
|
|
|
- Select
|
|
|
- dt,
|
|
|
- SUM(x.today_total_cost) cost,
|
|
|
- SUM(x.today_amount) amount,
|
|
|
- SUM(x.today_buy_amount) buy_amount,
|
|
|
- SUM(x.today_nature_amount) nature_amount,
|
|
|
- IFNULL(SUM(x.first_new_user_amount)/SUM(x.today_total_cost),0) first_roi,
|
|
|
- SUM(x.today_player_count) player_account
|
|
|
- from ads_overall_summary x
|
|
|
- """ + lineConString);
|
|
|
|
|
|
+
|
|
|
+ Sql userSql = Sqls.create(userLineSql() + lineCon);
|
|
|
+
|
|
|
+ userSql.setCallback(Sqls.callback.entities());
|
|
|
+ userSql.setEntity(dao.getEntity(OverallSummaryUserLineDataVO.class));
|
|
|
+
|
|
|
+ dao.execute(userSql);
|
|
|
+ List<OverallSummaryUserLineDataVO> userLineList = userSql.getList(OverallSummaryUserLineDataVO.class);
|
|
|
+
|
|
|
+
|
|
|
+ Sql costSql = Sqls.create(costLineSql() + lineCon);
|
|
|
|
|
|
- sql.setCallback(Sqls.callback.entities());
|
|
|
- sql.setEntity(dao.getEntity(OverallSummaryLineDataVO.class));
|
|
|
-
|
|
|
+ costSql.setCallback(Sqls.callback.entities());
|
|
|
+ costSql.setEntity(dao.getEntity(OverallSummaryCostLineDataVO.class));
|
|
|
|
|
|
- dao.execute(sql);
|
|
|
+ dao.execute(costSql);
|
|
|
+ List<OverallSummaryCostLineDataVO> costLineList = costSql.getList(OverallSummaryCostLineDataVO.class);
|
|
|
+
|
|
|
+
|
|
|
+ Sql amountSql = Sqls.create(amountLineSql() + lineCon);
|
|
|
+
|
|
|
+ amountSql.setCallback(Sqls.callback.entities());
|
|
|
+ amountSql.setEntity(dao.getEntity(OverallSummaryAmountLineDataVO.class));
|
|
|
+
|
|
|
+ dao.execute(amountSql);
|
|
|
+ List<OverallSummaryAmountLineDataVO> amountLineList = amountSql.getList(OverallSummaryAmountLineDataVO.class);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ Map<LocalDate, BigDecimal> costMap = new HashMap<>();
|
|
|
+ for (OverallSummaryCostLineDataVO costLineDataVO : costLineList) {
|
|
|
+ costMap.put(costLineDataVO.getDt(), costLineDataVO.getCost());
|
|
|
+ }
|
|
|
+
|
|
|
+ for (OverallSummaryAmountLineDataVO amountLineDataVO : amountLineList) {
|
|
|
+
|
|
|
+ BigDecimal cost = costMap.get(amountLineDataVO.getDt());
|
|
|
+ amountLineDataVO.setFirstRoi(cost == null || cost.compareTo(BigDecimal.ZERO) == 0 ? BigDecimal.ZERO :
|
|
|
+ amountLineDataVO.getTodayFirstNewUserAmount().divide(cost, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)));
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
- return checkAllDateData(sql.getList(OverallSummaryLineDataVO.class), dto);
|
|
|
+ Map<String, List> resMap = new HashMap<>(3);
|
|
|
+ resMap.put("消耗折线数据", checkAllDateData("costList", costLineList, dto));
|
|
|
+ resMap.put("充值相关折线数据", checkAllDateData("amountList", amountLineList, dto));
|
|
|
+ resMap.put("新增用户折线数据", checkAllDateData("userList", userLineList, dto));
|
|
|
+
|
|
|
+ return resMap;
|
|
|
}
|
|
|
|
|
|
|
|
|
* 自定义查询条件
|
|
|
*
|
|
|
* @param dto 前端传递的查询参数实体
|
|
|
- * @param needGameId 是否需要拼接gameId查询条件
|
|
|
- * @param needLocalDate 是否拼接日期查询条件
|
|
|
+ * @param needGameId 是否需要拼接gameId查询条件(整体概况游戏表不需要gameId条件)
|
|
|
+ * @param needLocalDate 是否拼接日期查询条件(折线图需要日期条件,总计不需要)
|
|
|
* @param queryDays 拼接需要查询数据的天数条件(给今日昨日、首日Roi、7日Roi以及30日Roi使用)
|
|
|
* @return Condition 查询条件
|
|
|
*/
|
|
@@ -224,7 +222,7 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
|
|
|
cri.where().andEquals("source_system", dto.getSourceSystem());
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (dto.getPitcherId() != null) {
|
|
|
|
|
|
cri.where().andEquals("pitcher_id", dto.getPitcherId());
|
|
@@ -234,20 +232,8 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
} else {
|
|
|
|
|
|
cri.where().andEquals("pitcher_id", SecurityUtil.getUserId());
|
|
|
- }*/
|
|
|
-
|
|
|
-
|
|
|
- * 测试
|
|
|
- */
|
|
|
-
|
|
|
- if (dto.getPitcherId() != null) {
|
|
|
-
|
|
|
- cri.where().andEquals("pitcher_id", dto.getPitcherId());
|
|
|
- } else {
|
|
|
- cri.where().andNotEquals("pitcher_id", -2);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
|
|
|
switch (queryDays) {
|
|
|
|
|
@@ -315,20 +301,20 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- * 检查前端查询日期内的数据是否在数据库中都存在
|
|
|
- * 不存在要设置默认值 0
|
|
|
+ * 检查查询的时间内是否都有数据,没有则赋值默认值0
|
|
|
*
|
|
|
+ * @param type 需要判断list的类型:costList -> 消耗折线数据;
|
|
|
+ * amountList -> 充值相关折线数据;
|
|
|
+ * userList -> 新增用户折线数据
|
|
|
* @param list 需要判断的list
|
|
|
* @param dto 前端传递的查询参数实体
|
|
|
- * @return 返回给前端的折线图数据 list
|
|
|
+ * @return 补全后的list
|
|
|
*/
|
|
|
- private List<OverallSummaryLineDataVO> checkAllDateData(List<OverallSummaryLineDataVO> list, OverallSummaryDTO dto) {
|
|
|
-
|
|
|
+ private List checkAllDateData(String type, List list, OverallSummaryDTO dto) {
|
|
|
|
|
|
if ((list.size() - 1) == dto.getBeginDate().until(dto.getEndDate(), ChronoUnit.DAYS)) {
|
|
|
return list;
|
|
|
}
|
|
|
-
|
|
|
|
|
|
Map<LocalDate, Integer> map = new HashMap<>();
|
|
|
|
|
@@ -337,30 +323,73 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
map.put(tempDate, 1);
|
|
|
tempDate = tempDate.plusDays(1);
|
|
|
}
|
|
|
-
|
|
|
- for (OverallSummaryLineDataVO vo : list) {
|
|
|
- Integer value = map.get(vo.getDt());
|
|
|
- if (value != null) {
|
|
|
- map.put(vo.getDt(), ++value);
|
|
|
+
|
|
|
+ if ("costList".equals(type)) {
|
|
|
+
|
|
|
+ for (Object vo : list) {
|
|
|
+ Integer value = map.get(((OverallSummaryCostLineDataVO) vo).getDt());
|
|
|
+ if (value != null) {
|
|
|
+ map.put(((OverallSummaryCostLineDataVO) vo).getDt(), ++value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if ("amountList".equals(type)) {
|
|
|
+
|
|
|
+ for (Object vo : list) {
|
|
|
+ Integer value = map.get(((OverallSummaryAmountLineDataVO) vo).getDt());
|
|
|
+ if (value != null) {
|
|
|
+ map.put(((OverallSummaryAmountLineDataVO) vo).getDt(), ++value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if ("userList".equals(type)) {
|
|
|
+
|
|
|
+ for (Object vo : list) {
|
|
|
+ Integer value = map.get(((OverallSummaryUserLineDataVO) vo).getDt());
|
|
|
+ if (value != null) {
|
|
|
+ map.put(((OverallSummaryUserLineDataVO) vo).getDt(), ++value);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (Map.Entry<LocalDate, Integer> entry : map.entrySet()) {
|
|
|
if (entry.getValue() == 1) {
|
|
|
-
|
|
|
- list.add(OverallSummaryLineDataVO.builder()
|
|
|
- .dt(entry.getKey())
|
|
|
- .amount(BigDecimal.ZERO)
|
|
|
- .buyAmount(BigDecimal.ZERO)
|
|
|
- .natureAmount(BigDecimal.ZERO)
|
|
|
- .cost(BigDecimal.ZERO)
|
|
|
- .firstRoi(BigDecimal.ZERO)
|
|
|
- .playerAccount(0L)
|
|
|
- .build());
|
|
|
+
|
|
|
+ if ("costList".equals(type)) {
|
|
|
+
|
|
|
+ list.add(OverallSummaryCostLineDataVO.builder()
|
|
|
+ .dt(entry.getKey())
|
|
|
+ .cost(BigDecimal.ZERO)
|
|
|
+ .build());
|
|
|
+ } else if ("amountList".equals(type)) {
|
|
|
+
|
|
|
+ list.add(OverallSummaryAmountLineDataVO.builder()
|
|
|
+ .dt(entry.getKey())
|
|
|
+ .amount(BigDecimal.ZERO)
|
|
|
+ .buyAmount(BigDecimal.ZERO)
|
|
|
+ .natureAmount(BigDecimal.ZERO)
|
|
|
+ .todayFirstNewUserAmount(BigDecimal.ZERO)
|
|
|
+ .firstRoi(BigDecimal.ZERO)
|
|
|
+ .build());
|
|
|
+ } else if ("userList".equals(type)) {
|
|
|
+
|
|
|
+ list.add(OverallSummaryUserLineDataVO.builder()
|
|
|
+ .dt(entry.getKey())
|
|
|
+ .playerAccount(0L)
|
|
|
+ .build());
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
|
|
|
- list.sort((vo1, vo2) -> vo1.getDt().isBefore(vo2.getDt()) ? -1 : 1);
|
|
|
+ if ("costList".equals(type)) {
|
|
|
+ list.sort((vo1, vo2) -> ((OverallSummaryCostLineDataVO) vo1).getDt()
|
|
|
+ .isBefore(((OverallSummaryCostLineDataVO) vo2).getDt()) ? -1 : 1);
|
|
|
+ } else if ("amountList".equals(type)) {
|
|
|
+ list.sort((vo1, vo2) -> ((OverallSummaryAmountLineDataVO) vo1).getDt()
|
|
|
+ .isBefore(((OverallSummaryAmountLineDataVO) vo2).getDt()) ? -1 : 1);
|
|
|
+ } else if ("userList".equals(type)) {
|
|
|
+ list.sort((vo1, vo2) -> ((OverallSummaryUserLineDataVO) vo1).getDt()
|
|
|
+ .isBefore(((OverallSummaryUserLineDataVO) vo2).getDt()) ? -1 : 1);
|
|
|
+ }
|
|
|
|
|
|
return list;
|
|
|
}
|
|
@@ -379,7 +408,7 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
if (type == 1) {
|
|
|
sql = Sqls.create(sumByItemsAndTablesSql() + cri);
|
|
|
|
|
|
- sql.params().set("item", queryString.split("-")[0]);
|
|
|
+ sql.vars().set("item", queryString.split("-")[0]);
|
|
|
sql.vars().set("tableName", queryString.split("-")[1]);
|
|
|
} else {
|
|
|
sql = Sqls.create(gameCountSql() + cri);
|
|
@@ -403,9 +432,8 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
|
|
|
Sql sql = Sqls.create(sumByItemsAndTablesSql() + cri);
|
|
|
|
|
|
- sql.params().set("item", queryString.split("-")[0]);
|
|
|
+ sql.vars().set("item", queryString.split("-")[0]);
|
|
|
sql.vars().set("tableName", queryString.split("-")[1]);
|
|
|
-
|
|
|
|
|
|
sql.setCallback(Sqls.callback.doubleValue());
|
|
|
|
|
@@ -424,7 +452,7 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
SELECT
|
|
|
COUNT(DISTINCT game_id)
|
|
|
FROM
|
|
|
- game_ads.ads_game_push_num
|
|
|
+ ads_overall_summary_game
|
|
|
""";
|
|
|
}
|
|
|
|
|
@@ -434,11 +462,52 @@ public class OverallSummaryServiceImpl implements IOverallSummaryService {
|
|
|
private String sumByItemsAndTablesSql() {
|
|
|
return """
|
|
|
SELECT
|
|
|
- SUM(@item)
|
|
|
+ SUM($item)
|
|
|
FROM
|
|
|
$tableName
|
|
|
""";
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ * 消耗折线数据sql
|
|
|
+ */
|
|
|
+ private String costLineSql() {
|
|
|
+ return """
|
|
|
+ SELECT
|
|
|
+ dt,
|
|
|
+ SUM(today_cost) cost
|
|
|
+ FROM
|
|
|
+ ads_overall_summary_cost
|
|
|
+ """;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 充值、买量账面、自然量折线数据sql
|
|
|
+ */
|
|
|
+ private String amountLineSql() {
|
|
|
+ return """
|
|
|
+ SELECT
|
|
|
+ dt,
|
|
|
+ SUM(today_amount) amount,
|
|
|
+ SUM(today_buy_amount) buy_amount,
|
|
|
+ SUM(today_nature_amount) nature_amount,
|
|
|
+ SUM(today_first_new_user_amount) today_first_new_user_amount
|
|
|
+ FROM
|
|
|
+ ads_overall_summary_amount
|
|
|
+ """;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ * 新增用户折线数据sql
|
|
|
+ */
|
|
|
+ private String userLineSql() {
|
|
|
+ return """
|
|
|
+ SELECT
|
|
|
+ dt,
|
|
|
+ SUM(today_user_count) player_account
|
|
|
+ FROM
|
|
|
+ ads_overall_summary_user
|
|
|
+ """;
|
|
|
+ }
|
|
|
|
|
|
}
|