|
@@ -318,7 +318,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
copyNullProperties(tempVO, vo);
|
|
|
|
|
|
//设置查询参数map
|
|
|
- Map<String, Object> dayNMap = new HashMap<>(4);
|
|
|
+ Map<String, Object> dayNMap = new HashMap<>(6);
|
|
|
dayNMap.put("registerBeginDate", dto.getRegisteredBeginDate());
|
|
|
dayNMap.put("registerEndDate", dto.getRegisteredEndDate());
|
|
|
dayNMap.put("rechargeBeginDate", dto.getRechargeBeginDate());
|
|
@@ -335,6 +335,13 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
//总量表的充值相关数据
|
|
|
DayN dayN = getDayNByTableName(dayNMap, "ads_dayn_game");
|
|
|
|
|
|
+ //新用户充值人数(总量)
|
|
|
+ dayN.setRechargeNum(getNewUserAmountNum(dayNMap, ""));
|
|
|
+ //新用户充值人数(买量)
|
|
|
+ buyDayN.setRechargeNum(getNewUserAmountNum(dayNMap, "buy"));
|
|
|
+ //新用户充值人数(自然量)
|
|
|
+ natureDayN.setRechargeNum(getNewUserAmountNum(dayNMap, "nature"));
|
|
|
+
|
|
|
//设置买量数据
|
|
|
//新用户充值次数、金额、人数
|
|
|
vo.setBuyNewUserAmount(buyDayN == null ? BigDecimal.ZERO : buyDayN.getRechargeMoney());
|
|
@@ -855,8 +862,34 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
sqlWithRechargeDate.setCallback(Sqls.callback.entity());
|
|
|
sqlWithRechargeDate.setEntity(dao.getEntity(GameDataTotalVO.class));
|
|
|
dao.execute(sqlWithRechargeDate);
|
|
|
-
|
|
|
- return sqlWithRechargeDate.getObject(GameDataTotalVO.class);
|
|
|
+ //得到vo
|
|
|
+ GameDataTotalVO gameDataTotalVO = sqlWithRechargeDate.getObject(GameDataTotalVO.class);
|
|
|
+
|
|
|
+ //设置查询参数map
|
|
|
+ Map<String, Object> queryMap = new HashMap<>(4);
|
|
|
+ queryMap.put("rechargeBeginDate", dto.getRechargeBeginDate());
|
|
|
+ queryMap.put("rechargeEndDate", dto.getRechargeEndDate());
|
|
|
+ queryMap.put("gameId", vo.getGameId());
|
|
|
+ if (StringUtils.isNotBlank(dto.getSourceSystem())) {
|
|
|
+ queryMap.put("sourceSystem", dto.getSourceSystem());
|
|
|
+ }
|
|
|
+ //账面充值人数(总量、买量、自然量)
|
|
|
+ Long amountNum = getNewUserAmountNum(queryMap, "");
|
|
|
+ Long buyAmountNum = getNewUserAmountNum(queryMap, "buy");
|
|
|
+ Long natureAmountNum = getNewUserAmountNum(queryMap, "nature");
|
|
|
+ //设置账面充值人数
|
|
|
+ gameDataTotalVO.setAmountNum(amountNum);
|
|
|
+ gameDataTotalVO.setBuyAmountNum(buyAmountNum);
|
|
|
+ gameDataTotalVO.setNatureAmountNum(natureAmountNum);
|
|
|
+ //设置账面ARPU(总量、买量、自然量)
|
|
|
+ gameDataTotalVO.setAmountArpu(amountNum == 0L ? BigDecimal.ZERO :
|
|
|
+ gameDataTotalVO.getAmount().divide(BigDecimal.valueOf(amountNum), 2, RoundingMode.HALF_UP));
|
|
|
+ gameDataTotalVO.setBuyAmountArpu(buyAmountNum == 0L ? BigDecimal.ZERO :
|
|
|
+ gameDataTotalVO.getBuyAmount().divide(BigDecimal.valueOf(buyAmountNum), 2, RoundingMode.HALF_UP));
|
|
|
+ gameDataTotalVO.setNatureAmountArpu(natureAmountNum == 0L ? BigDecimal.ZERO :
|
|
|
+ gameDataTotalVO.getNatureAmount().divide(BigDecimal.valueOf(natureAmountNum), 2, RoundingMode.HALF_UP));
|
|
|
+
|
|
|
+ return gameDataTotalVO;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -894,7 +927,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 三张表共用的方法
|
|
|
+ * 三张表共用查询dayN数据的方法
|
|
|
*
|
|
|
* @param dayNMap 参数Map
|
|
|
* @param tableName 查询的表名
|
|
@@ -978,33 +1011,57 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
dayN = DayN.builder()
|
|
|
.rechargeMoney(new BigDecimal(values[0]))
|
|
|
.rechargeCount(Long.valueOf(values[1]))
|
|
|
- .rechargeNum(Long.valueOf(values[2]))
|
|
|
.rechargeAgainNum(Long.valueOf(values[3]))
|
|
|
.build();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*//查询新用户充值人数
|
|
|
- Criteria newUserAmountNumCri = cri;
|
|
|
+ return dayN;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取新用户充值人数方法
|
|
|
+ *
|
|
|
+ * @param dayNMap 参数Map
|
|
|
+ * @param type 查询的字段类型:buy、nature、总
|
|
|
+ * @return 新用户充值认识
|
|
|
+ */
|
|
|
+ private Long getNewUserAmountNum(Map<String, Object> dayNMap, String type) {
|
|
|
+ //查询新用户充值人数
|
|
|
+ Criteria cri = Cnd.cri();
|
|
|
+ if (dayNMap.get("registerBeginDate") != null && dayNMap.get("registerEndDate") != null) {
|
|
|
+ //拼接注册时间查询条件
|
|
|
+ cri.where().andBetween("reg_time", dayNMap.get("registerBeginDate"), dayNMap.get("registerEndDate"));
|
|
|
+ }
|
|
|
+ if (dayNMap.get("gameId") != null) {
|
|
|
+ //拼接游戏ID查询条件
|
|
|
+ cri.where().andEquals("game_id", dayNMap.get("gameId"));
|
|
|
+ }
|
|
|
+ if (dayNMap.get("sourceSystem") != null) {
|
|
|
+ //拼接SDK来源查询条件
|
|
|
+ cri.where().andEquals("source_system", dayNMap.get("sourceSystem"));
|
|
|
+ }
|
|
|
if (dayNMap.get("rechargeBeginDate") != null && dayNMap.get("rechargeEndDate") != null) {
|
|
|
//拼接充值时间查询条件
|
|
|
- newUserAmountNumCri.where().andBetween("dt", dayNMap.get("rechargeBeginDate"), dayNMap.get("rechargeEndDate"));
|
|
|
+ cri.where().andBetween("order_time", dayNMap.get("rechargeBeginDate"), dayNMap.get("rechargeEndDate"));
|
|
|
+ }
|
|
|
+ //拼接渠道id条件 取出自然量、买量、总量值
|
|
|
+ if (type.equals("buy")) {
|
|
|
+ cri.where().andNotEquals("agent_id", 0);
|
|
|
+ } else if (type.equals("nature")) {
|
|
|
+ cri.where().andEquals("agent_id", 0);
|
|
|
}
|
|
|
Sql newUserAmountNumSql = Sqls.create("""
|
|
|
SELECT
|
|
|
- DISTINCT(user_id)
|
|
|
+ COUNT(DISTINCT user_id) num
|
|
|
FROM
|
|
|
game_ads.ads_information
|
|
|
- """ + newUserAmountNumCri);
|
|
|
+ """ + cri);
|
|
|
newUserAmountNumSql.setCallback(Sqls.callback.longValue());
|
|
|
//执行sql
|
|
|
dao.execute(newUserAmountNumSql);
|
|
|
//得到结果 新用户充值人数
|
|
|
- Long newUserAmountNum = newUserAmountNumSql.getLong();
|
|
|
- //设置新用户充值人数
|
|
|
- dayN.setRechargeNum(newUserAmountNum);*/
|
|
|
-
|
|
|
- return dayN;
|
|
|
+ return newUserAmountNumSql.getLong();
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -2033,23 +2090,16 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
private String gameDataTotalSqlRecharge() {
|
|
|
return """
|
|
|
SELECT
|
|
|
- ifnull(sum(buy_amount_count),0) buy_amount_count,
|
|
|
- ifnull(sum(buy_amount_num),0) buy_amount_num,
|
|
|
- ifnull(sum(buy_amount),0) buy_amount,
|
|
|
- ifnull(sum(nature_amount_count),0) nature_amount_count,
|
|
|
- ifnull(sum(nature_amount_num),0) nature_amount_num,
|
|
|
- ifnull(sum(nature_amount),0) nature_amount,
|
|
|
- ifnull(sum(amount_count),0) amount_count,
|
|
|
- ifnull(sum(amount_num),0) amount_num,
|
|
|
- ifnull(sum(amount),0) amount,
|
|
|
+ IFNULL(sum(buy_amount_count),0) buy_amount_count,
|
|
|
+ IFNULL(sum(buy_amount),0) buy_amount,
|
|
|
+ IFNULL(sum(nature_amount_count),0) nature_amount_count,
|
|
|
+ IFNULL(sum(nature_amount),0) nature_amount,
|
|
|
+ IFNULL(sum(amount_count),0) amount_count,
|
|
|
+ IFNULL(sum(amount),0) amount,
|
|
|
|
|
|
round(if(sum(buy_amount_count) > 0, sum(buy_amount) / sum(buy_amount_count), 0), 2) buy_avg_amount,
|
|
|
round(if(sum(nature_amount_count) > 0, sum(nature_amount) / sum(nature_amount_count), 0), 2) nature_avg_amount,
|
|
|
- round(if(sum(amount_count) > 0, sum(amount) / sum(amount_count), 0), 2) avg_amount,
|
|
|
- round(if(sum(buy_amount_num) > 0 , sum(buy_amount) / sum(buy_amount_num), 0), 2) buy_amount_arpu,
|
|
|
- round(if(sum(nature_amount_num) > 0 , sum(nature_amount) / sum(nature_amount_num), 0), 2) nature_amount_arpu,
|
|
|
- round(if(sum(amount_num) > 0 , sum(amount) / sum(amount_num), 0), 2) amount_arpu
|
|
|
-
|
|
|
+ round(if(sum(amount_count) > 0, sum(amount) / sum(amount_count), 0), 2) avg_amount
|
|
|
FROM
|
|
|
game_ads.ads_game_day
|
|
|
|