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.

148 lines
5.6 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)
GetLoginOutGm(ctx context.Context, req *game.GetLoginOutGmReq) (res *game.GetLoginOutGmRes, err error)
4 months ago
}
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)
4 months ago
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
1 month ago
//fmt.Println("GetOnlineList - json: ", v)
4 months ago
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)
1 month ago
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(DateFormat))
4 months ago
if req.ServerId != 0 {
1 month ago
fsql += fmt.Sprintf("and server=%d ", req.ServerId)
4 months ago
}
1 month ago
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))
4 months ago
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
}
func (s *gameRoleImpl) GetLoginOutGm(ctx context.Context, req *game.GetLoginOutGmReq) (res *game.GetLoginOutGmRes, err error) {
res, err = internal.GetLoginOutGm(ctx, req)
return
}