Пример #1
0
        void RunPair()
        {
            try
            {
                if (CompetitorDic.Count < 2)
                {
                    return;
                }
                _needClearFightDic = false;
                _status            = EnumLadderStatus.Grouping;
                CrosscrowdPairrecordEntity pairRecord = GetCompetitorToMatch();

                var playerNumber = pairRecord.FightList.Count;
                if (playerNumber % 2 != 0)//检查玩家数量是否是2的倍数
                {
                    //将天梯赛服务状态置为结束
                    _status = EnumLadderStatus.End;
                    //将上一轮比赛的经理池清空,暂时没有异常回退方案
                    ManagerFightDic = new Dictionary <Guid, CrowdHeartEntity>();
                    SystemlogMgr.Info("CrowdThread", "The player is " + playerNumber + " not multiple of 2");
                    return;
                }
                //开始分组
                var matchDic = new Dictionary <Guid, CrosscrowdMatchEntity>();

                Grouping(pairRecord, matchDic);
                RunPairAfter();

                _nbThreadPool.Add(() => RunMatch(matchDic, pairRecord));
            }
            catch (Exception ex)
            {
                SystemlogMgr.Error("CrossCrowd-RunPair", ex);
            }
        }
Пример #2
0
        /// <summary>
        /// Runs the arena.
        /// </summary>
        void RunLadder()
        {
            _needClearFightDic = false;
            LadderInfoEntity ladderInfo = LadderCore.Instance.GetCompetitorToMatch();

            //更新最近一次平均等待时间
            var avgWaitTime = CalAvgWaitSecond(ladderInfo.GroupingTime, ladderInfo.FightList);

            LadderCore.Instance.RecentlyAvgWaitSecond = avgWaitTime;

            //开始获取机器人
            BuildBot(ladderInfo);
            var playerNumber = ladderInfo.FightList.Count;

            if (playerNumber % 4 != 0)//检查玩家数量是否是4的倍数
            {
                //将天梯赛服务状态置为结束
                LadderCore.Instance.Status = EnumLadderStatus.End;
                //将上一轮比赛的经理池清空,暂时没有异常回退方案
                LadderCore.Instance.ManagerFightDic = new Dictionary <Guid, Guid>();
                SystemlogMgr.Info("LadderThread", "The player is " + playerNumber.ToString() + " not multiple of 4");
                return;
            }
            //开始分组
            var fightDic = new ConcurrentDictionary <Guid, LadderMatchEntity>();

            Grouping(ladderInfo, fightDic);
            LadderRunEnd();
            //将天梯赛数据扔到Process中
            ladderInfo.CountdownTime = DateTime.Now;
            ladderInfo.PlayerNumber  = playerNumber;
            ladderInfo.AvgWaitTime   = avgWaitTime;

            _nbThreadPool.Add(() => RunMatch(fightDic, ladderInfo));
        }
        public static void SendPrize(CrossladderManagerhistoryEntity manager, EnumCrossLadderPrizeType crossLadderPrizeType, EnumMailType mailType, int seasonStatus)
        {
            if (string.IsNullOrEmpty(manager.PrizeItems))
            {
                manager.PrizeItems = "";
                MailBuilder mail = null;

                int packId = CacheFactory.CrossLadderCache.GetRankPrize(crossLadderPrizeType, manager.Rank,seasonStatus);
                if (packId <= 0)
                {
                    SystemlogMgr.Info("CrossLadderSendPrize", "no packid for rank:" + manager.Rank);
                    return;
                }
                mail = new MailBuilder(mailType, manager.ManagerId,manager.Season,manager.Rank,manager.RecordDate);
                var code = MallCore.Instance.BuildPackMail(packId, ref mail);
                if (code != MessageCode.Success)
                {
                    SystemlogMgr.Info("CrossLadderSendPrize", "build pack fail rank:" + manager.Rank + ",packId:" + packId);
                    return;
                }
                manager.PrizeItems = "pack:" + packId;
                manager.UpdateTime = DateTime.Now;
                try
                {
                    CrossladderManagerhistoryMgr.SavePrize(manager.Idx,manager.PrizeItems);
                    mail.Save(manager.SiteId);
                }
                catch (Exception ex)
                {
                    SystemlogMgr.Error("CrossLadderSendPrize", ex);
                }
            }
        }
