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 }