Commit 2a594640 authored by pengjun's avatar pengjun

#627 update query interfaces

parent 38119f4b
...@@ -389,21 +389,11 @@ func CollateralizeQuery(cmd *cobra.Command, args []string) { ...@@ -389,21 +389,11 @@ func CollateralizeQuery(cmd *cobra.Command, args []string) {
collateralizeID, _ := cmd.Flags().GetString("collateralizeID") collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
address, _ := cmd.Flags().GetString("address") address, _ := cmd.Flags().GetString("address")
statusStr, _ := cmd.Flags().GetString("status") statusStr, _ := cmd.Flags().GetString("status")
// indexstr, _ := cmd.Flags().GetString("index")
collateralizeIDs, _ := cmd.Flags().GetString("collateralizeIDs") collateralizeIDs, _ := cmd.Flags().GetString("collateralizeIDs")
borrowID, _ := cmd.Flags().GetString("borrowID") borrowID, _ := cmd.Flags().GetString("borrowID")
var params rpctypes.Query4Jrpc var params rpctypes.Query4Jrpc
params.Execer = pkt.CollateralizeX params.Execer = pkt.CollateralizeX
//if indexstr != "" {
// index, err := strconv.ParseInt(indexstr, 10, 64)
// if err != nil {
// fmt.Println(err)
// cmd.Help()
// return
// }
// req.Index = index
//}
var status int64 var status int64
var err error var err error
......
...@@ -310,6 +310,10 @@ func TestCollateralize(t *testing.T) { ...@@ -310,6 +310,10 @@ func TestCollateralize(t *testing.T) {
types.Encode(&pkt.ReqCollateralizeRecordByAddr{CollateralizeId: common.ToHex(collateralizeID), Addr: string(Nodes[1]), Status: 1})) types.Encode(&pkt.ReqCollateralizeRecordByAddr{CollateralizeId: common.ToHex(collateralizeID), Addr: string(Nodes[1]), Status: 1}))
assert.Nil(t, err) assert.Nil(t, err)
assert.NotNil(t, res) assert.NotNil(t, res)
res, err = exec.Query("CollateralizeRecordByAddr",
types.Encode(&pkt.ReqCollateralizeRecordByAddr{Addr: string(Nodes[1]), Status: 1}))
assert.Nil(t, err)
assert.NotNil(t, res)
// collateralize append // collateralize append
p5 := &pkt.CollateralizeAppendTx{ p5 := &pkt.CollateralizeAppendTx{
...@@ -398,6 +402,10 @@ func TestCollateralize(t *testing.T) { ...@@ -398,6 +402,10 @@ func TestCollateralize(t *testing.T) {
types.Encode(&pkt.ReqCollateralizeRecordByAddr{CollateralizeId: common.ToHex(collateralizeID), Addr: string(Nodes[1]), Status: 6})) types.Encode(&pkt.ReqCollateralizeRecordByAddr{CollateralizeId: common.ToHex(collateralizeID), Addr: string(Nodes[1]), Status: 6}))
assert.Nil(t, err) assert.Nil(t, err)
assert.NotNil(t, res) assert.NotNil(t, res)
res, err = exec.Query("CollateralizeRecordByAddr",
types.Encode(&pkt.ReqCollateralizeRecordByAddr{Addr: string(Nodes[1]), Status: 6}))
assert.Nil(t, err)
assert.NotNil(t, res)
// collateralize liquidate // collateralize liquidate
p7 := &pkt.CollateralizeBorrowTx{ p7 := &pkt.CollateralizeBorrowTx{
......
...@@ -1244,7 +1244,7 @@ func queryCollateralizeRecordByID(db dbm.KV, collateralizeID string, recordID st ...@@ -1244,7 +1244,7 @@ func queryCollateralizeRecordByID(db dbm.KV, collateralizeID string, recordID st
return nil, types.ErrNotFound return nil, types.ErrNotFound
} }
func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, collID string, recordID string) ([]*pty.BorrowRecord, error) { func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, status int32, collID string, recordID string) ([]*pty.BorrowRecord, error) {
query := pty.NewRecordTable(localdb).GetQuery(localdb) query := pty.NewRecordTable(localdb).GetQuery(localdb)
var primary []byte var primary []byte
if len(recordID) > 0 { if len(recordID) > 0 {
...@@ -1253,21 +1253,28 @@ func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, co ...@@ -1253,21 +1253,28 @@ func queryCollateralizeRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, co
var data = &pty.ReceiptCollateralize{ var data = &pty.ReceiptCollateralize{
AccountAddr: addr, AccountAddr: addr,
Status: status,
CollateralizeId: collID, CollateralizeId: collID,
} }
var rows []*table.Row var rows []*table.Row
var err error var err error
if len(collID) == 0 { if len(collID) != 0 {
rows, err = query.List("addr", data, primary, DefultCount, ListDESC) rows, err = query.List("id_addr", data, primary, DefultCount, ListDESC)
if err != nil { if err != nil {
clog.Debug("queryCollateralizeRecordByAddr.List", "index", "addr", "error", err) clog.Debug("queryCollateralizeRecordByAddr.List", "index", "id_addr", "error", err)
return nil, err
}
} else if status != 0 {
rows, err = query.List("addr_status", data, primary, DefultCount, ListDESC)
if err != nil {
clog.Debug("queryCollateralizeRecordByAddr.List", "index", "addr_status", "error", err)
return nil, err return nil, err
} }
} else { } else {
rows, err = query.List("id_addr", data, primary, DefultCount, ListDESC) rows, err = query.List("addr", data, primary, DefultCount, ListDESC)
if err != nil { if err != nil {
clog.Debug("queryCollateralizeRecordByAddr.List", "index", "id_addr", "error", err) clog.Debug("queryCollateralizeRecordByAddr.List", "index", "addr", "error", err)
return nil, err return nil, err
} }
} }
......
...@@ -102,7 +102,7 @@ func (c *Collateralize) Query_CollateralizeRecordByID(req *pty.ReqCollateralizeR ...@@ -102,7 +102,7 @@ func (c *Collateralize) Query_CollateralizeRecordByID(req *pty.ReqCollateralizeR
func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) { func (c *Collateralize) Query_CollateralizeRecordByAddr(req *pty.ReqCollateralizeRecordByAddr) (types.Message, error) {
ret := &pty.RepCollateralizeRecords{} ret := &pty.RepCollateralizeRecords{}
records, err := queryCollateralizeRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.CollateralizeId, req.RecordId) records, err := queryCollateralizeRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.Status, req.CollateralizeId, req.RecordId)
if err != nil { if err != nil {
clog.Error("Query_CollateralizeRecordByAddr", "get collateralize record error", err) clog.Error("Query_CollateralizeRecordByAddr", "get collateralize record error", err)
return nil, err return nil, err
......
...@@ -28,5 +28,6 @@ status|int32|借贷状态(1:已发行 2:价格清算告警 3:价格清 ...@@ -28,5 +28,6 @@ status|int32|借贷状态(1:已发行 2:价格清算告警 3:价格清
---|--- ---|---
status|根据借贷状态查询借贷ID status|根据借贷状态查询借贷ID
addr|根据大户地址查询借贷ID addr|根据大户地址查询借贷ID
addr_status|根据借贷状态和用户地址查询借贷ID
id_status|根据放贷ID和借贷状态查询借贷ID id_status|根据放贷ID和借贷状态查询借贷ID
id_addr|根据放贷ID和用户地址查询借贷ID id_addr|根据放贷ID和用户地址查询借贷ID
\ No newline at end of file
...@@ -68,7 +68,7 @@ var optRecord = &table.Option{ ...@@ -68,7 +68,7 @@ var optRecord = &table.Option{
Prefix: "LODB-collateralize", Prefix: "LODB-collateralize",
Name: "borrow", Name: "borrow",
Primary: "borrowid", Primary: "borrowid",
Index: []string{"status", "addr", "id_status", "id_addr"}, Index: []string{"status", "addr", "addr_status", "id_status", "id_addr"},
} }
// NewRecordTable 借贷记录表 // NewRecordTable 借贷记录表
...@@ -113,6 +113,8 @@ func (tx *CollateralizeRecordRow) Get(key string) ([]byte, error) { ...@@ -113,6 +113,8 @@ func (tx *CollateralizeRecordRow) Get(key string) ([]byte, error) {
return []byte(fmt.Sprintf("%2d", tx.Status)), nil return []byte(fmt.Sprintf("%2d", tx.Status)), nil
} else if key == "addr" { } else if key == "addr" {
return []byte(tx.AccountAddr), nil return []byte(tx.AccountAddr), nil
} else if key == "addr_status" {
return []byte(fmt.Sprintf("%s:%2d", tx.AccountAddr, tx.Status)), nil
} else if key == "id_status" { } else if key == "id_status" {
return []byte(fmt.Sprintf("%s:%2d", tx.CollateralizeId, tx.Status)), nil return []byte(fmt.Sprintf("%s:%2d", tx.CollateralizeId, tx.Status)), nil
} else if key == "id_addr" { } else if key == "id_addr" {
......
...@@ -287,6 +287,10 @@ func TestIssuance(t *testing.T) { ...@@ -287,6 +287,10 @@ func TestIssuance(t *testing.T) {
types.Encode(&pkt.ReqIssuanceRecords{Addr: string(Nodes[1])})) types.Encode(&pkt.ReqIssuanceRecords{Addr: string(Nodes[1])}))
assert.Nil(t, err) assert.Nil(t, err)
assert.NotNil(t, res) assert.NotNil(t, res)
res, err = exec.Query("IssuanceRecordsByAddr",
types.Encode(&pkt.ReqIssuanceRecords{Addr: string(Nodes[1]), Status: 1}))
assert.Nil(t, err)
assert.NotNil(t, res)
// issuance repay // issuance repay
p5 := &pkt.IssuanceRepayTx{ p5 := &pkt.IssuanceRepayTx{
...@@ -328,6 +332,10 @@ func TestIssuance(t *testing.T) { ...@@ -328,6 +332,10 @@ func TestIssuance(t *testing.T) {
types.Encode(&pkt.ReqIssuanceRecords{Addr: string(Nodes[1])})) types.Encode(&pkt.ReqIssuanceRecords{Addr: string(Nodes[1])}))
assert.Nil(t, err) assert.Nil(t, err)
assert.NotNil(t, res) assert.NotNil(t, res)
res, err = exec.Query("IssuanceRecordsByAddr",
types.Encode(&pkt.ReqIssuanceRecords{Addr: string(Nodes[1]), Status: 6}))
assert.Nil(t, err)
assert.NotNil(t, res)
// issuance liquidate // issuance liquidate
p6 := &pkt.IssuanceDebtTx{ p6 := &pkt.IssuanceDebtTx{
......
...@@ -8,6 +8,7 @@ import ( ...@@ -8,6 +8,7 @@ import (
"github.com/33cn/chain33/account" "github.com/33cn/chain33/account"
"github.com/33cn/chain33/common" "github.com/33cn/chain33/common"
dbm "github.com/33cn/chain33/common/db" dbm "github.com/33cn/chain33/common/db"
"github.com/33cn/chain33/common/db/table"
"github.com/33cn/chain33/system/dapp" "github.com/33cn/chain33/system/dapp"
"github.com/33cn/chain33/types" "github.com/33cn/chain33/types"
pty "github.com/33cn/plugin/plugin/dapp/issuance/types" pty "github.com/33cn/plugin/plugin/dapp/issuance/types"
...@@ -1022,7 +1023,7 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.KVDB, status int32, deb ...@@ -1022,7 +1023,7 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.KVDB, status int32, deb
} }
rows, err := query.List("status", data, primary, DefultCount, ListDESC) rows, err := query.List("status", data, primary, DefultCount, ListDESC)
if err != nil { if err != nil {
clog.Error("queryIssuanceRecordsByStatus", "List", err) clog.Error("queryIssuanceRecordsByStatus.List", "index", "status", "error", err)
return nil, err return nil, err
} }
...@@ -1040,7 +1041,7 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.KVDB, status int32, deb ...@@ -1040,7 +1041,7 @@ func queryIssuanceRecordsByStatus(db dbm.KV, localdb dbm.KVDB, status int32, deb
} }
// 根据用户地址查找 // 根据用户地址查找
func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, debtID string) ([]*pty.DebtRecord, error) { func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, status int32, debtID string) ([]*pty.DebtRecord, error) {
query := pty.NewRecordTable(localdb).GetQuery(localdb) query := pty.NewRecordTable(localdb).GetQuery(localdb)
var primary []byte var primary []byte
if len(debtID) > 0 { if len(debtID) > 0 {
...@@ -1049,11 +1050,23 @@ func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, debtID ...@@ -1049,11 +1050,23 @@ func queryIssuanceRecordByAddr(db dbm.KV, localdb dbm.KVDB, addr string, debtID
var data = &pty.ReceiptIssuance{ var data = &pty.ReceiptIssuance{
AccountAddr: addr, AccountAddr: addr,
Status:status,
} }
rows, err := query.List("addr", data, primary, DefultCount, ListDESC)
if err != nil { var rows []*table.Row
clog.Error("queryIssuanceRecordByAddr", "List", err) var err error
return nil, err if status == 0 {
rows, err = query.List("addr", data, primary, DefultCount, ListDESC)
if err != nil {
clog.Error("queryIssuanceRecordByAddr.List", "index", "addr", "error", err)
return nil, err
}
} else {
rows, err = query.List("addr_status", data, primary, DefultCount, ListDESC)
if err != nil {
clog.Error("queryIssuanceRecordByAddr.List", "index", "addr_status", "error", err)
return nil, err
}
} }
var records []*pty.DebtRecord var records []*pty.DebtRecord
......
...@@ -82,7 +82,7 @@ func (c *Issuance) Query_IssuanceRecordByID(req *pty.ReqIssuanceRecords) (types. ...@@ -82,7 +82,7 @@ func (c *Issuance) Query_IssuanceRecordByID(req *pty.ReqIssuanceRecords) (types.
func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecords) (types.Message, error) { func (c *Issuance) Query_IssuanceRecordsByAddr(req *pty.ReqIssuanceRecords) (types.Message, error) {
ret := &pty.RepIssuanceRecords{} ret := &pty.RepIssuanceRecords{}
records, err := queryIssuanceRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.DebtId) records, err := queryIssuanceRecordByAddr(c.GetStateDB(), c.GetLocalDB(), req.Addr, req.Status, req.DebtId)
if err != nil { if err != nil {
clog.Error("Query_IssuanceDebtInfoByAddr", "get issuance record error", err) clog.Error("Query_IssuanceDebtInfoByAddr", "get issuance record error", err)
return nil, err return nil, err
......
...@@ -24,3 +24,4 @@ status|int32|发行状态(1:已发行 2:价格清算告警 3:价格清 ...@@ -24,3 +24,4 @@ status|int32|发行状态(1:已发行 2:价格清算告警 3:价格清
---|--- ---|---
status|根据大户发行状态查询大户发行ID status|根据大户发行状态查询大户发行ID
addr|根据大户地址查询大户发行ID addr|根据大户地址查询大户发行ID
addr_status|根据发行状态和大户地址查询大户发行ID
...@@ -64,7 +64,7 @@ var optRecord = &table.Option{ ...@@ -64,7 +64,7 @@ var optRecord = &table.Option{
Prefix: "LODB-issuance", Prefix: "LODB-issuance",
Name: "debt", Name: "debt",
Primary: "debtid", Primary: "debtid",
Index: []string{"status", "addr"}, Index: []string{"status", "addr", "addr_status"},
} }
// NewRecordTable 大户发行记录表 // NewRecordTable 大户发行记录表
...@@ -109,6 +109,8 @@ func (tx *IssuanceRecordRow) Get(key string) ([]byte, error) { ...@@ -109,6 +109,8 @@ func (tx *IssuanceRecordRow) Get(key string) ([]byte, error) {
return []byte(fmt.Sprintf("%2d", tx.Status)), nil return []byte(fmt.Sprintf("%2d", tx.Status)), nil
} else if key == "addr" { } else if key == "addr" {
return []byte(tx.AccountAddr), nil return []byte(tx.AccountAddr), nil
} else if key == "addr_status" {
return []byte(fmt.Sprintf("%s:%2d", tx.AccountAddr, tx.Status)), nil
} }
return nil, types.ErrNotFound return nil, types.ErrNotFound
} }
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