Пример #4
0
        /// <summary>
        ///  打印出请求串的内容,当API中的这个函数的注释放开将会被调用。
        /// </summary>
        /// <param name="url">请求串内容</param>
        /// <param name="param">请求串的参数表单</param>
        /// <param name="method">请求的方法 get/post</param>
        private void PrintRequest(string url, Dictionary <string, string> param, string method)
        {
            if (!OpenUalog)
            {
                return;
            }
            if (HttpContext.Current == null)
            {
                return;
            }
            SystemlogMgr.Info("PrintRequest0", url + "?" + SnsNetWork.MakeQueryStringNoEncode(param));
            string query_string = SnsNetWork.MakeQueryString(param);

            if (method.Equals("get", StringComparison.OrdinalIgnoreCase))
            {
                url = url + "?" + query_string;
            }

            string sb = "";

            //sb+="<br><br>============= request info ================<br>";
            sb += "method :" + method + "<br>";
            sb += "url    :" + url + "<br>";
            if (method.Equals("post", StringComparison.OrdinalIgnoreCase))
            {
                sb += "query_string : " + query_string + "<br>";
            }
            sb += "<br>params:<br>";
            foreach (string key in param.Keys)
            {
                sb += key + " = " + param[key] + "<br>";
            }
            sb += "<br><br>";
            SystemlogMgr.Info("PrintRequest", sb);
        }
Пример #5
0
 public void SendPrize(LadderManagerhistoryEntity manager, int seasonStatus, ref List <MailBuilder> mails)
 {
     try
     {
         if (string.IsNullOrEmpty(manager.PrizeItems))
         {
             manager.PrizeItems = "";
             MailBuilder mail = null;
             if (seasonStatus == 1)
             {
                 //var lotterys = CacheFactory.LadderCache.GetRankPrize(manager.Rank);
                 //mail = new MailBuilder(manager, lotterys);
                 //foreach (var entity in lotterys)
                 //{
                 //    manager.PrizeItems += string.Format("{0},{1},{2}|", entity.PrizeItemCode,
                 //        entity.Strength, entity.IsBinding ? 1 : 0);
                 //}
                 int packId = CacheFactory.LadderCache.GetRankPrizeNew(manager.Rank);
                 if (packId <= 0)
                 {
                     SystemlogMgr.Info("LadderSendPrize", "no packid for rank:" + manager.Rank);
                     return;
                 }
                 mail = new MailBuilder(manager);
                 var code = MallCore.Instance.BuildPackMail(packId, ref mail);
                 if (code != MessageCode.Success)
                 {
                     SystemlogMgr.Info("LadderSendPrize", "build pack fail rank:" + manager.Rank + ",packId:" + packId);
                     return;
                 }
                 manager.PrizeItems = "pack:" + packId;
             }
             else
             {
                 int packId = CacheFactory.LadderCache.GetRankPrizeSevenNew(manager.Rank);
                 if (packId <= 0)
                 {
                     SystemlogMgr.Info("LadderSendPrize", "no packid for rank:" + manager.Rank);
                     return;
                 }
                 mail = new MailBuilder(manager);
                 var code = MallCore.Instance.BuildPackMail(packId, ref mail);
                 if (code != MessageCode.Success)
                 {
                     SystemlogMgr.Info("LadderSendPrize", "build pack fail rank:" + manager.Rank + ",packId:" + packId);
                     return;
                 }
                 manager.PrizeItems = "pack:" + packId;
             }
             manager.PrizeItems = manager.PrizeItems.TrimEnd('|');
             manager.UpdateTime = DateTime.Now;
             mails.Add(mail);
         }
     }
     catch (Exception ex)
     {
         SystemlogMgr.Error("LadderSendPrize", ex);
     }
 }
Пример #6
0
 public MessageCode StartJob(DateTime startTime, DateTime endTime)
 {
     foreach (var thread in _crowdThreadDic.Values)
     {
         var code = thread.StartJob(startTime, endTime);
         if (code != MessageCode.Success)
         {
             SystemlogMgr.Info("StartJob", code.ToString());
         }
     }
     return(MessageCode.Success);
 }
Пример #7
0
 public MessageCode ScoreToHonorJob()
 {
     foreach (var thread in _ladderThreadDic.Values)
     {
         var code = thread.ScoreToHonorJob();
         if (code != MessageCode.Success)
         {
             SystemlogMgr.Info("ScoreToHonorJob", code.ToString());
         }
     }
     return(MessageCode.Success);
 }
Пример #8
0
 public MessageCode GetMatchMarqueeJob()
 {
     foreach (var thread in _ladderThreadDic.Values)
     {
         var code = thread.GetMatchMarqueeJob();
         if (code != MessageCode.Success)
         {
             SystemlogMgr.Info("GetMatchMarqueeJob", code.ToString());
         }
     }
     return(MessageCode.Success);
 }
