public RankData GetRankData(RankDataKey key, List <int> minGateValueList, int maxPaiHang) { DBManager dbMgr = DBManager.getInstance(); RankData result; if (null == dbMgr) { result = null; } else { double currSecond = Global.GetOffsetSecond(DateTime.Now); RankData tmpRankData = this.GetRankDataFromCache(key); if (null != tmpRankData) { double endTime = Global.GetOffsetSecond(DateTime.Parse(key.EndDate)); if (endTime >= currSecond) { return(tmpRankData); } if (tmpRankData.QueryFromDBTime > endTime) { return(tmpRankData); } } lock (this.RankDataDictLock) { tmpRankData = this.InitRankData(key, minGateValueList, maxPaiHang); this.RankDataDict[key.GetKey()] = tmpRankData; result = tmpRankData; } } return(result); }
public List <InputKingPaiHangData> GetRankDataList(RankData rankData) { List <InputKingPaiHangData> result; lock (this.RankDataDictLock) { byte[] retBytes = DataHelper.ObjectToBytes <List <InputKingPaiHangData> >(rankData.RankDataList); result = DataHelper.BytesToObject <List <InputKingPaiHangData> >(retBytes, 0, retBytes.Length); } return(result); }
public RankData GetUserConsumeRank(DBManager dbMgr, string fromDate, string toDate, List <int> minGateValueList, int maxPaiHang) { double currTime = Global.GetOffsetSecond(DateTime.Now); List <InputKingPaiHangData> listPaiHangReal = DBQuery.GetUserUsedMoneyPaiHang(dbMgr, fromDate, toDate, maxPaiHang); RankData tmpRankData = new RankData(); tmpRankData.QueryFromDBTime = currTime; tmpRankData.MaxRankCount = (double)maxPaiHang; tmpRankData.minGateValueList = minGateValueList; tmpRankData.RankDataList = listPaiHangReal; this.BuildRank(tmpRankData); return(tmpRankData); }
public RankData GetRankDataFromCache(RankDataKey key) { RankData tmpRankData = null; lock (this.RankDataDictLock) { if (this.RankDataDict.ContainsKey(key.GetKey())) { tmpRankData = this.RankDataDict[key.GetKey()]; } } return(tmpRankData); }
private void BuildRank(RankData rankData) { if (null != rankData) { rankData.RankDataList.Sort(delegate(InputKingPaiHangData x, InputKingPaiHangData y) { int result; if (y.PaiHangValue == x.PaiHangValue) { double xTime = Global.GetOffsetSecond(DateTime.Parse(x.PaiHangTime)); double yTime = Global.GetOffsetSecond(DateTime.Parse(y.PaiHangTime)); result = (int)(xTime - yTime); } else { result = y.PaiHangValue - x.PaiHangValue; } return(result); }); List <InputKingPaiHangData> listPaiHang = new List <InputKingPaiHangData>(); if (null != rankData.minGateValueList) { int preUserPaiHang = 0; for (int i = 0; i < rankData.RankDataList.Count; i++) { InputKingPaiHangData phData = rankData.RankDataList[i]; phData.PaiHang = -1; for (int j = preUserPaiHang; j < rankData.minGateValueList.Count; j++) { if (phData.PaiHangValue >= rankData.minGateValueList[j]) { phData.PaiHang = j + 1; listPaiHang.Add(phData); preUserPaiHang = phData.PaiHang; break; } } if (phData.PaiHang < 0 || phData.PaiHang >= rankData.minGateValueList.Count) { break; } } rankData.RankDataList = listPaiHang; } } }
public RankData InitRankData(RankDataKey key, List <int> minGateValueList, int maxPaiHang) { DBManager dbMgr = DBManager.getInstance(); RankData result; if (null == dbMgr) { result = null; } else { RankData DBRankData = null; if (RankType.Charge == key.rankType) { DBRankData = this.GetUserInputRank(dbMgr, key.StartDate, key.EndDate, minGateValueList, maxPaiHang); } else if (RankType.Consume == key.rankType) { DBRankData = this.GetUserConsumeRank(dbMgr, key.StartDate, key.EndDate, minGateValueList, maxPaiHang); } result = DBRankData; } return(result); }