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.
146 lines
5.7 KiB
146 lines
5.7 KiB
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/consts" |
|
"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) |
|
GetItemLogTwo(ctx context.Context, req *game.GetItemLogTwoReq) (res *game.GetItemLogTwoRes, err error) |
|
GameUserDel(ctx context.Context, req *game.UserDelReq) (res *game.UserDelRes, err error) |
|
GetLoginOutGm(ctx context.Context, req *game.GetLoginOutGmReq) (res *game.GetLoginOutGmRes, 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, "%d GetOnlineList: gerror.New(\"空回调,发送失败\")", req.ServerId) |
|
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 |
|
} |
|
|
|
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,server,channel,date from game_online where STR_TO_DATE(date, "%%Y-%%m-%%d")="%s" `, time.Now().Format(consts.DATE_FORMAT)) |
|
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,b.server,b.date from (%s) as b group by b.date,b.server`, fsql) |
|
tsql := fmt.Sprintf(`select max(a.num) as num,a.server from (%s) as a group by a.server ORDER BY a.server asc`, sSql) |
|
err = g.Model().Raw(tsql).Scan(&res.Onlines) |
|
//g.Log().Printf(ctx, "res.Onlines: %v", gjson.MustEncodeString(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) GetItemLogTwo(ctx context.Context, req *game.GetItemLogTwoReq) (res *game.GetItemLogTwoRes, err error) { |
|
res, err = internal.GetItemLogTwo(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 |
|
} |
|
|
|
func (s *gameRoleImpl) GetLoginOutGm(ctx context.Context, req *game.GetLoginOutGmReq) (res *game.GetLoginOutGmRes, err error) { |
|
res, err = internal.GetLoginOutGm(ctx, req) |
|
return |
|
}
|
|
|