Пример #9
0
 public static void WriteChargeLog(string title, string returnCode)
 {
     try
     {
         SystemlogMgr.Info(title, string.Format("{2} return code:{0},Source:{1}", returnCode,
                                                HttpContext.Current.Request.Url.PathAndQuery, title));
         //LogHelper.Insert(
         //    string.Format("{2} return code:{0},Source:{1}", returnCode,
         //                  HttpContext.Current.Request.Url.PathAndQuery, title), LogType.Info);
     }
     catch
     { }
 }
Пример #10
0
        private void TestLogin()
        {
            string openid       = "h5_qqwbandB04DBBF689C75926C62D687B27C61F98";
            string state        = "state";
            string serverId     = "1003";
            string nowTimestamp = "1467100321175";
            string pf           = "h5_qqwb";
            string sessionId    = "92eec136-f542-48b4-b595409c21fae660";
            string sign         = "7ad41716601ec0f245c68c6e8f300235";
            string jsNeed       = "1";
            string nickName     = "shuffle";
            string qqOpenid     = "B04DBBF689C75926C62D687B27C61F98";
            string qqOpenkey    = "BD558FD86F4CC65FC47DCC3A39AE3FC9";
            string qqPf         = "wanba_ts";
            string platform     = "and";
            string share        = "share";
            string shareType    = "shareType";

            SystemlogMgr.Info("ceshi", "ceshi:" + Request.Url.AbsoluteUri);
            var result = LoginCheck(openid, state, serverId, nowTimestamp, pf, sessionId, sign, jsNeed, nickName);

            if (result != "0")
            {
                LoginResponse(result, pf, false);
            }
            else
            {
                if (serverId == "default")
                {
                    HttpContext.Current.Response.Redirect(
                        string.Format(
                            "Index.aspx?pf={0}&ck=default&openid={1}&state={2}&nowTimestamp={3}&sessionId={4}&sign={5}&jsNeed={6}&nickName={7}&qqopenid={8}&qqopenkey={9}&qqpf={10}&platform={11}&share={12}&shareType={13}",
                            pf, openid, state, nowTimestamp, sessionId, sign, jsNeed, nickName, qqOpenid, qqOpenkey,
                            qqPf, platform, share, shareType));
                    HttpContext.Current.Response.End();
                }
                else
                {
                    //用  |   连接qqOpenid, qqOpenkey, qqPf, platform,nickName5个参数放在公共参数Common里
                    var strCommon = qqOpenid + "|" + qqOpenkey + "|" + qqPf + "|" + platform;
                    var str       = UAErrorCode.ErrTxException;
                    var r         = SetVipInfo(openid, qqOpenid, qqOpenkey, qqPf, platform);
                    if (false)
                    {
                        LoginResponse(str, pf, true);
                    }
                    str = StartGame(openid, state, serverId, nowTimestamp, pf, sessionId, sign, jsNeed, nickName,
                                    strCommon);
                }
            }
        }
Пример #11
0
        public override void doLogin()
        {
            string openid       = GetParam("openid");
            string state        = GetParam("state");
            string serverId     = GetParam("serverId");
            string nowTimestamp = GetParam("nowTimestamp");
            string pf           = GetParam("pf");
            string sessionId    = GetParam("sessionId");
            string sign         = GetParam("sign");
            string jsNeed       = GetParam("jsNeed");
            string nickName     = GetParam("nickName");
            string qqOpenid     = GetParam("qqopenid");
            string qqOpenkey    = GetParam("qqopenkey");
            string qqPf         = GetParam("qqpf");
            string platform     = GetParam("platform");
            string share        = GetParam("share");
            string shareType    = GetParam("shareType");
            var    result       = LoginCheck(openid, state, serverId, nowTimestamp, pf, sessionId, sign, jsNeed, nickName,
                                             qqOpenid, qqOpenkey, qqPf, platform);

            SystemlogMgr.Info("ceshi", "ceshi:" + Request.Url.AbsoluteUri);

            if (result != "0")
            {
                LoginResponse(result, pf, false);
            }
            else
            {
                if (serverId == "default")
                {
                    openid = UAHelper.StrToUtf8(openid);
                    HttpContext.Current.Response.Redirect(
                        string.Format(
                            "Index.aspx?pf={0}&ck=default&openid={1}&state={2}&nowTimestamp={3}&sessionId={4}&sign={5}&jsNeed={6}&nickName={7}&qqopenid={8}&qqopenkey={9}&qqpf={10}&platform={11}&share={12}&shareType={13}",
                            pf, openid, state, nowTimestamp, sessionId, sign, jsNeed, nickName, qqOpenid, qqOpenkey,
                            qqPf, platform, share, shareType));
                    HttpContext.Current.Response.End();
                }
                else
                {
                    //用  |   连接qqOpenid, qqOpenkey, qqPf, platform,nickName5个参数放在公共参数Common里
                    var strCommon = qqOpenid + "|" + qqOpenkey + "|" + qqPf + "|" + platform;
                    var str       = UAErrorCode.ErrTxException;
                    SetVipInfo(openid, qqOpenid, qqOpenkey, qqPf, platform);

                    str = StartGame(openid, state, serverId, nowTimestamp, pf, sessionId, sign, jsNeed, nickName,
                                    strCommon);
                    LoginResponse(str, pf, true);
                }
            }
        }
