コード例 #1
0
  public String execute() {
    UserRegLogService userRegLogService =
        ServiceCacheFactory.getServiceCache().getService(UserRegLogService.class);

    if (DTools.isEmpty(serverIds)) {
      return SUCCESS;
    }
    for (String serverId : serverIds.split(",")) {
      CustomerContextHolder.setSystemNum(Integer.valueOf(serverId.trim()));
      TGameServer gameServer =
          DataSourceManager.getInstatnce()
              .getGameServerMap()
              .get(CustomerContextHolder.getSystemNum());
      Date openDate = new Date(gameServer.getServerOpernTime().getTime());

      if (DateUtil.dayDiff(regStartDate, openDate) > 0) {
        super.setErroDescrip("\"" + gameServer.getServerAlias() + "\"在当前注册日期还没开服!");
        continue;
      }

      // 登录开始日期
      // super.getStartDate();
      // 登录结束日期
      // super.getEndDate();
      Map<String, Integer> tempMap =
          userRegLogService.findReLoginMap(
              regStartDate, regEndDate, super.getStartDate(), super.getEndDate());
      //		Calendar calendar = Calendar.getInstance();
      //		calendar.get(Calendar.DAY_OF_MONTH);

      // 再登录人数:在A时间段注册的人中 在B时间段登陆的人数
      Integer reLoginAmount = 0;

      // 在A时间段注册的人中 B时间段内,各个日期登陆的人数
      Map<String, Integer> dayAndAmountmap = new HashMap<String, Integer>();
      Iterator<Entry<String, Integer>> ite1 = tempMap.entrySet().iterator();
      while (ite1.hasNext()) {
        Entry<String, Integer> entry = ite1.next();

        Integer count = entry.getValue();
        reLoginAmount += count;

        String[] dayStrArr = entry.getKey().split(",");
        for (String dayStr : dayStrArr) {
          if (dayAndAmountmap.get(dayStr) == null) {
            dayAndAmountmap.put(dayStr, count);
          } else {
            dayAndAmountmap.put(dayStr, count + dayAndAmountmap.get(dayStr));
          }
        }
      }
      // 每天的再登录人数(总和): 在A时间段注册的人中  B时间段内,每天登陆的人数 的总和
      Integer allDayAmount = 0;
      Iterator<Entry<String, Integer>> ite2 = dayAndAmountmap.entrySet().iterator();
      while (ite2.hasNext()) {
        Entry<String, Integer> entry = ite2.next();
        allDayAmount += entry.getValue();
      }

      // A时间段注册的人数
      String[] dates = new String[2];
      Calendar c = Calendar.getInstance();
      c.setTimeInMillis(regStartDate.getTime());
      dates[0] =
          c.get(Calendar.YEAR)
              + "-"
              + (c.get(Calendar.MONTH) + 1)
              + "-"
              + c.get(Calendar.DATE)
              + " 00:00:00";
      c.setTimeInMillis(regEndDate.getTime());
      dates[1] =
          c.get(Calendar.YEAR)
              + "-"
              + (c.get(Calendar.MONTH) + 1)
              + "-"
              + c.get(Calendar.DATE)
              + " 23:59:59";
      int regAmount = userRegLogService.findRegUserNumInSomeTime(dates);

      // 当前服务器的统计数据
      Map<String, Integer> serverMap = new HashMap<String, Integer>();
      serverMap.put("regAmount", regAmount);
      serverMap.put("reLoginAmount", reLoginAmount);
      serverMap.put("allDayAmount", allDayAmount);

      map.put(gameServer.getServerAlias(), serverMap);
    }
    return SUCCESS;
  }