package model import ( "backend/msg" util "backend/util" "fmt" ) func GetUserList(AppId, ServerId, PageSize, CurrentPage, Uid, StartTime, EndTime 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 WHERE `login_time` >= ? and `login_time` <= ? Order by login_time desc limit ?, ?", StartTime, EndTime, (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 WHERE `login_time` >= ? and `login_time` <= ?", StartTime, EndTime).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 } func UserBan(AppId, ServerId, Uid int, Day int, Reason string) (interface{}, error) { Now := util.Now() req := &msg.ReqAdminBan{ Uid: int64(Uid), Time: Now + int64(Day*24*3600), Reason: Reason, } 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 }