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); } }
/// <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); } } }
/// <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); }
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); } }
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); }
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); }
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); }
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 { } }
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); } } }
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); } } }
/// <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); }
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) { } }
/// <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); }
/// <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); }
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); } }