diff --git a/rpc/src/chainx/mod.rs b/rpc/src/chainx/mod.rs index 3d64493339794..24386318e230a 100644 --- a/rpc/src/chainx/mod.rs +++ b/rpc/src/chainx/mod.rs @@ -805,6 +805,9 @@ where for i in (0..len).rev() { let order_key = >::key_for(&(who, i)); if let Some(order) = Self::pickout::>(&state, &order_key)? { + if total >= page_index * page_size && total < ((page_index + 1) * page_size) { + orders.push(order.clone()); + } total = total + 1; } } @@ -816,18 +819,6 @@ where if page_index >= total_page && total_page > 0 { return Err(PageIndexErr.into()); } - - let mut count: u32 = 0; - for i in (0..len).rev() { - let order_key = >::key_for(&(who, i)); - if let Some(order) = Self::pickout::>(&state, &order_key)? { - if count >= page_index * page_size && count < ((page_index + 1) * page_size) { - orders.push(order.clone()); - } - - count = count + 1; - } - } } let d = PageData { page_total, diff --git a/runtime/wasm/target/wasm32-unknown-unknown/release/chainx_runtime_wasm.compact.wasm b/runtime/wasm/target/wasm32-unknown-unknown/release/chainx_runtime_wasm.compact.wasm index 38f899245bcec..6f2ce2dffc35f 100644 Binary files a/runtime/wasm/target/wasm32-unknown-unknown/release/chainx_runtime_wasm.compact.wasm and b/runtime/wasm/target/wasm32-unknown-unknown/release/chainx_runtime_wasm.compact.wasm differ diff --git a/xrml/xdex/spot/src/lib.rs b/xrml/xdex/spot/src/lib.rs index e4d6fb5ee8ca2..626396e9e2452 100644 --- a/xrml/xdex/spot/src/lib.rs +++ b/xrml/xdex/spot/src/lib.rs @@ -37,8 +37,8 @@ extern crate srml_timestamp as timestamp; #[cfg(test)] extern crate srml_consensus as consensus; extern crate xrml_bridge_bitcoin as xbitcoin; -extern crate xrml_xaccounts as xaccounts; extern crate xrml_xassets_records as xrecords; +extern crate xrml_xaccounts as xaccounts; // for chainx runtime module lib extern crate xrml_xassets_assets as xassets; @@ -62,6 +62,7 @@ use rstd::prelude::*; use runtime_support::dispatch::Result; use runtime_support::{Parameter, StorageMap, StorageValue}; use system::ensure_signed; + use xassets::assetdef::Token; pub type OrderT = Order< @@ -417,8 +418,9 @@ impl Module { fill_index: Default::default(), }; // 更新用户挂单 - >::insert((order.user.clone(), order.index), &order); Self::event_order(&order); + >::insert((order.user.clone(), order.index), &order); + //撮合 Self::do_match(&mut order, &pair, &handicap); @@ -591,8 +593,8 @@ impl Module { } else { //更新状态 删除 order.status = OrderStatus::FillAll; - >::remove((order.user.clone(), order.index)); Self::event_order(&order); + >::remove((order.user.clone(), order.index)); } //Event 记录order状态通知链外 @@ -743,17 +745,18 @@ impl Module { >::insert(pairid, new_fill_index); //插入更新后的订单 + Self::event_order(&maker_order.clone()); >::insert( (maker_order.user.clone(), maker_order.index), &maker_order.clone(), ); - Self::event_order(&maker_order.clone()); + + Self::event_order(&taker_order.clone()); >::insert( (taker_order.user.clone(), taker_order.index), &taker_order.clone(), ); - Self::event_order(&taker_order.clone()); - + // 记录日志 Self::deposit_event(RawEvent::FillOrder( fill.index, @@ -884,10 +887,9 @@ impl Module { || OrderStatus::FillPartAndCancel == order.status || OrderStatus::Cancel == order.status { + Self::event_order(&order); //Event 记录挂单详情状态变更 //删除挂单详情 >::remove(&list[i]); - - Self::event_order(&order); //Event 记录挂单详情状态变更 } else { new_list.push(list[i].clone()); } diff --git a/xrml/xdex/spot/src/mock.rs b/xrml/xdex/spot/src/mock.rs index 0cd1961c5fc3f..0cb18c4b5d76f 100644 --- a/xrml/xdex/spot/src/mock.rs +++ b/xrml/xdex/spot/src/mock.rs @@ -49,8 +49,9 @@ impl timestamp::Trait for Test { type Moment = u64; type OnTimestampSet = (); } -impl xbitcoin::Trait for Test {} -impl xaccounts::Trait for Test { +impl xbitcoin::Trait for Test { +} +impl xaccounts::Trait for Test { type Event = (); } impl xassets::Trait for Test {