Commit b9a995d4 authored by linj's avatar linj Committed by vipwzw

impl query for unfreeze list

parent fc743083
......@@ -10,6 +10,7 @@ import (
dbm "github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/unfreeze/types"
"github.com/33cn/chain33/common/db/table"
)
// Query_GetUnfreezeWithdraw 查询合约可提币量
......@@ -22,6 +23,15 @@ func (u *Unfreeze) Query_GetUnfreeze(in *types.ReqString) (types.Message, error)
return QueryUnfreeze(u.GetStateDB(), in.GetData())
}
// Query_ListUnfreeze 查询合约可提币量
func (u *Unfreeze) Query_ListUnfreezeByCreator(in *pty.ReqUnfreezes) (types.Message, error) {
return ListUnfreezeByCreator(u.GetLocalDB(), in)
}
func (u *Unfreeze) Query_ListUnfreezeByBeneficiary(in *pty.ReqUnfreezes) (types.Message, error) {
return ListUnfreezeByBeneficiary(u.GetLocalDB(), in)
}
// QueryWithdraw 查询可提币状态
func QueryWithdraw(stateDB dbm.KV, unfreezeID string) (types.Message, error) {
unfreeze, err := loadUnfreeze(unfreezeID, stateDB)
......@@ -63,3 +73,73 @@ func QueryUnfreeze(stateDB dbm.KV, unfreezeID string) (types.Message, error) {
return unfreeze, nil
}
func ListUnfreezeByCreator(ldb dbm.KVDB, req *pty.ReqUnfreezes) (types.Message, error) {
if len(req.Initiator) == 0 {
return nil, types.ErrInvalidParam
}
u := &pty.LocalUnfreeze{Unfreeze: &pty.Unfreeze{}}
u.Unfreeze.Initiator = req.Initiator
if len(req.FromKey) > 0 {
u.TxIndex = req.FromKey
}
rows, err := list(ldb, "init", u, req.Count, req.Direction)
if err != nil {
uflog.Error("ListUnfreezeByCreator ", "err", err, "params", req)
return nil, err
}
return fmtLocalUnfreeze(rows)
}
func ListUnfreezeByBeneficiary(ldb dbm.KVDB, req *pty.ReqUnfreezes) (types.Message, error) {
if len(req.Beneficiary) == 0 {
return nil, types.ErrInvalidParam
}
u := &pty.LocalUnfreeze{Unfreeze: &pty.Unfreeze{}}
u.Unfreeze.Beneficiary = req.Beneficiary
if len(req.FromKey) > 0 {
u.TxIndex = req.FromKey
}
rows, err := list(ldb, "beneficiary", u, req.Count, req.Direction)
if err != nil {
uflog.Error("ListUnfreezeByBeneficiary ", "err", err, "params", req)
return nil, err
}
return fmtLocalUnfreeze(rows)
}
func fmtLocalUnfreeze(rows []*table.Row) (results *pty.RespUnfreezes, err error) {
for _, row := range rows {
r, ok := row.Data.(*pty.LocalUnfreeze)
if !ok {
uflog.Error("ListUnfreeze", "err", "bad row type")
return nil, types.ErrDecode
}
v := &pty.RespUnfreeze{
UnfreezeID: r.Unfreeze.UnfreezeID,
StartTime: r.Unfreeze.StartTime,
AssetExec: r.Unfreeze.AssetExec,
AssetSymbol: r.Unfreeze.AssetSymbol,
TotalCount: r.Unfreeze.TotalCount,
Initiator: r.Unfreeze.Initiator,
Beneficiary: r.Unfreeze.Beneficiary,
Remaining: r.Unfreeze.Remaining,
Means: r.Unfreeze.Means,
Terminated: r.Unfreeze.Terminated,
Key: r.TxIndex,
}
if v.Means == pty.FixAmountX {
v.MeansOpt = &pty.RespUnfreeze_FixAmount{FixAmount: r.Unfreeze.GetFixAmount()}
} else if v.Means == pty.LeftProportionX {
v.MeansOpt = &pty.RespUnfreeze_LeftProportion{LeftProportion: r.Unfreeze.GetLeftProportion()}
}
results.Unfreeze = append(results.Unfreeze, v)
}
return
}
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