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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 4
0
        /// <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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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);
     }
 }
Ejemplo n.º 7
0
        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);
            }
        }
Ejemplo n.º 8
0
        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);
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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);
        }
Ejemplo n.º 12
0
        /// <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);
            }
        }
Ejemplo n.º 13
0
        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();
            }
        }
Ejemplo n.º 14
0
        /// <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();
            }
        }
Ejemplo n.º 15
0
        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);
            }
        }
Ejemplo n.º 16
0
        //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);
        }
Ejemplo n.º 17
0
        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);
            }
        }
Ejemplo n.º 18
0
        /// <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);
            }
        }