From 6ebeedbbb761ed60be76d6655531fccf57a723a7 Mon Sep 17 00:00:00 2001 From: linquan <349589071@qq.com> Date: Fri, 18 Apr 2025 17:40:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/v1/game/ccd.go | 99 ++++++++++++++++++--- api/v1/game/pub.go | 2 +- internal/cmd/cmd.go | 1 - internal/controller/game_login_url.go | 20 +++++ internal/dao/internal/game_router.go | 2 - internal/model/do/game_router.go | 1 - internal/model/entity/game_router.go | 1 - internal/serviceGame/internal/dbinit.go | 20 ++++- internal/serviceGame/loginUrl.go | 111 ++++++++++++++++++++++-- internal/serviceGame/order.go | 2 +- 10 files changed, 236 insertions(+), 23 deletions(-) diff --git a/api/v1/game/ccd.go b/api/v1/game/ccd.go index d5b7afc..32579b0 100644 --- a/api/v1/game/ccd.go +++ b/api/v1/game/ccd.go @@ -2,6 +2,7 @@ package game import ( "github.com/gogf/gf/v2/frame/g" + "tyj_admin/api/v1/common" "tyj_admin/internal/model/entity" ) @@ -57,15 +58,6 @@ type GetLoginUrlRes struct { Total int `json:"total"` } -type GetServerConfigGeneralReq struct { - g.Meta `path:"/ServerConfig/getGeneral" tags:"登录地址" method:"post" summary:"ServerConfig"` -} - -type GetServerConfigGeneralRes struct { - g.Meta `mime:"application/json"` - List []entity.GameServerJsonGeneral `json:"list"` -} - type GetAllLoginUrlReq struct { g.Meta `path:"/loginUrl/getAllLoginUrl" tags:"登录地址" method:"post" summary:"allLoginUrl"` } @@ -87,8 +79,42 @@ type AddLoginUrlReq struct { type AddLoginUrlRes struct { } +type AddNewLoginUrlReq struct { + g.Meta `path:"/loginUrl/addNewLoginUrl" tags:"登录地址" method:"post" summary:"添加loginUrl"` + Id int `p:"id"` + Host string `p:"host"` + Port int `p:"port"` + State int `p:"state"` + Recommend int `p:"recommend"` + Name string `p:"name"` + RechargeHost string `p:"rechargeHost"` + RechargePort int `p:"rechargePort"` + Area int `p:"area"` + IsShow int `p:"isShow"` + Channel string `p:"channel"` + GameDbUrl string `p:"gameDbUrl"` + GameDbName string `p:"gameDbName"` + Platform int `p:"platform"` + InnerIp string `p:"innerIp"` + CreateTime string `p:"createTime"` + Remark string `p:"remark"` + Difficulty int `p:"difficulty"` +} + +type AddNewLoginUrlRes struct { +} + +type GetServerConfigGeneralReq struct { + g.Meta `path:"/serverConfig/getGeneral" tags:"系统配置" method:"post" summary:"ServerConfig"` +} + +type GetServerConfigGeneralRes struct { + g.Meta `mime:"application/json"` + List []entity.GameServerJsonGeneral `json:"list"` +} + type AddServerConfigGeneralReq struct { - g.Meta `path:"/ServerConfig/addGeneral" tags:"登录地址" method:"post" summary:"添加loginUrl"` + g.Meta `path:"/serverConfig/addGeneral" tags:"系统配置" method:"post" summary:"修改generalServerConfig"` Id int `p:"id"` BackstageRechargeUrl string `p:"backstageRechargeUrl"` GmWhiteListUrl string `p:"gmWhiteListUrl"` @@ -101,6 +127,49 @@ type AddServerConfigGeneralReq struct { type AddServerConfigGeneralRes struct { } +type AddServerConfigReq struct { + g.Meta `path:"/serverConfig/add" tags:"服务器配置" method:"post" summary:"修改ServerConfig"` + Id int `p:"id"` + GameDbUrl string `p:"gameDbUrl"` + GameDbName string `p:"gameDbName"` + Platform int `p:"platform"` + InnerIp string `p:"innerIp"` + CreateTime string `p:"createTime"` + Remark string `p:"remark"` + Difficulty int `p:"difficulty"` + Channel string `p:"channel"` +} + +type AddServerConfigRes struct { +} + +type GetRouterReq struct { + g.Meta `path:"/serverConfig/getRouter" tags:"服务器配置" method:"post" summary:"router"` + common.PageReq +} + +type GetRouterRes struct { + g.Meta `mime:"application/json"` + List []entity.GameRouter `json:"list"` + common.ListRes +} + +type AddRouterReq struct { + g.Meta `path:"/serverConfig/updateRouter" tags:"服务器配置" method:"post" summary:"修改ServerConfig"` + Id int `p:"id"` + RealmIp string `p:"realmIp"` + RealmPort int `p:"realmPort"` + RealmStep int `p:"realmStep"` + RealmNum int `p:"realmNum"` + RouterIp string `p:"routerIp"` + RouterPort int `p:"routerPort"` + RouterStep int `p:"routerStep"` + RouterNum int `p:"routerNum"` +} + +type AddRouterRes struct { +} + type DelLoginUrlReq struct { g.Meta `path:"/loginUrl/delLoginUrl" tags:"登录地址" method:"post" summary:"删除loginUrl"` Id uint64 `p:"id"` @@ -255,3 +324,13 @@ type GetAllCcdUrlRes struct { g.Meta `mime:"application/json"` List []entity.GameCcdVersion `json:"list"` } + +type GetServerVersionListReq struct { + g.Meta `path:"/server/getVersion" tags:"server" method:"get" summary:"getVersion"` + Server string `json:"serverId"` +} + +type GetServerVersionListRes struct { + g.Meta `mime:"application/json"` + Version string `json:"version"` +} diff --git a/api/v1/game/pub.go b/api/v1/game/pub.go index 05cb0ed..fbac6b2 100644 --- a/api/v1/game/pub.go +++ b/api/v1/game/pub.go @@ -246,5 +246,5 @@ type GetServerConfigRes struct { GameDbName string `json:"gameDbName" description:""` Platform int `json:"platform" description:""` InnerIp string `json:"innerIp" description:""` - CreateTime int64 `json:"createTime" description:""` + CreateTime int64 `json:"createTime" description:""` } diff --git a/internal/cmd/cmd.go b/internal/cmd/cmd.go index 96575ff..3529bdb 100644 --- a/internal/cmd/cmd.go +++ b/internal/cmd/cmd.go @@ -21,7 +21,6 @@ var ( s.Group("/", func(group *ghttp.RouterGroup) { router.BindController(group) router.BindAnotherController(group) - }) //s.SetIndexFolder(true) diff --git a/internal/controller/game_login_url.go b/internal/controller/game_login_url.go index 76728d8..53b370c 100644 --- a/internal/controller/game_login_url.go +++ b/internal/controller/game_login_url.go @@ -51,3 +51,23 @@ func (c *loginUrlController) ReConfigServer(ctx context.Context, req *game.ReCon res, err = serviceGame.GameLoginUrl().ReConfigServer(ctx, req) return res, err } + +func (c *loginUrlController) GetRouter(ctx context.Context, req *game.GetRouterReq) (res *game.GetRouterRes, err error) { + res, err = serviceGame.GameLoginUrl().GetRouter(ctx, req) + return +} + +func (c *loginUrlController) AddServerConfigGeneral(ctx context.Context, req *game.AddServerConfigGeneralReq) (res *game.AddServerConfigGeneralRes, err error) { + res, err = serviceGame.GameLoginUrl().AddServerConfigGeneral(ctx, req) + return +} + +func (c *loginUrlController) AddServerConfig(ctx context.Context, req *game.AddServerConfigReq) (res *game.AddServerConfigRes, err error) { + res, err = serviceGame.GameLoginUrl().AddServerConfig(ctx, req) + return +} + +func (c *loginUrlController) GetServerVersionList(ctx context.Context, req *game.GetServerVersionListReq) (res *game.GetServerVersionListRes, err error) { + res, err = serviceGame.GameLoginUrl().GetServerVersionList(ctx, req) + return res, err +} diff --git a/internal/dao/internal/game_router.go b/internal/dao/internal/game_router.go index de19704..8a5373a 100644 --- a/internal/dao/internal/game_router.go +++ b/internal/dao/internal/game_router.go @@ -21,7 +21,6 @@ type GameRouterDao struct { // GameRouterColumns defines and stores column names for table game_router. type GameRouterColumns struct { Id string // - ServerId string // RealmIp string // RealmPort string // RealmStep string // @@ -35,7 +34,6 @@ type GameRouterColumns struct { // gameRouterColumns holds the columns for table game_router. var gameRouterColumns = GameRouterColumns{ Id: "id", - ServerId: "server_id", RealmIp: "realm_ip", RealmPort: "realm_port", RealmStep: "realm_step", diff --git a/internal/model/do/game_router.go b/internal/model/do/game_router.go index bbe916f..63e1d1f 100644 --- a/internal/model/do/game_router.go +++ b/internal/model/do/game_router.go @@ -12,7 +12,6 @@ import ( type GameRouter struct { g.Meta `orm:"table:game_router, do:true"` Id interface{} // - ServerId interface{} // RealmIp interface{} // RealmPort interface{} // RealmStep interface{} // diff --git a/internal/model/entity/game_router.go b/internal/model/entity/game_router.go index 20f283d..85c5b15 100644 --- a/internal/model/entity/game_router.go +++ b/internal/model/entity/game_router.go @@ -7,7 +7,6 @@ package entity // GameRouter is the golang structure for table game_router. type GameRouter struct { Id int `json:"id" description:""` - ServerId string `json:"serverId" description:""` RealmIp string `json:"realmIp" description:""` RealmPort int `json:"realmPort" description:""` RealmStep int `json:"realmStep" description:""` diff --git a/internal/serviceGame/internal/dbinit.go b/internal/serviceGame/internal/dbinit.go index 98e45c8..5b61bef 100644 --- a/internal/serviceGame/internal/dbinit.go +++ b/internal/serviceGame/internal/dbinit.go @@ -28,6 +28,7 @@ var ( ServerList []entity.GameLoginUrl ChannelList []entity.GameChannelList RechargeServer string + RouterServer string Md5key string CallbackKey string ) @@ -52,6 +53,11 @@ func init() { RechargeServer = svCfg.String() } + svCfg1, err := g.Cfg().Get(ctx, "game.routerServer") + if err == nil { + RouterServer = svCfg1.String() + } + md5keyCfg, err := g.Cfg().Get(ctx, "game.md5key") if err == nil { Md5key = md5keyCfg.String() @@ -141,7 +147,19 @@ func InitChannel(ctx context.Context) { func InitRechargeServer(ctx context.Context) { err := g.Try(ctx, func(ctx context.Context) { - url := "http://" + RechargeServer + "/serverInit" + url := RechargeServer + "/serverInit" + bytes := g.Client().PostBytes(ctx, url) + fmt.Printf("InitRechargeServer: %s, res: %v/n", RechargeServer, string(bytes)) + }) + + if err != nil { + fmt.Println("InitRechargeServer: ", err) + } +} + +func InitRouterServer(ctx context.Context) { + err := g.Try(ctx, func(ctx context.Context) { + url := RouterServer + "/resetRouter?md5=erweita0726" bytes := g.Client().PostBytes(ctx, url) fmt.Printf("InitRechargeServer: %s, res: %v/n", RechargeServer, string(bytes)) }) diff --git a/internal/serviceGame/loginUrl.go b/internal/serviceGame/loginUrl.go index a090a03..d73511a 100644 --- a/internal/serviceGame/loginUrl.go +++ b/internal/serviceGame/loginUrl.go @@ -2,6 +2,8 @@ package serviceGame import ( "context" + "fmt" + "github.com/gogf/gf/v2/encoding/gcharset" "github.com/gogf/gf/v2/encoding/gjson" "github.com/gogf/gf/v2/frame/g" "log" @@ -9,7 +11,6 @@ import ( "tyj_admin/api/v1/game" "tyj_admin/internal/consts" "tyj_admin/internal/dao" - "tyj_admin/internal/model/do" "tyj_admin/internal/model/entity" "tyj_admin/internal/serviceGame/internal" "tyj_admin/library/libUtils" @@ -28,6 +29,9 @@ type IGameLoginUrl interface { ReConfigServer(ctx context.Context, req *game.ReConfigServerReq) (res *game.ReConfigServerRes, err error) GetAllChannel(ctx context.Context, req *game.GetAllChannelReq) (res *game.GetAllChannelRes, err error) GetAllCcdUrl(ctx context.Context, req *game.GetAllCcdUrlReq) (res *game.GetAllCcdUrlRes, err error) + AddServerConfig(ctx context.Context, req *game.AddServerConfigReq) (res *game.AddServerConfigRes, err error) + GetRouter(ctx context.Context, req *game.GetRouterReq) (res *game.GetRouterRes, err error) + GetServerVersionList(ctx context.Context, req *game.GetServerVersionListReq) (res *game.GetServerVersionListRes, err error) } type gameLoginUrlImpl struct { @@ -84,20 +88,18 @@ func (c *gameLoginUrlImpl) GetAllLoginUrl(ctx context.Context, req *game.GetAllL func (c *gameLoginUrlImpl) AddLoginUrl(ctx context.Context, req *game.AddLoginUrlReq) (res *game.AddLoginUrlRes, err error) { res = new(game.AddLoginUrlRes) - g.Try(ctx, func(ctx context.Context) { + err = g.Try(ctx, func(ctx context.Context) { server := []entity.GameLoginUrl{} model := dao.GameLoginUrl.Ctx(ctx) model.WherePri(req.Id).Scan(&server) if len(server) > 0 { - model.WherePri(req.Id).Update(g.Map{ + _, err = model.WherePri(req.Id).Update(g.Map{ dao.GameLoginUrl.Columns().Id: req.Id, dao.GameLoginUrl.Columns().Host: req.Host, dao.GameLoginUrl.Columns().Port: req.Port, dao.GameLoginUrl.Columns().State: req.State, dao.GameLoginUrl.Columns().Recommend: req.Recommend, }) - } else { - _, err = model.Insert(&do.GameLoginUrl{Host: req.Host, Port: req.Port, Id: req.Id, State: req.State, Recommend: req.Recommend, Name: "", Difficulty: 1}) } }) return @@ -213,6 +215,7 @@ func (c *gameLoginUrlImpl) ReConfigServer(ctx context.Context, req *game.ReConfi internal.InitServer(ctx) internal.InitRechargeServer(ctx) internal.InitChannel(ctx) + internal.InitRouterServer(ctx) return } @@ -232,3 +235,101 @@ func (c *gameLoginUrlImpl) GetAllCcdUrl(ctx context.Context, req *game.GetAllCcd }) return } + +func (c *gameLoginUrlImpl) GetRouter(ctx context.Context, req *game.GetRouterReq) (res *game.GetRouterRes, err error) { + g.Try(ctx, func(ctx context.Context) { + res = new(game.GetRouterRes) + model := dao.GameRouter.Ctx(ctx) + res.Total, err = model.Count() + liberr.ErrIsNil(ctx, err, "mysql err") + model = model.Page(req.PageNum, req.PageSize) + err = model.Scan(&res.List) + liberr.ErrIsNil(ctx, err, "mysql err") + }) + return +} + +func (c *gameLoginUrlImpl) AddServerConfig(ctx context.Context, req *game.AddServerConfigReq) (res *game.AddServerConfigRes, err error) { + res = new(game.AddServerConfigRes) + err = g.Try(ctx, func(ctx context.Context) { + server := []entity.GameLoginUrl{} + model := dao.GameLoginUrl.Ctx(ctx) + model.WherePri(req.Id).Scan(&server) + if len(server) > 0 { + _, err = model.WherePri(req.Id).Update(g.Map{ + dao.GameLoginUrl.Columns().Id: req.Id, + dao.GameLoginUrl.Columns().GameDbUrl: req.GameDbUrl, + dao.GameLoginUrl.Columns().GameDbName: req.GameDbName, + dao.GameLoginUrl.Columns().Platform: req.Platform, + dao.GameLoginUrl.Columns().InnerIp: req.InnerIp, + dao.GameLoginUrl.Columns().CreateTime: req.CreateTime, + dao.GameLoginUrl.Columns().Difficulty: req.Difficulty, + dao.GameLoginUrl.Columns().Channel: req.Channel, + }) + } + }) + return +} + +func (c *gameLoginUrlImpl) updateRouter(ctx context.Context, req *game.AddRouterReq) (res *game.AddRouterRes, err error) { + res = new(game.AddRouterRes) + err = g.Try(ctx, func(ctx context.Context) { + server := []entity.GameRouter{} + model := dao.GameRouter.Ctx(ctx) + model.WherePri(req.Id).Scan(&server) + if len(server) > 0 { + _, err = model.WherePri(req.Id).Update(g.Map{ + dao.GameRouter.Columns().Id: req.Id, + dao.GameRouter.Columns().RealmIp: req.RealmIp, + dao.GameRouter.Columns().RealmPort: req.RealmPort, + dao.GameRouter.Columns().RealmNum: req.RealmNum, + dao.GameRouter.Columns().RealmStep: req.RealmStep, + dao.GameRouter.Columns().RouterIp: req.RouterIp, + dao.GameRouter.Columns().RouterPort: req.RouterPort, + dao.GameRouter.Columns().RouterNum: req.RouterNum, + dao.GameRouter.Columns().RouterStep: req.RouterStep, + }) + } else { + _, err = model.Insert(g.Map{ + dao.GameRouter.Columns().Id: req.Id, + dao.GameRouter.Columns().RealmIp: req.RealmIp, + dao.GameRouter.Columns().RealmPort: req.RealmPort, + dao.GameRouter.Columns().RealmNum: req.RealmNum, + dao.GameRouter.Columns().RealmStep: req.RealmStep, + dao.GameRouter.Columns().RouterIp: req.RouterIp, + dao.GameRouter.Columns().RouterPort: req.RouterPort, + dao.GameRouter.Columns().RouterNum: req.RouterNum, + dao.GameRouter.Columns().RouterStep: req.RouterStep, + }) + } + }) + return +} + +func (c *gameLoginUrlImpl) GetServerVersionList(ctx context.Context, req *game.GetServerVersionListReq) (res *game.GetServerVersionListRes, err error) { + res = new(game.GetServerVersionListRes) + ip := internal.ServerConfig[fmt.Sprint(req.Server)] + url := "http://" + ip + "/get_version" + bytes := g.Client().GetBytes(ctx, url) + //fmt.Println("GetOnlineList: ", url, bytes) + src := string(bytes) + if g.IsEmpty(src) { + res.Version = "获取失败" + return + } + + srcCharset := "UTF-8" + tmp, _ := gcharset.ToUTF8(srcCharset, src) + json, err := gjson.DecodeToJson(tmp) + if err != nil { + res.Version = "获取失败" + return + } + //fmt.Println("GetOnlineList - json: ", tmp, gjson.MustEncodeString(json.Get("Accounts").Array())) + if json.Get("Error").Int() == 200 { + res.Version = json.Get("Message").String() + } else { + res.Version = "获取失败" + } + return +} diff --git a/internal/serviceGame/order.go b/internal/serviceGame/order.go index 66548ac..88ef26a 100644 --- a/internal/serviceGame/order.go +++ b/internal/serviceGame/order.go @@ -161,7 +161,7 @@ func (o gameOrderImpl) Deposit(ctx context.Context, req *game.OrderDepositReq) ( recharge.GmMessage = encryptData(string(data)) recharge.Md5Sign = fmt.Sprintf("%x", md5.Sum([]byte(recharge.GmMessage+internal.Md5key))) fmt.Println("Deposit - json: ", string(data), recharge.Md5Sign) - url := "http://" + internal.RechargeServer + "/gmPay/notify" + url := internal.RechargeServer + "/gmPay/notify" rs, err := g.Client().Post(ctx, url, recharge) if err != nil { log.Println("Post 1 : ", req.Uid, url, gjson.MustEncodeString(recharge))