Пример #12
0
        /// <summary>
        ///  打印出返回结果的内容,当API中的这个函数的注释放开将会被调用。
        /// </summary>
        /// <param name="RstArray">待打印的array</param>
        private void PrintRespond(RstArray result_array, int index)
        {
            if (!OpenUalog)
            {
                return;
            }
            if (HttpContext.Current == null)
            {
                return;
            }

            string sb = index + ",";//"<br>============= respond info ================<br>";

            sb += "ret = " + result_array.Ret + "<br>msg = " + result_array.Msg + "<br>";
            SystemlogMgr.Info("PrintRespond", sb);
        }
Пример #13
0
 public static void WriteLog(string title, string returnCode)
 {
     if (!UAFactory.Instance.OpenUALog)
     {
         return;
     }
     try
     {
         SystemlogMgr.Info(title, string.Format("{2} return code:{0},Source:{1}", returnCode,
                                                HttpContext.Current.Request.Url.PathAndQuery, title));
         //LogHelper.Insert(
         //    string.Format("{2} return code:{0},Source:{1}", returnCode,
         //                  HttpContext.Current.Request.Url.PathAndQuery, title), LogType.Info);
     }
     catch (Exception e)
     { }
 }
Пример #14
0
        /// <summary>
        /// 批量获取玩家信息
        /// </summary>
        /// <param name="data">json</param>
        /// <returns></returns>
        public List <NbManagerEntity> IsRegistByNameList(string data)
        {
            data = "{\"data\":" + data + "}";
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            var listData = new OtherTweJsonEntity();

            try
            {
                listData = serializer.Deserialize <OtherTweJsonEntity>(data);
            }
            catch (Exception e)
            {
                SystemlogMgr.Info("IsRegistByNameList", e.Message + "|json解析错误");
                return(null);
            }
            if (listData == null || listData.Data == null || listData.Data.Count == 0)
            {
                SystemlogMgr.Info("IsRegistByNameList", "参数为空");

                return(null);
            }
            SystemlogMgr.Info("IsRegistByNameList", listData.Data.Count + "|计数");

            var list = new List <NbManagerEntity>();

            foreach (var entity in listData.Data)
            {
                var manager = new NbManagerEntity();
                manager = NbManagerMgr.GetByName(entity.Name);
                if (manager == null || manager.Name != entity.Name)
                {
                    SystemlogMgr.Info("IsRegistByNameList", entity.Name + "不存在" + manager.Name);
                    return(null);
                }
                list.Add(manager);
            }
            return(list);
        }
