//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); } }
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); } }
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); }
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); } }
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); } }
private async void Print(object obj) { var order = await Request.GetOrderDetail(ID); ApplicationObject.Print(order, int.Parse(obj.ToString())); }