gepangpang 2 жил өмнө
parent
commit
f99d32c8ba
1 өөрчлөгдсөн 15 нэмэгдсэн , 15 устгасан
  1. 15 15
      src/exchange_middle_ware.rs

+ 15 - 15
src/exchange_middle_ware.rs

@@ -235,7 +235,7 @@ impl Exchange {
         if res_data.code == "0" {
             let res_data_str = res_data.data;
             let res_data_json: Vec<serde_json::Value> = serde_json::from_str(&*res_data_str).unwrap();
-            let result = parse_order_info(res_data_json);
+            let result = parse_order_info(res_data_json[0].clone());
             Ok(result)
         } else {
             Err(Error::new(ErrorKind::Other, res_data.message))
@@ -243,26 +243,26 @@ impl Exchange {
     }
 
 
-    // OKX查询订单
+    // OKX订阅订单
     // symbol: 交易币对, "BTC_USDT"
-    // order_id: 订单ID, "590910403358593111"
     pub async fn subscribe_okx_order(&self, symbol: &String, mut bot_arc: Arc<Mutex<Bot>>) {
         let real_symbol = self.get_real_symbol(symbol, "-".to_string());
 
         let get_res_data = move |res_data: ResponseData| {
             let bot_arc_clone = Arc::clone(&bot_arc);
-
             async move {
                 if res_data.code == "0" {
                     let res_data_str = res_data.data;
-                    let res_data_json: Vec<serde_json::Value> = serde_json::from_str(&*res_data_str).unwrap();
-                    let result = parse_order_info(res_data_json);
+                    let res_data_json: serde_json::Value = serde_json::from_str(&*res_data_str).unwrap();
+                    let order_info_arr: serde_json::Value  = res_data_json["data"].clone();
+                    let result = parse_order_info(order_info_arr[0].clone());
+                    print!("{:?}", result);
                     {
                         let mut bot = bot_arc_clone.lock().await;
                         bot.order_change_response(result).await;
                     }
                 } else {
-                    panic!("get_binance_depth: {}", res_data.message);
+                    panic!("subscribe_okx_order: {}", res_data.message);
                 }
             }
         };
@@ -342,15 +342,15 @@ impl Exchange {
     }
 }
 
-fn parse_order_info(res_data_json: Vec<serde_json::Value>) -> Order {
+fn parse_order_info(res_data_json: serde_json::Value) -> Order {
     let order = Order {
-        id: res_data_json[0]["ordId"].as_str().unwrap().parse().unwrap(),
-        price: res_data_json[0]["px"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
-        amount: res_data_json[0]["sz"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
-        deal_amount: res_data_json[0]["accFillSz"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
-        avg_price: res_data_json[0]["avgPx"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
-        status: res_data_json[0]["state"].as_str().unwrap().parse().unwrap(),
-        order_type: res_data_json[0]["instType"].as_str().unwrap().parse().unwrap(),
+        id: res_data_json["ordId"].as_str().unwrap().parse().unwrap(),
+        price: res_data_json["px"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
+        amount: res_data_json["sz"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
+        deal_amount: res_data_json["accFillSz"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
+        avg_price: res_data_json["avgPx"].as_str().unwrap_or("0").parse().unwrap_or(0.0),
+        status: res_data_json["state"].as_str().unwrap().parse().unwrap(),
+        order_type: res_data_json["instType"].as_str().unwrap().parse().unwrap(),
     };
     return order;
 }