新增rpc接口
This commit is contained in:
parent
0f31ddd868
commit
a6993fa15f
@ -31,6 +31,16 @@ func (s *backendServer) OrderShipping(ctx context.Context, req *msg.ReqOrderShip
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func (s *backendServer) UserDetail(ctx context.Context, req *msg.UserDetailParam) (*msg.ResUserDetail, error) {
|
||||
log.Debug("Received UserDetail request: %v", req)
|
||||
res, err := game.AdminPlayerDetailInfo(req)
|
||||
if err != nil {
|
||||
log.Error("UserDetail error: %v", err)
|
||||
return nil, err
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func Start() {
|
||||
if conf.Server.RPCAddr == "" {
|
||||
log.Debug("RPC server address not configured, skipping gRPC server startup")
|
||||
|
||||
@ -13,6 +13,7 @@ import (
|
||||
"server/msg"
|
||||
"server/pkg/github.com/name5566/leaf/gate"
|
||||
"server/pkg/github.com/name5566/leaf/log"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/shirou/gopsutil/cpu"
|
||||
@ -348,3 +349,97 @@ func AdminShipping(req *msg.ReqOrderShipping) (*msg.ResOrderShipping, error) {
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
func AdminPlayerDetailInfo(req *msg.UserDetailParam) (*msg.ResUserDetail, error) {
|
||||
player := G_GameLogicPtr.GetPlayer(req.Uid)
|
||||
online := true
|
||||
if player == nil {
|
||||
player = new(Player)
|
||||
player.M_DwUin = req.Uid
|
||||
player.InitPlayerOnly()
|
||||
player.ZeroUpdate(nil)
|
||||
online = false
|
||||
}
|
||||
banTime := db.GetPlayerBan(player.PlayMod.getBaseMod().Account)
|
||||
actLog := make([]*msg.ActLog, 0, len(player.PlayMod.getFriendMod().ActivityLog))
|
||||
for _, v := range player.PlayMod.getFriendMod().ActivityLog {
|
||||
actLog = append(actLog, &msg.ActLog{
|
||||
Type: int32(v.Type),
|
||||
Time: v.Time,
|
||||
Param: v.Param,
|
||||
})
|
||||
}
|
||||
info := &msg.ResUserDetailInfo{
|
||||
Name: player.PlayMod.getBaseMod().NickName,
|
||||
Uid: player.M_DwUin,
|
||||
AreaId: int32(player.PlayMod.getDecorateMod().GetAreaId()),
|
||||
Face: int32(player.PlayMod.getFaceMod().SetId),
|
||||
Charge: int32(player.PlayMod.getChargeMod().Charge),
|
||||
MaxCharge: int32(player.PlayMod.getChargeMod().MaxCharge),
|
||||
Level: int32(player.GetPlayerBaseMod().GetLevel()),
|
||||
Diamond: int64(player.GetPlayerBaseMod().GetDiamond()),
|
||||
Star: int32(player.GetPlayerBaseMod().GetStar()),
|
||||
Energy: int32(player.GetPlayerBaseMod().GetEnergy()),
|
||||
Mac: player.GetPlayerBaseMod().GetName(),
|
||||
Login: int64(player.PlayMod.getBaseMod().LoginTime),
|
||||
Cumulative: int64(player.PlayMod.getBaseMod().Cumulative),
|
||||
RegisterTime: player.GetPlayerBaseMod().GetRegisterTime(),
|
||||
TodayCumulative: int64(player.PlayMod.getBaseMod().TodayCumulative),
|
||||
Ban: banTime > GoUtil.Now() || banTime == -1,
|
||||
Bonus: int32(player.PlayMod.getLimitedTimeEventMod().Progress),
|
||||
Code: player.PlayMod.getBaseMod().AddCode,
|
||||
ActLog: actLog,
|
||||
AdWatch: int32(player.PlayMod.getKvMod().GetAdValue()),
|
||||
}
|
||||
|
||||
if online {
|
||||
info.Cumulative = int64(player.PlayMod.getBaseMod().Cumulative) + GoUtil.Now() - int64(player.PlayMod.getBaseMod().LoginTime)
|
||||
info.TodayCumulative = int64(player.PlayMod.getBaseMod().TodayCumulative) + GoUtil.Now() - int64(player.PlayMod.getBaseMod().LoginTime)
|
||||
}
|
||||
|
||||
if chessMap := player.PlayMod.getChessMod().ChessMap; len(chessMap) > 0 {
|
||||
info.ChessMap = make(map[int32]int32, len(chessMap))
|
||||
for key, value := range chessMap {
|
||||
chessID, err := strconv.Atoi(key)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
info.ChessMap[int32(chessID)] = value
|
||||
}
|
||||
}
|
||||
|
||||
friendList := player.PlayMod.getFriendMod().NewFriendList
|
||||
info.FriendList = make([]*msg.UserDetailFriendInfo, 0, len(friendList))
|
||||
for uid := range friendList {
|
||||
ps := G_GameLogicPtr.GetSimplePlayerByUid(uid)
|
||||
if ps == nil {
|
||||
continue
|
||||
}
|
||||
info.FriendList = append(info.FriendList, &msg.UserDetailFriendInfo{
|
||||
Uid: int64(uid),
|
||||
NickName: ps.Name,
|
||||
Avatar: int32(ps.Face),
|
||||
Level: int32(ps.Level),
|
||||
LogoutTime: ps.Loginout,
|
||||
LoginTime: ps.Login,
|
||||
})
|
||||
}
|
||||
|
||||
orderList := player.PlayMod.getOrderMod().OrderList
|
||||
info.Order = make([]*msg.UserDetailOrderInfo, 0, len(orderList))
|
||||
for orderID, order := range orderList {
|
||||
info.Order = append(info.Order, &msg.UserDetailOrderInfo{
|
||||
Id: fmt.Sprint(orderID),
|
||||
Type: int32(order.Type),
|
||||
Time: order.Timestamp,
|
||||
ChessId: GoUtil.IntSliceToString(order.MergeId),
|
||||
Diff: int32(order.Diff),
|
||||
})
|
||||
}
|
||||
|
||||
return &msg.ResUserDetail{
|
||||
Code: 0,
|
||||
Msg: "ok",
|
||||
Info: info,
|
||||
}, nil
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user