tank/rest/dashboard_dao.go
2018-12-01 20:21:32 +08:00

56 lines
1.3 KiB
Go

package rest
import (
_ "github.com/jinzhu/gorm/dialects/mysql"
"time"
)
type DashboardDao struct {
BaseDao
}
//过去七天调用量
func (this *DashboardDao) InvokeList() []*DashboardInvoke {
//过去几天
var dayNum = 15;
var tableName = Footprint{}.TableName()
now := time.Now()
startDate := now.AddDate(0, 0, 1-dayNum)
rows, err := CONTEXT.DB.Raw("SELECT COUNT(uuid) AS invoke_num,COUNT(DISTINCT(ip)) AS uv,dt FROM "+tableName+" WHERE dt>= ? AND dt <= ? GROUP BY dt",
ConvertTimeToDateString(startDate),
ConvertTimeToDateString(now)).Rows()
this.PanicError(err)
defer rows.Close()
var invokeMap = make(map[string]*DashboardInvoke)
var dashboardInvokes []*DashboardInvoke
for rows.Next() {
var invokeNum int64 = 0;
var uv int64 = 0;
var dt string;
rows.Scan(&invokeNum, &uv, &dt)
invokeMap[dt] = &DashboardInvoke{
InvokeNum: invokeNum,
Uv: uv,
Dt: dt,
}
}
for i := 1 - dayNum; i <= 0; i++ {
date := now.AddDate(0, 0, i)
dt := ConvertTimeToDateString(date)
v, ok := invokeMap[dt]
if ok {
dashboardInvokes = append(dashboardInvokes, v)
} else {
dashboardInvokes = append(dashboardInvokes, &DashboardInvoke{
InvokeNum: 0,
Uv: 0,
Dt: dt,
})
}
}
return dashboardInvokes
}