/**
  * 页面数据排行 设备品牌、设备型号、网络类型、浏览器、操作系统、APP、分辨率、颜色深度、语言、国家、省份、城市、IP地址、运营商
  *
  * @param ranking 排行类型
  *     brand|model|nettype|browser|system|appname|resolution|depth|lang|country|province|city|ip|isp
  * @param ranktype 排序类型 按 vt|uv|ip|pv
  * @param siteId 网站ID
  * @param subsite 子站ID
  * @param urlId 页面ID
  * @param offset 偏移 0=当天 -1=昨天 1=明天 -2 2 -3...
  * @param span 跨度 [day|week|month|year]
  * @param start 开始时间 ("yyyyMMddHHmmss")
  * @param end 结束时间 ("yyyyMMddHHmmss")
  * @param limit 分页限制
  * @param skip 分页起始
  * @return 排行数据
  */
 @RequestMapping(
     "page/{urlId}/{ranking:brand|model|nettype|browser|system|appname|resolution|depth|lang|country|province|city|ip|isp}/rank/{ranktype:vt|uv|ip|pv}/{limit:\\d+}/{skip:\\d+}")
 public Object pageRank(
     @PathVariable int siteId,
     @PathVariable String urlId,
     @PathVariable Ranking ranking,
     @PathVariable RankingType ranktype,
     @PathVariable int limit,
     @PathVariable int skip,
     String subsite,
     Integer offset,
     Period span,
     Date start,
     Date end) {
   end = timeEnd(end, span, offset);
   start = timeStart(start, span, offset);
   String idsite = getIdSite(siteId, subsite);
   return service.pageRank(idsite, urlId, ranking, ranktype, start, end, limit, skip);
 }