RPC服务器先不启用

This commit is contained in:
hahwu 2026-03-05 18:33:13 +08:00
parent a2a8da873e
commit c72761d627
2 changed files with 144 additions and 163 deletions

View File

@ -1,32 +1,24 @@
package backend package backend
import (
"fmt"
"net"
"server/gen-go/backend"
"github.com/apache/thrift/lib/go/thrift"
)
func Start() { func Start() {
addr := net.JoinHostPort("localhost", "9090") // addr := net.JoinHostPort("localhost", "9090")
handler := NewGameServiceHandler() // handler := NewGameServiceHandler()
//创建处理器 // //创建处理器
processor := backend.NewGameAdminServiceProcessor(handler) // processor := backend.NewGameAdminServiceProcessor(handler)
transportFactory := thrift.NewTBufferedTransportFactory(8192) // transportFactory := thrift.NewTBufferedTransportFactory(8192)
protocolFactory := thrift.NewTBinaryProtocolFactoryConf(&thrift.TConfiguration{}) // protocolFactory := thrift.NewTBinaryProtocolFactoryConf(&thrift.TConfiguration{})
tcpAddr, err := net.ResolveTCPAddr("tcp", addr) // tcpAddr, err := net.ResolveTCPAddr("tcp", addr)
if err != nil { // if err != nil {
fmt.Printf("Failed to resolve address %s: %v\n", addr, err) // fmt.Printf("Failed to resolve address %s: %v\n", addr, err)
return // return
} // }
serverTransport := thrift.NewTServerSocketFromAddrTimeout(tcpAddr, 0) // serverTransport := thrift.NewTServerSocketFromAddrTimeout(tcpAddr, 0)
server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory) // server := thrift.NewTSimpleServer4(processor, serverTransport, transportFactory, protocolFactory)
fmt.Printf("Starting the server on %s...\n", addr) // fmt.Printf("Starting the server on %s...\n", addr)
if err := server.Serve(); err != nil { // if err := server.Serve(); err != nil {
fmt.Printf("Error starting the server: %v\n", err) // fmt.Printf("Error starting the server: %v\n", err)
} // }
} }

View File

