Commit 2e4b635d authored by pengjun's avatar pengjun

#627 remove collateralize close; add collateralize retrieve

parent 5523229c
...@@ -24,7 +24,7 @@ func CollateralizeCmd() *cobra.Command { ...@@ -24,7 +24,7 @@ func CollateralizeCmd() *cobra.Command {
CollateralizeAppendRawTxCmd(), CollateralizeAppendRawTxCmd(),
CollateralizeRepayRawTxCmd(), CollateralizeRepayRawTxCmd(),
CollateralizePriceFeedRawTxCmd(), CollateralizePriceFeedRawTxCmd(),
CollateralizeCloseRawTxCmd(), CollateralizeRetrieveRawTxCmd(),
CollateralizeManageRawTxCmd(), CollateralizeManageRawTxCmd(),
CollateralizeQueryCmd(), CollateralizeQueryCmd(),
) )
...@@ -233,22 +233,24 @@ func CollateralizePriceFeed(cmd *cobra.Command, args []string) { ...@@ -233,22 +233,24 @@ func CollateralizePriceFeed(cmd *cobra.Command, args []string) {
} }
// CollateralizeCloseRawTxCmd 生成开始交易命令行 // CollateralizeCloseRawTxCmd 生成开始交易命令行
func CollateralizeCloseRawTxCmd() *cobra.Command { func CollateralizeRetrieveRawTxCmd() *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "close", Use: "retrieve",
Short: "close a collateralize", Short: "retrieve balance",
Run: CollateralizeClose, Run: CollateralizeRetrieve,
} }
addCollateralizeCloseFlags(cmd) addCollateralizeRetrieveFlags(cmd)
return cmd return cmd
} }
func addCollateralizeCloseFlags(cmd *cobra.Command) { func addCollateralizeRetrieveFlags(cmd *cobra.Command) {
cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID") cmd.Flags().StringP("collateralizeID", "g", "", "collateralize ID")
cmd.MarkFlagRequired("collateralizeID") cmd.MarkFlagRequired("collateralizeID")
cmd.Flags().StringP("balance", "b", "", "retrieve balance")
cmd.MarkFlagRequired("balance")
} }
func CollateralizeClose(cmd *cobra.Command, args []string) { func CollateralizeRetrieve(cmd *cobra.Command, args []string) {
title, _ := cmd.Flags().GetString("title") title, _ := cmd.Flags().GetString("title")
cfg := types.GetCliSysParam(title) cfg := types.GetCliSysParam(title)
if cfg == nil { if cfg == nil {
...@@ -257,11 +259,12 @@ func CollateralizeClose(cmd *cobra.Command, args []string) { ...@@ -257,11 +259,12 @@ func CollateralizeClose(cmd *cobra.Command, args []string) {
rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr") rpcLaddr, _ := cmd.Flags().GetString("rpc_laddr")
collateralizeID, _ := cmd.Flags().GetString("collateralizeID") collateralizeID, _ := cmd.Flags().GetString("collateralizeID")
balance, _ := cmd.Flags().GetInt64("balance")
params := &rpctypes.CreateTxIn{ params := &rpctypes.CreateTxIn{
Execer: cfg.ExecName(pkt.CollateralizeX), Execer: cfg.ExecName(pkt.CollateralizeX),
ActionName: "CollateralizeClose", ActionName: "CollateralizeRetrieve",
Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\"}", collateralizeID)), Payload: []byte(fmt.Sprintf("{\"collateralizeID\":\"%s\", \"balance\": %d}", collateralizeID, balance)),
} }
var res string var res string
......
...@@ -528,11 +528,12 @@ func TestCollateralize(t *testing.T) { ...@@ -528,11 +528,12 @@ func TestCollateralize(t *testing.T) {
assert.NotNil(t, res) assert.NotNil(t, res)
// collateralize close // collateralize retrieve
p11 := &pkt.CollateralizeCloseTx{ p11 := &pkt.CollateralizeRetrieveTx{
CollateralizeID: common.ToHex(collateralizeID), CollateralizeID: common.ToHex(collateralizeID),
Balance:100,
} }
createTx, err = pkt.CreateRawCollateralizeCloseTx(env.cfg, p11) createTx, err = pkt.CreateRawCollateralizeRetrieveTx(env.cfg, p11)
if err != nil { if err != nil {
t.Error("RPC_Default_Process", "err", err) t.Error("RPC_Default_Process", "err", err)
} }
...@@ -558,7 +559,7 @@ func TestCollateralize(t *testing.T) { ...@@ -558,7 +559,7 @@ func TestCollateralize(t *testing.T) {
env.kvdb.Set(kv.Key, kv.Value) env.kvdb.Set(kv.Key, kv.Value)
} }
// query collateralize by status // query collateralize by status
res, err = exec.Query("CollateralizeByStatus", types.Encode(&pkt.ReqCollateralizeByStatus{Status:2})) res, err = exec.Query("CollateralizeByStatus", types.Encode(&pkt.ReqCollateralizeByStatus{Status:1}))
assert.Nil(t, err) assert.Nil(t, err)
assert.NotNil(t, res) assert.NotNil(t, res)
} }
......
...@@ -206,7 +206,7 @@ func (action *Action) GetFeedReceiptLog(collateralize *pty.Collateralize, record ...@@ -206,7 +206,7 @@ func (action *Action) GetFeedReceiptLog(collateralize *pty.Collateralize, record
// GetCloseReceiptLog generate logs for Collateralize close action // GetCloseReceiptLog generate logs for Collateralize close action
func (action *Action) GetCloseReceiptLog(collateralize *pty.Collateralize) *types.ReceiptLog { func (action *Action) GetCloseReceiptLog(collateralize *pty.Collateralize) *types.ReceiptLog {
log := &types.ReceiptLog{} log := &types.ReceiptLog{}
log.Ty = pty.TyLogCollateralizeClose log.Ty = pty.TyLogCollateralizeRetrieve
c := &pty.ReceiptCollateralize{} c := &pty.ReceiptCollateralize{}
c.CollateralizeId = collateralize.CollateralizeId c.CollateralizeId = collateralize.CollateralizeId
...@@ -368,18 +368,16 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -368,18 +368,16 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
return nil, pty.ErrPermissionDeny return nil, pty.ErrPermissionDeny
} }
collateralizeID := common.ToHex(action.txhash)
// 检查ccny余额 // 检查ccny余额
if !action.CheckExecTokenAccount(action.fromaddr, create.TotalBalance, false) { if !action.CheckExecTokenAccount(action.fromaddr, create.TotalBalance, false) {
clog.Error("CollateralizeCreate", "fromaddr", action.fromaddr, "balance", create.TotalBalance, "error", types.ErrInsufficientBalance) clog.Error("CollateralizeCreate", "fromaddr", action.fromaddr, "balance", create.TotalBalance, "error", types.ErrInsufficientBalance)
return nil, types.ErrInsufficientBalance return nil, types.ErrInsufficientBalance
} }
// 查找ID是否重复 // 根据地址查找ID
_, err := queryCollateralizeByID(action.db, collateralizeID) collateralizeIDs, err := queryCollateralizeByAddr(action.localDB, action.fromaddr, pty.CollateralizeStatusCreated, 0)
if err != types.ErrNotFound { if err != types.ErrNotFound {
clog.Error("CollateralizeCreate", "CollateralizeCreate repeated", collateralizeID) clog.Error("CollateralizeCreate.queryCollateralizeByAddr", "addr", action.fromaddr)
return nil, pty.ErrCollateralizeRepeatHash return nil, pty.ErrCollateralizeRepeatHash
} }
...@@ -392,35 +390,46 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -392,35 +390,46 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
// 获取借贷配置 var collateralizeID string
var collcfg *pty.CollateralizeManage coll := &CollateralizeDB{}
cfg, err := getCollateralizeConfig(action.db) if collateralizeIDs == nil {
if cfg == nil { collateralizeID = common.ToHex(action.txhash)
collcfg = &pty.CollateralizeManage{ // 获取借贷配置
DebtCeiling:DefaultDebtCeiling, var collcfg *pty.CollateralizeManage
LiquidationRatio:DefaultLiquidationRatio, cfg, _ := getCollateralizeConfig(action.db)
StabilityFeeRatio:DefaultStabilityFeeRation, if cfg == nil {
Period:DefaultPeriod, collcfg = &pty.CollateralizeManage{
CollTotalBalance:DefaultCollTotalBalance, DebtCeiling:DefaultDebtCeiling,
LiquidationRatio:DefaultLiquidationRatio,
StabilityFeeRatio:DefaultStabilityFeeRation,
Period:DefaultPeriod,
CollTotalBalance:DefaultCollTotalBalance,
}
} else {
collcfg = cfg
} }
// 构造coll结构
coll.CollateralizeId = collateralizeID
coll.LiquidationRatio = collcfg.LiquidationRatio
coll.TotalBalance = create.TotalBalance
coll.DebtCeiling = collcfg.DebtCeiling
coll.StabilityFeeRatio = collcfg.StabilityFeeRatio
coll.Period = collcfg.Period
coll.Balance = create.TotalBalance
coll.CreateAddr = action.fromaddr
coll.Status = pty.CollateralizeActionCreate
coll.Index = action.GetIndex()
coll.CollBalance = 0
} else { } else {
collcfg = cfg collateralize, err := queryCollateralizeByID(action.db, collateralizeIDs[0])
if err != nil {
clog.Error("CollateralizeCreate.queryCollateralizeByID", "addr", action.fromaddr, "execaddr", action.execaddr, "collId", collateralizeIDs[0])
return nil, err
}
coll.Collateralize = *collateralize
coll.TotalBalance += create.TotalBalance
} }
// 构造coll结构
coll := &CollateralizeDB{}
coll.CollateralizeId = collateralizeID
coll.LiquidationRatio = collcfg.LiquidationRatio
coll.TotalBalance = create.TotalBalance
coll.DebtCeiling = collcfg.DebtCeiling
coll.StabilityFeeRatio = collcfg.StabilityFeeRatio
coll.Period = collcfg.Period
coll.Balance = create.TotalBalance
coll.CreateAddr = action.fromaddr
coll.Status = pty.CollateralizeActionCreate
coll.Index = action.GetIndex()
coll.CollBalance = 0
clog.Debug("CollateralizeCreate created", "CollateralizeID", collateralizeID, "TotalBalance", coll.TotalBalance) clog.Debug("CollateralizeCreate created", "CollateralizeID", collateralizeID, "TotalBalance", coll.TotalBalance)
// 保存 // 保存
...@@ -1077,45 +1086,55 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec ...@@ -1077,45 +1086,55 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
return receipt, nil return receipt, nil
} }
// CollateralizeClose 终止借 // CollateralizeRetrieve 收回未放
func (action *Action) CollateralizeClose(close *pty.CollateralizeClose) (*types.Receipt, error) { func (action *Action) CollateralizeRetrieve(retrieve *pty.CollateralizeRetrieve) (*types.Receipt, error) {
var logs []*types.ReceiptLog var logs []*types.ReceiptLog
var kv []*types.KeyValue var kv []*types.KeyValue
var receipt *types.Receipt var receipt *types.Receipt
collateralize, err := queryCollateralizeByID(action.db, close.CollateralizeId) collateralize, err := queryCollateralizeByID(action.db, retrieve.CollateralizeId)
if err != nil { if err != nil {
clog.Error("CollateralizeClose", "CollateralizeId", close.CollateralizeId, "err", err) clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "err", err)
return nil, err return nil, err
} }
if action.fromaddr != collateralize.CreateAddr { if action.fromaddr != collateralize.CreateAddr {
clog.Error("CollateralizeClose", "CollateralizeId", close.CollateralizeId, "err", "account error", "create", collateralize.CreateAddr, "from", action.fromaddr) clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "err", "account error", "create", collateralize.CreateAddr, "from", action.fromaddr)
return nil, pty.ErrPermissionDeny return nil, pty.ErrPermissionDeny
} }
for _, borrowRecord := range collateralize.BorrowRecords { //for _, borrowRecord := range collateralize.BorrowRecords {
if borrowRecord.Status != pty.CollateralizeUserStatusClose { // if borrowRecord.Status != pty.CollateralizeUserStatusClose {
clog.Error("CollateralizeClose", "CollateralizeId", close.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", pty.ErrCollateralizeRecordNotEmpty) // clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "addr", action.fromaddr, "execaddr", action.execaddr, "err", pty.ErrCollateralizeRecordNotEmpty)
return nil, pty.ErrCollateralizeRecordNotEmpty // return nil, pty.ErrCollateralizeRecordNotEmpty
} // }
} //}
// 收回金额不能大于待放出金额
if retrieve.Balance > collateralize.Balance {
clog.Error("CollateralizeRetrieve", "CollateralizeId", retrieve.CollateralizeId, "err", "balance error", "retrieve balance", retrieve.Balance, "available balance", collateralize.Balance)
return nil, pty.ErrPermissionDeny
}
// 解冻ccny // 解冻ccny
receipt, err = action.tokenAccount.ExecActive(action.fromaddr, action.execaddr, collateralize.Balance*Coin) receipt, err = action.tokenAccount.ExecActive(action.fromaddr, action.execaddr, retrieve.Balance*Coin)
if err != nil { if err != nil {
clog.Error("IssuanceClose.ExecActive", "addr", action.fromaddr, "execaddr", action.execaddr, "amount", collateralize.TotalBalance) clog.Error("IssuanceClose.ExecActive", "addr", action.fromaddr, "execaddr", action.execaddr, "balance", retrieve.Balance)
return nil, err return nil, err
} }
logs = append(logs, receipt.Logs...) logs = append(logs, receipt.Logs...)
kv = append(kv, receipt.KV...) kv = append(kv, receipt.KV...)
clog.Debug("CollateralizeClose", "ID", close.CollateralizeId) clog.Debug("CollateralizeRetrieve", "ID", retrieve.CollateralizeId, "balance", retrieve.Balance)
coll := &CollateralizeDB{*collateralize} coll := &CollateralizeDB{*collateralize}
coll.Status = pty.CollateralizeStatusClose coll.TotalBalance -= retrieve.Balance
coll.PreIndex = coll.Index coll.Balance -= retrieve.Balance
coll.Index = action.GetIndex() if coll.TotalBalance == 0 {
coll.PreIndex = coll.Index
coll.Index = action.GetIndex()
coll.Status = pty.CollateralizeStatusClose
}
coll.Save(action.db) coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...) kv = append(kv, coll.GetKVSet()...)
......
...@@ -39,10 +39,10 @@ func (c *Collateralize) Exec_Feed(payload *pty.CollateralizeFeed, tx *types.Tran ...@@ -39,10 +39,10 @@ func (c *Collateralize) Exec_Feed(payload *pty.CollateralizeFeed, tx *types.Tran
return actiondb.CollateralizeFeed(payload) return actiondb.CollateralizeFeed(payload)
} }
// Exec_Close Action // Exec_Retrieve Action
func (c *Collateralize) Exec_Close(payload *pty.CollateralizeClose, tx *types.Transaction, index int) (*types.Receipt, error) { func (c *Collateralize) Exec_Retrieve(payload *pty.CollateralizeRetrieve, tx *types.Transaction, index int) (*types.Receipt, error) {
actiondb := NewCollateralizeAction(c, tx, index) actiondb := NewCollateralizeAction(c, tx, index)
return actiondb.CollateralizeClose(payload) return actiondb.CollateralizeRetrieve(payload)
} }
// Exec_Close Action // Exec_Close Action
......
...@@ -13,7 +13,7 @@ func (c *Collateralize) execDelLocal(tx *types.Transaction, receiptData *types.R ...@@ -13,7 +13,7 @@ func (c *Collateralize) execDelLocal(tx *types.Transaction, receiptData *types.R
set := &types.LocalDBSet{} set := &types.LocalDBSet{}
for _, item := range receiptData.Logs { for _, item := range receiptData.Logs {
if item.Ty == pty.TyLogCollateralizeCreate || item.Ty == pty.TyLogCollateralizeBorrow || item.Ty == pty.TyLogCollateralizeAppend || if item.Ty == pty.TyLogCollateralizeCreate || item.Ty == pty.TyLogCollateralizeBorrow || item.Ty == pty.TyLogCollateralizeAppend ||
item.Ty == pty.TyLogCollateralizeRepay || item.Ty == pty.TyLogCollateralizeFeed || item.Ty == pty.TyLogCollateralizeClose { item.Ty == pty.TyLogCollateralizeRepay || item.Ty == pty.TyLogCollateralizeFeed || item.Ty == pty.TyLogCollateralizeRetrieve {
var collateralizeLog pty.ReceiptCollateralize var collateralizeLog pty.ReceiptCollateralize
err := types.Decode(item.Log, &collateralizeLog) err := types.Decode(item.Log, &collateralizeLog)
if err != nil { if err != nil {
...@@ -57,12 +57,14 @@ func (c *Collateralize) execDelLocal(tx *types.Transaction, receiptData *types.R ...@@ -57,12 +57,14 @@ func (c *Collateralize) execDelLocal(tx *types.Transaction, receiptData *types.R
// set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.Index)...) // set.KV = append(set.KV, c.deleteCollateralizeRecordAddr(collateralizeLog.AccountAddr, collateralizeLog.Index)...)
//} //}
break break
case pty.TyLogCollateralizeClose: case pty.TyLogCollateralizeRetrieve:
set.KV = append(set.KV, c.deleteCollateralizeStatus(collateralizeLog.Status, collateralizeLog.Index)...) if collateralizeLog.Status == pty.CollateralizeStatusClose {
set.KV = append(set.KV, c.addCollateralizeStatus(pty.CollateralizeStatusCreated, collateralizeLog.CollateralizeId, set.KV = append(set.KV, c.deleteCollateralizeStatus(collateralizeLog.Status, collateralizeLog.Index)...)
collateralizeLog.PreIndex)...) set.KV = append(set.KV, c.addCollateralizeStatus(pty.CollateralizeStatusCreated, collateralizeLog.CollateralizeId,
//set.KV = append(set.KV, c.addCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.CollateralizeId, collateralizeLog.PreIndex)...)
// collateralizeLog.PreStatus, collateralizeLog.PreIndex)...) //set.KV = append(set.KV, c.addCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.CollateralizeId,
// collateralizeLog.PreStatus, collateralizeLog.PreIndex)...)
}
break break
} }
} }
...@@ -96,8 +98,8 @@ func (c *Collateralize) ExecDelLocal_Feed(payload *pty.CollateralizeFeed, tx *ty ...@@ -96,8 +98,8 @@ func (c *Collateralize) ExecDelLocal_Feed(payload *pty.CollateralizeFeed, tx *ty
return c.execDelLocal(tx, receiptData) return c.execDelLocal(tx, receiptData)
} }
// ExecDelLocal_Close Action // ExecDelLocal_Retrieve Action
func (c *Collateralize) ExecDelLocal_Close(payload *pty.CollateralizeClose, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (c *Collateralize) ExecDelLocal_Retrieve(payload *pty.CollateralizeRetrieve, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return c.execDelLocal(tx, receiptData) return c.execDelLocal(tx, receiptData)
} }
......
...@@ -14,7 +14,7 @@ func (c *Collateralize) execLocal(tx *types.Transaction, receipt *types.ReceiptD ...@@ -14,7 +14,7 @@ func (c *Collateralize) execLocal(tx *types.Transaction, receipt *types.ReceiptD
set := &types.LocalDBSet{} set := &types.LocalDBSet{}
for _, item := range receipt.Logs { for _, item := range receipt.Logs {
if item.Ty == pty.TyLogCollateralizeCreate || item.Ty == pty.TyLogCollateralizeBorrow || item.Ty == pty.TyLogCollateralizeAppend || if item.Ty == pty.TyLogCollateralizeCreate || item.Ty == pty.TyLogCollateralizeBorrow || item.Ty == pty.TyLogCollateralizeAppend ||
item.Ty == pty.TyLogCollateralizeRepay || item.Ty == pty.TyLogCollateralizeFeed || item.Ty == pty.TyLogCollateralizeClose { item.Ty == pty.TyLogCollateralizeRepay || item.Ty == pty.TyLogCollateralizeFeed || item.Ty == pty.TyLogCollateralizeRetrieve {
var collateralizeLog pty.ReceiptCollateralize var collateralizeLog pty.ReceiptCollateralize
err := types.Decode(item.Log, &collateralizeLog) err := types.Decode(item.Log, &collateralizeLog)
if err != nil { if err != nil {
...@@ -59,10 +59,12 @@ func (c *Collateralize) execLocal(tx *types.Transaction, receipt *types.ReceiptD ...@@ -59,10 +59,12 @@ func (c *Collateralize) execLocal(tx *types.Transaction, receipt *types.ReceiptD
// collateralizeLog.RecordId, collateralizeLog.Index)...) // collateralizeLog.RecordId, collateralizeLog.Index)...)
//} //}
break break
case pty.TyLogCollateralizeClose: case pty.TyLogCollateralizeRetrieve:
set.KV = append(set.KV, c.addCollateralizeStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId, collateralizeLog.Index)...) if collateralizeLog.Status == pty.CollateralizeStatusClose {
set.KV = append(set.KV, c.deleteCollateralizeStatus(collateralizeLog.PreStatus, collateralizeLog.PreIndex)...) set.KV = append(set.KV, c.addCollateralizeStatus(collateralizeLog.Status, collateralizeLog.CollateralizeId, collateralizeLog.Index)...)
//set.KV = append(set.KV, c.deleteCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.PreIndex)...) set.KV = append(set.KV, c.deleteCollateralizeStatus(collateralizeLog.PreStatus, collateralizeLog.PreIndex)...)
//set.KV = append(set.KV, c.deleteCollateralizeAddr(collateralizeLog.CreateAddr, collateralizeLog.PreIndex)...)
}
break break
} }
} }
...@@ -95,8 +97,8 @@ func (c *Collateralize) ExecLocal_Feed(payload *pty.CollateralizeFeed, tx *types ...@@ -95,8 +97,8 @@ func (c *Collateralize) ExecLocal_Feed(payload *pty.CollateralizeFeed, tx *types
return c.execLocal(tx, receiptData) return c.execLocal(tx, receiptData)
} }
// ExecLocal_Close Action // ExecLocal_Retrieve Action
func (c *Collateralize) ExecLocal_Close(payload *pty.CollateralizeClose, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) { func (c *Collateralize) ExecLocal_Retrieve(payload *pty.CollateralizeRetrieve, tx *types.Transaction, receiptData *types.ReceiptData, index int) (*types.LocalDBSet, error) {
return c.execLocal(tx, receiptData) return c.execLocal(tx, receiptData)
} }
......
...@@ -51,13 +51,13 @@ message AssetPriceRecord { ...@@ -51,13 +51,13 @@ message AssetPriceRecord {
// action // action
message CollateralizeAction { message CollateralizeAction {
oneof value { oneof value {
CollateralizeCreate create = 1; //创建一期借贷 CollateralizeCreate create = 1; //创建一期借贷
CollateralizeBorrow borrow = 2; //借贷 CollateralizeBorrow borrow = 2; //借贷
CollateralizeRepay repay = 3; //清算 CollateralizeRepay repay = 3; //清算
CollateralizeAppend append = 4; //追加 CollateralizeAppend append = 4; //追加
CollateralizeFeed feed = 5; //喂价 CollateralizeFeed feed = 5; //喂价
CollateralizeClose close = 6; //关闭 CollateralizeRetrieve retrieve = 6; //收回
CollateralizeManage manage = 7; //全局配置 CollateralizeManage manage = 7; //全局配置
} }
int32 ty = 10; int32 ty = 10;
} }
...@@ -105,9 +105,10 @@ message CollateralizeFeed { ...@@ -105,9 +105,10 @@ message CollateralizeFeed {
repeated int64 volume = 3; //成交量 repeated int64 volume = 3; //成交量
} }
// 放贷关闭 // 收回
message CollateralizeClose { message CollateralizeRetrieve {
string collateralizeId = 1; //借贷期数ID string collateralizeId = 1; //借贷期数ID
int64 balance = 2; //收回金额
} }
// exec_local 放贷信息 // exec_local 放贷信息
......
...@@ -57,7 +57,7 @@ func (collateralize *CollateralizeType) GetLogMap() map[int64]*types.LogInfo { ...@@ -57,7 +57,7 @@ func (collateralize *CollateralizeType) GetLogMap() map[int64]*types.LogInfo {
TyLogCollateralizeRepay: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeRepay"}, TyLogCollateralizeRepay: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeRepay"},
TyLogCollateralizeAppend: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeAppend"}, TyLogCollateralizeAppend: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeAppend"},
TyLogCollateralizeFeed: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeFeed"}, TyLogCollateralizeFeed: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeFeed"},
TyLogCollateralizeClose: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeClose"}, TyLogCollateralizeRetrieve: {Ty: reflect.TypeOf(ReceiptCollateralize{}), Name: "LogCollateralizeRetrieve"},
} }
} }
...@@ -111,14 +111,14 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM ...@@ -111,14 +111,14 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
return CreateRawCollateralizeFeedTx(cfg, &param) return CreateRawCollateralizeFeedTx(cfg, &param)
} else if action == "CollateralizeClose" { } else if action == "CollateralizeRetrive" {
var param CollateralizeCloseTx var param CollateralizeRetrieveTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
if err != nil { if err != nil {
llog.Error("CreateTx", "Error", err) llog.Error("CreateTx", "Error", err)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
return CreateRawCollateralizeCloseTx(cfg, &param) return CreateRawCollateralizeRetrieveTx(cfg, &param)
} else if action == "CollateralizeManage" { } else if action == "CollateralizeManage" {
var param CollateralizeManageTx var param CollateralizeManageTx
err := json.Unmarshal(message, &param) err := json.Unmarshal(message, &param)
...@@ -135,13 +135,13 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM ...@@ -135,13 +135,13 @@ func (collateralize CollateralizeType) CreateTx(action string, message json.RawM
// GetTypeMap method // GetTypeMap method
func (collateralize CollateralizeType) GetTypeMap() map[string]int32 { func (collateralize CollateralizeType) GetTypeMap() map[string]int32 {
return map[string]int32{ return map[string]int32{
"Create": CollateralizeActionCreate, "Create": CollateralizeActionCreate,
"Borrow": CollateralizeActionBorrow, "Borrow": CollateralizeActionBorrow,
"Repay": CollateralizeActionRepay, "Repay": CollateralizeActionRepay,
"Append": CollateralizeActionAppend, "Append": CollateralizeActionAppend,
"Feed": CollateralizeActionFeed, "Feed": CollateralizeActionFeed,
"Close": CollateralizeActionClose, "Retrieve": CollateralizeActionRetrieve,
"Manage": CollateralizeActionManage, "Manage": CollateralizeActionManage,
} }
} }
...@@ -290,19 +290,20 @@ func CreateRawCollateralizeFeedTx(cfg *types.Chain33Config, parm *CollateralizeF ...@@ -290,19 +290,20 @@ func CreateRawCollateralizeFeedTx(cfg *types.Chain33Config, parm *CollateralizeF
return tx, nil return tx, nil
} }
// CreateRawCollateralizeCloseTx method // CreateRawCollateralizeRetrieveTx method
func CreateRawCollateralizeCloseTx(cfg *types.Chain33Config, parm *CollateralizeCloseTx) (*types.Transaction, error) { func CreateRawCollateralizeRetrieveTx(cfg *types.Chain33Config, parm *CollateralizeRetrieveTx) (*types.Transaction, error) {
if parm == nil { if parm == nil {
llog.Error("CreateRawCollateralizeCloseTx", "parm", parm) llog.Error("CreateRawCollateralizeCloseTx", "parm", parm)
return nil, types.ErrInvalidParam return nil, types.ErrInvalidParam
} }
v := &CollateralizeClose{ v := &CollateralizeRetrieve{
CollateralizeId: parm.CollateralizeID, CollateralizeId: parm.CollateralizeID,
Balance: parm.Balance,
} }
close := &CollateralizeAction{ close := &CollateralizeAction{
Ty: CollateralizeActionClose, Ty: CollateralizeActionRetrieve,
Value: &CollateralizeAction_Close{v}, Value: &CollateralizeAction_Retrieve{v},
} }
tx := &types.Transaction{ tx := &types.Transaction{
Execer: []byte(cfg.ExecName(CollateralizeX)), Execer: []byte(cfg.ExecName(CollateralizeX)),
......
...@@ -39,9 +39,10 @@ type CollateralizeFeedTx struct { ...@@ -39,9 +39,10 @@ type CollateralizeFeedTx struct {
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
// CollateralizeCloseTx for construction // CollateralizeRetrieveTx for construction
type CollateralizeCloseTx struct { type CollateralizeRetrieveTx struct {
CollateralizeID string `json:"collateralizeId"` CollateralizeID string `json:"collateralizeId"`
Balance int64 `json:"Balance"`
Fee int64 `json:"fee"` Fee int64 `json:"fee"`
} }
......
...@@ -11,7 +11,7 @@ const ( ...@@ -11,7 +11,7 @@ const (
CollateralizeActionRepay CollateralizeActionRepay
CollateralizeActionAppend CollateralizeActionAppend
CollateralizeActionFeed CollateralizeActionFeed
CollateralizeActionClose CollateralizeActionRetrieve
CollateralizeActionManage CollateralizeActionManage
//log for Collateralize //log for Collateralize
...@@ -20,7 +20,7 @@ const ( ...@@ -20,7 +20,7 @@ const (
TyLogCollateralizeRepay = 733 TyLogCollateralizeRepay = 733
TyLogCollateralizeAppend = 734 TyLogCollateralizeAppend = 734
TyLogCollateralizeFeed = 735 TyLogCollateralizeFeed = 735
TyLogCollateralizeClose = 736 TyLogCollateralizeRetrieve = 736
) )
// Collateralize name // Collateralize name
......
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