예제 #1
0
        /// <summary>
        /// 获取我的战绩列表
        /// </summary>
        /// <returns></returns>
        public static List <CombatGainInfoSD> GetCombatGainList(int _userid)
        {
            List <CombatGainInfoSD> _CombatGainList = new List <CombatGainInfoSD>();
            //取指定userid最近一天的一次房间结算OVER的记录
            var          cacheSettable = new ShareCacheStruct <tb_TableMoneyLog>();
            var          cacheRank     = new GameDataCacheSet <tb_Rank>();
            DbDataFilter filter1       = new DbDataFilter();

            cacheRank.TryRecoverFromDb(filter1);
            tb_Rank rank = cacheRank.FindKey(_userid.ToString());

            if (rank == null || !rank.records.Any())
            {
                return(_CombatGainList);
            }
            List <Record> records = rank.records.OrderByDescending(w => w.CreateDate).Take(10).ToList();

            foreach (var record in records)
            {
                CombatGainInfoSD _tempGain = new CombatGainInfoSD();
                _tempGain.tablenum     = record.MatchCode;
                _tempGain._starttime   = record.CreateDate.ToString("yyyy-MM-dd HH:mm:ss");
                _tempGain._tableRecord = new List <CombatTableRecordSD>();
                //找到同桌的人
                var          cacheSettable2 = new ShareCacheStruct <tb_TableMoneyLog>();
                DbDataFilter filter         = new DbDataFilter();
                filter.Condition = "MatchCode=@MatchCode";
                filter.Parameters.Add("MatchCode", record.MatchCode);
                cacheSettable2.TryRecoverFromDb(filter);
                List <tb_TableMoneyLog> tablemoneylog2list = cacheSettable2.FindAll((r) => { return(r.MatchCode == record.MatchCode && r._isover); });

                if (tablemoneylog2list.Any())
                {
                    foreach (var moneylog2 in tablemoneylog2list)
                    {
                        CombatTableRecordSD _combatTable = new CombatTableRecordSD();
                        _combatTable.userid     = moneylog2.UserID;
                        _combatTable._username  = tb_UserEx.GetUserNameByUserID(moneylog2.UserID);
                        _combatTable._winorlost = (int)moneylog2.AddorReduceMoney;
                        _tempGain._tableRecord.Add(_combatTable);
                    }
                }
                _CombatGainList.Add(_tempGain);
                //_lastCount++;
                //if (_lastCount >= 10) break;//暂时只取10条
            }

            return(_CombatGainList);
        }
예제 #2
0
        /// <summary>
        ///    一桌完统计数据
        /// </summary>
        /// <param name="guid">桌号</param>
        /// <param name="gameover">是否结束了</param>
        /// <param name="numpertable">一桌有多少人</param>
        public static void SetRateDataByTableNum(string _guid, bool gameover, int numpertable)
        {
            _pos2Rate1 = new List <CommonPosValSD>();
            _pos2Rate2 = new List <CommonPosValSD>();
            _pos2Rate3 = new List <CommonPosValSD>();
            _pos2Rate4 = new List <CommonPosValSD>();
            if (!gameover)
            {
                return;
            }
            var cacheSet = new ShareCacheStruct <tb_TableMoneyLog>();
            //if (cacheSet.Count == 0)
            //{
            DbDataFilter filter = new DbDataFilter();

            filter.Condition = "_guid = @guid";
            filter.Parameters.Add("guid", _guid);
            cacheSet.TryRecoverFromDb(filter);
            //}
            List <tb_TableMoneyLog> _tmList = cacheSet.FindAll();

            if (_tmList == null || !_tmList.Any())
            {
                return;
            }
            for (int _pos = 1; _pos <= numpertable; _pos++)
            {
                var _moneylist1 = _tmList.FindAll((money) => { return(money._pos == _pos && money._bullrate == 1); });
                if (_moneylist1.Count != 0)
                {
                    _pos2Rate1.Add(new CommonPosValSD()
                    {
                        pos = _pos, val = _moneylist1.Count
                    });
                }

                var _moneylist2 = _tmList.FindAll((money) => { return(money._pos == _pos && money._bullrate == 2); });
                if (_moneylist2.Count != 0)
                {
                    _pos2Rate2.Add(new CommonPosValSD()
                    {
                        pos = _pos, val = _moneylist2.Count
                    });
                }

                var _moneylist3 = _tmList.FindAll((money) => { return(money._pos == _pos && money._bullrate == 3); });
                if (_moneylist3.Count != 0)
                {
                    _pos2Rate3.Add(new CommonPosValSD()
                    {
                        pos = _pos, val = _moneylist3.Count
                    });
                }

                var _moneylist4 = _tmList.FindAll((money) => { return(money._pos == _pos && money._bullrate == 4); });
                if (_moneylist4.Count != 0)
                {
                    _pos2Rate4.Add(new CommonPosValSD()
                    {
                        pos = _pos, val = _moneylist4.Count
                    });
                }
            }

            //写入排行信息
            _tmList = cacheSet.FindAll((t_user) => { return(t_user._guid == _guid && t_user._isover); });
            foreach (tb_TableMoneyLog moneylog in _tmList)
            {
                var          cacheSetRank = new GameDataCacheSet <tb_Rank>();
                DbDataFilter filter1      = new DbDataFilter();
                //filter1.Condition = "UserId=@UserId";
                //filter.Parameters.Add("UserId", moneylog.UserID);

                var userRank = new tb_Rank();
                userRank = cacheSetRank.FindKey(moneylog.UserID.ToString());
                if (userRank == null)
                {
                    cacheSetRank.TryRecoverFromDb(filter1);
                    tb_Rank rank = new tb_Rank()
                    {
                        UserID = moneylog.UserID
                    };
                    if (moneylog._win)
                    {
                        rank.ScoreWin++;
                    }
                    else
                    {
                        rank.ScoreLost++;
                    }
                    rank.records.Add(new Record()
                    {
                        ItemId = cacheSetRank.GetNextNo(), MatchCode = moneylog.MatchCode, Money = moneylog.AddorReduceMoney
                    });
                    cacheSetRank.Add(rank);
                }
                else
                {
                    userRank = cacheSetRank.FindKey(moneylog.UserID.ToString());
                    userRank.ModifyLocked(() => {
                        if (moneylog._win)
                        {
                            userRank.ScoreWin++;
                        }
                        else
                        {
                            userRank.ScoreLost++;
                        }
                        if (userRank.records == null)
                        {
                            userRank.records = new CacheList <Record>();
                        }
                        userRank.records.Add(new Record()
                        {
                            ItemId = cacheSetRank.GetNextNo(), MatchCode = moneylog.MatchCode, Money = moneylog.AddorReduceMoney
                        });
                        cacheSetRank.Update();
                    });
                }
                // if(userRank.)
                //tb_Rank _temprank = cacheSetRank.Find((rank) => { return rank.UserID == moneylog.UserID; });
                //if (_temprank == null)
                //{
                //    _temprank = new tb_Rank();
                //    _temprank.UserID = moneylog.UserID;
                //    _temprank.ScoreLost = 0;
                //    _temprank.ScoreWin = 0;
                //}
                //_temprank.CreateDate = DateTime.Now;
                //if (moneylog._win) _temprank.ScoreWin++;
                //else _temprank.ScoreLost++;
                //cacheSetRank.AddOrUpdate(_temprank);
            }
        }