示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        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);
        }
示例#4
0
        public RankData GetRankDataFromCache(RankDataKey key)
        {
            RankData tmpRankData = null;

            lock (this.RankDataDictLock)
            {
                if (this.RankDataDict.ContainsKey(key.GetKey()))
                {
                    tmpRankData = this.RankDataDict[key.GetKey()];
                }
            }
            return(tmpRankData);
        }
示例#5
0
 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;
         }
     }
 }
示例#6
0
        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);
        }