You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
5.3 KiB
142 lines
5.3 KiB
4 months ago
|
package serviceGame
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"github.com/gogf/gf/v2/encoding/gcharset"
|
||
|
"github.com/gogf/gf/v2/encoding/gjson"
|
||
|
"github.com/gogf/gf/v2/errors/gerror"
|
||
|
"github.com/gogf/gf/v2/frame/g"
|
||
|
"time"
|
||
|
"tyj_admin/api/v1/game"
|
||
|
"tyj_admin/internal/serviceGame/internal"
|
||
|
)
|
||
|
|
||
|
type IGameRole interface {
|
||
|
GetGameRoleListSearch(ctx context.Context, req *game.RoleSearchReq) (res *game.RoleSearchRes, err error)
|
||
|
GetOnlineList(ctx context.Context, req *game.RoleOnlineReq) (res *game.RoleOnlineRes, err error)
|
||
|
GetOnlineTopList(ctx context.Context, req *game.RoleOnlineTopReq) (res *game.RoleOnlineTopRes, err error)
|
||
|
GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes, err error)
|
||
|
GameRegister(ctx context.Context, req *game.RegisterReq) (res *game.RegisterRes, err error)
|
||
|
GameUnitChangeName(ctx context.Context, req *game.UnitChangeNameReq) (res *game.UnitChangeNameRes, err error)
|
||
|
GetLoginOut(ctx context.Context, req *game.GetLoginOutReq) (res *game.GetLoginOutRes, err error)
|
||
|
GetLoginOutLog(ctx context.Context, req *game.GetLoginOutLogReq) (res *game.GetLoginOutLogRes, err error)
|
||
|
GetItemLog(ctx context.Context, req *game.GetItemLogReq) (res *game.GetItemLogRes, err error)
|
||
|
GetRegister(ctx context.Context, req *game.GetRegisterReq) (res *game.GetRegisterRes, err error)
|
||
|
GameUserDel(ctx context.Context, req *game.UserDelReq) (res *game.UserDelRes, err error)
|
||
|
}
|
||
|
|
||
|
type gameRoleImpl struct {
|
||
|
}
|
||
|
|
||
|
var gameRoleService = gameRoleImpl{}
|
||
|
|
||
|
func GameRole() IGameRole {
|
||
|
return &gameRoleService
|
||
|
}
|
||
|
|
||
|
// 获取玩家角色列表
|
||
|
func (s *gameRoleImpl) GetGameRoleListSearch(ctx context.Context, req *game.RoleSearchReq) (res *game.RoleSearchRes, err error) {
|
||
|
//res = new(game.RoleSearchRes)
|
||
|
g.Try(ctx, func(ctx context.Context) {
|
||
|
//fmt.Println("GetGameRoleListSearch: ", req)
|
||
|
res, err = internal.GetRoleList(ctx, req)
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GetOnlineList(ctx context.Context, req *game.RoleOnlineReq) (res *game.RoleOnlineRes, err error) {
|
||
|
res = new(game.RoleOnlineRes)
|
||
|
ip := internal.ServerConfig[fmt.Sprint(req.ServerId)]
|
||
|
url := "http://" + ip + "/GetOnline"
|
||
|
bytes := g.Client().GetBytes(ctx, url)
|
||
|
//fmt.Println("GetOnlineList: ", url, bytes)
|
||
|
src := string(bytes)
|
||
|
if g.IsEmpty(src) {
|
||
|
g.Log().Printf(ctx, "GetOnlineList: gerror.New(\"空回调,发送失败\")")
|
||
|
return res, nil
|
||
|
}
|
||
|
|
||
|
srcCharset := "UTF-8"
|
||
|
tmp, _ := gcharset.ToUTF8(srcCharset, src)
|
||
|
json, err := gjson.DecodeToJson(tmp)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
//fmt.Println("GetOnlineList - json: ", tmp, gjson.MustEncodeString(json.Get("Accounts").Array()))
|
||
|
if json.Get("Error").Int() == 200 {
|
||
|
res.Total = len(json.Get("Accounts").Array())
|
||
|
for _, v := range json.Get("Accounts").Array() {
|
||
|
account := map[string]interface{}{}
|
||
|
account["id"] = v
|
||
|
fmt.Println("GetOnlineList - json: ", v)
|
||
|
account["uid"], _ = internal.GetStringIdToUid(ctx, fmt.Sprint(v))
|
||
|
res.Onlines = append(res.Onlines, account)
|
||
|
if len(res.Onlines) >= 50 {
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
return nil, gerror.New("获取失败")
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
var DateFormat = "2006-01-02"
|
||
|
|
||
|
func (s *gameRoleImpl) GetOnlineTopList(ctx context.Context, req *game.RoleOnlineTopReq) (res *game.RoleOnlineTopRes, err error) {
|
||
|
res = new(game.RoleOnlineTopRes)
|
||
|
fsql := fmt.Sprintf(`select max(num) as num, max(server) AS server,channel, date from game_online where STR_TO_DATE(date, "%%Y-%%m-%%d")="%s" `, time.Now().Format(DateFormat))
|
||
|
if req.ServerId != 0 {
|
||
|
fsql += fmt.Sprintf(" and server=%d ", req.ServerId)
|
||
|
}
|
||
|
fsql += " group by date,server,channel"
|
||
|
sSql := fmt.Sprintf(`select sum(b.num) as num, max(b.server) AS server, b.date from (%s) as b group by b.date,b.server`, fsql)
|
||
|
tsql := fmt.Sprintf(`select max(a.num) as num, max(a.server) AS server from (%s) as a group by a.server asc`, sSql)
|
||
|
err = g.Model().Raw(tsql).Scan(&res.Onlines)
|
||
|
g.Log().Printf(ctx, "res.Onlines: %v", res.Onlines)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GetAccount(ctx context.Context, req *game.AccountReq) (res *game.AccountRes, err error) {
|
||
|
res, err = internal.GetAccount(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GameRegister(ctx context.Context, req *game.RegisterReq) (res *game.RegisterRes, err error) {
|
||
|
//g.Log().Info(ctx, "LoginOut - json: ", gjson.MustEncodeString(req))
|
||
|
res, err = internal.GameRegister(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GameUnitChangeName(ctx context.Context, req *game.UnitChangeNameReq) (res *game.UnitChangeNameRes, err error) {
|
||
|
g.Log().Info(ctx, "GameUnitChangeName - json: ", gjson.MustEncodeString(req))
|
||
|
res, err = internal.GameUnitChangeName(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GetLoginOut(ctx context.Context, req *game.GetLoginOutReq) (res *game.GetLoginOutRes, err error) {
|
||
|
res, err = internal.GetLoginOut(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GetLoginOutLog(ctx context.Context, req *game.GetLoginOutLogReq) (res *game.GetLoginOutLogRes, err error) {
|
||
|
res, err = internal.GetLoginOutLog(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GetItemLog(ctx context.Context, req *game.GetItemLogReq) (res *game.GetItemLogRes, err error) {
|
||
|
res, err = internal.GetItemLog(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GetRegister(ctx context.Context, req *game.GetRegisterReq) (res *game.GetRegisterRes, err error) {
|
||
|
res, err = internal.GetRegister(ctx, req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (s *gameRoleImpl) GameUserDel(ctx context.Context, req *game.UserDelReq) (res *game.UserDelRes, err error) {
|
||
|
res, err = internal.GameUserDel(ctx, req)
|
||
|
return res, err
|
||
|
}
|