public OperResultObject DeleteBuyUnit(StackTradeUnit buyUnit) { OperResultObject result = new OperResultObject(); lock (_lock) { for (int i = 0; i < this.BuyOrderPriceCountList.Count; i++) { var priceUnit = this.BuyOrderPriceCountList[i]; if (priceUnit != null) { if (priceUnit.Price == buyUnit.Price) { if (priceUnit.TradeStoneHandCount < buyUnit.TradeStoneHandCount) { result.OperResultCode = OperResult.RESULTCODE_STACK_CANCELORDER_FAILED_TOTALHANDCOUNTERROR; } else { priceUnit.TradeStoneHandCount -= buyUnit.TradeStoneHandCount; result.OperResultCode = OperResult.RESULTCODE_TRUE; } if (priceUnit.TradeStoneHandCount == 0) { this.BuyOrderPriceCountList.RemoveAt(i); } break; } } } } return(result); }
public OperResultObject WeiXinLogin(string wxUserOpenID, string wxUserName, string ip) { OperResultObject resultObj = new OperResultObject(); string mac = "weixin"; try { PlayerInfo player = DBProvider.UserDBProvider.GetPlayerByWeiXinOpenID(wxUserOpenID); if (player == null) { resultObj.OperResultCode = OperResult.RESULTCODE_USER_NOT_EXIST; return(resultObj); } resultObj = PlayerController.Instance.CheckPlayerIsLocked(player.SimpleInfo.UserID, player.SimpleInfo.UserName); if (resultObj.OperResultCode != OperResult.RESULTCODE_TRUE) { return(resultObj); } player.SimpleInfo.LastLoginIP = ip; player.SimpleInfo.LastLoginMac = mac; PlayerController.Instance.WeiXinLoginPlayer(wxUserOpenID, player); LogHelper.Instance.AddInfoLog("微信玩家 [" + wxUserName + "] 登录用户[" + player.SimpleInfo.UserName + "]成功, IP=" + ip + ", Mac=" + mac); resultObj.OperResultCode = OperResult.RESULTCODE_TRUE; return(resultObj); } catch (Exception ex) { LogHelper.Instance.AddErrorLog("微信玩家 [" + wxUserName + "] 登录失败, IP=" + ip + ", Mac=" + mac, ex); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; return(resultObj); } }
public OperResultObject DecreaseBuyUnit(decimal price, int finishedStoneHandCount) { OperResultObject result = new OperResultObject(); lock (_lock) { for (int i = 0; i < BuyOrderPriceCountList.Count; i++) { var unit = BuyOrderPriceCountList[i]; if (unit.Price == price) { result.OperResultCode = OperResult.RESULTCODE_TRUE; unit.TradeStoneHandCount -= finishedStoneHandCount; if (unit.TradeStoneHandCount < 0) { result.OperResultCode = OperResult.RESULTCODE_FALSE; result.Message = "DecreasetBuyUnit unit.TradeStoneHandCount < 0. Price: " + price + ", unit.TradeStoneHandCount: " + unit.TradeStoneHandCount; unit.TradeStoneHandCount = 0; } if (unit.TradeStoneHandCount == 0) { BuyOrderPriceCountList.RemoveAt(i); } break; } } } return(result); }
/// <summary> /// 付款方式为支付宝的订单,添加到临时集合中 /// </summary> /// <param name="buyOrder"></param> /// <returns></returns> public OperResultObject PlayerDelegateBuyStone(StoneDelegateBuyOrderInfo buyOrder, CustomerMySqlTransaction myTrans) { OperResultObject result = new OperResultObject(); //只有开市期间才可挂单,间休期间暂时也不可挂单 if (this._todayTradeInfo.MarketState != StackMarketState.Opening) { result.OperResultCode = OperResult.RESULTCODE_STACK_DELEGATEORDER_FAILED_MARKETISCLOSED; return(result); } if (buyOrder.PayType == PayType.Alipay) { //也要保存到数据库里 buyOrder.BuyState = StoneDelegateBuyState.NotPayed; DBProvider.StoneStackDBProvider.SaveWaitingStoneDelegateBuyOrderInfo(buyOrder, myTrans); lock (_lockTempAlipayList) { this._listTempAlipayBuyOrders.Add(buyOrder); } } else { InsertToBuyQueue(buyOrder, myTrans); } result.OperResultCode = OperResult.RESULTCODE_TRUE; return(result); }
public OperResultObject PlayerCancelSellStone(string orderNumber, decimal sellPrice, CustomerMySqlTransaction myTrans, out StoneDelegateSellOrderInfo canceledSellOrder) { canceledSellOrder = null; OperResultObject result = new OperResultObject(); ////开市期间不可撤单 //if (this._todayTradeInfo.MarketState == StackMarketState.Opening) //{ // result.OperResultCode = OperResult.RESULTCODE_STACK_CANCELORDER_FAILED_MARKETISOPENING; // return result; //} canceledSellOrder = this._dicWaitingSellInfos[sellPrice].DeleteOrder(orderNumber); if (canceledSellOrder != null) { result = this._todayTradeInfo.DeleteSellUnit(canceledSellOrder.SellUnit); if (result.OperResultCode != OperResult.RESULTCODE_TRUE) { return(result); } canceledSellOrder.SellState = StoneDelegateSellState.Cancel; canceledSellOrder.FinishedTime = new MyDateTime(DateTime.Now); DBProvider.StoneStackDBProvider.CancelSellStoneOrder(canceledSellOrder, myTrans); result.OperResultCode = OperResult.RESULTCODE_TRUE; } else { result.OperResultCode = OperResult.RESULTCODE_FALSE; } return(result); }
public OperResultObject BindWeiXinUser(string wxUserOpenID, string wxUserName, string xlUserName, string xlUserPassword, string ip) { try { return(base.Channel.BindWeiXinUser(wxUserOpenID, wxUserName, xlUserName, xlUserPassword, ip)); } catch (Exception) { OperResultObject resultObj = new OperResultObject(); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; return(resultObj); } }
public OperResultObject Login(string clientIP, string userLoginName, string password) { OperResultObject resultObj = new OperResultObject(); string token = ""; PlayerInfo player = null; try { player = PlayerController.Instance.GetPlayerInfoByUserLoginName(userLoginName); if (player == null) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } token = WebClientManager.GetToken(player.SimpleInfo.UserName); if (!string.IsNullOrEmpty(token)) { WebClientManager.RemoveClient(token); } if (password != player.SimpleInfo.Password) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } resultObj = PlayerController.Instance.CheckPlayerIsLocked(player.SimpleInfo.UserID, player.SimpleInfo.UserName); if (resultObj.OperResultCode != OperResult.RESULTCODE_TRUE) { return(resultObj); } token = Guid.NewGuid().ToString(); WebClientManager.AddClient(player.SimpleInfo.UserName, token, clientIP); LogHelper.Instance.AddInfoLog("WEB 玩家登录名 [" + userLoginName + "] 登录矿场, IP=" + clientIP); resultObj.OperResultCode = OperResult.RESULTCODE_TRUE; resultObj.Message = token; return(resultObj); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("WEB 玩家登录名 [" + userLoginName + "] 登录矿场失败, IP=" + clientIP, exc); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; return(resultObj); } }
public OperResultObject PlayerCancelBuyStone(string orderNumber, decimal buyPrice, CustomerMySqlTransaction myTrans, out StoneDelegateBuyOrderInfo canceledBuyOrder) { canceledBuyOrder = null; OperResultObject result = new OperResultObject(); ////开市期间不可撤单 //if (this._todayTradeInfo.MarketState == StackMarketState.Opening) //{ // result.OperResultCode = OperResult.RESULTCODE_STACK_CANCELORDER_FAILED_MARKETISOPENING; // return result; //} if (this._dicWaitingBuyInfos.ContainsKey(buyPrice)) { canceledBuyOrder = this._dicWaitingBuyInfos[buyPrice].DeleteOrder(orderNumber); } if (canceledBuyOrder != null) { result = this._todayTradeInfo.DeleteBuyUnit(canceledBuyOrder.BuyUnit); if (result.OperResultCode != OperResult.RESULTCODE_TRUE) { return(result); } canceledBuyOrder.BuyState = StoneDelegateBuyState.Cancel; canceledBuyOrder.FinishedTime = new MyDateTime(DateTime.Now); DBProvider.StoneStackDBProvider.CancelBuyStoneOrder(canceledBuyOrder, myTrans); result.OperResultCode = OperResult.RESULTCODE_TRUE; } else { canceledBuyOrder = this._listTempAlipayBuyOrders.FirstOrDefault(s => s.OrderNumber == orderNumber); if (canceledBuyOrder != null) { canceledBuyOrder.BuyState = StoneDelegateBuyState.Cancel; canceledBuyOrder.FinishedTime = new MyDateTime(DateTime.Now); DBProvider.StoneStackDBProvider.CancelBuyStoneOrder(canceledBuyOrder, myTrans); this._listTempAlipayBuyOrders.Remove(canceledBuyOrder); result.OperResultCode = OperResult.RESULTCODE_TRUE; } else { result.OperResultCode = OperResult.RESULTCODE_FALSE; } } return(result); }
public OperResultObject WithdrawRMB(string userName, int getRMBCount) { OperResultObject resultObj = new OperResultObject(); try { if (getRMBCount <= 0) { resultObj.OperResultCode = OperResult.RESULTCODE_FALSE; } resultObj = PlayerController.Instance.CreateWithdrawRMB(userName, getRMBCount); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("微信端。玩家[" + userName + "] 灵币提现异常,提现灵币为:" + getRMBCount, exc); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; } return(resultObj); }
public OperResultObject PlayerDelegateSellStone(StoneDelegateSellOrderInfo sellOrder, CustomerMySqlTransaction myTrans) { OperResultObject result = new OperResultObject(); //只有开市期间才可挂单,间休期间暂时也不可挂单 if (this._todayTradeInfo.MarketState != StackMarketState.Opening) { result.OperResultCode = OperResult.RESULTCODE_STACK_DELEGATEORDER_FAILED_MARKETISCLOSED; return(result); } if (sellOrder.SellUnit.Price < this._todayTradeInfo.DailyInfo.LimitDownPrice || sellOrder.SellUnit.Price > this._todayTradeInfo.DailyInfo.LimitUpPrice) { result.OperResultCode = OperResult.RESULTCODE_STACK_PRICE_OUTOFRANGE; return(result); } InsertToSellQueue(sellOrder, myTrans); result.OperResultCode = OperResult.RESULTCODE_TRUE; return(result); }
private OperResultObject InnerBindWeixinUser(string wxUserOpenID, string wxUserName, string xlUserLoginName, string xlUserPassword, string ip) { OperResultObject resultObj = new OperResultObject(); PlayerInfo player = PlayerController.Instance.GetPlayerInfoByUserLoginName(xlUserLoginName); if (player == null) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } if (xlUserPassword != player.SimpleInfo.Password) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } int result = PlayerController.Instance.BindWeiXinUser(wxUserOpenID, player); if (result == OperResult.RESULTCODE_TRUE) { LogHelper.Instance.AddInfoLog("wxUserOpenID: " + wxUserOpenID + ",成功绑定用户:" + player.SimpleInfo.UserName); resultObj = PlayerController.Instance.CheckPlayerIsLocked(player.SimpleInfo.UserID, player.SimpleInfo.UserName); if (resultObj.OperResultCode != OperResult.RESULTCODE_TRUE) { return(resultObj); } string mac = "weixin"; player.SimpleInfo.LastLoginIP = ip; player.SimpleInfo.LastLoginMac = mac; PlayerController.Instance.WeiXinLoginPlayer(wxUserOpenID, player); LogHelper.Instance.AddInfoLog("微信玩家 [" + wxUserName + "] 登录用户[" + player.SimpleInfo.UserName + "]成功, IP=" + ip + ", Mac=" + mac); result = OperResult.RESULTCODE_TRUE; } resultObj.OperResultCode = result; return(resultObj); }
/// <summary> /// 绑定加登录 /// </summary> /// <param name="wxUserOpenID"></param> /// <param name="wxUserName"></param> /// <param name="xlUserLoginName"></param> /// <param name="xlUserPassword"></param> /// <param name="ip"></param> /// <returns></returns> public OperResultObject BindWeiXinUser(string wxUserOpenID, string wxUserName, string xlUserLoginName, string xlUserPassword, string ip) { OperResultObject resultObj = new OperResultObject(); try { int userID = DBProvider.UserDBProvider.JudgeWeiXinOpenIDorXLUserName_Binded(wxUserOpenID, xlUserLoginName); if (userID > 0) { resultObj.OperResultCode = OperResult.RESULTCODE_WEIXIN_USERBINDEDBYOTHER; return(resultObj); } return(InnerBindWeixinUser(wxUserOpenID, wxUserName, xlUserLoginName, xlUserPassword, ip)); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("微信端。绑定玩家信息异常。 wxUserOpenID: " + wxUserOpenID + ",绑定用户:[" + xlUserLoginName + "]失败.", exc); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; return(resultObj); } }
public OperResultObject WithdrawRMB(string token, string userName, int getRMBCount) { #if Delay Thread.Sleep(5000); #endif if (RSAProvider.LoadRSA(token)) { OperResultObject resultObj = new OperResultObject(); try { if (getRMBCount <= 0) { resultObj.OperResultCode = OperResult.RESULTCODE_FALSE; } if (ClientManager.GetClientUserName(token) != userName) { resultObj.OperResultCode = OperResult.RESULTCODE_USER_NOT_EXIST; } resultObj = PlayerController.Instance.CreateWithdrawRMB(userName, getRMBCount); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("玩家[" + userName + "] 灵币提现异常,提现灵币为:" + getRMBCount, exc); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; } return(resultObj); } else { throw new Exception(); } }
/// <summary> /// /// </summary> /// <param name="token"></param> /// <param name="buyStoneHandsCount"></param> /// <param name="price"></param> /// <param name="paytype"></param> /// <returns></returns> public OperResultObject DelegateBuyStone(string token, int buyStoneHandsCount, decimal price, MetaData.Trade.PayType paytype) { if (RSAProvider.LoadRSA(token)) { OperResultObject resultObj = new OperResultObject(); string userName = ""; try { if (buyStoneHandsCount <= 0) { resultObj.OperResultCode = OperResult.RESULTCODE_PARAM_INVALID; return(resultObj); } userName = ClientManager.GetClientUserName(token); var playerRunner = PlayerController.Instance.GetRunnable(userName); if (playerRunner == null) { resultObj.OperResultCode = OperResult.RESULTCODE_USER_NOT_EXIST; return(resultObj); } decimal allNeedRMB = buyStoneHandsCount * price; if (paytype == MetaData.Trade.PayType.RMB) { if (playerRunner.BasePlayer.FortuneInfo.RMB < allNeedRMB) { resultObj.OperResultCode = OperResult.RESULTCODE_LACK_OF_BALANCE; return(resultObj); } } else if (paytype == MetaData.Trade.PayType.Diamand) { if (playerRunner.BasePlayer.FortuneInfo.StockOfDiamonds < allNeedRMB * GlobalConfig.GameConfig.Diamonds_RMB) { resultObj.OperResultCode = OperResult.RESULTCODE_LACK_OF_BALANCE; return(resultObj); } } DateTime timenow = DateTime.Now; StoneDelegateBuyOrderInfo buyOrder = new StoneDelegateBuyOrderInfo() { UserID = playerRunner.BasePlayer.SimpleInfo.UserID, UserName = playerRunner.BasePlayer.SimpleInfo.UserName, DelegateTime = new MyDateTime(timenow), OrderNumber = OrderController.Instance.CreateOrderNumber(userName, timenow, MetaData.Trade.AlipayTradeInType.StackStoneBuy), BuyState = StoneDelegateBuyState.Waiting, IsSubOrder = false, PayType = paytype, BuyUnit = new StackTradeUnit() { Price = price, TradeStoneHandCount = buyStoneHandsCount } }; if (paytype == MetaData.Trade.PayType.Alipay) { string payLink = OrderController.Instance.CreateAlipayLink(userName, buyOrder.OrderNumber, "矿石", allNeedRMB, "迅灵矿石"); buyOrder.AlipayLink = payLink; } CustomerMySqlTransaction myTrans = MyDBHelper.Instance.CreateTrans(); try { resultObj = OrderController.Instance.StoneStackController.PlayerDelegateBuyStone(buyOrder, myTrans); if (resultObj.OperResultCode != OperResult.RESULTCODE_TRUE) { //卖单提交失败,不再进行数据库操作 return(resultObj); } playerRunner.AddNewBuyStonesByDelegate(buyOrder, myTrans); myTrans.Commit(); if (paytype != MetaData.Trade.PayType.Alipay) { //PlayerActionController.Instance.AddLog(userName, MetaData.ActionLog.ActionType.DelegateBuyStone, buyStoneHandsCount, ""); } LogHelper.Instance.AddInfoLog("玩家[" + userName + "] 挂单委托买入 " + buyStoneHandsCount + " 手矿石:" + buyOrder.ToString()); resultObj.OperResultCode = OperResult.RESULTCODE_TRUE; resultObj.Message = buyOrder.AlipayLink; return(resultObj); } catch (Exception exc) { myTrans.Rollback(); LogHelper.Instance.AddErrorLog("ServiceToClient.DelegateBuyStone Exception userName: "******"玩家[" + userName + "] DelegateBuyStone Exception", exc); resultObj.OperResultCode = OperResult.RESULTCODE_EXCEPTION; return(resultObj); } } else { throw new Exception(); } }
protected void Page_Load(object sender, EventArgs e) { try { if (!this.IsPostBack) { //code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。 string code = Request["code"]; string state = Request["state"]; this.lblMsg.Text = "欢迎进入迅灵矿场"; LogHelper.Instance.AddInfoLog("code:" + code + "; state: " + state); if (state == Config.state) { HttpGetReturnModel resultValue = WeiXinHandler.SynGetUserAccessToken(code); if (resultValue.Exception != null) { this.lblMsg.Text = "登录异常,请联系迅灵矿场管理员"; return; } if (resultValue.ResponseError != null) { Session[Config.SESSIONKEY_RESPONSEERROR] = resultValue.ResponseError; Server.Transfer("ErrorPage.aspx"); return; } AuthorizeResponseModel authObj = resultValue.ResponseResult as AuthorizeResponseModel; if (authObj != null) { this.lblMsg.Text = "authObj OK"; Session[Config.SESSIONKEY_AUTHORIZEOBJ] = authObj; resultValue = WeiXinHandler.SyncGetUserInfo(authObj.access_token, authObj.openid); } if (resultValue.Exception != null) { this.lblMsg.Text = "登录异常,请联系迅灵矿场管理员"; return; } if (resultValue.ResponseError != null) { Session[Config.SESSIONKEY_RESPONSEERROR] = resultValue.ResponseError; Server.Transfer("ErrorPage.aspx"); return; } WeiXinUserInfoModel userObj = resultValue.ResponseResult as WeiXinUserInfoModel; Session[Config.SESSIONKEY_WXUSERINFO] = userObj; string ip = System.Web.HttpContext.Current.Request.UserHostAddress; this.lblMsg.Text = "欢迎 " + userObj.nickname + " 进入迅灵矿场"; OperResultObject resultobj = WcfClient.Instance.WeiXinLogin(userObj.openid, userObj.nickname, ip); this.lblMsg.Text = "登录迅灵矿场,结果为:" + OperResult.GetMsg(resultobj.OperResultCode); if (resultobj.OperResultCode == OperResult.RESULTCODE_TRUE) { this.lblMsg.Text = "WeiXinLogin OK"; var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(userObj.openid); this.lblMsg.Text = "player OK"; WebUserInfo userinfo = new WebUserInfo(); userinfo.xlUserID = player.SimpleInfo.UserID; userinfo.xlUserName = player.SimpleInfo.UserName; userinfo.wxOpenID = userObj.openid; // 登录状态100分钟内有效 MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100); //Session[userinfo.xlUserName] = player; Response.Redirect("View/Index.aspx", false); } else if (resultobj.OperResultCode == OperResult.RESULTCODE_USER_NOT_EXIST || resultobj.OperResultCode == OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR) { Response.Redirect("LoginPage.aspx", false); } else { string message = string.IsNullOrEmpty(resultobj.Message) ? OperResult.GetMsg(resultobj.OperResultCode) : resultobj.Message; Response.Write("<script>alert('登录迅灵矿场失败, 原因为:" + message + "')</script>"); } } else { } } } catch (Exception exc) { this.lblMsg.Text = "WeiXinResponse Exception. " + exc.Message; LogHelper.Instance.AddErrorLog("WeiXinResponse Exception", exc); } }
//private System.Timers.Timer _userStateCheck = new System.Timers.Timer(10000); //private void _userStateCheck_Elapsed(object sender, ElapsedEventArgs e) //{ // this._userStateCheck.Stop(); // try // { // string[] tokens = ClientManager.GetInvalidClients(); // if (null != tokens) // { // foreach (var token in tokens) // { // string userName = ClientManager.GetClientUserName(token); // LogHelper.Instance.AddInfoLog("玩家 [" + userName + "] 掉线,退出登录, IP=" + ClientManager.GetClientIP(token)); // PlayerController.Instance.LogoutPlayer(userName); // RSAProvider.RemoveRSA(token); // ClientManager.RemoveClient(token); // lock (this._callbackDicLocker) // { // this._callbackDic.Remove(token); // } // } // } // } // catch // { // } // finally // { // if (App.ServiceToRun.IsStarted) // { // this._userStateCheck.Start(); // } // } //} public OperResultObject Login(string UserLoginName, string password, string key, string mac, string clientVersion) { #if Delay Thread.Sleep(5000); #endif OperResultObject resultObj = new OperResultObject(); #if V1 resultObj.OperResultCode = OperResult.RESULTCODE_FALSE; return(resultObj); #endif if (String.IsNullOrEmpty(UserLoginName) || String.IsNullOrEmpty(password)) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } if (!string.IsNullOrEmpty(GlobalConfig.CurrentClientVersion) && GlobalConfig.CurrentClientVersion != clientVersion) { resultObj.OperResultCode = OperResult.RESULTCODE_CLIENT_VERSION_OLD; //resultObj.Message = "VERSIONERROR"; return(resultObj); } string token = null; string ip = ClientManager.GetCurrentIP(); string userName = ""; PlayerInfo player = null; try { player = PlayerController.Instance.GetPlayerInfoByUserLoginName(UserLoginName); if (player == null) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } userName = player.SimpleInfo.UserName; token = ClientManager.GetToken(player.SimpleInfo.UserName); if (!string.IsNullOrEmpty(token)) { new Thread(new ParameterizedThreadStart(o => { this.KickoutByUser(o.ToString()); })).Start(token); //return "ISLOGGED"; } if (password != player.SimpleInfo.Password) { resultObj.OperResultCode = OperResult.RESULTCODE_USERNAME_PASSWORD_ERROR; return(resultObj); } resultObj = PlayerController.Instance.CheckPlayerIsLocked(player.SimpleInfo.UserID, player.SimpleInfo.UserName); if (resultObj.OperResultCode != OperResult.RESULTCODE_TRUE) { return(resultObj); } if (player.SimpleInfo.InvitationCode == GlobalData.TestInvitationCode) { try { var logState = DBProvider.TestUserLogStateDBProvider.GetTestUserLogStateByMac(mac); if (logState == null) { logState = DBProvider.TestUserLogStateDBProvider.GetTestUserLogStateByUserName(player.SimpleInfo.UserName); if (logState != null) { resultObj.OperResultCode = OperResult.RESULTCODE_USERLOGIN_ISTESTUSER_LOGINLIMIT; return(resultObj); } DBProvider.TestUserLogStateDBProvider.AddTestUserLogState(player.SimpleInfo.UserName, mac, ip); } else { if (logState.UserName != player.SimpleInfo.UserName) { resultObj.OperResultCode = OperResult.RESULTCODE_USERLOGIN_ISTESTUSER_LOGINLIMIT; return(resultObj); } } } catch (Exception exc) { LogHelper.Instance.AddErrorLog("Test User [" + userName + "] Add Exception.", exc); } } player.SimpleInfo.LastLoginIP = ip; player.SimpleInfo.LastLoginMac = mac; PlayerController.Instance.LoginPlayer(player); RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(key); token = Guid.NewGuid().ToString(); RSAProvider.SetRSA(token, rsa); RSAProvider.LoadRSA(token); ClientManager.AddClient(player.SimpleInfo.UserName, token); lock (this._callbackDicLocker) { this._callbackDic[token] = new Queue <CallbackInfo>(); } LogHelper.Instance.AddInfoLog("玩家 [" + userName + "] 登录矿场, IP=" + ip + ", Mac=" + mac); } catch (Exception ex) { LogHelper.Instance.AddErrorLog("玩家 [" + userName + "] 登录矿场失败, IP=" + ip + ", Mac=" + mac, ex); } if (!string.IsNullOrEmpty(token)) { PlayerActionController.Instance.AddLog(userName, MetaData.ActionLog.ActionType.Login, (int)player.FortuneInfo.Exp / 2000); new Thread(new ParameterizedThreadStart(o => { this.LogedIn(o.ToString()); })).Start(token); } resultObj.OperResultCode = OperResult.RESULTCODE_TRUE; resultObj.Message = token; return(resultObj); }
protected void btnBind_Click(object sender, EventArgs e) { try { string userName = this.txtUserName.Text.Trim(); string password = this.txtPassword.Text; if (userName == "") { Response.Write("<script>alert('请输入用户名')</script>"); return; } if (password == "") { Response.Write("<script>alert('请输入密码')</script>"); return; } #if Test WeiXinUserInfoModel userObj = null; if (userName == "小开心") { userObj = new WeiXinUserInfoModel() { openid = Config.TestUserOpenId, nickname = "小查", }; } else if (userName == "nero") { userObj = new WeiXinUserInfoModel() { openid = Config.TestLVSU_UserOpenID, nickname = "wgflicker", }; } Session[Config.SESSIONKEY_WXUSERINFO] = userObj; string ip = System.Web.HttpContext.Current.Request.UserHostAddress; OperResultObject resultObj = WcfClient.Instance.WeiXinLogin(userObj.openid, userObj.nickname, ip); if (resultObj.OperResultCode == OperResult.RESULTCODE_TRUE) { var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(userObj.openid); WebUserInfo userinfo = new WebUserInfo(); userinfo.xlUserID = player.SimpleInfo.UserID; userinfo.xlUserName = player.SimpleInfo.UserName; userinfo.wxOpenID = userObj.openid; // 登录状态100分钟内有效 MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100); Session[userinfo.xlUserName] = player; Response.Redirect("View/Index.aspx", false); //Server.Execute("View/Index.aspx"); } else if (resultObj.OperResultCode == OperResult.RESULTCODE_EXCEPTION) { Response.Write("<script>alert('服务器连接失败,请稍候再试')</script>"); } else { string message = string.IsNullOrEmpty(resultObj.Message) ? OperResult.GetMsg(resultObj.OperResultCode) : resultObj.Message; Response.Write("<script>alert('测试登录失败, 原因为:" + message + "')</script>"); } #else WeiXinUserInfoModel wxuserinfo = Session["wxuserinfo"] as WeiXinUserInfoModel; if (wxuserinfo == null) { Response.Write("<script>alert('只能从微信客户端打开')</script>"); return; } if (string.IsNullOrEmpty(wxuserinfo.openid)) { Response.Write("<script>alert('微信登录失败,无法绑定')</script>"); return; } string ip = System.Web.HttpContext.Current.Request.UserHostAddress; OperResultObject resultObj = WcfClient.Instance.BindWeiXinUser(wxuserinfo.openid, wxuserinfo.nickname, userName, password, ip); if (resultObj.OperResultCode == OperResult.RESULTCODE_TRUE) { var player = WcfClient.Instance.GetPlayerByWeiXinOpenID(wxuserinfo.openid); if (player != null) { WebUserInfo userinfo = new WebUserInfo(); userinfo.xlUserID = player.SimpleInfo.UserID; userinfo.xlUserName = player.SimpleInfo.UserName; userinfo.wxOpenID = wxuserinfo.openid; // 登录状态100分钟内有效 MyFormsPrincipal <WebUserInfo> .SignIn(userinfo.xlUserName, userinfo, 100); Session[userinfo.xlUserName] = player; Response.Redirect("View/Index.aspx", false); } else { Response.Write("<script>alert('绑定失败, 原因为:没有找到迅灵账户')</script>"); } } else { string message = string.IsNullOrEmpty(resultObj.Message) ? OperResult.GetMsg(resultObj.OperResultCode) : resultObj.Message; Response.Write("<script>alert('绑定失败, 原因为:" + message + "')</script>"); } #endif } catch (Exception exc) { LogHelper.Instance.AddErrorLog("Bind User Exception", exc); } }
/// <summary> /// 注册加绑定 RESULTCODE_REGISTER_USERNAME_LENGTH_SHORT; RESULTCODE_FALSE; RESULTCODE_REGISTER_USERNAME_EXIST; RESULTCODE_TRUE; RESULTCODE_EXCEPTION /// </summary> /// <param name="clientIP"></param> /// <param name="userLoginName"></param> /// <param name="password"></param> /// <param name="email"></param> /// <param name="qq"></param> /// <param name="invitationCode"></param> /// <returns></returns> public int RegisterUserFromWeiXin(string wxUserOpenID, string wxUserName, string clientIP, string userLoginName, string userName, string password, string alipayAccount, string alipayRealName, string IDCardNo, string email, string qq, string invitationCode) { try { if (string.IsNullOrEmpty(wxUserOpenID)) { return(OperResult.RESULTCODE_PARAM_INVALID); } if (string.IsNullOrEmpty(wxUserName)) { return(OperResult.RESULTCODE_PARAM_INVALID); } var player = DBProvider.UserDBProvider.GetPlayerByWeiXinOpenID(wxUserOpenID); if (player != null) { return(OperResult.RESULTCODE_WEXIN_REGISTER_OPENID_EXIST); } if (string.IsNullOrEmpty(userLoginName) || userLoginName.Length < 3) { return(OperResult.RESULTCODE_REGISTER_USERNAME_LENGTH_SHORT); } if (string.IsNullOrEmpty(password)) { return(OperResult.RESULTCODE_PARAM_INVALID); } //if (string.IsNullOrEmpty(alipayAccount)) //{ // return OperResult.RESULTCODE_PARAM_INVALID; //} //if (string.IsNullOrEmpty(alipayRealName)) //{ // return OperResult.RESULTCODE_PARAM_INVALID; //} //if (string.IsNullOrEmpty(IDCardNo)) //{ // return OperResult.RESULTCODE_PARAM_INVALID; //} //if (string.IsNullOrEmpty(email)) //{ // return OperResult.RESULTCODE_PARAM_INVALID; //} int result = PlayerController.Instance.RegisterUser(clientIP, userLoginName, userName, password, alipayAccount, alipayRealName, IDCardNo, email, qq, invitationCode); if (result == OperResult.RESULTCODE_TRUE) { OperResultObject resultObj = InnerBindWeixinUser(wxUserOpenID, wxUserName, userLoginName, password, clientIP); result = resultObj.OperResultCode; } return(result); } catch (Exception exc) { LogHelper.Instance.AddErrorLog("WeiXinRegisterUser Exception. wxUserOpenID: " + wxUserOpenID + ";wxUserName:"******";clientIP:" + clientIP + ";userName: "******";password: "******"alipayAccount:" + alipayAccount + ";alipayRealName:" + alipayRealName + ";IDCardNo:" + IDCardNo + ";email: " + email + ";qq: " + qq, exc); return(OperResult.RESULTCODE_EXCEPTION); } }