|  | @@ -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的值
 | 
	
		
			
				|  |  |       *
 |