Commit 26060951 authored by linj's avatar linj

impl GetOnesSellOrder

parent f64e3c5e
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"strings" "strings"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
"github.com/33cn/chain33/common/db/table"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/trade/types" pty "github.com/33cn/plugin/plugin/dapp/trade/types"
) )
...@@ -45,6 +46,10 @@ func (t *trade) GetTokenOrderByStatus(isSell bool, req *pty.ReqTokenSellOrder, s ...@@ -45,6 +46,10 @@ func (t *trade) GetTokenOrderByStatus(isSell bool, req *pty.ReqTokenSellOrder, s
return nil, err return nil, err
} }
return t.toTradeOrders(rows)
}
func (t *trade) toTradeOrders(rows []*table.Row) (*pty.ReplyTradeOrders, error) {
var replys pty.ReplyTradeOrders var replys pty.ReplyTradeOrders
cfg := t.GetAPI().GetConfig() cfg := t.GetAPI().GetConfig()
for _, row := range rows { for _, row := range rows {
...@@ -95,37 +100,55 @@ func (t *trade) Query_GetOnesBuyOrder(req *pty.ReqAddrAssets) (types.Message, er ...@@ -95,37 +100,55 @@ func (t *trade) Query_GetOnesBuyOrder(req *pty.ReqAddrAssets) (types.Message, er
// GetOnesSellOrder by address or address-token // GetOnesSellOrder by address or address-token
func (t *trade) GetOnesSellOrder(addrTokens *pty.ReqAddrAssets) (types.Message, error) { func (t *trade) GetOnesSellOrder(addrTokens *pty.ReqAddrAssets) (types.Message, error) {
var keys [][]byte var order pty.LocalOrder
order.Owner = addrTokens.Addr
order.IsSellOrder = true
if 0 == len(addrTokens.Token) { if 0 == len(addrTokens.Token) {
values, err := t.GetLocalDB().List(calcOnesSellOrderPrefixAddr(addrTokens.Addr), nil, 0, 0) rows, err := listV2(t.GetLocalDB(), "owner_isSell", &order, 0, 0)
if err != nil { if err != nil {
tradelog.Error("GetOnesSellOrder", "err", err)
return nil, err return nil, err
} }
if len(values) != 0 { var replys pty.ReplyTradeOrders
tradelog.Debug("trade Query", "get number of sellID", len(values)) cfg := t.GetAPI().GetConfig()
keys = append(keys, values...) for _, row := range rows {
} o, ok := row.Data.(*pty.LocalOrder)
} else { if !ok {
for _, token := range addrTokens.Token { tradelog.Error("GetOnesOrderWithStatus", "err", "bad row type")
values, err := t.GetLocalDB().List(calcOnesSellOrderPrefixToken(token, addrTokens.Addr), nil, 0, 0) return nil, types.ErrTypeAsset
tradelog.Debug("trade Query", "Begin to list addr with token", token, "got values", len(values))
if err != nil && err != types.ErrNotFound {
return nil, err
}
if len(values) != 0 {
keys = append(keys, values...)
} }
reply := fmtReply(cfg, o)
replys.Orders = append(replys.Orders, reply)
} }
return &replys, nil
} }
var replys pty.ReplyTradeOrders var replys pty.ReplyTradeOrders
for _, key := range keys { for _, token := range addrTokens.Token {
reply := t.loadOrderFromKey(key) order.AssetSymbol = token
if reply == nil { order.AssetExec = defaultAssetExec
order.PriceSymbol = t.GetAPI().GetConfig().GetCoinSymbol()
order.PriceExec = defaultAssetExec
rows, err := listV2(t.GetLocalDB(), "owner_isSell", &order, 0, 0)
if err != nil && err != types.ErrNotFound {
return nil, err
}
if len(rows) == 0 {
continue continue
} }
tradelog.Debug("trade Query", "getSellOrderFromID", string(key)) var replys pty.ReplyTradeOrders
replys.Orders = append(replys.Orders, reply) cfg := t.GetAPI().GetConfig()
for _, row := range rows {
o, ok := row.Data.(*pty.LocalOrder)
if !ok {
tradelog.Error("GetOnesOrderWithStatus", "err", "bad row type")
return nil, types.ErrTypeAsset
}
reply := fmtReply(cfg, o)
replys.Orders = append(replys.Orders, reply)
}
} }
return &replys, nil return &replys, nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment