Exemplo n.º 1
0
        //private void InitSocket()
        //{
        //    var business = ApplicationObject.App.Business;
        //    var ip = ConfigurationManager.AppSettings["OrderNotifyIp"];
        //    var port = int.Parse(ConfigurationManager.AppSettings["OrderNotifyPort"]);
        //    IPHostEntry ipHostInfo = Dns.GetHostEntry(ip);
        //    IPAddress ipAddress = ipHostInfo.AddressList[0];
        //    IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
        //    Socket = new Socket(remoteEP.AddressFamily, SocketType.Stream, ProtocolType.Tcp);

        //    Socket.BeginConnect(remoteEP,
        //        new AsyncCallback(ConnectCallback), Socket);
        //    connectDone.WaitOne();
        //    if (!InitSuccess) return;
        //    Send(Socket, business.ID.ToString());

        //    Receive(Socket);

        //}

        //private void ConnectCallback(IAsyncResult ar)
        //{
        //    try
        //    {
        //        Socket client = (Socket)ar.AsyncState;

        //        client.EndConnect(ar);
        //        connectDone.Set();
        //    }
        //    catch (Exception e)
        //    {
        //        MessageBox.Show("新订单提醒连接异常:" + e.Message);
        //        InitSuccess = false;
        //        connectDone.Set();
        //    }
        //}

        //private void Receive(Socket client)
        //{
        //    try
        //    {
        //        StateObject state = new StateObject();
        //        state.workSocket = client;

        //        client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
        //    }
        //    catch (Exception e)
        //    {
        //        MessageBox.Show("新订单消息监听异常:" + e.Message);
        //    }
        //}

        //private void ReceiveCallback(IAsyncResult ar)
        //{
        //    StateObject state = (StateObject)ar.AsyncState;
        //    Socket client = state.workSocket;
        //    try
        //    {
        //        var position = client.EndReceive(ar);
        //        string code = Encoding.UTF8.GetString(state.buffer, 0, position);
        //        var req = Request.GetOrder(code);
        //        var order = req.Result;
        //        if (order != null)
        //        {
        //            this.Dispatcher.Invoke(() =>
        //            {
        //                ApplicationObject.Print(order);
        //            });
        //            var filename = string.Empty;
        //            if (order.Status == Enum.OrderStatus.Payed)
        //            {
        //                filename = "1.mp3";
        //            }
        //            else if (order.Status == Enum.OrderStatus.Receipted)
        //            {
        //                filename = "2.mp3";
        //            }
        //            var player = new MediaPlayer();
        //            player.Open(new Uri("Assets/Video/" + filename, UriKind.Relative));
        //            player.Play();
        //            player.Volume = 1;
        //        }
        //    }
        //    catch (Exception e)
        //    {
        //        MessageBox.Show("新订单消息接收异常:" + e.Message);
        //    }
        //    finally
        //    {
        //        state.buffer = new byte[StateObject.BufferSize];
        //        client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
        //    }
        //}

        //private static void Send(Socket client, String data)
        //{
        //    byte[] byteData = Encoding.ASCII.GetBytes(data);

        //    client.BeginSend(byteData, 0, byteData.Length, 0,
        //        new AsyncCallback(SendCallback), client);
        //}

        //private static void SendCallback(IAsyncResult ar)
        //{
        //    try
        //    {
        //        Socket client = (Socket)ar.AsyncState;

        //        client.EndSend(ar);
        //    }
        //    catch (Exception e)
        //    {
        //        MessageBox.Show("新订单提示匹配异常:" + e.Message);
        //    }
        //}

        #endregion

        #region websocket连接
        /// <summary>
        /// 初始化Socket连接
        /// </summary>
        //private void InitWebSocket()
        //{
        //    socket = new WebSocket(socketLink);
        //    socket.Connect();
        //    socket.OnMessage += MessageHandler;
        //    socket.OnClose += (sender, e) =>
        //    {
        //        if (e.Code == 1000)
        //        {
        //            MessageBox.Show(e.Reason);
        //        }
        //        else
        //        {
        //            var isSuccess = Connect();
        //            if (!isSuccess)
        //            {
        //                IsConnect = false;
        //                PlayMedia("Assets/Video/4.mp3");
        //                //while (MessageBox.Show($"网络异常,新订单提醒已关闭,点击确定后重新连接", "通信异常", MessageBoxButton.YesNoCancel, MessageBoxImage.Warning) == MessageBoxResult.Yes)
        //                //{
        //                //    if(Connect())
        //                //    {
        //                //        MessageBox.Show("已成功连接");
        //                //        break;
        //                //    }
        //                //}
        //                ThreadPool.QueueUserWorkItem(obj =>
        //                {
        //                    var index = 0;
        //                    var control = (MainWindow)obj;
        //                    while (!control.IsConnect)
        //                    {
        //                        if (InternetGetConnectedState(out index, 0))
        //                        {
        //                            ((Control)obj).Dispatcher.Invoke(() =>
        //                            {
        //                                var result = Connect();
        //                                if (result)
        //                                {
        //                                    MessageBox.Show("新订单提醒已恢复正常");
        //                                    control.IsConnect = true;
        //                                    return;
        //                                }
        //                            });
        //                        }
        //                    }
        //                }, this);
        //            }
        //        }
        //    };
        //}


        ///// <summary>
        ///// 连接断开后重新连接
        ///// </summary>
        ///// <returns></returns>
        //private bool Connect()
        //{
        //    // 尝试2次连接
        //    var times = 2;
        //    for (int i = 0; i < times; i++)
        //    {
        //        InitWebSocket();
        //        if (socket.ReadyState == WebSocketState.Open)
        //        {
        //            return true;
        //        }
        //        // 每次连接后等待10秒再连
        //        Thread.Sleep(10000);
        //    }
        //    return false;
        //}

        private async void MessageHandler(object sender, MessageEventArgs e)
        {
            try
            {
                var buffer = new byte[512];
                var code   = e.Data;
                code = code.Split('|')[0];
                var order = await Request.GetOrder(code);

                this.Dispatcher.Invoke(() =>
                {
                    var filename = string.Empty;
                    if (order.Status == Enum.OrderStatus.Payed)
                    {
                        filename = "1.mp3";
                    }
                    else
                    {
                        filename = "2.mp3";
                    }
                    PlayMedia("Assets/Video/" + filename);
                    ApplicationObject.Print(order);
                }, DispatcherPriority.Normal);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 2
0
        private async void HandleOrder(object sender, EventArgs e)
        {
            try
            {
                using (var client = new HttpClient())
                {
                    var res = await client.GetAsync(orderUrl);

                    res.EnsureSuccessStatusCode();
                    var content = await res.Content.ReadAsStringAsync();

                    var result = JsonConvert.DeserializeObject <JsonData>(content);
                    if (result.Data == null)
                    {
                        return;
                    }
                    var data   = (JArray)result.Data;
                    var orders = new List <Order>();
                    foreach (string item in data)
                    {
                        orders.Add(JsonConvert.DeserializeObject <Order>(item));
                    }
                    var firstOrder = orders[0];
                    this.Dispatcher.Invoke(() =>
                    {
                        var filename = string.Empty;
                        if (firstOrder.Status == Enum.OrderStatus.Payed)
                        {
                            filename = "1.mp3";
                        }
                        else
                        {
                            filename = "2.mp3";
                        }
                        PlayMedia("Assets/Video/" + filename);
                    }, DispatcherPriority.Normal);
                    orders.ForEach(order =>
                    {
                        ApplicationObject.Print(order);
                    });
                }
            }
            catch (Exception ex)
            {
                if (isError)
                {
                    return;
                }
                //isError = true;
                //var result = MessageBox.Show("读取新订单错误:" + ex.Message, "提示", MessageBoxButton.OK);
                //if (result == MessageBoxResult.OK)
                //{
                //    isError = false;
                //}
                AutoClosingMessageBox.Show("读取新订单错误:" + ex.Message, "提示", 3000);
            }
        }
Exemplo n.º 3
0
        private void Print(object sender, RoutedEventArgs e)
        {
            var parent = LogicalTreeHelper.GetParent(e.OriginalSource as Button) as StackPanel;
            var order  = parent.DataContext as Model.Order;

            if (ApplicationObject.App.Printers.Count == 0)
            {
                MessageBox.Show("没有配置任何打印机");
                return;
            }
            ApplicationObject.Print(order);
        }
Exemplo n.º 4
0
        private async void HandleOrder(object sender, EventArgs e)
        {
            try
            {
                var result = await Request.HttpRequest(orderUrl);

                var json = JsonConvert.DeserializeObject <JsonData>(result);
                if (json.Data == null)
                {
                    return;
                }
                var data   = (JArray)json.Data;
                var orders = new List <Order>();
                foreach (string item in data)
                {
                    orders.Add(JsonConvert.DeserializeObject <Order>(item));
                }
                var firstOrder = orders[0];
                this.Dispatcher.Invoke(() =>
                {
                    var filename = string.Empty;
                    if (firstOrder.Status == Enum.OrderStatus.Payed)
                    {
                        filename = "1.mp3";
                    }
                    else
                    {
                        filename = "2.mp3";
                    }
                    PlayMedia("Assets/Video/" + filename);
                }, DispatcherPriority.Normal);
                orders.ForEach(order =>
                {
                    ApplicationObject.Print(order);
                });
            }
            catch (Exception ex)
            {
                if (isError)
                {
                    return;
                }
                //AutoClosingMessageBox.Show("读取新订单错误:" + ex.Message, "提示", 3000);
            }
        }
Exemplo n.º 5
0
        private async void HandleOrder(object sender, EventArgs e)
        {
            try
            {
                var result = await Request.HttpRequestAsync(orderUrl);

                var json = JsonConvert.DeserializeObject <JsonData <JObject> >(result);
                // 本地订单
                var local = json.Data["local"];
                if (local.HasValues)
                {
                    var orders = new List <Order>();
                    foreach (string item in local)
                    {
                        orders.Add(JsonConvert.DeserializeObject <Order>(item));
                    }
                    var firstOrder = orders[0];
                    this.Dispatcher.Invoke(() =>
                    {
                        var filename = string.Empty;
                        if (firstOrder.Status == OrderStatus.Payed)
                        {
                            filename = "1.mp3";
                        }
                        else
                        {
                            filename = "2.mp3";
                        }
                        PlayMedia("Assets/Video/" + filename);
                    }, DispatcherPriority.Normal);
                    orders.ForEach(order =>
                    {
                        if (order.Products == null || order.Products.Count == 0)
                        {
                            return;
                        }
                        ApplicationObject.Print(order);
                    });
                }
                // 第三方订单
                var third = json.Data["third"];
                try
                {
                    if (third.HasValues)
                    {
                        var orders = new List <ThirdOrder>();
                        foreach (string item in third)
                        {
                            orders.Add(JsonConvert.DeserializeObject <ThirdOrder>(item));
                        }
                        orders.ForEach(order =>
                        {
                            if (order.ThirdOrderProducts == null || order.ThirdOrderProducts.Count == 0)
                            {
                                return;
                            }
                            ApplicationObject.Print(order);
                        });
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("第三方订单打印错误:" + ex);
                }
            }
            catch (Exception ex)
            {
                if (isError)
                {
                    return;
                }
                //AutoClosingMessageBox.Show("读取新订单错误:" + ex.Message, "提示", 3000);
            }
        }
Exemplo n.º 6
0
        private async void Print(object obj)
        {
            var order = await Request.GetOrderDetail(ID);

            ApplicationObject.Print(order, int.Parse(obj.ToString()));
        }