public void Purchase_SeleniumTestingToolsCookbook()
        {
            var itemUrl            = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice          = "40.49";
            var clientPurchaseInfo = new ClientPurchaseInfo(
                new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            })
            {
                CouponCode = "99PERDIS"
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            Container.RegisterInstance <IPurchasePromotionalCodeStrategy>(
                new UiPurchasePromotionalCodeStrategy(Container.Resolve <PlaceOrderPage>(), 40.49));
            var purchaseContext = Container.Resolve <PurchaseContext>();

            purchaseContext.PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);
        }
        public void PurchaseItem(string itemUrl, string itemPrice, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
        {
            _itemPage.Navigate(itemUrl);
            _itemPage.ClickBuyNowButton();
            _previewShoppingCartPage.ClickProceedToCheckoutButton();
            _signInPage.Login(clientLoginInfo.Email, clientLoginInfo.Password);
            _shippingAddressPage.FillShippingInfo(clientPurchaseInfo);
            _shippingAddressPage.ClickDifferentBillingCheckBox(clientPurchaseInfo);
            _shippingAddressPage.ClickContinueButton();
            _shippingPaymentPage.ClickBottomContinueButton();
            _shippingAddressPage.FillBillingInfo(clientPurchaseInfo);
            _shippingAddressPage.ClickContinueButton();
            _shippingPaymentPage.ClickTopContinueButton();
            double couponDiscount = 0;

            if (_purchasePromotionalCodeStrategy != null)
            {
                _purchasePromotionalCodeStrategy.AssertPromotionalCodeDiscount();
                couponDiscount = _purchasePromotionalCodeStrategy.GetPromotionalCodeDiscountAmount();
            }
            var totalPrice = double.Parse(itemPrice);

            _placeOrderPage.AssertOrderTotalPrice(totalPrice, couponDiscount);
            // Some other actions...
            if (_purchasePromotionalCodeStrategy != null)
            {
                _purchasePromotionalCodeStrategy.AssertPromotionalCodeDiscount();
            }
        }
コード例 #3
0
        public void Purchase_SimpleBehaviourEngine()
        {
            var itemUrl            = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice          = "40.49";
            var clientPurchaseInfo = new ClientPurchaseInfo(
                new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            })
            {
                CouponCode = "99PERDIS"
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            Behaviours.Core.BehaviourExecutor.Execute(
                new ItemPageNavigationBehaviour(itemUrl),
                new ItemPageBuyBehaviour(),
                new PreviewShoppingCartPageProceedBehaviour(),
                new SignInPageLoginBehaviour(clientLoginInfo),
                new ShippingAddressPageFillShippingBehaviour(clientPurchaseInfo),
                new ShippingAddressPageFillDifferentBillingBehaviour(clientPurchaseInfo),
                new ShippingAddressPageContinueBehaviour(),
                new ShippingPaymentPageContinueBehaviour(),
                new PlaceOrderPageAssertFinalAmountsBehaviour(itemPrice));
        }
コード例 #4
0
        public void TestMethod1()
        {
            var itemUrl            = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice          = "44.99";
            var clientPurchaseInfo = new ClientPurchaseInfo(
                new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            })
            {
                GiftWrapping = GiftWrappingStyles.None
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };
            //new PurchaseContext(new SalesTaxOrderValidationStrategy()).PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);
            var salesTaxStrategy = new PurchaseContext(new SalesTaxOrderValidationStrategy());

            salesTaxStrategy.PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);

            Thread.Sleep(5000);
        }
        public void Purchase_SeleniumTestingToolsCookbook()
        {
            var itemUrl            = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice          = "40.49";
            var clientPurchaseInfo = new ClientPurchaseInfo(
                new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            })
            {
                GiftWrapping = GiftWrappingStyles.None
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            new PurchaseContext(new SalesTaxOrderValidationStrategy()).PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);
        }
コード例 #6
0
        public void Purchase_ShoppingCartFacade()
        {
            var itemUrl            = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice          = "40.49";
            var clientPurchaseInfo = new ClientPurchaseInfo(
                new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            })
            {
                CouponCode = "99PERDIS"
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };
            var shoppingCart = Container.Resolve <ShoppingCart>();

            shoppingCart.PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);
        }
