/// <summary> /// 将IDataReader的当前记录读取到PenaltykickManagerEntity 对象 /// </summary> /// <param name="reader"></param> /// <returns></returns> public PenaltyKickRankEntity LoadSingleRow1(IDataReader reader) { var obj = new PenaltyKickRankEntity(); obj.ManagerId = (System.Guid)reader["ManagerId"]; obj.Name = (System.String)reader["Name"]; obj.TotalScore = (System.Int32)reader["TotalScore"]; obj.Rank = (System.Int32)reader["Rank"]; obj.ScoreChangeTime = (System.DateTime)reader["ScoreChangeTime"]; return(obj); }
/// <summary> /// 更新排名 /// </summary> /// <param name="info"></param> /// <returns></returns> public MessageCode UpdateRank(PenaltykickManagerEntity info) { if (info == null) { return(MessageCode.Success); } PenaltyKickRankEntity entity = null; if (_rankDic.ContainsKey(info.ManagerId)) { entity = _rankDic[info.ManagerId]; entity.ScoreChangeTime = info.ScoreChangeTime; entity.TotalScore = info.TotalScore; } else { var manager = ManagerCore.Instance.GetManager(info.ManagerId); if (manager == null) { return(MessageCode.NbParameterError); } entity = new PenaltyKickRankEntity(); entity.ManagerId = info.ManagerId; entity.Name = manager.Name; entity.ScoreChangeTime = info.ScoreChangeTime; entity.TotalScore = info.TotalScore; _rankDic.TryAdd(info.ManagerId, entity); } var rankList = _rankDic.Values.OrderByDescending(r => r.TotalScore).ToList(); var dic = new ConcurrentDictionary <Guid, PenaltyKickRankEntity>(); for (int i = 0; i < rankList.Count; i++) { if (i >= 100) { break; } rankList[i].Rank = i + 1; if (!dic.ContainsKey(rankList[i].ManagerId)) { dic.TryAdd(rankList[i].ManagerId, rankList[i]); } } _rankDic = dic; return(MessageCode.Success); }