Пример #15
0
        /// <summary>
        /// 执行一个 HTTP 请求
        /// </summary>
        /// <param name="url">执行请求的URL</param>
        /// <param name="param">表单参数</param>
        /// <param name="cookie">cookie参数 </param>
        /// <param name="method">请求方法 post / get</param>
        ///  <param name="protocol"> http协议类型 http / https</param>
        /// <returns>返回结果数组</returns>
        static public RstArray MakeRequest(string url, Dictionary <string, string> param, Dictionary <string, string> cookie, string method, string protocol)
        {
            string query_string  = MakeQueryString(param);
            string cookie_string = MakeCookieString(cookie);
            //结果
            RstArray result = new RstArray();
            //请求类
            HttpWebRequest request = null;
            //请求响应类
            HttpWebResponse response = null;
            //响应结果读取类
            StreamReader reader = null;

            //http连接数限制默认为2,多线程情况下可以增加该连接数,非多线程情况下可以注释掉此行代码
            ServicePointManager.DefaultConnectionLimit = 500;

            try
            {
                if (method.Equals("get", StringComparison.OrdinalIgnoreCase))
                {
                    if (url.IndexOf("?") > 0)
                    {
                        url = url + "&" + query_string;
                    }
                    else
                    {
                        url = url + "?" + query_string;
                    }
                    //如果是发送HTTPS请求
                    if (protocol.Equals("https", StringComparison.OrdinalIgnoreCase))
                    {
                        ServicePointManager.UseNagleAlgorithm = false;
                        ServicePointManager.CheckCertificateRevocationList      = false;
                        ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                        request = WebRequest.Create(url) as HttpWebRequest;
                        SystemlogMgr.Info("https", "start");
                        //request.ProtocolVersion = HttpVersion.Version10;
                    }
                    else
                    {
                        request = WebRequest.Create(url) as HttpWebRequest;
                    }
                    ServicePointManager.Expect100Continue = false;
                    request.Method  = "GET";
                    request.Timeout = 20000;
                }
                else
                {
                    //如果是发送HTTPS请求
                    if (protocol.Equals("https", StringComparison.OrdinalIgnoreCase))
                    {
                        ServicePointManager.UseNagleAlgorithm = false;
                        ServicePointManager.CheckCertificateRevocationList      = false;
                        ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                        request = WebRequest.Create(url) as HttpWebRequest;
                        //request.ProtocolVersion = HttpVersion.Version10;
                    }
                    else
                    {
                        request = WebRequest.Create(url) as HttpWebRequest;
                    }
                    //去掉“Expect: 100-Continue”请求头,不然会引起post(417) expectation failed
                    ServicePointManager.Expect100Continue = false;

                    request.Method      = "POST";
                    request.ContentType = "application/x-www-form-urlencoded";
                    request.Timeout     = 20000;
                    //POST数据
                    byte[] data = Encoding.UTF8.GetBytes(query_string);
                    using (Stream stream = request.GetRequestStream())
                    {
                        stream.Write(data, 0, data.Length);
                    }
                }

                //cookie
                if (cookie_string != null)
                {
                    request.Headers.Add("Cookie", cookie_string);
                }

                //response
                response = (HttpWebResponse)request.GetResponse();
                reader   = new StreamReader(response.GetResponseStream(), Encoding.UTF8);

                //return
                result.Msg = reader.ReadToEnd();
                result.Ret = 0;
            }
            catch (Exception e)
            {
                result.Msg = e.Message;
                result.Ret = ERROR_SNSNETWORK_HTTP;
            }
            finally
            {
                if (request != null)
                {
                    request.Abort();
                }
                if (reader != null)
                {
                    reader.Close();
                    reader.Dispose();
                }
                if (response != null)
                {
                    response.Close();
                }
            }
            return(result);
        }
