admin_backend/model/User.go
2025-07-03 10:01:38 +08:00

80 lines
2.1 KiB
Go

package model
import (
"backend/msg"
util "backend/util"
"fmt"
)
func GetUserList(AppId, ServerId, PageSize, CurrentPage, Uid int) ([]*User, int, error) {
App, err := util.GetAppConfig(AppId)
if err != nil {
return nil, 0, err
}
db := util.MPool.GetMysqlDB(App, ServerId)
defer db.Close()
if db.DB == nil {
return nil, 0, fmt.Errorf("failed to get MySQL database")
}
users := []*User{}
if Uid != 0 {
err = db.Select(&users, "SELECT `dwUin`, `energy`, `star`, `diamond`, `level`, `exp`, `login_time`, `logout_time`, `user_name` FROM t_player_baseinfo WHERE dwUin = ? ", Uid)
} else {
err = db.Select(&users, "SELECT `dwUin`, `energy`, `star`, `diamond`, `level`, `exp`, `login_time`, `logout_time`, `user_name` FROM t_player_baseinfo Order by login_time desc limit ?, ?", (CurrentPage-1)*PageSize, PageSize)
}
if err != nil {
return nil, 0, fmt.Errorf("failed to get user list: %v", err)
}
var total int
err = db.QueryRow("SELECT COUNT(*) FROM t_player_baseinfo").Scan(&total)
if err != nil {
return nil, 0, fmt.Errorf("failed to get user count: %v", err)
}
for _, user := range users {
if user.LoginTime > user.LogoutTime {
user.Online = "在线"
} else {
user.Online = "离线"
}
}
return users, total, nil
}
func UserDetail(Uid int) (map[string]interface{}, error) {
req := &msg.ReqAdminInfo{
Uid: int64(Uid),
}
AppId := Uid / 100000000
ServerId := Uid % 100000000 / 100000
ws, err := util.GetWebsocket(AppId, ServerId)
if err != nil {
return nil, fmt.Errorf("failed to get websocket: %v", err)
}
defer ws.Close()
r, err := util.SendAdminMsg(ws, req)
if err != nil {
return nil, fmt.Errorf("failed to send admin message: %v", err)
}
return r, nil
}
func UserGM(AppId, ServerId, Uid int, Command string) (interface{}, error) {
req := &msg.ReqAdminGm{
Uid: int64(Uid),
Command: Command,
}
AppId, ServerId = util.ParseUid(Uid)
ws, err := util.GetWebsocket(AppId, ServerId)
if err != nil {
return nil, fmt.Errorf("failed to get websocket: %v", err)
}
defer ws.Close()
r, err := util.SendAdminMsg(ws, req)
if err != nil {
return nil, fmt.Errorf("failed to send admin message: %v", err)
}
return r, nil
}