Commit 9c84ca8d authored by szh's avatar szh

add minetime

parent 40116077
......@@ -10,7 +10,7 @@ Target Server Type : MYSQL
Target Server Version : 50553
File Encoding : 65001
Date: 2019-10-09 11:53:20
Date: 2019-10-11 11:25:55
*/
SET FOREIGN_KEY_CHECKS=0;
......@@ -37,6 +37,8 @@ CREATE TABLE `rasp_miner_stat` (
`total` bigint(20) DEFAULT '0' COMMENT 'ticket总额',
`balance` bigint(20) DEFAULT '0' COMMENT 'ticket合约中余额',
`frozen` bigint(20) DEFAULT '0' COMMENT 'ticket合约中冻结得余额',
`miner_start_time` int(11) DEFAULT '0' COMMENT '开始挖矿记录时间 前端用 ',
`miner_end_time` int(11) DEFAULT '0' COMMENT '挖矿中止时间 前端用',
`height` bigint(20) DEFAULT '0',
`time` int(11) DEFAULT '0',
PRIMARY KEY (`addr`)
......
......@@ -76,6 +76,7 @@ func SyncBlock() {
}
statList = append(statList,stat)
txsList = append(txsList,txs)
logging.Info("DealBlock",height)
}(height)
}
//db.SetMainNetHeight(int(processHeight + types.MaxProcessBlocks + 1))
......@@ -106,8 +107,12 @@ func SyncBlock() {
}
if len(txsList) != int(maxDownload) || len(txsList) != len(statList) {
logging.Error("txsList",len(txsList),"txsMap",len(txsMap),"statList",len(statList))
logging.Error(txsList)
logging.Error(txsMap)
for _, v:= range txsList {
logging.Info("==txslist",*v)
}
for _, v:= range statList {
logging.Info("==statList",*v)
}
panic("exception txs not eq expect")
}
err := models.UpdateBlocks(txsMap,statMap,processHeight+maxDownload)
......
......@@ -13,6 +13,8 @@ type RaspMinerStat struct {
Total int64 `json:"total"`
Balance int64 `json:"balance"`
Frozen int64 `json:"frozen"`
MinerStartTime int64 `json:"miner_start_time"`
MinerEndTime int64 `json:"miner_end_time"`
Height int64 `json:"height"`
Time int64 `json:"time"`
}
......@@ -42,16 +44,6 @@ func GetAddrTotal(maps interface{}) (int, error) {
return count, nil
}
// GetAddrs gets a list of articles based on paging constraints
func GetAddrs(pageNum int, pageSize int, maps interface{}) ([]*RaspMinerStat, error) {
var stat []*RaspMinerStat
err := db.Where(maps).Offset(pageNum).Limit(pageSize).Find(&stat).Error
if err != nil && err != gorm.ErrRecordNotFound {
return nil, err
}
return stat, nil
}
// GetAddr Get a single addr based on ID
func GetAddr(addr string) (*RaspMinerStat, error) {
......
......@@ -39,7 +39,7 @@ func GetMinerTxsTotal(addr string) (int, error) {
}
// GetAddrs gets a list of articles based on paging constraints
func GetMinerTxs(pageNum int, pageSize int, maps interface{}) ([]*RaspMinerTxs, error) {
func GetMinerTxs(pageNum int32, pageSize int32, maps interface{}) ([]*RaspMinerTxs, error) {
var txs []*RaspMinerTxs
err := db.Where(maps).Offset(pageNum).Limit(pageSize).Find(&txs).Error
if err != nil && err != gorm.ErrRecordNotFound {
......
......@@ -6,8 +6,22 @@ import (
"chain33-pai/pkg/app"
"chain33-pai/pkg/e"
"chain33-pai/service/pai_service"
"chain33-pai/service/stat_service"
)
type ReqTicketInfo struct {
Addr string `json:"addr" binding:"requried"`
Page int32 `json:"page"`
Pageszie int32 `json:"pageszie"`
Detail bool `json:"detail"`
}
type ReqMineTime struct {
Addr string `json:"addr" binding:"requried"`
StartTime int64 `json:"start_time"`
EndTime int64 `json:"end_time"`
}
func GetDevdetail(c *gin.Context) {
appG := app.Gin{C: c}
var pai pai_service.Pai
......@@ -33,10 +47,37 @@ func GetDevstatus(c *gin.Context) {
func GetTicketInfo(c *gin.Context) {
appG := app.Gin{C: c}
var req ReqTicketInfo
c.BindJSON(&req)
if req.Detail {
if req.Page == 0 {
req.Page = int32(1)
}
if req.Pageszie == 0 {
req.Pageszie = int32(10)
}
}
var pai pai_service.Pai
info,err := pai.GetTicketInfo()
info,err := pai.GetTicketInfo(&req)
if err != nil {
appG.Response(http.StatusOK, e.ERROR, nil)
}
appG.Response(http.StatusOK, e.SUCCESS, info)
}
func RecordMineTime(c *gin.Context) {
appG := app.Gin{C: c}
var req ReqMineTime
err := c.BindJSON(&req)
if err != nil {
appG.Response(http.StatusOK, e.ERROR, nil)
}
var stat stat_service.RaspMinerStat
err = stat.SetMineTime(req.Addr,req.StartTime,req.EndTime)
if err != nil {
appG.Response(http.StatusOK, e.ERROR, nil)
}
appG.Response(http.StatusOK, e.SUCCESS, nil)
}
\ No newline at end of file
......@@ -23,6 +23,7 @@ func InitRouter() *gin.Engine {
apiv1 := r.Group("/pai")
//获取树莓派基本信息
apiv1.POST("/ticketinfo",v1.GetTicketInfo)
apiv1.POST("/minetime",v1.RecordMineTime)
//apiv1.Use(jwt.JWT())
//{
//
......
......@@ -9,6 +9,8 @@ import (
"chain33-pai/pkg/chain33"
"chain33-pai/pkg/logging"
"github.com/33cn/chain33/types"
"chain33-pai/routers/api/v1"
"chain33-pai/models"
)
var (
......@@ -28,8 +30,11 @@ type Pai struct {
}
type MinedInfo struct {
Mined int64 `json:"mined"`
Tickets int64 `json:"tickets"`
MinedAmount int64 `json:"mined_amount"`
MinedTicketCount int64 `json:"mined_ticket_count"`
MiningTicketCount int64 `json:"mining_ticket_count"`
MinerStartTime int64 `json:"miner_start_time"`
MinerEndTime int64 `json:"miner_end_time"`
MinedList []*MinedTxInfo `json:"mined_list"`
}
......@@ -138,6 +143,33 @@ func getPaiConfig(command string ,arg ...string) (config map[string]string,err e
return list, nil
}
func (p *Pai) GetTicketInfo() (*MinedInfo,error) {
return nil,nil
func (p *Pai) GetTicketInfo(req *v1.ReqTicketInfo) (*MinedInfo,error) {
var info MinedInfo
txsList := make([]*MinedTxInfo,0)
stat,err := models.GetAddr(req.Addr)
if err != nil {
logging.Error("models.GetAddr err",err)
return nil,err
}
if req.Detail {
txs,err := models.GetMinerTxs(req.Page,req.Pageszie,map[string]interface{}{"addr":req.Addr})
if err != nil {
logging.Error("models.GetAddrs err",err)
return nil,err
}
for _, v := range txs {
var t MinedTxInfo
t.Height = v.Height
t.Amount = v.Amount
t.BlockTime = v.Time
txsList = append(txsList,&t)
}
}
info.MinedAmount = stat.MinedAmount
info.MinedTicketCount = stat.MinedTicketCount
info.MiningTicketCount = stat.MiningTicketCount
info.MinerStartTime = stat.MinerStartTime
info.MinerEndTime = stat.MinerEndTime
info.MinedList = txsList
return &info,nil
}
\ No newline at end of file
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