|
|
@@ -648,6 +648,51 @@ impl Platform for BitgetSwap {
|
|
|
async fn command_order(&mut self, order_command: &mut OrderCommand, trace_stack: &TraceStack) {
|
|
|
let mut handles = vec![];
|
|
|
|
|
|
+ // 撤销订单
|
|
|
+ let mut cancel_handlers = vec![];
|
|
|
+ for item in order_command.cancel.keys() {
|
|
|
+ let gen_timestamp = order_command.cancel[item].get(2).unwrap().parse::<i64>().unwrap();
|
|
|
+ let order_id = order_command.cancel[item].get(1).unwrap().clone();
|
|
|
+ let custom_id = order_command.cancel[item].get(0).unwrap().clone();
|
|
|
+
|
|
|
+ let mut self_clone = self.clone();
|
|
|
+ let before_submit2 = Utc::now().timestamp_millis();
|
|
|
+ let handle = spawn(async move {
|
|
|
+ let before_submit1 = Utc::now().timestamp_millis();
|
|
|
+ let result = self_clone.cancel_order(&order_id, &custom_id).await;
|
|
|
+ match result {
|
|
|
+ Ok(result) => {
|
|
|
+ let canceled = Utc::now().timestamp_millis();
|
|
|
+ info!("cid={}, 生成-撤销2: {}, 撤销2-撤销1: {}, 撤销1-撤销完成(服务器回报): {}",
|
|
|
+ custom_id,
|
|
|
+ before_submit2 - gen_timestamp,
|
|
|
+ before_submit1 - before_submit2,
|
|
|
+ canceled - before_submit1
|
|
|
+ );
|
|
|
+
|
|
|
+ self_clone.order_sender.send(result).await.unwrap();
|
|
|
+ }
|
|
|
+ Err(error) => {
|
|
|
+ // 取消失败去查订单。
|
|
|
+ let query_rst = self_clone.get_order_detail(&order_id, &custom_id).await;
|
|
|
+ match query_rst {
|
|
|
+ Ok(order) => {
|
|
|
+ self_clone.order_sender.send(order).await.unwrap();
|
|
|
+ }
|
|
|
+ Err(err) => {
|
|
|
+ error!("撤单失败,而且查单也失败了,bitget_swap,oid={}, cid={}, err={:?}。", order_id.clone(), custom_id.clone(), err);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ self_clone.error_sender.send(error).await.unwrap();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ cancel_handlers.push(handle)
|
|
|
+ }
|
|
|
+ let futures = FuturesUnordered::from_iter(cancel_handlers);
|
|
|
+ // 等待所有任务完成
|
|
|
+ let _: Result<Vec<_>, _> = futures.try_collect().await;
|
|
|
+
|
|
|
// 下单指令
|
|
|
for item in order_command.limits_open.keys() {
|
|
|
let mut ts = trace_stack.clone();
|
|
|
@@ -688,40 +733,6 @@ impl Platform for BitgetSwap {
|
|
|
// 等待所有任务完成
|
|
|
let _: Result<Vec<_>, _> = futures.try_collect().await;
|
|
|
|
|
|
- // 撤销订单
|
|
|
- let mut cancel_handlers = vec![];
|
|
|
- for item in order_command.cancel.keys() {
|
|
|
- let order_id = order_command.cancel[item].get(1).unwrap().clone();
|
|
|
- let custom_id = order_command.cancel[item].get(0).unwrap().clone();
|
|
|
-
|
|
|
- let mut self_clone = self.clone();
|
|
|
- let handle = spawn(async move {
|
|
|
- let result = self_clone.cancel_order(&order_id, &custom_id).await;
|
|
|
- match result {
|
|
|
- Ok(result) => {
|
|
|
- self_clone.order_sender.send(result).await.unwrap();
|
|
|
- }
|
|
|
- Err(error) => {
|
|
|
- // 取消失败去查订单。
|
|
|
- let query_rst = self_clone.get_order_detail(&order_id, &custom_id).await;
|
|
|
- match query_rst {
|
|
|
- Ok(order) => {
|
|
|
- self_clone.order_sender.send(order).await.unwrap();
|
|
|
- }
|
|
|
- Err(err) => {
|
|
|
- error!("撤单失败,而且查单也失败了,bitget_swap,oid={}, cid={}, err={:?}。", order_id.clone(), custom_id.clone(), err);
|
|
|
- }
|
|
|
- }
|
|
|
- self_clone.error_sender.send(error).await.unwrap();
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
- cancel_handlers.push(handle)
|
|
|
- }
|
|
|
- let futures = FuturesUnordered::from_iter(cancel_handlers);
|
|
|
- // 等待所有任务完成
|
|
|
- let _: Result<Vec<_>, _> = futures.try_collect().await;
|
|
|
-
|
|
|
// 检查订单指令
|
|
|
let mut check_handlers = vec![];
|
|
|
for item in order_command.check.keys() {
|