コード例 #7
0
        public void Purchase_SeleniumTestingToolsCookbook()
        {
            var itemUrl            = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice          = "40.49";
            var clientPurchaseInfo = new ClientPurchaseInfo(
                new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            })
            {
                CouponCode = "99PERDIS"
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            var purchaseContext = new PurchaseContext(NullPurchasePromotionalCodeStrategy.Null,
                                                      new ItemPage(Driver.Browser),
                                                      new PreviewShoppingCartPage(Driver.Browser),
                                                      new SignInPage(Driver.Browser),
                                                      new ShippingAddressPage(Driver.Browser),
                                                      new ShippingPaymentPage(Driver.Browser),
                                                      new PlaceOrderPage(Driver.Browser));

            purchaseContext.PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);
        }
コード例 #8
0
 public void LoginWithEmailAndPass(string email, string password)
 {
     _clientLoginInfo = new ClientLoginInfo
     {
         Email    = email,
         Password = password,
     };
     Execute();
 }
コード例 #9
0
 public void LoginWithEmailAndPass(string email, string password)
 {
     this.clientLoginInfo = new ClientLoginInfo
     {
         Email    = email,
         Password = password
     };
     base.Execute();
 }
コード例 #10
0
 private void PurchaseItemInternal(string itemUrl, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
 {
     ItemPage.Instance.Navigate(itemUrl);
     ItemPage.Instance.ClickBuyNowButton();
     PreviewShoppingCartPage.Instance.ClickProceedToCheckoutButton();
     SignInPage.Instance.Login(clientLoginInfo.Email, clientLoginInfo.Password);
     ShippingAddressPage.Instance.FillShippingInfo(clientPurchaseInfo);
     ShippingAddressPage.Instance.ClickContinueButton();
     ShippingPaymentPage.Instance.ClickBottomContinueButton();
     ShippingPaymentPage.Instance.ClickTopContinueButton();
 }
コード例 #11
0
 public void PurchaseItem(string itemUrl, string itemPrice, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
 {
     ItemPage.Instance.Navigate(itemUrl);
     ItemPage.Instance.ClickBuyNowButton();
     PreviewShoppingCartPage.Instance.ClickProceedToCheckoutButton();
     SignInPage.Instance.Login(clientLoginInfo.Email, clientLoginInfo.Password);
     ShippingAddressPage.Instance.FillShippingInfo(clientPurchaseInfo);
     ShippingAddressPage.Instance.ClickContinueButton();
     ShippingPaymentPage.Instance.ClickBottomContinueButton();
     ShippingPaymentPage.Instance.ClickTopContinueButton();
     _orderValidationStrategy.ValidateOrderSummary(itemPrice, clientPurchaseInfo);
 }
コード例 #12
0
    //-------------------------------------------------------------------------
    /// <summary>
    /// 当前服务器组响应玩家登陆.
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="password">密码</param>
    /// <param name="chanel">渠道</param>
    /// <returns></returns>
    public bool addLoginPlayer(string account, string password, string chanel, IComponent s)
    {
        if (mLoginPlayerQueue.ContainsKey(account))
        {
            return(false);
        }
        ClientLoginInfo player = new ClientLoginInfo();

        player.account  = account;
        player.password = password;
        player.server   = mServerGroupName;
        player.chanel   = chanel;
        player.session  = s;
        return(mLoginPlayerQueue.TryAdd(account, player));
    }
コード例 #13
0
    //-------------------------------------------------------------------------
    /// <summary>
    /// gate server 通过zk反馈的登陆结果.
    /// </summary>
    /// <param name="account">玩家账号</param>
    /// <param name="result">结果</param>
    public void gateBackPlayerLoginResult(string account, string result, Dictionary <byte, object> param)
    {
        ClientLoginInfo player = null;

        if (mLoginPlayerQueue.TryGetValue(account, out player))
        {
            player.param = param;
            if (result == "success")
            {
                player.state = eLogingState.gateBackSuccess;
            }
            else
            {
                player.state = eLogingState.gateBackFailed;
            }
        }
    }
コード例 #14
0
        public void PurchaseItem(string itemUrl, string itemPrice, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
        {
            ItemPage.Instance.Navigate(itemUrl);
            ItemPage.Instance.ClickBuyNowButton();
            PreviewShoppingCartPage.Instance.ClickProceedToCheckoutButton();
            SignInPage.Instance.Login(clientLoginInfo.Email, clientLoginInfo.Password);
            ShippingAddressPage.Instance.FillShippingInfo(clientPurchaseInfo);
            ShippingAddressPage.Instance.ClickDifferentBillingCheckBox(clientPurchaseInfo);
            ShippingAddressPage.Instance.ClickContinueButton();
            ShippingPaymentPage.Instance.ClickBottomContinueButton();
            ShippingAddressPage.Instance.FillBillingInfo(clientPurchaseInfo);
            ShippingAddressPage.Instance.ClickContinueButton();
            ShippingPaymentPage.Instance.ClickTopContinueButton();
            decimal expectedTotalPrice = this.orderPurchaseStrategy.CalculateTotalPrice();

            this.orderPurchaseStrategy.ValidateOrderSummary(expectedTotalPrice);
        }
コード例 #15
0
        public async Task <ClientReply> Auth([FromBody] ClientLoginInfo loginInfo)
        {
            try
            {
                Console.WriteLine($"{loginInfo.userName} has requested login..");
                var op = await _dataAccess.GetUserByEmail(loginInfo.userName);

                if (_dataAccess.ComparePassword(loginInfo.password, op.password))
                {
                    string sessKey = _sessionKeyManager.GenerateNewSessionKey(op.userID);

                    return(new ClientReply()
                    {
                        token = sessKey,
                        Error = (int)ErrorMessage.NoError
                    });
                }
                else if (!op.activated)
                {
                    return(new ClientReply()
                    {
                        token = null,
                        Error = (int)ErrorMessage.UnActivated
                    });
                }
                else
                {
                    return(new ClientReply()
                    {
                        token = null,
                        Error = (int)ErrorMessage.InvalidCredentials
                    });
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(new ClientReply
                {
                    token = null,
                    Error = (int)ErrorMessage.Unknown
                });
            }
        }
コード例 #16
0
        public void PurchaseItem(
            string itemUrl,
            string itemPrice,
            ClientLoginInfo clientLoginInfo,
            ClientPurchaseInfo clientPurchaseInfo)
        {
            _itemPage.Navigate(itemUrl);
            _itemPage.ClickBuyNowButton();
            _previewShoppingCartPage.ClickProceedToCheckoutButton();
            _signInPage.Login(clientLoginInfo.Email, clientLoginInfo.Password);
            _shippingAddressPage.FillShippingInfo(clientPurchaseInfo);
            _shippingAddressPage.ClickDifferentBillingCheckBox(clientPurchaseInfo);
            _shippingAddressPage.ClickContinueButton();
            _shippingPaymentPage.ClickBottomContinueButton();
            _shippingAddressPage.FillBillingInfo(clientPurchaseInfo);
            _shippingAddressPage.ClickContinueButton();
            _shippingPaymentPage.ClickTopContinueButton();
            var totalPrice = double.Parse(itemPrice);

            _placeOrderPage.AssertOrderTotalPrice(totalPrice);
        }
        public void Purchase_SeleniumTestingToolsCookbook_DecoratedStrategies()
        {
            string  itemUrl      = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            decimal itemPrice    = 40.49m;
            var     shippingInfo = new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "Texas",
                City     = "Houston",
                Zip      = "77001",
                Phone    = "00164644885569"
            };
            var billingInfo = new ClientAddressInfo()
            {
                FullName = "Anton Angelov",
                Country  = "Bulgaria",
                Address1 = "950 Avenue of the Americas",
                City     = "Sofia",
                Zip      = "1672",
                Phone    = "0894464647"
            };
            ClientPurchaseInfo clientPurchaseInfo = new ClientPurchaseInfo(billingInfo, shippingInfo)
            {
                GiftWrapping = GiftWrappingStyles.Fancy
            };
            ClientLoginInfo clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };
            OrderPurchaseStrategy orderPurchaseStrategy = new TotalPriceOrderPurchaseStrategy(itemPrice);

            orderPurchaseStrategy = new SalesTaxOrderPurchaseStrategy(orderPurchaseStrategy, itemPrice, clientPurchaseInfo);
            orderPurchaseStrategy = new VatTaxOrderPurchaseStrategy(orderPurchaseStrategy, itemPrice, clientPurchaseInfo);

            new PurchaseContext(orderPurchaseStrategy).PurchaseItem(itemUrl, itemPrice.ToString(), clientLoginInfo, clientPurchaseInfo);
        }
コード例 #18
0
        public void Purchase_Decorator()
        {
            var itemUrl      = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            var itemPrice    = 44.99m;
            var shippingInfo = new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "7518 CAROTHERS STREET",
                State    = "Texas",
                City     = "Houston",
                Zip      = "77001",
                Phone    = "00164644885569"
            };
            var billingInfo = new ClientAddressInfo()
            {
                FullName = "Anton Angelov",
                Country  = "Bulgaria",
                Address1 = "950 Avenue of the Americas",
                City     = "Sofia",
                Zip      = "1672",
                Phone    = "0894464647"
            };
            var clientPurchaseInfo = new ClientPurchaseInfo(billingInfo, shippingInfo)
            {
                GiftWrapping = GiftWrappingStyles.Fancy
            };
            var clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            Advanced.Strategies.OrderPurchaseStrategy orderPurchaseStrategy = new Advanced.Strategies.TotalPriceOrderPurchaseStrategy(itemPrice);
            orderPurchaseStrategy = new Advanced.Strategies.SalesTaxOrderPurchaseStrategy(orderPurchaseStrategy, itemPrice, clientPurchaseInfo);
            orderPurchaseStrategy = new Advanced.Strategies.VatTaxOrderPurchaseStrategy(orderPurchaseStrategy, itemPrice, clientPurchaseInfo);

            new PurchaseContext(orderPurchaseStrategy).PurchaseItem(itemUrl, itemPrice.ToString(), clientLoginInfo, clientPurchaseInfo);
        }
コード例 #19
0
        public void Purchase_SeleniumTestingToolsCookbook()
        {
            string itemUrl      = "/Selenium-Testing-Cookbook-Gundecha-Unmesh/dp/1849515743";
            string itemPrice    = "40.49";
            var    shippingInfo = new ClientAddressInfo()
            {
                FullName = "John Smith",
                Country  = "United States",
                Address1 = "950 Avenue of the Americas",
                State    = "New York",
                City     = "New York City",
                Zip      = "10001-2121",
                Phone    = "00164644885569"
            };
            var billingInfo = new ClientAddressInfo()
            {
                FullName = "Anton Angelov",
                Country  = "Bulgaria",
                Address1 = "950 Avenue of the Americas",
                City     = "Sofia",
                Zip      = "1672",
                Phone    = "0894464647"
            };
            ClientPurchaseInfo clientPurchaseInfo = new ClientPurchaseInfo(billingInfo, shippingInfo)
            {
                GiftWrapping = GiftWrappingStyles.Fancy
            };
            ClientLoginInfo clientLoginInfo = new ClientLoginInfo()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            new PurchaseContext(new SalesTaxOrderPurchaseStrategy(), new VatTaxOrderPurchaseStrategy(), new GiftOrderPurchaseStrategy())
            .PurchaseItem(itemUrl, itemPrice, clientLoginInfo, clientPurchaseInfo);
        }
コード例 #20
0
 public SignInPageLoginBehaviour(ClientLoginInfo clientLoginInfo)
 {
     this.signInPage          = UnityContainerFactory.GetContainer().Resolve <SignInPage>();
     this.shippingAddressPage = UnityContainerFactory.GetContainer().Resolve <ShippingAddressPage>();
     this.clientLoginInfo     = clientLoginInfo;
 }
コード例 #21
0
 public void PurchaseItemSalesTax(string itemUrl, string itemPrice, string taxAmount, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
 {
     PurchaseItemInternal(itemUrl, clientLoginInfo, clientPurchaseInfo);
     PlaceOrderPage.Instance.Validate().EstimatedTaxPrice(taxAmount);
 }
コード例 #22
0
 public void PurchaseItemGiftWrapping(string itemUrl, string itemPrice, string giftWrapTax, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
 {
     PurchaseItemInternal(itemUrl, clientLoginInfo, clientPurchaseInfo);
     PlaceOrderPage.Instance.Validate().GiftWrapPrice(giftWrapTax);
 }
コード例 #23
0
    //-------------------------------------------------------------------------
    //  暂时放这里,应该放入独立线程(防止阻塞用户登陆).
    public override void update(float elapsed_tm)
    {
        List <string> del = new List <string>();

        foreach (var player in mLoginPlayerQueue)
        {
            ClientLoginInfo info = player.Value;
            if (null == info)
            {
                continue;
            }

            // 先做断线检测.
            if (info.state != eLogingState.loginError)
            {
                // todo,添加session是否处于连接状态的查询接口
                if (info.session == null)// || !info.session. .Connected)
                {
                    info.state  = eLogingState.loginError;
                    info.result = eLoginResult.disconnected;
                }
            }

            if (info.state == eLogingState.connect)
            {
                eLoginResult rtCode = eLoginResult.accountNotExists;
                string       sql    = string.Format("SELECT AccountName, Password , LoginStatus , AccountId FROM Account WHERE AccountName='{0}';", info.account);

                EbLog.Note("Login SQL STR :" + sql);

                MySqlCommand    cmd = new MySqlCommand(sql, connection);
                MySqlDataReader rdr = null;
                try
                {
                    rdr = cmd.ExecuteReader();
                    if (rdr.Read())
                    {
                        if ((string)rdr["Password"] != info.password)
                        {
                            rtCode = eLoginResult.wrongPassword;
                        }
                        else if ((string)rdr["LoginStatus"] != eLoginStatus.offline.ToString())
                        {
                            rtCode = eLoginResult.loginstatus;
                        }
                        else
                        {
                            // 登录成功.
                            rtCode         = eLoginResult.success;
                            info.tokenId   = generateId().ToString();
                            info.accountId = (long)rdr["AccountId"];
                        }
                        info.result = rtCode;
                    }

                    if (rdr != null)
                    {
                        rdr.Close();
                        rdr.Dispose();
                        rdr = null;
                    }

                    if (rtCode == eLoginResult.success)
                    {
                        // update status
                        sql = string.Format("UPDATE Account SET LoginStatus = '{0}' WHERE AccountName='{1}';", eLoginStatus.loging.ToString(), info.account);

                        EbLog.Note("Login SQL STR :" + sql);

                        MySqlCommand updateCmd = new MySqlCommand(sql, connection);
                        cmd.ExecuteNonQuery();
                    }
                }
                catch (Exception ex)
                {
                    EbLog.Error(ex.ToString());
                }
                finally
                {
                    cmd.Dispose();
                    cmd = null;

                    if (rdr != null)
                    {
                        if (rdr.IsClosed == false)
                        {
                            rdr.Close();
                        }
                        rdr.Dispose();
                        rdr = null;
                    }
                }

                if (rtCode == ((byte)eLoginResult.success))
                {
                    info.state = eLogingState.updateLoging2Db;
                }
            }

            if (info.state == eLogingState.updateLoging2Db)
            {
                foreach (var gate in mGateInfo)
                {
                    GateInfo ser = gate.Value;
                    if (!ser.bloginLock)
                    {
                        // 目前只有账号信息和当前longin id放入ZooKeeper.
                        string dt = info.account + "," + mCoApp.NodeIdStr + "," + info.tokenId.ToString() + "," + info.accountId.ToString();
                        info.gateId = ser.id;
                        mCoApp.getZk().awriteData(ser.loginNode, dt, null);
                        EbLog.Note("send to gate node :" + ser.loginNode + ",account:" + dt);
                        mCoApp.getZk().acreate(ser.loginLockNode, "", ZK_CONST.ZOO_EPHEMERAL, null);
                        EbLog.Note("set remote lock :" + ser.loginLockNode + ",account:" + dt);

                        ser.bloginLock = true;
                        info.state     = eLogingState.updateZk2Gate;
                        break;
                    }
                }
            }

            if (info.state == eLogingState.gateBackSuccess ||
                info.state == eLogingState.gateBackFailed ||
                info.state == eLogingState.loginError)
            {
                eLoginStatus curState = (info.state == eLogingState.gateBackSuccess) ? eLoginStatus.online : eLoginStatus.offline;
                string       sql      = string.Format("UPDATE Account SET LoginStatus = '{0}' WHERE AccountName='{1}';", curState, info.account);

                EbLog.Note("Login SQL STR :" + sql);

                MySqlCommand cmd = new MySqlCommand(sql, connection);
                try
                {
                    MySqlCommand updateCmd = new MySqlCommand(sql, connection);
                    cmd.ExecuteNonQuery();
                    info.state = eLogingState.updateOnline2Db;
                }
                catch (Exception ex)
                {
                    //mLog.ErrorFormat("accoundName:{0}, password:{1} ", info.account, info.password);
                    EbLog.Error(ex.ToString());
                }
                finally
                {
                    cmd.Dispose();
                    cmd = null;
                }

                if (info.state == eLogingState.updateOnline2Db)
                {
                    //反馈消息给client.
                    //if (info.peer.Connected)// todo,判定session是否处于连接状态
                    {
                        //Dictionary<byte, object> p = new Dictionary<byte, object>();
                        //p[0] = curState.ToString();
                        //if (curState == eLoginStatus.online)
                        //{
                        //    var list = mGateInfo.Where(gt => gt.Value.id.Equals(info.gateId));
                        //    p[1] = list.First().Value.ipport;
                        //    p[2] = info.tokenId;
                        //}
                        //else
                        //{
                        //    p[1] = info.result.ToString();
                        //}

                        // todo,添加session发送任意数据的方法
                        LoginUCenterSession <DefUCenterSession> se = info.session as LoginUCenterSession <DefUCenterSession>;
                        se.login2ClientLogin(curState.ToString(), info.tokenId, info.param);

                        //OperationResponse operation_response = new OperationResponse(1, p);
                        //SendResult r = info.peer.SendOperationResponse(operation_response, new SendParameters { ChannelId = 0 });
                        ////info.session.getRpcPeer().sendEntityRpcData()
                        //if (r != SendResult.Ok)
                        //{
                        //    // Error
                        //}

                        //if (info.peer.Connected)
                        {
                            // 应该断开与客户端的连接.
                            //info.peer.Disconnect();
                        }
                    }

                    info.state = eLogingState.backToClient;
                }

                if (info.state == eLogingState.backToClient)
                {
                    del.Add(info.account);
                }
            }
        }

        foreach (string account in del)
        {
            ClientLoginInfo delPlayer = null;
            mLoginPlayerQueue.TryRemove(account, out delPlayer);
            //delPlayer.peer.Dispose();// todo 连接断开管理
        }

        string offlineaccount = null;

        if (mofflineQueue.TryDequeue(out offlineaccount))
        {
            eLoginStatus curState = eLoginStatus.offline;
            string       sql      = string.Format("UPDATE Account SET LoginStatus = '{0}' WHERE AccountName='{1}';", curState, offlineaccount);

            EbLog.Error("player offline Login SQL STR :" + sql);
            MySqlCommand cmd = new MySqlCommand(sql, connection);
            try
            {
                MySqlCommand updateCmd = new MySqlCommand(sql, connection);
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                //mLog.ErrorFormat("accoundName:{0} offline failed ", offlineaccount);
                EbLog.Error(ex.ToString());
            }
            finally
            {
                cmd.Dispose();
                cmd = null;
            }
        }
    }
コード例 #24
0
 public void PurchaseItemShippingTax(string itemUrl, string itemPrice, string shippingTax, ClientLoginInfo clientLoginInfo, ClientPurchaseInfo clientPurchaseInfo)
 {
     PurchaseItemInternal(itemUrl, clientLoginInfo, clientPurchaseInfo);
     PlaceOrderPage.Instance.Validate().ShippingTaxPrice(shippingTax);
 }