Example #1
0
  @Override
  public String execute() throws Exception {
    UserGoldLogService userGoldLogService =
        ServiceCacheFactory.getServiceCache().getService(UserGoldLogService.class);
    if (isCommit.equals("T")) {
      String searchUserId = super.searchUser();

      // 搜索玩家的时候出错了,返回
      if (super.getErroDescrip() != null) {
        return SUCCESS;
      }
      IPage<Object> list =
          userGoldLogService.findPageLogListByCondition(
              searchUserId,
              super.getStartDate(),
              super.getEndDate(),
              searchCategory,
              searchType,
              super.getToPage(),
              super.getPageSize());
      count =
          userGoldLogService.countAll(1, searchUserId, super.getStartDate(), super.getEndDate());
      useCount =
          userGoldLogService.countAll(2, searchUserId, super.getStartDate(), super.getEndDate());

      if (list != null) {
        List<Object> ll = (List<Object>) list.getData();
        for (int i = 0; i < ll.size(); i++) {
          Object[] arr = (Object[]) ll.get(i);
          UserGoldLog log = new UserGoldLog();
          log.setUserId(arr[0].toString());
          log.setUserName(arr[1].toString());
          log.setLodoId(Integer.valueOf(arr[2].toString()));
          log.setUserLevel(Integer.valueOf(arr[3].toString()));
          log.setCategory(Integer.valueOf(arr[4].toString()));
          log.setType(Integer.valueOf(arr[5].toString()));
          log.setChangeNum(Integer.valueOf(arr[6].toString()));
          log.setTime(
              new Timestamp(
                  DateUtil.stringtoDate(arr[7].toString(), DateUtil.FORMAT_ONE).getTime()));
          userGoldLogList.add(log);
        }
        super.setTotalPage(list.getTotalPage());
        super.setTotalSize(list.getTotalSize());
      }
    }

    return SUCCESS;
  }
Example #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());
    }
  }
Example #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;
  }
  @Override
  public void execute(Date date) throws Exception {
    LogSystem.info("VIP 玩家元宝统计 Collector开始");
    UserGoldLogService userGoldLogService =
        ServiceCacheFactory.getServiceCache().getService(UserGoldLogService.class);
    UserService userService = ServiceCacheFactory.getServiceCache().getService(UserService.class);
    VipUserDiamondStatsService vipUserDiamondStatsService =
        ServiceCacheFactory.getServiceCache().getService(VipUserDiamondStatsService.class);

    String[] dates = DateUtil.getOneDayStrArr(SystemStatsDate.YESTERDAY);
    List<Object> tempList = userService.findVipUser();
    List<String> userList = new ArrayList<String>();
    for (int i = 0; i < tempList.size(); i++) {
      Object objArr = (Object) tempList.get(i);
      Character[] cc = (Character[]) objArr;
      StringBuilder sb = new StringBuilder();
      for (int j = 0; j < cc.length; j++) {
        Character c = cc[j];
        sb.append(c);
      }
      userList.add(sb.toString());
    }
    int actityCount = userService.findActityVipUser(dates, userList);
    Map<Integer, Integer> map1 =
        userGoldLogService.findEveryTypeAmountVIP(UserGoldLogCategory.RECEIVE, dates, userList);
    Map<Integer, Integer> map2 =
        userGoldLogService.findEveryTypeAmountVIP(UserGoldLogCategory.CONSUME, dates, userList);
    List<VipUserDiamondStats> resultList = new ArrayList<VipUserDiamondStats>();

    Iterator<Integer> key1 = map1.keySet().iterator();
    while (key1.hasNext()) {
      Integer k = key1.next();
      Integer value = map1.get(k);
      VipUserDiamondStats stats = new VipUserDiamondStats();
      stats.setSysNum(CustomerContextHolder.getSystemNum());
      stats.setDate(DateUtil.getSomeDaysDiffDate(SystemStatsDate.YESTERDAY));
      stats.setCount(tempList.size());
      stats.setType(k);
      stats.setCaterory(UserGoldLogCategory.RECEIVE);
      stats.setDiamond(value);
      stats.setActityCount(actityCount);

      resultList.add(stats);
    }
    Iterator<Integer> key2 = map2.keySet().iterator();
    while (key2.hasNext()) {
      Integer k = key2.next();
      Integer value = map2.get(k);
      VipUserDiamondStats stats = new VipUserDiamondStats();
      stats.setSysNum(CustomerContextHolder.getSystemNum());
      stats.setDate(DateUtil.getSomeDaysDiffDate(SystemStatsDate.YESTERDAY));
      stats.setCount(tempList.size());
      stats.setType(k);
      stats.setDiamond(value);
      stats.setCaterory(UserGoldLogCategory.CONSUME);
      stats.setActityCount(actityCount);

      resultList.add(stats);
    }
    vipUserDiamondStatsService.saveBatch(resultList);
    LogSystem.info("VIP 玩家元宝统计 Collector结束");
  }
Example #5
0
  @Override
  public String execute() {
    UserMallRankStatsService userMallRankStatsService =
        ServiceCacheFactory.getServiceCache().getService(UserMallRankStatsService.class);
    TTreasureConstantService treasureConstantService =
        ServiceCacheFactory.getServiceCache().getService(TTreasureConstantService.class);
    treasureIdNameMap = treasureConstantService.findMallTreasureIdNameMap();
    IPage<UserMallRankStats> page = null;
    if (getStartDate() != null && getEndDate() != null) {
      page =
          userMallRankStatsService.findListInDate(
              super.getPageSize(), super.getToPage(), getStartDate(), getEndDate());
    } else {
      page = userMallRankStatsService.findList(super.getPageSize(), super.getToPage());
    }
    if (page != null) {
      List<UserMallRankStats> list = (List<UserMallRankStats>) page.getData();
      if (list != null && list.size() > 0) {
        for (UserMallRankStats stats : list) {
          String date = DateUtil.dateToString(stats.getTime(), DateUtil.LONG_DATE_FORMAT);
          if (statsMap.containsKey(date)) {
            statsMap.get(date).add(stats);
          } else {
            List<UserMallRankStats> ll = new ArrayList<UserMallRankStats>();
            ll.add(stats);
            statsMap.put(date, ll);
          }
        }
      }
      super.setTotalPage(page.getTotalPage());
      super.setTotalSize(page.getTotalSize());
    }
    if (statsMap.size() > 0) {
      for (List<UserMallRankStats> list : statsMap.values()) {
        Collections.sort(
            list,
            new Comparator<UserMallRankStats>() {

              @Override
              public int compare(UserMallRankStats o1, UserMallRankStats o2) {
                // TODO Auto-generated method stub
                if (o1.getRank().intValue() > o2.getRank().intValue()) {
                  return 1;
                } else {
                  return -1;
                }
              }
            });
      }
    }
    // 排序
    if (statsMap.size() > 0) {
      mappingList = new ArrayList<Map.Entry<String, List<UserMallRankStats>>>(statsMap.entrySet());
      Collections.sort(
          mappingList,
          new Comparator<Map.Entry<String, List<UserMallRankStats>>>() {
            public int compare(
                Map.Entry<String, List<UserMallRankStats>> mapping1,
                Map.Entry<String, List<UserMallRankStats>> mapping2) {
              return mapping2.getKey().compareTo(mapping1.getKey());
            }
          });
    }
    return SUCCESS;
  }