Пример #16
0
        private List <DicItemEntity> SetArenaBagConfig(DicArenabagconfigEntity bagConfig, List <DicItemEntity> itemList)
        {
            List <DicItemEntity>   items   = new List <DicItemEntity>();
            List <DicPlayerEntity> bagList = DicPlayerMgr.GetAllForCache();

            try
            {
                #region 判断每个属性是否符合竞技场卡包配置,现在只能配置(所属赛区,球员位置,卡牌颜色等级,kpi等级,能力值,身高,体重,生日)

                if (!string.IsNullOrEmpty(bagConfig.Area))
                {
                    var      str  = bagConfig.Area;
                    string[] strs = str.Split('|');
                    if (strs.Length > 1)
                    {
                        List <int> dicS = new List <int>();
                        for (int i = 0; i < strs.Length; i++)
                        {
                            int s = ConvertHelper.ConvertToInt(strs[i]);
                            if (!dicS.Contains(s))
                            {
                                dicS.Add(s);
                            }
                        }
                        bagList.RemoveAll(b => (!dicS.Contains(b.Area)));
                    }
                }
                if (!string.IsNullOrEmpty(bagConfig.PositionDesc))
                {
                    var      str  = bagConfig.PositionDesc;
                    string[] strs = str.Split('|');
                    if (strs.Length > 1)
                    {
                        List <string> dicS = new List <string>();
                        for (int i = 0; i < strs.Length; i++)
                        {
                            if (!dicS.Contains(strs[i]))
                            {
                                dicS.Add(strs[i]);
                            }
                        }
                        bagList.RemoveAll(b => (!dicS.Contains(b.PositionDesc)));
                    }
                }

                if (!string.IsNullOrEmpty(bagConfig.CardLevel))
                {
                    var      str  = bagConfig.CardLevel;
                    string[] strs = str.Split('|');
                    if (strs.Length > 1)
                    {
                        List <int> dicS = new List <int>();
                        for (int i = 0; i < strs.Length; i++)
                        {
                            int s = ConvertHelper.ConvertToInt(strs[i]);
                            if (!dicS.Contains(s))
                            {
                                dicS.Add(s);
                            }
                        }
                        bagList.RemoveAll(b => (!dicS.Contains(b.CardLevel)));
                    }
                }
                if (!string.IsNullOrEmpty(bagConfig.KpiLevel))
                {
                    var      str  = bagConfig.KpiLevel;
                    string[] strs = str.Split('|');
                    if (strs.Length > 1)
                    {
                        List <string> dicS = new List <string>();
                        for (int i = 0; i < strs.Length; i++)
                        {
                            if (!dicS.Contains(strs[i]))
                            {
                                dicS.Add(strs[i]);
                            }
                        }
                        bagList.RemoveAll(b => (!dicS.Contains(b.KpiLevel)));
                    }
                }
                if (!string.IsNullOrEmpty(bagConfig.Capacity))
                {
                    var      str  = bagConfig.Capacity;
                    string[] strs = str.Split('|');
                    if (strs.Length == 2)
                    {
                        var min = ConvertHelper.ConvertToInt(strs[0]);
                        var max = ConvertHelper.ConvertToInt(strs[1]);
                        if (max == 0)
                        {
                            bagList.RemoveAll(b => (b.Capacity < min));
                        }
                        else
                        {
                            bagList.RemoveAll(b => (b.Capacity <min || b.Capacity> max));
                        }
                    }
                }
                if (!string.IsNullOrEmpty(bagConfig.Stature))
                {
                    var      str  = bagConfig.Stature;
                    string[] strs = str.Split('|');
                    if (strs.Length == 2)
                    {
                        var min = ConvertHelper.ConvertToInt(strs[0]);
                        var max = ConvertHelper.ConvertToInt(strs[1]);
                        if (max == 0)
                        {
                            bagList.RemoveAll(b => (b.Stature < min));
                        }
                        else
                        {
                            bagList.RemoveAll(b => (b.Stature <min || b.Stature> max));
                        }
                    }
                }
                if (!string.IsNullOrEmpty(bagConfig.Weight))
                {
                    var      str  = bagConfig.Weight;
                    string[] strs = str.Split('|');
                    if (strs.Length == 2)
                    {
                        var min = ConvertHelper.ConvertToInt(strs[0]);
                        var max = ConvertHelper.ConvertToInt(strs[1]);
                        if (max == 0)
                        {
                            bagList.RemoveAll(b => (b.Weight < min));
                        }
                        else
                        {
                            bagList.RemoveAll(b => (b.Weight <min || b.Weight> max));
                        }
                    }
                }
                // 限制生日
                if (!string.IsNullOrEmpty(bagConfig.Birthday))
                {
                    var i = 0;

                    try
                    {
                        var str = bagConfig.Birthday;

                        string[] strs = str.Split('|');

                        if (strs.Length == 2)
                        {
                            if (strs[1] == "0")
                            {
                                i = 1;
                                var min = ConvertHelper.StringToDateTime(strs[0]);
                                i = 2;
                                bagList.RemoveAll(b => (ConvertHelper.StringToDateTime(b.Birthday) < min));
                                i = 3;
                            }
                            else if (strs[0] == "0")
                            {
                                i = 4;
                                var max = ConvertHelper.StringToDateTime(strs[1]);
                                i = 5;
                                bagList.RemoveAll(b => (ConvertHelper.StringToDateTime(b.Birthday) > max));
                                i = 6;
                            }
                            else
                            {
                                var min = ConvertHelper.StringToDateTime(strs[0]);
                                var max = ConvertHelper.StringToDateTime(strs[1]);
                                bagList.RemoveAll(
                                    b => (ConvertHelper.StringToDateTime(b.Birthday) < min || ConvertHelper.StringToDateTime(b.Birthday) > max));
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        SystemlogMgr.Info("bagConfigBirthday", "*" + e.Message + "*竞技场礼包*");
                    }
                }


                #endregion


                foreach (var entity in bagList)
                {
                    items.Add(itemList.Find(d => (d.LinkId == entity.Idx && d.ItemType == 1)));
                }

                return(items);
            }
            catch (Exception)
            {
                return(items);
            }
        }