75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package model
|
|
|
|
import (
|
|
"backend/msg"
|
|
util "backend/util"
|
|
"fmt"
|
|
)
|
|
|
|
func GetUserList(AppId, ServerId, PageSize, CurrentPage int) ([]*User, int, error) {
|
|
App, err := util.GetAppConfig(AppId)
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
db := util.MPool.GetMysqlDB(App.ServerName, App.MysqlName, ServerId)
|
|
if db.DB == nil {
|
|
return nil, 0, fmt.Errorf("failed to get MySQL database")
|
|
}
|
|
users := []*User{}
|
|
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
|
|
}
|