Ejemplo n.º 1
0
  public String execute() {
    //		System.out.println("DEFAULT_PAGESIZE   "+DEFAULT_PAGESIZE);
    UserDiamondStatsService userDiamondStatsService =
        ServiceCacheFactory.getServiceCache().getService(UserDiamondStatsService.class);
    IPage<UserDiamondStats> page = null;

    if (isCommit != null && isCommit == "TF" || isCommit.equalsIgnoreCase("TF")) {
      isCommit = "F";
    }
    // 判断是否是条件查询
    if (getStartDate() == null && getEndDate() == null) {
      page = userDiamondStatsService.findList(DEFAULT_PAGESIZE, super.getToPage());
    } else {
      page =
          userDiamondStatsService.findListInDate(
              DEFAULT_PAGESIZE, super.getToPage(), getStartDate(), getEndDate());
    }

    if (page != null) {
      statsList = (List<UserDiamondStats>) page.getData();
      for (UserDiamondStats stats : statsList) {
        int sysNum = stats.getSysNum();
        TGameServer tGameServer = DataSourceManager.getInstatnce().getGameServerMap().get(sysNum);
        stats.setServerName(tGameServer.getServerAlias());
      }
      super.setTotalPage(page.getTotalPage());
      super.setTotalSize(page.getTotalSize());
    }
    return SUCCESS;
  }
Ejemplo n.º 2
0
  /** 采集数据调度入口 */
  @Override
  public void executeJob(JobExecutionContext jobExecutionContext) throws JobExecutionException {
    LogSystem.info("日统计开始 " + jobExecutionContext.getJobDetail().getName());

    //		CronTrigger cronTrigger= (CronTrigger)jobExecutionContext.getTrigger();
    //		String[] serverIdsArr = ((String)cronTrigger.getJobDataMap().get("serverIds")).split(",");
    // // 已经修正
    Map<Integer, TGameServer> gameServerMap = DataSourceManager.getInstatnce().getGameServerMap();

    StringBuilder serverName = new StringBuilder();

    Iterator<Integer> iter = gameServerMap.keySet().iterator();
    while (iter.hasNext()) {
      Integer key = iter.next();
      TGameServer value = gameServerMap.get(key);
      LogSystem.info("print key = " + key + " value = " + value);
      serverName.append(value.getServerId() + ",");
    }
    String[] serverIdsArr = serverName.toString().split(",");

    Date date = new Date();
    for (int i = 0; i < serverIdsArr.length; i++) {
      CustomerContextHolder.setSystemNum(Integer.valueOf(serverIdsArr[i]));
      LogSystem.info("serverId:" + serverIdsArr[i]);
      //			LogSystem.info("cronTrigger.timezone:"+cronTrigger.getTimeZone().getID());
      LogSystem.info("管理后台的时间:" + date.toString());
      Date nowServerTime = DateUtil.getNowDateBySystemNum();
      LogSystem.info("游戏服务器时间:" + nowServerTime.toString());
      // 开服过后一天才统计数据(已经修正)
      Date serverOpernTime =
          DataSourceManager.getInstatnce()
              .getGameServerMap()
              .get(CustomerContextHolder.getSystemNum())
              .getServerOpernTime();
      //			Date d = new Date(serverOpernTime.getTime()+24*60*60*1000);
      Date d = new Date(serverOpernTime.getTime());
      if (nowServerTime.getTime() < d.getTime()) {
        LogSystem.info("还木有开服,不统计!");
        continue;
      }
      //			InvocationCollector invocationCollector = (InvocationCollector)
      // ServiceCacheFactory.getServiceCache().getBeanById("dayInvocationCollector");
      //			invocationCollector.invoke(date);
      executeOneServer(date, Integer.valueOf(serverIdsArr[i]));
      LogSystem.info("日统计完毕 " + jobExecutionContext.getJobDetail().getName());
    }
  }
Ejemplo n.º 3
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;
  }