@ -1,146 +1,135 @@
package backend package backend
import ( // type GameServiceHandler struct{}
"context"
"server/db"
"server/game"
"server/game/mod/msg"
GoUtil "server/game_util"
"server/gamedata"
"server/gen-go/backend"
"server/pkg/github.com/name5566/leaf/log"
)
type GameServiceHandler struct{} // func NewGameServiceHandler() *GameServiceHandler {
// return &GameServiceHandler{}
// }
func NewGameServiceHandler() *GameServiceHandler { // func (h *GameServiceHandler) ReqPlayerInfo(ctx context.Context, id int64) (*backend.ResAdminInfo, error) {
return &GameServiceHandler{} // player := game.G_GameLogicPtr.GetPlayer(int64(id))
} // online := true
// if player == nil {
// player = new(game.Player)
// player.M_DwUin = int64(id)
// player.InitPlayerOnly()
// player.ZeroUpdate(nil)
// online = false
// }
// res := &backend.ResAdminInfo{}
// res.Name = player.GetBaseMod().NickName
// res.UID = player.M_DwUin
// res.AreaId = int32(player.GetDecorateMod().GetAreaId())
// res.Face = int32(player.GetFaceMod().SetId)
// res.Charge = player.GetChargeMod().Charge
// res.MaxCharge = player.GetChargeMod().MaxCharge
// res.Level = int32(player.GetPlayerBaseMod().GetLevel())
// res.Diamond = int32(player.GetPlayerBaseMod().GetDiamond())
// res.Star = int32(player.GetPlayerBaseMod().GetStar())
// res.Energy = int32(player.GetPlayerBaseMod().GetEnergy())
// res.UserName = player.GetPlayerBaseMod().GetName()
// res.LoginTime = player.GetBaseMod().LoginTime
// res.Cumulative = int32(player.GetBaseMod().Cumulative)
// res.RegisterTime = int32(player.GetPlayerBaseMod().GetRegisterTime())
// res.TodayCumulative = int32(player.GetBaseMod().TodayCumulative)
// res.Ban = int8(db.GetPlayerBan(player.GetBaseMod().Account))
// if online {
// res.Cumulative = int32(int64(player.GetBaseMod().Cumulative) + GoUtil.Now() - int64(player.GetBaseMod().LoginTime))
// res.TodayCumulative = int32(int64(player.GetBaseMod().TodayCumulative) + GoUtil.Now() - int64(player.GetBaseMod().LoginTime))
// }
// res.Code = player.GetBaseMod().AddCode
// res.ChessMap = player.GetChessMod().ChessMap
// resActLog := make([]*backend.Actlog, 0, len(player.GetFriendMod().ActivityLog))
// for _, log := range player.GetFriendMod().ActivityLog {
// resActLog = append(resActLog, &backend.Actlog{
// Type: int8(log.Type),
// Time: log.Time,
// Param: log.Param,
// })
// }
// res.ActLog = resActLog
// friendList := player.GetFriendMod().NewFriendList
// type friendInfo struct {
// Uid int64
// NickName string
// Avatar int
// Level int
// LogoutTime int64
// LoginTime int64
// }
// resFriendList := make([]*backend.FriendInfo, 0, len(friendList))
// for v := range friendList {
// ps := game.G_GameLogicPtr.GetSimplePlayerByUid(v)
// if ps == nil {
// continue
// }
// resFriendList = append(resFriendList, &backend.FriendInfo{
// UID: int64(v),
// NickName: ps.Name,
// Face: int32(ps.Face),
// Level: int32(ps.Level),
// LogoutTime: ps.Loginout,
// LoginTime: ps.Login,
// })
// }
// res.FriendList = resFriendList
// OrderMap := make(map[int32]*backend.OrderInfo)
// Index := 0
// for k, v := range player.GetOrderMod().OrderList {
// OrderMap[int32(Index)] = &backend.OrderInfo{
// ID: int32(k),
// Type: int32(v.Type),
// Time: v.Timestamp,
// ChessId: GoUtil.IntSliceToString(v.MergeId),
// Diff: int8(v.Diff),
// }
// Index++
// }
// res.OrderList = OrderMap
// return res, nil
// }
func (h *GameServiceHandler) ReqPlayerInfo(ctx context.Context, id int64) (*backend.ResAdminInfo, error) { // func (h *GameServiceHandler) ReqReloadServerMail(ctx context.Context) (*backend.ResMessage, error) {
player := game.G_GameLogicPtr.GetPlayer(int64(id)) // game.G_GameLogicPtr.MailMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL_RELOAD})
online := true // game.G_GameLogicPtr.NotifyAll(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL})
if player == nil { // log.Debug("ReqReloadServerMail success")
player = new(game.Player) // return &backend.ResMessage{
player.M_DwUin = int64(id) // Code: 0,
player.InitPlayerOnly() // }, nil
player.ZeroUpdate(nil) // }
online = false
}
res := &backend.ResAdminInfo{}
res.Name = player.GetBaseMod().NickName
res.UID = player.M_DwUin
res.AreaId = int32(player.GetDecorateMod().GetAreaId())
res.Face = int32(player.GetFaceMod().SetId)
res.Charge = player.GetChargeMod().Charge
res.MaxCharge = player.GetChargeMod().MaxCharge
res.Level = int32(player.GetPlayerBaseMod().GetLevel())
res.Diamond = int32(player.GetPlayerBaseMod().GetDiamond())
res.Star = int32(player.GetPlayerBaseMod().GetStar())
res.Energy = int32(player.GetPlayerBaseMod().GetEnergy())
res.UserName = player.GetPlayerBaseMod().GetName()
res.LoginTime = player.GetBaseMod().LoginTime
res.Cumulative = int32(player.GetBaseMod().Cumulative)
res.RegisterTime = int32(player.GetPlayerBaseMod().GetRegisterTime())
res.TodayCumulative = int32(player.GetBaseMod().TodayCumulative)
res.Ban = int8(db.GetPlayerBan(player.GetBaseMod().Account))
if online {
res.Cumulative = int32(int64(player.GetBaseMod().Cumulative) + GoUtil.Now() - int64(player.GetBaseMod().LoginTime))
res.TodayCumulative = int32(int64(player.GetBaseMod().TodayCumulative) + GoUtil.Now() - int64(player.GetBaseMod().LoginTime))
}
res.Code = player.GetBaseMod().AddCode
res.ChessMap = player.GetChessMod().ChessMap
resActLog := make([]*backend.Actlog, 0, len(player.GetFriendMod().ActivityLog))
for _, log := range player.GetFriendMod().ActivityLog {
resActLog = append(resActLog, &backend.Actlog{
Type: int8(log.Type),
Time: log.Time,
Param: log.Param,
})
}
res.ActLog = resActLog
friendList := player.GetFriendMod().NewFriendList
type friendInfo struct {
Uid int64
NickName string
Avatar int
Level int
LogoutTime int64
LoginTime int64
}
resFriendList := make([]*backend.FriendInfo, 0, len(friendList))
for v := range friendList {
ps := game.G_GameLogicPtr.GetSimplePlayerByUid(v)
if ps == nil {
continue
}
resFriendList = append(resFriendList, &backend.FriendInfo{
UID: int64(v),
NickName: ps.Name,
Face: int32(ps.Face),
Level: int32(ps.Level),
LogoutTime: ps.Loginout,
LoginTime: ps.Login,
})
}
res.FriendList = resFriendList
OrderMap := make(map[int32]*backend.OrderInfo)
Index := 0
for k, v := range player.GetOrderMod().OrderList {
OrderMap[int32(Index)] = &backend.OrderInfo{
ID: int32(k),
Type: int32(v.Type),
Time: v.Timestamp,
ChessId: GoUtil.IntSliceToString(v.MergeId),
Diff: int8(v.Diff),
}
Index++
}
res.OrderList = OrderMap
return res, nil
}
func (h *GameServiceHandler) ReqReloadServerMail(ctx context.Context) (*backend.ResMessage, error) { // func (h *GameServiceHandler) ReqConfigReload(ctx context.Context) (*backend.ResMessage, error) {
game.G_GameLogicPtr.MailMgrCall(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL_RELOAD}) // gamedata.Reload()
game.G_GameLogicPtr.NotifyAll(&msg.Msg{Type: msg.HANDLE_TYPE_MAIL}) // return &backend.ResMessage{
log.Debug("ReqReloadServerMail success") // Code: 0,
return &backend.ResMessage{ // }, nil
Code: 0, // }
}, nil
}
func (h *GameServiceHandler) ReqConfigReload(ctx context.Context) (*backend.ResMessage, error) { // func (h *GameServiceHandler) ReqAdminGm(ctx context.Context, uid int64, command string) (*backend.ResMessage, error) {
gamedata.Reload() // player := game.G_GameLogicPtr.GetPlayer(uid)
return &backend.ResMessage{ // if player == nil {
Code: 0, // return &backend.ResMessage{
}, nil // Code: 1,
} // Msg: "player not online",
// }, nil
// }
// player.Lock()
// defer player.UnLock()
// err := game.ReqGmCommand_(player, command)
// if err != nil {
// return &backend.ResMessage{
// Code: 1,
// Msg: err.Error(),
// }, nil
// }
// return &backend.ResMessage{
// Code: 0,
// }, nil
// }
func (h *GameServiceHandler) ReqAdminGm(ctx context.Context, uid int64, command string) (*backend.ResMessage, error) { // func (h *GameServiceHandler) ReqAdminBan(ctx context.Context, uid int64, banTime int64) (*backend.ResMessage, error) {
player := game.G_GameLogicPtr.GetPlayer(uid) // db.UpdatePlayerBan(uid, banTime)
if player == nil { // return &backend.ResMessage{
return &backend.ResMessage{ // Code: 0,
Code: 1, // }, nil
Msg: "player not online", // }
}, nil
}
player.Lock()
defer player.UnLock()
err := game.ReqGmCommand_(player, command)
if err != nil {
return &backend.ResMessage{
Code: 1,
Msg: err.Error(),
}, nil
}
return &backend.ResMessage{
Code: 0,
}, nil
}
func (h *GameServiceHandler) ReqAdminBan(ctx context.Context, uid int64, banTime int64) (*backend.ResMessage, error) {
db.UpdatePlayerBan(uid, banTime)
return &backend.ResMessage{
Code: 0,
}, nil
}