game/common/rpc/rpcGameUser.go
2025-06-16 00:50:42 +08:00

45 lines
1.0 KiB
Go

package rpc
import (
"encoding/json"
"game/common/model/user"
"game/common/proto/pb"
"game/common/userBindService"
"github.com/fox/fox/ipb"
"github.com/fox/fox/log"
"github.com/fox/fox/service"
"time"
)
const (
timeout = time.Second * 30
)
// 获取玩家数据
func RpcGetGameUser(bindService *userBindService.UserBindService, s service.IService, uid int64) (*user.GameUser, pb.ErrCode) {
node, err := bindService.HashServiceNode(pb.ServiceTypeId_STI_DB, uid)
if err != nil {
log.ErrorF("db service node error:%v", err)
return nil, pb.ErrCode_SystemErr
}
us := &user.GameUser{
User: user.User{
ID: uid,
},
UserResources: user.UserResources{
UID: uid,
},
}
rpcMsg := ipb.MakeRpcMsg(GetGameUser, uid, us)
rspMsg, err := s.Call(service.RpcTopicEx(node.Name), timeout, rpcMsg)
if err != nil {
log.ErrorF("call rpc:%v err:%s ", rpcMsg.RpcMsgId, err.Error())
return nil, pb.ErrCode_SystemErr
}
if rspMsg.RpcCode == 0 {
_ = json.Unmarshal(rspMsg.Msg, us)
return us, pb.ErrCode_OK
}
return nil, pb.ErrCode(rspMsg.RpcCode)
}