104 lines
2.7 KiB
Go
104 lines
2.7 KiB
Go
package controllers
|
|
|
|
import (
|
|
"anytunnel/at-admin/app/models"
|
|
"fmt"
|
|
"strconv"
|
|
"time"
|
|
|
|
"github.com/dustin/go-humanize"
|
|
|
|
"github.com/astaxie/beego"
|
|
)
|
|
|
|
type MainController struct {
|
|
BaseAdminController
|
|
}
|
|
|
|
func (this *MainController) Default() {
|
|
if this.Ctx.Input.IsGet() {
|
|
this.view("main/default")
|
|
} else {
|
|
data := map[string]interface{}{}
|
|
db := models.G.DB("base")
|
|
rs, err := db.Query(db.AR().Select("count(*) as total,cs_type").From("online").GroupBy("cs_type"))
|
|
if err != nil {
|
|
this.jsonError(err.Error())
|
|
}
|
|
d := rs.MapValues("cs_type", "total")
|
|
clients := "0"
|
|
servers := "0"
|
|
if v, ok := d["client"]; ok {
|
|
clients = v
|
|
}
|
|
if v, ok := d["server"]; ok {
|
|
servers = v
|
|
}
|
|
rs, err = db.Query(db.AR().Select("count(*) as total").From("cluster").Where(map[string]interface{}{
|
|
"update_time >": time.Now().Unix() - 60,
|
|
"is_disable": 0,
|
|
"is_delete": 0,
|
|
}))
|
|
if err != nil {
|
|
this.jsonError(err.Error())
|
|
}
|
|
clusters := rs.Value("total")
|
|
|
|
now := time.Now().Unix()
|
|
|
|
rs, err = db.Query(db.AR().Select("sum(bytes_total) as total").From("package").Where(map[string]interface{}{
|
|
"start_time <=": now,
|
|
"end_time >=": now,
|
|
}))
|
|
if err != nil {
|
|
this.jsonError(err.Error())
|
|
}
|
|
traffic := rs.Value("total")
|
|
if traffic == "" {
|
|
traffic = "0"
|
|
}
|
|
rs, err = db.Query(db.AR().Select("sum(bytes_left) as total").From("package").Where(map[string]interface{}{
|
|
"start_time <=": now,
|
|
"end_time >=": now,
|
|
}))
|
|
if err != nil {
|
|
this.jsonError(err.Error())
|
|
}
|
|
trafficLeft := rs.Value("total")
|
|
if trafficLeft == "" {
|
|
trafficLeft = "0"
|
|
}
|
|
data["online"] = map[string]interface{}{
|
|
"client": clients,
|
|
"server": servers,
|
|
"cluster": clusters,
|
|
}
|
|
_traffic, _ := strconv.Atoi(traffic)
|
|
_trafficLeft, _ := strconv.Atoi(trafficLeft)
|
|
_trafficUse := _traffic - _trafficLeft
|
|
data["traffic"] = map[string]interface{}{
|
|
"total": traffic,
|
|
"total_human": humanize.Bytes(uint64(_traffic)),
|
|
"total_left": _trafficLeft,
|
|
"total_left_human": humanize.Bytes(uint64(_trafficLeft)),
|
|
"total_use": _trafficUse,
|
|
"total_use_human": humanize.Bytes(uint64(_trafficUse)),
|
|
}
|
|
this.jsonSuccess("", data)
|
|
}
|
|
}
|
|
func (this *MainController) Index() {
|
|
this.Layout = "layout/main.html"
|
|
this.TplName = "main/index.html"
|
|
this.Data["title"] = fmt.Sprintf("%s - %s", beego.AppConfig.String("sys.name"), beego.AppConfig.String("sys.fullname"))
|
|
privilege := models.Privilege{}
|
|
navigators, menus, controllers, err := privilege.GetTypedPrivileges(this.loginUser["user_id"], "1")
|
|
if err != nil {
|
|
this.jsonError(err, "")
|
|
}
|
|
this.Data["navigators"] = navigators
|
|
this.Data["menus"] = menus
|
|
this.Data["controllers"] = controllers
|
|
this.Render()
|
|
}
|