Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
plugin
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
link33
plugin
Commits
2baff87a
Commit
2baff87a
authored
Dec 20, 2019
by
harrylee
Committed by
vipwzw
Dec 26, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ajust code for table
parent
2dfb0996
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
73 additions
and
140 deletions
+73
-140
README.md
plugin/dapp/exchange/executor/README.md
+1
-1
exchange_test.go
plugin/dapp/exchange/executor/exchange_test.go
+4
-6
exchangedb.go
plugin/dapp/exchange/executor/exchangedb.go
+19
-8
exec_local.go
plugin/dapp/exchange/executor/exec_local.go
+20
-55
query.go
plugin/dapp/exchange/executor/query.go
+2
-2
tables.go
plugin/dapp/exchange/executor/tables.go
+22
-63
exchange.proto
plugin/dapp/exchange/proto/exchange.proto
+1
-1
exchange.go
plugin/dapp/exchange/types/exchange.go
+4
-4
exchange.pb.go
plugin/dapp/exchange/types/exchange.pb.go
+0
-0
No files found.
plugin/dapp/exchange/executor/README.md
View file @
2baff87a
...
@@ -11,7 +11,7 @@
...
@@ -11,7 +11,7 @@
查询方法名称|功能
查询方法名称|功能
-----|----
-----|----
QueryMarketDepth|获取指定交易资产的市场深度
QueryMarketDepth|获取指定交易资产的市场深度
Query
CompletedOrderList|实时获取指定交易对最新的成交
信息
Query
HistoryOrderList|实时获取指定交易对已经成交的订单
信息
QueryOrder|根据orderID订单号查询具体的订单信息
QueryOrder|根据orderID订单号查询具体的订单信息
QueryOrderList|根据用户地址和订单状态(ordered,completed,revoked),实时地获取相应相应的订单详情
QueryOrderList|根据用户地址和订单状态(ordered,completed,revoked),实时地获取相应相应的订单详情
...
...
plugin/dapp/exchange/executor/exchange_test.go
View file @
2baff87a
...
@@ -240,8 +240,8 @@ func TestExchange(t *testing.T) {
...
@@ -240,8 +240,8 @@ func TestExchange(t *testing.T) {
//市场深度应该改变
//市场深度应该改变
assert
.
Equal
(
t
,
5
*
types
.
Coin
,
reply1
.
List
[
0
]
.
GetAmount
())
assert
.
Equal
(
t
,
5
*
types
.
Coin
,
reply1
.
List
[
0
]
.
GetAmount
())
//Query
Completed
OrderList
//Query
History
OrderList
msg
,
err
=
exec
.
Query
(
et
.
FuncNameQuery
CompletedOrderList
,
types
.
Encode
(
&
et
.
QueryCompleted
OrderList
{
LeftAsset
:
&
et
.
Asset
{
Symbol
:
"bty"
,
Execer
:
"coins"
},
msg
,
err
=
exec
.
Query
(
et
.
FuncNameQuery
HistoryOrderList
,
types
.
Encode
(
&
et
.
QueryHistory
OrderList
{
LeftAsset
:
&
et
.
Asset
{
Symbol
:
"bty"
,
Execer
:
"coins"
},
RightAsset
:
&
et
.
Asset
{
Execer
:
"token"
,
Symbol
:
"CCNY"
}}))
RightAsset
:
&
et
.
Asset
{
Execer
:
"token"
,
Symbol
:
"CCNY"
}}))
if
err
!=
nil
{
if
err
!=
nil
{
t
.
Error
(
err
)
t
.
Error
(
err
)
...
@@ -831,14 +831,12 @@ func TestCheckPrice(t *testing.T) {
...
@@ -831,14 +831,12 @@ func TestCheckPrice(t *testing.T) {
}
}
func
TestRawMeta
(
t
*
testing
.
T
)
{
func
TestRawMeta
(
t
*
testing
.
T
)
{
CompletedOrderRow
:=
NewCompleted
OrderRow
()
HistoryOrderRow
:=
NewHistory
OrderRow
()
t
.
Log
(
Completed
OrderRow
.
Get
(
"index"
))
t
.
Log
(
History
OrderRow
.
Get
(
"index"
))
MarketDepthRow
:=
NewMarketDepthRow
()
MarketDepthRow
:=
NewMarketDepthRow
()
t
.
Log
(
MarketDepthRow
.
Get
(
"price"
))
t
.
Log
(
MarketDepthRow
.
Get
(
"price"
))
marketOrderRow
:=
NewOrderRow
()
marketOrderRow
:=
NewOrderRow
()
t
.
Log
(
marketOrderRow
.
Get
(
"orderID"
))
t
.
Log
(
marketOrderRow
.
Get
(
"orderID"
))
UserOrderRow
:=
NewUserOrderRow
()
t
.
Log
(
UserOrderRow
.
Get
(
"index"
))
}
}
func
TestKV
(
t
*
testing
.
T
)
{
func
TestKV
(
t
*
testing
.
T
)
{
...
...
plugin/dapp/exchange/executor/exchangedb.go
View file @
2baff87a
...
@@ -585,19 +585,20 @@ func QueryMarketDepth(localdb dbm.KV, left, right *et.Asset, op int32, primaryKe
...
@@ -585,19 +585,20 @@ func QueryMarketDepth(localdb dbm.KV, left, right *et.Asset, op int32, primaryKe
return
&
list
,
nil
return
&
list
,
nil
}
}
//Query
Completed
OrderList
//Query
History
OrderList
func
Query
Completed
OrderList
(
localdb
dbm
.
KV
,
left
,
right
*
et
.
Asset
,
primaryKey
string
,
count
,
direction
int32
)
(
types
.
Message
,
error
)
{
func
Query
History
OrderList
(
localdb
dbm
.
KV
,
left
,
right
*
et
.
Asset
,
primaryKey
string
,
count
,
direction
int32
)
(
types
.
Message
,
error
)
{
table
:=
New
Completed
OrderTable
(
localdb
)
table
:=
New
History
OrderTable
(
localdb
)
prefix
:=
[]
byte
(
fmt
.
Sprintf
(
"%s:%s"
,
left
.
Symbol
,
right
.
Symbol
))
prefix
:=
[]
byte
(
fmt
.
Sprintf
(
"%s:%s"
,
left
.
Symbol
,
right
.
Symbol
))
indexName
:=
"name"
if
count
==
0
{
if
count
==
0
{
count
=
et
.
Count
count
=
et
.
Count
}
}
var
rows
[]
*
tab
.
Row
var
rows
[]
*
tab
.
Row
var
err
error
var
err
error
if
primaryKey
==
""
{
//第一次查询,默认展示最新得成交记录
if
primaryKey
==
""
{
//第一次查询,默认展示最新得成交记录
rows
,
err
=
table
.
ListIndex
(
"index"
,
prefix
,
nil
,
count
,
direction
)
rows
,
err
=
table
.
ListIndex
(
indexName
,
prefix
,
nil
,
count
,
direction
)
}
else
{
}
else
{
rows
,
err
=
table
.
ListIndex
(
"index"
,
prefix
,
[]
byte
(
primaryKey
),
count
,
direction
)
rows
,
err
=
table
.
ListIndex
(
indexName
,
prefix
,
[]
byte
(
primaryKey
),
count
,
direction
)
}
}
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"QueryCompletedOrderList."
,
"left"
,
left
,
"right"
,
right
,
"err"
,
err
.
Error
())
elog
.
Error
(
"QueryCompletedOrderList."
,
"left"
,
left
,
"right"
,
right
,
"err"
,
err
.
Error
())
...
@@ -607,6 +608,10 @@ func QueryCompletedOrderList(localdb dbm.KV, left, right *et.Asset, primaryKey s
...
@@ -607,6 +608,10 @@ func QueryCompletedOrderList(localdb dbm.KV, left, right *et.Asset, primaryKey s
var
orderList
et
.
OrderList
var
orderList
et
.
OrderList
for
_
,
row
:=
range
rows
{
for
_
,
row
:=
range
rows
{
order
:=
row
.
Data
.
(
*
et
.
Order
)
order
:=
row
.
Data
.
(
*
et
.
Order
)
//因为这张表里面记录了 completed,revoked 两种状态的订单,所以需要过滤
if
order
.
Status
==
et
.
Revoked
{
continue
}
//替换已经成交得量
//替换已经成交得量
order
.
Executed
=
order
.
GetLimitOrder
()
.
Amount
-
order
.
Balance
order
.
Executed
=
order
.
GetLimitOrder
()
.
Amount
-
order
.
Balance
orderList
.
List
=
append
(
orderList
.
List
,
order
)
orderList
.
List
=
append
(
orderList
.
List
,
order
)
...
@@ -620,17 +625,23 @@ func QueryCompletedOrderList(localdb dbm.KV, left, right *et.Asset, primaryKey s
...
@@ -620,17 +625,23 @@ func QueryCompletedOrderList(localdb dbm.KV, left, right *et.Asset, primaryKey s
//QueryOrderList,默认展示最新的
//QueryOrderList,默认展示最新的
func
QueryOrderList
(
localdb
dbm
.
KV
,
statedb
dbm
.
KV
,
addr
string
,
status
,
count
,
direction
int32
,
primaryKey
string
)
(
types
.
Message
,
error
)
{
func
QueryOrderList
(
localdb
dbm
.
KV
,
statedb
dbm
.
KV
,
addr
string
,
status
,
count
,
direction
int32
,
primaryKey
string
)
(
types
.
Message
,
error
)
{
table
:=
NewUserOrderTable
(
localdb
)
var
table
*
tab
.
Table
if
status
==
et
.
Completed
||
status
==
et
.
Revoked
{
table
=
NewHistoryOrderTable
(
localdb
)
}
else
{
table
=
NewMarketOrderTable
(
localdb
)
}
prefix
:=
[]
byte
(
fmt
.
Sprintf
(
"%s:%d"
,
addr
,
status
))
prefix
:=
[]
byte
(
fmt
.
Sprintf
(
"%s:%d"
,
addr
,
status
))
indexName
:=
"addr_status"
if
count
==
0
{
if
count
==
0
{
count
=
et
.
Count
count
=
et
.
Count
}
}
var
rows
[]
*
tab
.
Row
var
rows
[]
*
tab
.
Row
var
err
error
var
err
error
if
primaryKey
==
""
{
//第一次查询,默认展示最新得成交记录
if
primaryKey
==
""
{
//第一次查询,默认展示最新得成交记录
rows
,
err
=
table
.
ListIndex
(
"index"
,
prefix
,
nil
,
count
,
direction
)
rows
,
err
=
table
.
ListIndex
(
indexName
,
prefix
,
nil
,
count
,
direction
)
}
else
{
}
else
{
rows
,
err
=
table
.
ListIndex
(
"index"
,
prefix
,
[]
byte
(
primaryKey
),
count
,
direction
)
rows
,
err
=
table
.
ListIndex
(
indexName
,
prefix
,
[]
byte
(
primaryKey
),
count
,
direction
)
}
}
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"QueryOrderList."
,
"addr"
,
addr
,
"err"
,
err
.
Error
())
elog
.
Error
(
"QueryOrderList."
,
"addr"
,
addr
,
"err"
,
err
.
Error
())
...
...
plugin/dapp/exchange/executor/exec_local.go
View file @
2baff87a
...
@@ -66,16 +66,14 @@ func (e *exchange) ExecLocal_RevokeOrder(payload *ety.RevokeOrder, tx *types.Tra
...
@@ -66,16 +66,14 @@ func (e *exchange) ExecLocal_RevokeOrder(payload *ety.RevokeOrder, tx *types.Tra
//设置自动回滚
//设置自动回滚
func
(
e
*
exchange
)
addAutoRollBack
(
tx
*
types
.
Transaction
,
kv
[]
*
types
.
KeyValue
)
*
types
.
LocalDBSet
{
func
(
e
*
exchange
)
addAutoRollBack
(
tx
*
types
.
Transaction
,
kv
[]
*
types
.
KeyValue
)
*
types
.
LocalDBSet
{
dbSet
:=
&
types
.
LocalDBSet
{}
dbSet
:=
&
types
.
LocalDBSet
{}
dbSet
.
KV
=
e
.
AddRollbackKV
(
tx
,
tx
.
Execer
,
kv
)
dbSet
.
KV
=
e
.
AddRollbackKV
(
tx
,
tx
.
Execer
,
kv
)
return
dbSet
return
dbSet
}
}
func
(
e
*
exchange
)
updateIndex
(
receipt
*
ety
.
ReceiptExchange
)
(
kvs
[]
*
types
.
KeyValue
)
{
func
(
e
*
exchange
)
updateIndex
(
receipt
*
ety
.
ReceiptExchange
)
(
kvs
[]
*
types
.
KeyValue
)
{
completedTable
:=
NewCompleted
OrderTable
(
e
.
GetLocalDB
())
historyTable
:=
NewHistory
OrderTable
(
e
.
GetLocalDB
())
marketTable
:=
NewMarketDepthTable
(
e
.
GetLocalDB
())
marketTable
:=
NewMarketDepthTable
(
e
.
GetLocalDB
())
userTable
:=
NewUserOrderTable
(
e
.
GetLocalDB
())
orderTable
:=
NewMarketOrderTable
(
e
.
GetLocalDB
())
orderTable
:=
NewMarketOrderTable
(
e
.
GetLocalDB
())
switch
receipt
.
Order
.
Status
{
switch
receipt
.
Order
.
Status
{
case
ety
.
Ordered
:
case
ety
.
Ordered
:
...
@@ -111,30 +109,26 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
...
@@ -111,30 +109,26 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
elog
.
Error
(
"updateIndex"
,
"orderTable.Replace"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"orderTable.Replace"
,
err
.
Error
())
return
nil
return
nil
}
}
err
=
userTable
.
Replace
(
order
)
if
err
!=
nil
{
return
nil
}
if
len
(
receipt
.
MatchOrders
)
>
0
{
if
len
(
receipt
.
MatchOrders
)
>
0
{
//撮合交易更新
//撮合交易更新
cache
:=
make
(
map
[
float64
]
int64
)
cache
:=
make
(
map
[
float64
]
int64
)
for
i
,
matchOrder
:=
range
receipt
.
MatchOrders
{
for
i
,
matchOrder
:=
range
receipt
.
MatchOrders
{
if
matchOrder
.
Status
==
ety
.
Completed
{
if
matchOrder
.
Status
==
ety
.
Completed
{
// 删除原有状态orderID
// 删除原有状态orderID
matchOrder
.
Status
=
ety
.
Ordered
err
=
orderTable
.
DelRow
(
matchOrder
)
err
=
orderTable
.
DelRow
(
matchOrder
)
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"orderTable.DelRow"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"orderTable.DelRow"
,
err
.
Error
())
return
nil
return
nil
}
}
//删除原有状态orderID
//索引index,改为当前的index
matchOrder
.
Status
=
ety
.
Ordered
userTable
.
DelRow
(
matchOrder
)
//更新状态为已完成,索引index,改为当前的index
matchOrder
.
Status
=
ety
.
Completed
matchOrder
.
Status
=
ety
.
Completed
matchOrder
.
Index
=
index
+
int64
(
i
+
1
)
matchOrder
.
Index
=
index
+
int64
(
i
+
1
)
userTable
.
Replace
(
matchOrder
)
err
=
historyTable
.
Replace
(
matchOrder
)
//calcCompletedOrderKey
if
err
!=
nil
{
completedTable
.
Replace
(
matchOrder
)
elog
.
Error
(
"updateIndex"
,
"historyTable.Replace"
,
err
.
Error
())
return
nil
}
}
}
if
matchOrder
.
Status
==
ety
.
Ordered
{
if
matchOrder
.
Status
==
ety
.
Ordered
{
//更新数据
//更新数据
...
@@ -183,14 +177,9 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
...
@@ -183,14 +177,9 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
right
:=
receipt
.
GetOrder
()
.
GetLimitOrder
()
.
GetRightAsset
()
right
:=
receipt
.
GetOrder
()
.
GetLimitOrder
()
.
GetRightAsset
()
op
:=
receipt
.
GetOrder
()
.
GetLimitOrder
()
.
GetOp
()
op
:=
receipt
.
GetOrder
()
.
GetLimitOrder
()
.
GetOp
()
index
:=
receipt
.
GetIndex
()
index
:=
receipt
.
GetIndex
()
err
:=
userTable
.
Replace
(
receipt
.
GetOrder
())
err
:=
historyTable
.
Replace
(
receipt
.
GetOrder
())
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"userTable.Replace"
,
err
.
Error
())
return
nil
}
err
=
completedTable
.
Replace
(
receipt
.
Order
)
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"
completed
Table.Replace"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"
history
Table.Replace"
,
err
.
Error
())
return
nil
return
nil
}
}
cache
:=
make
(
map
[
float64
]
int64
)
cache
:=
make
(
map
[
float64
]
int64
)
...
@@ -199,30 +188,18 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
...
@@ -199,30 +188,18 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
for
i
,
matchOrder
:=
range
receipt
.
MatchOrders
{
for
i
,
matchOrder
:=
range
receipt
.
MatchOrders
{
if
matchOrder
.
Status
==
ety
.
Completed
{
if
matchOrder
.
Status
==
ety
.
Completed
{
// 删除原有状态orderID
// 删除原有状态orderID
matchOrder
.
Status
=
ety
.
Ordered
err
=
orderTable
.
DelRow
(
matchOrder
)
err
=
orderTable
.
DelRow
(
matchOrder
)
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"orderTable.DelRow"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"orderTable.DelRow"
,
err
.
Error
())
return
nil
return
nil
}
}
//删除原有状态orderID
//索引index,改为当前的index
matchOrder
.
Status
=
ety
.
Ordered
err
=
userTable
.
DelRow
(
matchOrder
)
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"userTable.DelRow"
,
err
.
Error
())
return
nil
}
//更新状态为已完成,更新索引
matchOrder
.
Status
=
ety
.
Completed
matchOrder
.
Status
=
ety
.
Completed
matchOrder
.
Index
=
index
+
int64
(
i
+
1
)
matchOrder
.
Index
=
index
+
int64
(
i
+
1
)
err
=
userTable
.
Replace
(
matchOrder
)
err
=
historyTable
.
Replace
(
matchOrder
)
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"userTable.Replace"
,
err
.
Error
())
return
nil
}
//calcCompletedOrderKey
err
=
completedTable
.
Replace
(
matchOrder
)
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"
completed
Table.Replace"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"
history
Table.Replace"
,
err
.
Error
())
return
nil
return
nil
}
}
}
}
...
@@ -299,25 +276,19 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
...
@@ -299,25 +276,19 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
return
nil
return
nil
}
}
}
}
// 删除原有状态orderID
err
=
orderTable
.
DelRow
(
order
)
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"orderTable.DelRow"
,
err
.
Error
())
return
nil
}
//删除原有状态orderID
//删除原有状态orderID
order
.
Status
=
ety
.
Ordered
order
.
Status
=
ety
.
Ordered
err
=
us
erTable
.
DelRow
(
order
)
err
=
ord
erTable
.
DelRow
(
order
)
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"
us
erTable.DelRow"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"
ord
erTable.DelRow"
,
err
.
Error
())
return
nil
return
nil
}
}
order
.
Status
=
ety
.
Revoked
order
.
Status
=
ety
.
Revoked
order
.
Index
=
index
order
.
Index
=
index
//添加撤销的订单
//添加撤销的订单
err
=
user
Table
.
Replace
(
order
)
err
=
history
Table
.
Replace
(
order
)
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"
user
Table.Replace"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"
history
Table.Replace"
,
err
.
Error
())
return
nil
return
nil
}
}
}
}
...
@@ -328,21 +299,15 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
...
@@ -328,21 +299,15 @@ func (e *exchange) updateIndex(receipt *ety.ReceiptExchange) (kvs []*types.KeyVa
return
nil
return
nil
}
}
kvs
=
append
(
kvs
,
kv
...
)
kvs
=
append
(
kvs
,
kv
...
)
kv
,
err
=
userTable
.
Save
()
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"userTable.Save"
,
err
.
Error
())
return
nil
}
kvs
=
append
(
kvs
,
kv
...
)
kv
,
err
=
orderTable
.
Save
()
kv
,
err
=
orderTable
.
Save
()
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"orderTable.Save"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"orderTable.Save"
,
err
.
Error
())
return
nil
return
nil
}
}
kvs
=
append
(
kvs
,
kv
...
)
kvs
=
append
(
kvs
,
kv
...
)
kv
,
err
=
completed
Table
.
Save
()
kv
,
err
=
history
Table
.
Save
()
if
err
!=
nil
{
if
err
!=
nil
{
elog
.
Error
(
"updateIndex"
,
"
completed
Table.Save"
,
err
.
Error
())
elog
.
Error
(
"updateIndex"
,
"
history
Table.Save"
,
err
.
Error
())
return
nil
return
nil
}
}
kvs
=
append
(
kvs
,
kv
...
)
kvs
=
append
(
kvs
,
kv
...
)
...
...
plugin/dapp/exchange/executor/query.go
View file @
2baff87a
...
@@ -24,7 +24,7 @@ func (s *exchange) Query_QueryMarketDepth(in *et.QueryMarketDepth) (types.Messag
...
@@ -24,7 +24,7 @@ func (s *exchange) Query_QueryMarketDepth(in *et.QueryMarketDepth) (types.Messag
}
}
//查询已经完成得订单
//查询已经完成得订单
func
(
s
*
exchange
)
Query_Query
CompletedOrderList
(
in
*
et
.
QueryCompleted
OrderList
)
(
types
.
Message
,
error
)
{
func
(
s
*
exchange
)
Query_Query
HistoryOrderList
(
in
*
et
.
QueryHistory
OrderList
)
(
types
.
Message
,
error
)
{
if
!
CheckExchangeAsset
(
in
.
LeftAsset
,
in
.
RightAsset
)
{
if
!
CheckExchangeAsset
(
in
.
LeftAsset
,
in
.
RightAsset
)
{
return
nil
,
et
.
ErrAsset
return
nil
,
et
.
ErrAsset
}
}
...
@@ -35,7 +35,7 @@ func (s *exchange) Query_QueryCompletedOrderList(in *et.QueryCompletedOrderList)
...
@@ -35,7 +35,7 @@ func (s *exchange) Query_QueryCompletedOrderList(in *et.QueryCompletedOrderList)
if
!
CheckDirection
(
in
.
Direction
)
{
if
!
CheckDirection
(
in
.
Direction
)
{
return
nil
,
et
.
ErrDirection
return
nil
,
et
.
ErrDirection
}
}
return
Query
Completed
OrderList
(
s
.
GetLocalDB
(),
in
.
LeftAsset
,
in
.
RightAsset
,
in
.
PrimaryKey
,
in
.
Count
,
in
.
Direction
)
return
Query
History
OrderList
(
s
.
GetLocalDB
(),
in
.
LeftAsset
,
in
.
RightAsset
,
in
.
PrimaryKey
,
in
.
Count
,
in
.
Direction
)
}
}
//根据orderID查询订单信息
//根据orderID查询订单信息
...
...
plugin/dapp/exchange/executor/tables.go
View file @
2baff87a
...
@@ -40,22 +40,14 @@ var opt_exchange_order = &table.Option{
...
@@ -40,22 +40,14 @@ var opt_exchange_order = &table.Option{
Prefix
:
KeyPrefixLocalDB
,
Prefix
:
KeyPrefixLocalDB
,
Name
:
"order"
,
Name
:
"order"
,
Primary
:
"orderID"
,
Primary
:
"orderID"
,
Index
:
[]
string
{
"market_order"
},
Index
:
[]
string
{
"market_order"
,
"addr_status"
},
}
}
//根据地址和状态,index是实时在变化,要有先后顺序
var
opt_exchange_history
=
&
table
.
Option
{
var
opt_exchange_user_order
=
&
table
.
Option
{
Prefix
:
KeyPrefixLocalDB
,
Prefix
:
KeyPrefixLocalDB
,
Name
:
"
UserOrder
"
,
Name
:
"
history
"
,
Primary
:
"index"
,
Primary
:
"index"
,
Index
:
nil
,
Index
:
[]
string
{
"name"
,
"addr_status"
},
}
var
opt_exchange_completed
=
&
table
.
Option
{
Prefix
:
KeyPrefixLocalDB
,
Name
:
"completed"
,
Primary
:
"index"
,
Index
:
nil
,
}
}
//NewTable 新建表
//NewTable 新建表
...
@@ -77,17 +69,10 @@ func NewMarketOrderTable(kvdb db.KV) *table.Table {
...
@@ -77,17 +69,10 @@ func NewMarketOrderTable(kvdb db.KV) *table.Table {
return
table
return
table
}
}
func
NewUserOrderTable
(
kvdb
db
.
KV
)
*
table
.
Table
{
rowmeta
:=
NewUserOrderRow
()
func
NewHistoryOrderTable
(
kvdb
db
.
KV
)
*
table
.
Table
{
table
,
err
:=
table
.
NewTable
(
rowmeta
,
kvdb
,
opt_exchange_user_order
)
rowmeta
:=
NewHistoryOrderRow
()
if
err
!=
nil
{
table
,
err
:=
table
.
NewTable
(
rowmeta
,
kvdb
,
opt_exchange_history
)
panic
(
err
)
}
return
table
}
func
NewCompletedOrderTable
(
kvdb
db
.
KV
)
*
table
.
Table
{
rowmeta
:=
NewCompletedOrderRow
()
table
,
err
:=
table
.
NewTable
(
rowmeta
,
kvdb
,
opt_exchange_completed
)
if
err
!=
nil
{
if
err
!=
nil
{
panic
(
err
)
panic
(
err
)
}
}
...
@@ -124,57 +109,27 @@ func (r *OrderRow) Get(key string) ([]byte, error) {
...
@@ -124,57 +109,27 @@ func (r *OrderRow) Get(key string) ([]byte, error) {
return
[]
byte
(
fmt
.
Sprintf
(
"%022d"
,
r
.
OrderID
)),
nil
return
[]
byte
(
fmt
.
Sprintf
(
"%022d"
,
r
.
OrderID
)),
nil
}
else
if
key
==
"market_order"
{
}
else
if
key
==
"market_order"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%s:%d:%016d"
,
r
.
GetLimitOrder
()
.
LeftAsset
.
GetSymbol
(),
r
.
GetLimitOrder
()
.
RightAsset
.
GetSymbol
(),
r
.
GetLimitOrder
()
.
Op
,
int64
(
Truncate
(
r
.
GetLimitOrder
()
.
Price
*
float64
(
1e8
))))),
nil
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%s:%d:%016d"
,
r
.
GetLimitOrder
()
.
LeftAsset
.
GetSymbol
(),
r
.
GetLimitOrder
()
.
RightAsset
.
GetSymbol
(),
r
.
GetLimitOrder
()
.
Op
,
int64
(
Truncate
(
r
.
GetLimitOrder
()
.
Price
*
float64
(
1e8
))))),
nil
}
else
if
key
==
"addr_status"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%d"
,
r
.
Addr
,
r
.
Status
)),
nil
}
}
return
nil
,
types
.
ErrNotFound
return
nil
,
types
.
ErrNotFound
}
}
//UserOrderRow table meta 结构
//HistoryOrderRow table meta 结构
type
UserOrderRow
struct
{
type
HistoryOrderRow
struct
{
*
ety
.
Order
}
//NewOrderRow 新建一个meta 结构
func
NewUserOrderRow
()
*
UserOrderRow
{
return
&
UserOrderRow
{
Order
:
&
ety
.
Order
{
Value
:
&
ety
.
Order_LimitOrder
{
LimitOrder
:
&
ety
.
LimitOrder
{}}}}
}
//CreateRow
func
(
r
*
UserOrderRow
)
CreateRow
()
*
table
.
Row
{
return
&
table
.
Row
{
Data
:
&
ety
.
Order
{}}
}
//SetPayload 设置数据
func
(
r
*
UserOrderRow
)
SetPayload
(
data
types
.
Message
)
error
{
if
txdata
,
ok
:=
data
.
(
*
ety
.
Order
);
ok
{
r
.
Order
=
txdata
return
nil
}
return
types
.
ErrTypeAsset
}
//Get 按照indexName 查询 indexValue
func
(
r
*
UserOrderRow
)
Get
(
key
string
)
([]
byte
,
error
)
{
if
key
==
"index"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%d:%022d"
,
r
.
Addr
,
r
.
Status
,
r
.
Index
)),
nil
}
return
nil
,
types
.
ErrNotFound
}
//CompletedOrderRow table meta 结构
type
CompletedOrderRow
struct
{
*
ety
.
Order
*
ety
.
Order
}
}
func
New
CompletedOrderRow
()
*
Completed
OrderRow
{
func
New
HistoryOrderRow
()
*
History
OrderRow
{
return
&
Completed
OrderRow
{
Order
:
&
ety
.
Order
{
Value
:
&
ety
.
Order_LimitOrder
{
LimitOrder
:
&
ety
.
LimitOrder
{}}}}
return
&
History
OrderRow
{
Order
:
&
ety
.
Order
{
Value
:
&
ety
.
Order_LimitOrder
{
LimitOrder
:
&
ety
.
LimitOrder
{}}}}
}
}
func
(
m
*
Completed
OrderRow
)
CreateRow
()
*
table
.
Row
{
func
(
m
*
History
OrderRow
)
CreateRow
()
*
table
.
Row
{
return
&
table
.
Row
{
Data
:
&
ety
.
Order
{
Value
:
&
ety
.
Order_LimitOrder
{
LimitOrder
:
&
ety
.
LimitOrder
{}}}}
return
&
table
.
Row
{
Data
:
&
ety
.
Order
{
Value
:
&
ety
.
Order_LimitOrder
{
LimitOrder
:
&
ety
.
LimitOrder
{}}}}
}
}
//SetPayload 设置数据
//SetPayload 设置数据
func
(
m
*
Completed
OrderRow
)
SetPayload
(
data
types
.
Message
)
error
{
func
(
m
*
History
OrderRow
)
SetPayload
(
data
types
.
Message
)
error
{
if
txdata
,
ok
:=
data
.
(
*
ety
.
Order
);
ok
{
if
txdata
,
ok
:=
data
.
(
*
ety
.
Order
);
ok
{
m
.
Order
=
txdata
m
.
Order
=
txdata
return
nil
return
nil
...
@@ -183,9 +138,13 @@ func (m *CompletedOrderRow) SetPayload(data types.Message) error {
...
@@ -183,9 +138,13 @@ func (m *CompletedOrderRow) SetPayload(data types.Message) error {
}
}
//Get 按照indexName 查询 indexValue
//Get 按照indexName 查询 indexValue
func
(
m
*
Completed
OrderRow
)
Get
(
key
string
)
([]
byte
,
error
)
{
func
(
m
*
History
OrderRow
)
Get
(
key
string
)
([]
byte
,
error
)
{
if
key
==
"index"
{
if
key
==
"index"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%s:%022d"
,
m
.
GetLimitOrder
()
.
LeftAsset
.
GetSymbol
(),
m
.
GetLimitOrder
()
.
RightAsset
.
GetSymbol
(),
m
.
Index
)),
nil
return
[]
byte
(
fmt
.
Sprintf
(
"%022d"
,
m
.
Index
)),
nil
}
else
if
key
==
"name"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%s"
,
m
.
GetLimitOrder
()
.
LeftAsset
.
GetSymbol
(),
m
.
GetLimitOrder
()
.
RightAsset
.
GetSymbol
())),
nil
}
else
if
key
==
"addr_status"
{
return
[]
byte
(
fmt
.
Sprintf
(
"%s:%d"
,
m
.
Addr
,
m
.
Status
)),
nil
}
}
return
nil
,
types
.
ErrNotFound
return
nil
,
types
.
ErrNotFound
}
}
...
...
plugin/dapp/exchange/proto/exchange.proto
View file @
2baff87a
...
@@ -105,7 +105,7 @@ message MarketDepthList {
...
@@ -105,7 +105,7 @@ message MarketDepthList {
}
}
//查询最新得成交信息,外部接口
//查询最新得成交信息,外部接口
message
Query
Completed
OrderList
{
message
Query
History
OrderList
{
//资产1
//资产1
asset
leftAsset
=
1
;
asset
leftAsset
=
1
;
//资产2
//资产2
...
...
plugin/dapp/exchange/types/exchange.go
View file @
2baff87a
...
@@ -23,10 +23,10 @@ const (
...
@@ -23,10 +23,10 @@ const (
NameMarketOrderAction
=
"MarketOrder"
NameMarketOrderAction
=
"MarketOrder"
NameRevokeOrderAction
=
"RevokeOrder"
NameRevokeOrderAction
=
"RevokeOrder"
FuncNameQueryMarketDepth
=
"QueryMarketDepth"
FuncNameQueryMarketDepth
=
"QueryMarketDepth"
FuncNameQuery
CompletedOrderList
=
"QueryCompleted
OrderList"
FuncNameQuery
HistoryOrderList
=
"QueryHistory
OrderList"
FuncNameQueryOrder
=
"QueryOrder"
FuncNameQueryOrder
=
"QueryOrder"
FuncNameQueryOrderList
=
"QueryOrderList"
FuncNameQueryOrderList
=
"QueryOrderList"
)
)
// log类型id值
// log类型id值
...
...
plugin/dapp/exchange/types/exchange.pb.go
View file @
2baff87a
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment