|
@@ -341,7 +341,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
vo.setBuyNewUserAmountNum(getNewUserAmountNum(dayNMap, "buy"));
|
|
|
vo.setBuyNewUserAmountCount(buyDayN == null ? 0L : buyDayN.getRechargeCount());
|
|
|
//新用户复充人数
|
|
|
- vo.setBuyNewUserAgainNum(buyDayN == null ? 0L : buyDayN.getRechargeAgainNum());
|
|
|
+ vo.setBuyNewUserAgainNum(getNewUserAmountAgainNum(dayNMap, "buy"));
|
|
|
|
|
|
//老用户充值次数、人数、金额
|
|
|
vo.setBuyOldUserAmount(vo.getBuyAmount().subtract(vo.getBuyNewUserAmount()));
|
|
@@ -383,7 +383,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
vo.setNatureNewUserAmountNum(getNewUserAmountNum(dayNMap, "nature"));
|
|
|
vo.setNatureNewUserAmountCount(natureDayN == null ? 0L : natureDayN.getRechargeCount());
|
|
|
//新用户复充人数
|
|
|
- vo.setNatureNewUserAgainNum(natureDayN == null ? 0L : natureDayN.getRechargeAgainNum());
|
|
|
+ vo.setNatureNewUserAgainNum(getNewUserAmountAgainNum(dayNMap, "nature"));
|
|
|
|
|
|
//老用户充值次数、人数、金额
|
|
|
vo.setNatureOldUserAmount(vo.getNatureAmount().subtract(vo.getNatureNewUserAmount()));
|
|
@@ -425,7 +425,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
vo.setNewUserAmountNum(getNewUserAmountNum(dayNMap, ""));
|
|
|
vo.setNewUserAmountCount(dayN == null ? 0L : dayN.getRechargeCount());
|
|
|
//新用户复充人数
|
|
|
- vo.setNewUserAgainNum(dayN == null ? 0L : dayN.getRechargeAgainNum());
|
|
|
+ vo.setNewUserAgainNum(getNewUserAmountAgainNum(dayNMap, ""));
|
|
|
|
|
|
//老用户充值次数、人数、金额
|
|
|
vo.setOldUserAmount(vo.getAmount().subtract(vo.getNewUserAmount()));
|
|
@@ -573,12 +573,17 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
tempVO.getNatureAmount().divide(BigDecimal.valueOf(natureAmountNum), 2, RoundingMode.HALF_UP));
|
|
|
//将两个对象内的数据合并
|
|
|
copyNullProperties(tempVO, vo);
|
|
|
-
|
|
|
- getGameDataTotalTotalRechargeData(dto,vo);
|
|
|
+ //获取新用户充值人数相关数据
|
|
|
+ getGameDataTotalTotalRechargeData(dto, vo);
|
|
|
|
|
|
return vo;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 游戏总数据总计的新用户充值人数相关值得计算方法
|
|
|
+ * @param dto 前端查询条件
|
|
|
+ * @param vo 返回给前端得实体
|
|
|
+ */
|
|
|
private void getGameDataTotalTotalRechargeData(GameDataTotalTotalDTO dto, GameDataTotalTotalVO vo) {
|
|
|
|
|
|
//设置查询参数map
|
|
@@ -599,20 +604,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());
|
|
|
- vo.setBuyNewUserAmountNum(buyDayN == null ? 0L : buyDayN.getRechargeNum());
|
|
|
+ vo.setBuyNewUserAmountNum(getNewUserAmountNum(dayNMap, "buy"));
|
|
|
vo.setBuyNewUserAmountCount(buyDayN == null ? 0L : buyDayN.getRechargeCount());
|
|
|
//新用户复充人数
|
|
|
- vo.setBuyNewUserAgainNum(buyDayN == null ? 0L : buyDayN.getRechargeAgainNum());
|
|
|
+ vo.setBuyNewUserAgainNum(getNewUserAmountAgainNum(dayNMap, "buy"));
|
|
|
|
|
|
//老用户充值次数、人数、金额
|
|
|
vo.setBuyOldUserAmount(vo.getBuyAmount().subtract(vo.getBuyNewUserAmount()));
|
|
@@ -651,10 +649,10 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
//设置自然量数据
|
|
|
//新用户充值次数、金额、人数
|
|
|
vo.setNatureNewUserAmount(natureDayN == null ? BigDecimal.ZERO : natureDayN.getRechargeMoney());
|
|
|
- vo.setNatureNewUserAmountNum(natureDayN == null ? 0L : natureDayN.getRechargeNum());
|
|
|
+ vo.setNatureNewUserAmountNum(getNewUserAmountNum(dayNMap, "nature"));
|
|
|
vo.setNatureNewUserAmountCount(natureDayN == null ? 0L : natureDayN.getRechargeCount());
|
|
|
//新用户复充人数
|
|
|
- vo.setNatureNewUserAgainNum(natureDayN == null ? 0L : natureDayN.getRechargeAgainNum());
|
|
|
+ vo.setNatureNewUserAgainNum(getNewUserAmountAgainNum(dayNMap, "nature"));
|
|
|
|
|
|
//老用户充值次数、人数、金额
|
|
|
vo.setNatureOldUserAmount(vo.getNatureAmount().subtract(vo.getNatureNewUserAmount()));
|
|
@@ -693,10 +691,10 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
//设置总量数据
|
|
|
//新用户充值次数、金额、人数
|
|
|
vo.setNewUserAmount(dayN == null ? BigDecimal.ZERO : dayN.getRechargeMoney());
|
|
|
- vo.setNewUserAmountNum(dayN == null ? 0L : dayN.getRechargeNum());
|
|
|
+ vo.setNewUserAmountNum(getNewUserAmountNum(dayNMap, ""));
|
|
|
vo.setNewUserAmountCount(dayN == null ? 0L : dayN.getRechargeCount());
|
|
|
//新用户复充人数
|
|
|
- vo.setNewUserAgainNum(dayN == null ? 0L : dayN.getRechargeAgainNum());
|
|
|
+ vo.setNewUserAgainNum(getNewUserAmountAgainNum(dayNMap, ""));
|
|
|
|
|
|
//老用户充值次数、人数、金额
|
|
|
vo.setOldUserAmount(vo.getAmount().subtract(vo.getNewUserAmount()));
|
|
@@ -1185,7 +1183,6 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
dayN = DayN.builder()
|
|
|
.rechargeMoney(new BigDecimal(values[0]))
|
|
|
.rechargeCount(Long.valueOf(values[1]))
|
|
|
- .rechargeAgainNum(Long.valueOf(values[3]))
|
|
|
.build();
|
|
|
}
|
|
|
}
|
|
@@ -1198,7 +1195,7 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
*
|
|
|
* @param dayNMap 参数Map
|
|
|
* @param type 查询的字段类型:buy、nature、总
|
|
|
- * @return 新用户充值认识
|
|
|
+ * @return 新用户充值人数
|
|
|
*/
|
|
|
private Long getNewUserAmountNum(Map<String, Object> dayNMap, String type) {
|
|
|
//查询新用户充值人数
|
|
@@ -1238,6 +1235,59 @@ public class GameDataServiceImpl implements IGameDataService {
|
|
|
return newUserAmountNumSql.getLong();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取新用户复充人数方法
|
|
|
+ *
|
|
|
+ * @param dayNMap 参数列表
|
|
|
+ * @param type 查询字段类型: buy、nature、总量
|
|
|
+ * @return 新用户复充人数
|
|
|
+ */
|
|
|
+ private Long getNewUserAmountAgainNum(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) {
|
|
|
+ //拼接充值时间查询条件
|
|
|
+ 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 newUserAmountAgainNumSql = Sqls.create("""
|
|
|
+ SELECT
|
|
|
+ COUNT(a.num)
|
|
|
+ FROM(
|
|
|
+ SELECT
|
|
|
+ COUNT(user_id) num
|
|
|
+ FROM
|
|
|
+ game_ads.ads_information
|
|
|
+ """ + cri +
|
|
|
+ """
|
|
|
+ GROUP BY user_id
|
|
|
+ HAVING COUNT(user_id) > 1
|
|
|
+ ) a;
|
|
|
+ """);
|
|
|
+ newUserAmountAgainNumSql.setCallback(Sqls.callback.longValue());
|
|
|
+ //执行sql
|
|
|
+ dao.execute(newUserAmountAgainNumSql);
|
|
|
+ //得到结果 新用户充值人数
|
|
|
+ return newUserAmountAgainNumSql.getLong();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 通过反射来获取Cn的值
|
|
|
*
|