Example #1
0
        public UserRankValue InitRankValue(RankDataKey key)
        {
            DBManager     dbMgr = DBManager.getInstance();
            UserRankValue result;

            if (null == dbMgr)
            {
                result = null;
            }
            else
            {
                UserRankValue DBRankValue = null;
                if (RankType.Charge == key.rankType)
                {
                    DBRoleInfo roleInfo = dbMgr.GetDBRoleInfo(ref this.roleID);
                    if (null != roleInfo)
                    {
                        DBRankValue = this.GetUserInputRankVaule(dbMgr, roleInfo.UserID, roleInfo.ZoneID, key.StartDate, key.EndDate);
                    }
                }
                else if (RankType.Consume == key.rankType)
                {
                    DBRankValue = this.GetUserConsumeRankValue(dbMgr, key.StartDate, key.EndDate);
                }
                result = DBRankValue;
            }
            return(result);
        }
Example #2
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);
        }
Example #3
0
        private UserRankValue GetRankValueStruct(RankDataKey key)
        {
            double        currSecond  = Global.GetOffsetSecond(DateTime.Now);
            UserRankValue tmpRankData = this.GetRankValueFromCache(key);

            if (null != tmpRankData)
            {
                if (tmpRankData.EndTime >= currSecond)
                {
                    return(tmpRankData);
                }
                if (tmpRankData.QueryFromDBTime > tmpRankData.EndTime)
                {
                    return(tmpRankData);
                }
            }
            UserRankValue result;

            lock (UserRankValueCache.UserRankValueDictLock)
            {
                tmpRankData = this.InitRankValue(key);
                this.DictUserRankValue[key.GetKey()] = tmpRankData;
                result = tmpRankData;
            }
            return(result);
        }
Example #4
0
        public static RankDataKey GetKeyFromStr(string key)
        {
            string[] fields = key.Split(new char[]
            {
                RankDataKey.SplitChar
            });
            RankDataKey result;

            if (fields == null || fields.Length < 3)
            {
                result = null;
            }
            else
            {
                RankDataKey rankDataKey = new RankDataKey();
                rankDataKey.rankType  = (RankType)Global.SafeConvertToInt32(fields[0], 10);
                rankDataKey.StartDate = fields[1];
                rankDataKey.EndDate   = fields[2];
                for (int i = 3; i < fields.Length; i++)
                {
                    if (null == rankDataKey.minGateValueList)
                    {
                        rankDataKey.minGateValueList = new List <int>();
                    }
                    rankDataKey.minGateValueList.Add(int.Parse(fields[i]));
                }
                result = rankDataKey;
            }
            return(result);
        }
