Ejemplo n.º 1
0
  @Transactional
  @Override
  public List<NewRegistUser> findNewRegUserGroupByPid(Date from, Date to, String channel) {
    List<Object[]> users = userDao.findNewRegUserGroupByPid(from, to);
    Map<String, NewRegistUser> map = new HashMap<String, NewRegistUser>();
    if (null != users && users.size() > 0) {
      for (Object[] obj : users) {
        String date = String.valueOf(obj[0]);
        int count = Integer.parseInt(String.valueOf(obj[1]));
        String pid = String.valueOf(obj[2]);
        try {
          String encryptStr = DES.decryptDES(pid, "89wUzBcP", "utf-8");
          if (encryptStr.indexOf("android") >= 0) {
            pid = "android";
          } else if (encryptStr.indexOf("ios") >= 0) {
            pid = "ios";
          }
        } catch (Exception e) {
          log.info("非客户端渠道无法被DES,pid={}", pid);
        }
        if (StringUtils.isNotBlank(channel) && !pid.equals(channel)) {
          continue;
        }
        String key = date + pid;
        NewRegistUser newReg = map.get(key);
        if (null == newReg) {
          newReg = new NewRegistUser(date, pid, count);
        } else {
          count = count + newReg.getCount();
          newReg = new NewRegistUser(date, pid, count);
        }
        map.put(key, newReg);
      }
    }
    List<NewRegistUser> result = new ArrayList<NewRegistUser>(map.values());
    Collections.sort(
        result,
        new Comparator<NewRegistUser>() {

          @Override
          public int compare(NewRegistUser o1, NewRegistUser o2) {
            return -o1.getDate().compareTo(o2.getDate());
          }
        });
    return result;
  }