package model import ( "backend/client" "backend/msg" util "backend/util" "fmt" ) func GetUserList(AppId, ServerId, PageSize, CurrentPage, Uid, StartTime, EndTime int, Nickname, Username, DeviceId string) ([]*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 == nil || 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`, `nick_name`, `node` 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`, `nick_name`, `node` 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) } if Nickname != "" { err = db.Select(&users, "SELECT `dwUin`, `energy`, `star`, `diamond`, `level`, `exp`, `login_time`, `logout_time`, `user_name`, `nick_name`, `node` FROM t_player_baseinfo WHERE `nick_name` LIKE ? ", "%"+Nickname+"%") } if Username != "" { err = db.Select(&users, "SELECT `dwUin`, `energy`, `star`, `diamond`, `level`, `exp`, `login_time`, `logout_time`, `user_name`, `nick_name`, `node` FROM t_player_baseinfo WHERE `user_name` LIKE ? ", "%"+Username+"%") } if DeviceId != "" { var username string db.Get(&username, "select `user_name` from t_account where device_id = ?", DeviceId) if username != "" { err = db.Select(&users, "SELECT `dwUin`, `energy`, `star`, `diamond`, `level`, `exp`, `login_time`, `logout_time`, `user_name`, `nick_name`, `node` FROM t_player_baseinfo WHERE `user_name` = ? ", username) } } 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 UserDetail2(appId, uid, node int) (*msg.ResUserDetailInfo, error) { r, err := client.UserDetail(appId, node, &msg.UserDetailParam{ Uid: int64(uid), }) 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, } App, err := util.GetAppConfig(AppId) db := util.MPool.GetMysqlDB(App, 1) defer db.Close() node := 0 err = db.Get(&node, "SELECT `node` FROM t_player_baseinfo WHERE dwUin = ? ", Uid) resp, err := client.PlayerGm(AppId, node, req) if err != nil { return nil, fmt.Errorf("failed to send admin message: %v", err) } return resp, 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) resp, err := client.BanPlayer(AppId, ServerId, req) if err != nil { return nil, fmt.Errorf("failed to send admin message: %v", err) } return resp, nil }