Example #5
0
        public void OnUserDoSomething(int roleID, RankType rankType, int value)
        {
            DBManager dbMgr = DBManager.getInstance();

            if (null != dbMgr)
            {
                DBRoleInfo roleInfo = dbMgr.GetDBRoleInfo(ref roleID);
                if (null != roleInfo)
                {
                    double currSecond = Global.GetOffsetSecond(DateTime.Now);
                    roleInfo.RankValue.AddUserRankValue(rankType, value);
                    lock (this.RankDataDictLock)
                    {
                        foreach (KeyValuePair <string, RankData> item in this.RankDataDict)
                        {
                            RankDataKey rankDataKey = RankDataKey.GetKeyFromStr(item.Key);
                            if (null != rankDataKey)
                            {
                                if (rankType == rankDataKey.rankType)
                                {
                                    double startTime = Global.GetOffsetSecond(DateTime.Parse(rankDataKey.StartDate));
                                    double endTime   = Global.GetOffsetSecond(DateTime.Parse(rankDataKey.EndDate));
                                    if (currSecond >= startTime && currSecond <= endTime)
                                    {
                                        bool bExist = false;
                                        foreach (InputKingPaiHangData rankData in item.Value.RankDataList)
                                        {
                                            if ((RankType.Charge == rankType && rankData.UserID == roleInfo.UserID) || (RankType.Consume == rankType && rankData.UserID == roleInfo.RoleID.ToString()))
                                            {
                                                rankData.PaiHangTime   = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                                                rankData.PaiHangValue += value;
                                                bExist = true;
                                                break;
                                            }
                                        }
                                        if (!bExist)
                                        {
                                            int userRankValue           = roleInfo.RankValue.GetRankValue(rankDataKey);
                                            InputKingPaiHangData phData = new InputKingPaiHangData
                                            {
                                                UserID       = ((RankType.Charge == rankType) ? roleInfo.UserID : roleInfo.RoleID.ToString()),
                                                PaiHang      = 0,
                                                PaiHangTime  = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                                                PaiHangValue = userRankValue
                                            };
                                            item.Value.RankDataList.Add(phData);
                                        }
                                        this.BuildRank(item.Value);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Example #6
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);
        }
Example #7
0
        public UserRankValue GetRankValueFromCache(RankDataKey key)
        {
            UserRankValue tmpRankData = null;

            lock (UserRankValueCache.UserRankValueDictLock)
            {
                if (this.DictUserRankValue.ContainsKey(key.GetKey()))
                {
                    tmpRankData = this.DictUserRankValue[key.GetKey()];
                }
            }
            return(tmpRankData);
        }
Example #8
0
        public int AddUserRankValue(RankType ActType, int addValue)
        {
            double currSecond = Global.GetOffsetSecond(DateTime.Now);

            lock (UserRankValueCache.UserRankValueDictLock)
            {
                foreach (KeyValuePair <string, UserRankValue> item in this.DictUserRankValue)
                {
                    RankDataKey key = RankDataKey.GetKeyFromStr(item.Key.ToString());
                    if (null != key)
                    {
                        double startTime = Global.GetOffsetSecond(DateTime.Parse(key.StartDate));
                        double endTime   = Global.GetOffsetSecond(DateTime.Parse(key.EndDate));
                        if (ActType == key.rankType && currSecond >= startTime && currSecond <= endTime)
                        {
                            item.Value.RankValue += addValue;
                        }
                    }
                }
            }
            lock (this.UserChargeMoneyCountDicLock)
            {
                foreach (KeyValuePair <string, Dictionary <int, int> > item2 in this.ChargeMoneyCountDic)
                {
                    RankDataKey key = RankDataKey.GetKeyFromStr(item2.Key.ToString());
                    if (null != key)
                    {
                        double startTime = Global.GetOffsetSecond(DateTime.Parse(key.StartDate));
                        double endTime   = Global.GetOffsetSecond(DateTime.Parse(key.EndDate));
                        if (ActType == key.rankType && currSecond >= startTime && currSecond <= endTime)
                        {
                            if (item2.Value.ContainsKey(addValue))
                            {
                                Dictionary <int, int> value;
                                (value = item2.Value)[addValue] = value[addValue] + 1;
                            }
                            else
                            {
                                item2.Value[addValue] = 1;
                            }
                        }
                    }
                }
            }
            return(0);
        }
Example #9
0
        public Dictionary <int, int> GetUserInputMoneyCount(DBManager dbMgr, string userid, int zoneid, string fromDate, string toDate)
        {
            RankDataKey rankDataKey = new RankDataKey
            {
                rankType  = RankType.Charge,
                StartDate = fromDate,
                EndDate   = toDate
            };
            Dictionary <int, int> retDic = null;

            lock (this.UserChargeMoneyCountDicLock)
            {
                if (this.ChargeMoneyCountDic.TryGetValue(rankDataKey.GetKey(), out retDic))
                {
                    return(new Dictionary <int, int>(retDic));
                }
                retDic = DBQuery.GetUserDanBiInputMoneyCount(dbMgr, userid, zoneid, fromDate, toDate);
                this.ChargeMoneyCountDic[rankDataKey.GetKey()] = retDic;
            }
            return(new Dictionary <int, int>(retDic));
        }
Example #10
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);
        }
Example #11
0
        public int GetRankValue(RankDataKey key)
        {
            UserRankValue tmpRankData = this.GetRankValueStruct(key);

            return((tmpRankData == null) ? 0 : tmpRankData.RankValue);
        }