| | |
| | | private static Logger log = LogManager.getLogger("ONSExceptionLogService"); |
| | | |
| | | /** |
| | | * 排名更新时间,默认60秒 |
| | | * 排名更新时间,默认60秒 |
| | | */ |
| | | @SuppressWarnings("unused") |
| | | private int updateRankMinutes = 60; |
| | |
| | | // String scopeType = msg.getUserProperties("scopeType"); |
| | | // String scopeId = msg.getUserProperties("scopeId"); |
| | | // |
| | | // // 判断哪些需要更新排名 |
| | | // // 判断哪些需要更新排名 |
| | | // List<SchRank> rankLst = getRankLstNeedUpdate(userId,rankType,scopeType,scopeId); |
| | | // |
| | | // // 如果有,则更新排名 |
| | | // // 如果有,则更新排名 |
| | | // updateRankLst(rankLst); |
| | | // |
| | | // }catch(Exception e){ |
| | |
| | | // ";scopeType:" + msg.getUserProperties("scopeType") + |
| | | // ";scopeId:" + msg.getUserProperties("scopeId") ; |
| | | // |
| | | // log.error( businessId + " :排名消息发送失败:" + e , e); |
| | | // log.error( businessId + " :排名消息发送失败:" + e , e); |
| | | // onsExceptionLogService.logSaveExceptionLog(cfg.getConfigByEnv("ons-common-topic"), "SCH_RANK", businessId , desp ); |
| | | // } |
| | | // |
| | |
| | | // } |
| | | |
| | | /** |
| | | * 更新排名 |
| | | * 更新排名 |
| | | * |
| | | * @param rankLst |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 更新排名 |
| | | * 更新排名 |
| | | * |
| | | * @param rank |
| | | */ |
| | | private void updateRank(SchRank rank) { |
| | | |
| | | // 查询所有待排名实时数据列表 |
| | | // 查询所有待排名实时数据列表 |
| | | List<SchRank> rankLst = querySchRankLstByRank(rank); |
| | | |
| | | // 按value排序 |
| | | // 按value排序 |
| | | Collections.sort(rankLst, new Comparator<SchRank>() { |
| | | @Override |
| | | public int compare(SchRank r1, SchRank r2) { |
| | |
| | | } |
| | | }); |
| | | |
| | | // 新建版本记录 |
| | | // 新建版本记录 |
| | | SchRankVer version = insertRankVersion(rank); |
| | | |
| | | // 插入rank_his数据 |
| | | // 插入rank_his数据 |
| | | saveRankHisData(version, rankLst); |
| | | |
| | | // 插入缓存记录,标记本次更新排名时间 |
| | | // 插入缓存记录,标记本次更新排名时间 |
| | | updateUpdateTime(rank); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 插入缓存记录,标记本次更新排名时间 |
| | | * 插入缓存记录,标记本次更新排名时间 |
| | | * |
| | | * @param rank |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取cacheId |
| | | * 获取cacheId |
| | | * |
| | | * @param rank |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 创建新的版本记录 |
| | | * 创建新的版本记录 |
| | | * |
| | | * @param rank |
| | | * @return |
| | | */ |
| | | private SchRankVer insertRankVersion(SchRank rank) { |
| | | |
| | | // 更新旧的最新版本 |
| | | // 更新旧的最新版本 |
| | | String hql = "from SchRankVer where rankType=? and scopeId=? and scopeType=? and latest is true order by version desc"; |
| | | List<SchRankVer> oldLastestVerLst = dao.find(hql, CollectionUtils.newList( |
| | | rank.getRankType(), rank.getScopeId(), rank.getScopeType()), |
| | |
| | | dao.saveOrUpdate(oldVer); |
| | | } |
| | | |
| | | // 创建新的版本 |
| | | // 创建新的版本 |
| | | SchRankVer ver = new SchRankVer(); |
| | | |
| | | TraceUtils.setCreateTrace(ver); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 根据任何一条排名数据查询所有待排名实时数据列表 |
| | | * 根据任何一条排名数据查询所有待排名实时数据列表 |
| | | * |
| | | * @param rank |
| | | * @return |
| | |
| | | } |
| | | |
| | | /** |
| | | * 判断哪些需要更新排名 |
| | | * 判断哪些需要更新排名 |
| | | * |
| | | * @param userId |
| | | * @return |
| | |
| | | private List<SchRank> getRankLstNeedUpdate(String userId,String rankType,String scopeType,String scopeId) { |
| | | |
| | | StringBuffer sb = new StringBuffer("from SchRank where userId=? and rankType = ? and scopeType = ? "); |
| | | // 参数集合 |
| | | // 参数集合 |
| | | List<Object> args = CollectionUtils.newList(userId,rankType,scopeType); |
| | | |
| | | if(!SchRank.SCOPE_TYPE_QXUEYOU.equals(scopeType) |
| | | && StringUtils.isNotBlank(scopeId)){// qxueyou排名 不需要 |
| | | && StringUtils.isNotBlank(scopeId)){// qxueyou排名 不需要 |
| | | sb.append(" and scopeId = ?"); |
| | | args.add(scopeId); |
| | | } |
| | |
| | | } |
| | | |
| | | /** |
| | | * 插入rank_his数据 |
| | | * 插入rank_his数据 |
| | | * |
| | | * @param version |
| | | * @param rankLst |
| | |
| | | |
| | | for (SchRank rank : rankLst) { |
| | | |
| | | // Q学友只处理前一百名 |
| | | // Q学友只处理前一百名 |
| | | if (i > 100 |
| | | && SchRank.SCOPE_TYPE_QXUEYOU.equals(rank.getScopeType())) { |
| | | break; |