admin_backend/model/Statistics.go
2025-02-11 15:35:38 +08:00

54 lines
1.2 KiB
Go

package model
import (
"fmt"
"sort"
)
type Statistics struct {
AppId int `json:"AppId"`
ServerList []int `json:"ServerList"`
}
func (s *Statistics) StatisticsLevel() (interface{}, error) {
AppConfig, err := GetAppConfig(s.AppId)
if err != nil {
return nil, err
}
res := make([]map[string]interface{}, 0)
res1 := make(map[int]int)
type dbres struct {
Sum int `db:"sum"`
Level int `db:"level"`
}
for _, v := range s.ServerList {
Db := GetMysqlDB(AppConfig.ServerName, AppConfig.MysqlName, v)
if Db == nil {
return nil, fmt.Errorf("failed to get mysql database")
}
var result []dbres
err = Db.Select(&result, "select count(*) as sum , `level` from t_player_baseinfo group by `level`")
if err != nil {
return nil, fmt.Errorf("failed to get level count: %v", err)
}
for r := range result {
res1[result[r].Level] += result[r].Sum
}
}
keys := make([]int, 0, len(res1))
for k := range res1 {
keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
res = append(res, map[string]interface{}{
"Level": k,
"Sum": res1[k],
})
}
return map[string]interface{}{
"data": res,
"total": len(res),
}, nil
}