Commit 020ed969 authored by pengjun's avatar pengjun

#627 update collateralize query

parent 8bf3334d
...@@ -274,7 +274,6 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ ...@@ -274,7 +274,6 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
StabilityFeeRatio: DefaultStabilityFeeRation, StabilityFeeRatio: DefaultStabilityFeeRation,
Period: DefaultPeriod, Period: DefaultPeriod,
CollTotalBalance: DefaultCollTotalBalance, CollTotalBalance: DefaultCollTotalBalance,
CurrentTime: action.blocktime,
} }
} }
...@@ -308,12 +307,7 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ ...@@ -308,12 +307,7 @@ func (action *Action) CollateralizeManage(manage *pty.CollateralizeManage) (*typ
} else { } else {
collConfig.CollTotalBalance = manConfig.CollTotalBalance collConfig.CollTotalBalance = manConfig.CollTotalBalance
} }
collConfig.CurrentTime = action.blocktime
if manage.CurrentTime != 0 {
collConfig.CollTotalBalance = manage.CollTotalBalance
} else {
collConfig.CollTotalBalance = manConfig.CollTotalBalance
}
value := types.Encode(collConfig) value := types.Encode(collConfig)
action.db.Set(ConfigKey(), value) action.db.Set(ConfigKey(), value)
...@@ -425,6 +419,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ ...@@ -425,6 +419,7 @@ func (action *Action) CollateralizeCreate(create *pty.CollateralizeCreate) (*typ
coll.CreateAddr = action.fromaddr coll.CreateAddr = action.fromaddr
coll.Status = pty.CollateralizeActionCreate coll.Status = pty.CollateralizeActionCreate
coll.Index = action.GetIndex() 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)
...@@ -611,6 +606,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ ...@@ -611,6 +606,7 @@ func (action *Action) CollateralizeBorrow(borrow *pty.CollateralizeBorrow) (*typ
coll.BorrowRecords = append(coll.BorrowRecords, borrowRecord) coll.BorrowRecords = append(coll.BorrowRecords, borrowRecord)
coll.Status = pty.CollateralizeStatusCreated coll.Status = pty.CollateralizeStatusCreated
coll.Balance -= borrow.Value coll.Balance -= borrow.Value
coll.CollBalance += btyFrozen
coll.Save(action.db) coll.Save(action.db)
kv = append(kv, coll.GetKVSet()...) kv = append(kv, coll.GetKVSet()...)
...@@ -693,6 +689,7 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types. ...@@ -693,6 +689,7 @@ func (action *Action) CollateralizeRepay(repay *pty.CollateralizeRepay) (*types.
// 保存 // 保存
coll.Balance += borrowRecord.DebtValue coll.Balance += borrowRecord.DebtValue
coll.CollBalance -= borrowRecord.CollateralValue
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...) coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord) coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize) coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize)
...@@ -788,6 +785,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty ...@@ -788,6 +785,7 @@ func (action *Action) CollateralizeAppend(cAppend *pty.CollateralizeAppend) (*ty
} }
// 记录当前借贷的最高自动清算价格 // 记录当前借贷的最高自动清算价格
coll.CollBalance += cAppend.CollateralValue
coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize) coll.LatestLiquidationPrice = getLatestLiquidationPrice(&coll.Collateralize)
coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize) coll.LatestExpireTime = getLatestExpireTime(&coll.Collateralize)
// append操作不更新Index // append操作不更新Index
...@@ -900,6 +898,7 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32) ...@@ -900,6 +898,7 @@ func (action *Action) systemLiquidation(coll *pty.Collateralize, price float32)
borrowRecord.Index = action.GetIndex() borrowRecord.Index = action.GetIndex()
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord) coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...) coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
coll.CollBalance -= borrowRecord.CollateralValue
} else { } else {
borrowRecord.PreStatus = borrowRecord.Status borrowRecord.PreStatus = borrowRecord.Status
borrowRecord.Status = pty.CollateralizeUserStatusWarning borrowRecord.Status = pty.CollateralizeUserStatusWarning
...@@ -958,6 +957,7 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt ...@@ -958,6 +957,7 @@ func (action *Action) expireLiquidation(coll *pty.Collateralize) (*types.Receipt
borrowRecord.Index = action.GetIndex() borrowRecord.Index = action.GetIndex()
coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord) coll.InvalidRecords = append(coll.InvalidRecords, borrowRecord)
coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...) coll.BorrowRecords = append(coll.BorrowRecords[:index], coll.BorrowRecords[index+1:]...)
coll.CollBalance -= borrowRecord.CollateralValue
} else { } else {
borrowRecord.PreIndex = borrowRecord.Index borrowRecord.PreIndex = borrowRecord.Index
borrowRecord.Index = action.GetIndex() borrowRecord.Index = action.GetIndex()
...@@ -987,6 +987,11 @@ func pricePolicy(feed *pty.CollateralizeFeed) float32 { ...@@ -987,6 +987,11 @@ func pricePolicy(feed *pty.CollateralizeFeed) float32 {
totalVolume += volume totalVolume += volume
} }
if totalVolume == 0 {
clog.Error("collateralize price feed volume empty")
return 0
}
for i, price := range feed.Price { for i, price := range feed.Price {
totalPrice += price * float32(float64(feed.Volume[i])/float64(totalVolume)) totalPrice += price * float32(float64(feed.Volume[i])/float64(totalVolume))
} }
...@@ -1011,7 +1016,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec ...@@ -1011,7 +1016,7 @@ func (action *Action) CollateralizeFeed(feed *pty.CollateralizeFeed) (*types.Rec
} }
price := pricePolicy(feed) price := pricePolicy(feed)
if price == 0 || price == -1 { if price <= 0 {
clog.Error("CollateralizePriceFeed", "price", price, "err", pty.ErrPriceInvalid) clog.Error("CollateralizePriceFeed", "price", price, "err", pty.ErrPriceInvalid)
return nil, pty.ErrPriceInvalid return nil, pty.ErrPriceInvalid
} }
......
...@@ -26,6 +26,7 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf ...@@ -26,6 +26,7 @@ func (c *Collateralize) Query_CollateralizeInfoByID(req *pty.ReqCollateralizeInf
Balance: coll.Balance, Balance: coll.Balance,
Period: coll.Period, Period: coll.Period,
CollateralizeId: coll.CollateralizeId, CollateralizeId: coll.CollateralizeId,
CollBalance: coll.CollBalance,
}, nil }, nil
} }
...@@ -48,6 +49,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn ...@@ -48,6 +49,7 @@ func (c *Collateralize) Query_CollateralizeInfoByIDs(req *pty.ReqCollateralizeIn
Balance: coll.Balance, Balance: coll.Balance,
Period: coll.Period, Period: coll.Period,
CollateralizeId: coll.CollateralizeId, CollateralizeId: coll.CollateralizeId,
CollBalance: coll.CollBalance,
}) })
} }
......
...@@ -19,6 +19,7 @@ message Collateralize { ...@@ -19,6 +19,7 @@ message Collateralize {
int64 latestExpireTime = 13;//最近超期时间 int64 latestExpireTime = 13;//最近超期时间
int64 index = 14;//当前索引 int64 index = 14;//当前索引
int64 preIndex = 15;//上一个索引 int64 preIndex = 15;//上一个索引
int64 collBalance = 16;//抵押bty
} }
// 借出记录 // 借出记录
...@@ -150,6 +151,7 @@ message RepCollateralizeCurrentInfo { ...@@ -150,6 +151,7 @@ message RepCollateralizeCurrentInfo {
int64 balance = 7; //剩余可借贷金额(ccny) int64 balance = 7; //剩余可借贷金额(ccny)
int64 period = 8; //合约期限 int64 period = 8; //合约期限
string collateralizeId = 9; //放贷ID string collateralizeId = 9; //放贷ID
int64 collBalance = 10;//抵押bty
} }
// 根据ID列表查询多期放贷信息 // 根据ID列表查询多期放贷信息
......
...@@ -837,6 +837,10 @@ func pricePolicy(feed *pty.IssuanceFeed) float32 { ...@@ -837,6 +837,10 @@ func pricePolicy(feed *pty.IssuanceFeed) float32 {
totalVolume += volume totalVolume += volume
} }
if totalVolume == 0 {
clog.Error("issuance price feed volume empty")
return 0
}
for i, price := range feed.Price { for i, price := range feed.Price {
totalPrice += price * float32(float64(feed.Volume[i])/float64(totalVolume)) totalPrice += price * float32(float64(feed.Volume[i])/float64(totalVolume))
} }
...@@ -861,7 +865,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro ...@@ -861,7 +865,7 @@ func (action *Action) IssuanceFeed(feed *pty.IssuanceFeed) (*types.Receipt, erro
} }
price := pricePolicy(feed) price := pricePolicy(feed)
if price == 0 || price == -1 { if price <= 0 {
clog.Error("IssuancePriceFeed", "price", price, "err", pty.ErrPriceInvalid) clog.Error("IssuancePriceFeed", "price", price, "err", pty.ErrPriceInvalid)
return nil, pty.ErrPriceInvalid return nil, pty.ErrPriceInvalid
} }
......
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