654 lines
21 KiB
Go
654 lines
21 KiB
Go
![]() |
package handler
|
||
|
|
||
|
import (
|
||
|
"ecs/proto"
|
||
|
"ecs/proto/old"
|
||
|
"github.com/oylshe1314/framework/client"
|
||
|
"github.com/oylshe1314/framework/client/rpc"
|
||
|
"github.com/oylshe1314/framework/errors"
|
||
|
"github.com/oylshe1314/framework/http"
|
||
|
"github.com/oylshe1314/framework/message"
|
||
|
"github.com/oylshe1314/framework/server"
|
||
|
"github.com/oylshe1314/framework/util"
|
||
|
"net/url"
|
||
|
)
|
||
|
|
||
|
type InnerHandler struct {
|
||
|
*Handler
|
||
|
|
||
|
httpRpcClient *rpc.HttpRpcClient
|
||
|
}
|
||
|
|
||
|
func NewInnerHandler(srv server.Server, httpRpcClient *rpc.HttpRpcClient) *InnerHandler {
|
||
|
return &InnerHandler{Handler: newHandler(srv), httpRpcClient: httpRpcClient}
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) ServerDetect(msg *http.Message) {
|
||
|
var req = new(old.MsgServerDetectReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- ServerDetect, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var list []*old.ServerDetectData
|
||
|
for _, serverDetect := range req.List {
|
||
|
var detectAck = new(message.MsgServerDetectAck)
|
||
|
reply, err := this.httpRpcClient.AppIdGet(serverDetect.Name, serverDetect.AppId, "/server/detect", nil, detectAck)
|
||
|
if err != nil {
|
||
|
this.logger.Warnf("[%s:%d] -> Server detect error, %v", serverDetect.Name, serverDetect.AppId, err)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Warnf("[%s:%d] -> Server detect failed, %v", serverDetect.Name, serverDetect.AppId, reply.Message)
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
var detectData = &old.ServerDetectData{
|
||
|
ServerDetect: old.ServerDetect{
|
||
|
Name: serverDetect.Name,
|
||
|
AppId: serverDetect.AppId,
|
||
|
},
|
||
|
ProgramHash: detectAck.ProgramHash,
|
||
|
DataHash: detectAck.DataHash,
|
||
|
ConfigHash: detectAck.ConfigHash,
|
||
|
Pid: detectAck.Pid,
|
||
|
CPU: detectAck.CPU,
|
||
|
Memory: detectAck.Memory,
|
||
|
Coroutine: uint32(detectAck.Coroutine),
|
||
|
Info: detectAck.Info,
|
||
|
}
|
||
|
|
||
|
if serverDetect.Name == "game_1" {
|
||
|
var onlineAck = new(old.MsgServerOnlineAck)
|
||
|
reply, err = this.httpRpcClient.AppIdGet(serverDetect.Name, serverDetect.AppId, "/server/online", nil, onlineAck)
|
||
|
if err != nil {
|
||
|
this.logger.Warnf("[%s:%d:/server/online] -> Get server online error, %v", serverDetect.Name, serverDetect.AppId, err)
|
||
|
} else {
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Warnf("[%s:%d] -> Get server online failed, %v", serverDetect.Name, serverDetect.AppId, reply.Message)
|
||
|
} else {
|
||
|
detectData.Online = onlineAck.Online
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
list = append(list, detectData)
|
||
|
}
|
||
|
|
||
|
var ack = &old.MsgServerDetectAck{List: list}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> ServerDetect, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(ack)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateSettingGet(msg *http.Message) {
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateSettingGet, req: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
|
||
|
}
|
||
|
|
||
|
var ack = new(old.MsgGateSettingGetAck)
|
||
|
reply, err := this.httpRpcClient.RandGet("gate", "/setting/get", nil, ack)
|
||
|
if err != nil {
|
||
|
this.logger.Error("[gate:0] -> Get setting error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Error("[gate:0] -> Get setting error, ", reply.Message)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateSettingGet, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(ack)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateSettingSave(msg *http.Message) {
|
||
|
var req = new(old.MsgGateSettingSaveReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateSettingGet, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandPost("gate", "/setting/save", nil, req, nil)
|
||
|
if err != nil {
|
||
|
this.logger.Error("[gate:0] -> Save setting error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Error("[gate:0] -> Save setting error, ", reply.Message)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateSettingGet, ack: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(nil)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateUserQuery(msg *http.Message) {
|
||
|
var req = new(old.MsgUserQueryReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateUserQuery, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var query = url.Values{}
|
||
|
query.Add("pageNo", util.IntegerToString(req.PageNo))
|
||
|
query.Add("pageSize", util.IntegerToString(req.PageSize))
|
||
|
if req.Channel != 0 {
|
||
|
query.Add("channel", util.IntegerToString(req.Channel))
|
||
|
}
|
||
|
if req.UserId > 0 {
|
||
|
query.Add("userId", util.IntegerToString(req.UserId))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandGet("gate", "/user/query", query, new(old.MsgUserQueryAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateUserQuery, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateUserOperate(msg *http.Message) {
|
||
|
var req = new(old.MsgUserOperateReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateUserOperate, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandPost("gate", "/user/operate", nil, req, new(old.MsgUserQueryAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateUserOperate, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateCdkeyGet(msg *http.Message) {
|
||
|
var req = new(old.MsgCdkeyGetReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateCdkeyGet, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var query = url.Values{}
|
||
|
query.Add("key", req.Key)
|
||
|
|
||
|
var ack = new(old.MsgCdkeyGetAck)
|
||
|
reply, err := this.httpRpcClient.RandGet("gate", "/cdkey/get", query, ack)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateCdkeyGet, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateCdkeyList(msg *http.Message) {
|
||
|
var req = new(old.MsgCdkeyListReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateCdkeyList, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var query = url.Values{}
|
||
|
query.Add("pageNo", util.IntegerToString(req.PageNo))
|
||
|
query.Add("pageSize", util.IntegerToString(req.PageSize))
|
||
|
if req.Channel != 0 {
|
||
|
query.Add("channel", util.IntegerToString(req.Channel))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandGet("gate", "/cdkey/list", query, new(old.MsgCdkeyListAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateCdkeyList, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateCdkeyAdd(msg *http.Message) {
|
||
|
var req = new(old.MsgCdkeyAddReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateCdkeyAdd, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandPost("gate", "/cdkey/add", nil, req, new(old.MsgCdkeyAddAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateCdkeyAdd, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateCdkeyGenerate(msg *http.Message) {
|
||
|
var req = new(old.MsgCdkeyGenerateReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateCdkeyAdd, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandPost("gate", "/cdkey/generate", nil, req, new(old.MsgCdkeyGenerateAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateCdkeyAdd, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GateCdkeyDelete(msg *http.Message) {
|
||
|
var req = new(old.MsgCdkeyDeleteReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GateCdkeyAdd, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.RandPost("gate", "/cdkey/delete", nil, req, nil)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Gate get cdkey error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GateCdkeyDelete, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GameDataReload(msg *http.Message) {
|
||
|
var serverReplies []*old.ServerReply
|
||
|
ar, err := this.httpRpcClient.AllPost("game_1", "/server/data/reload", nil, nil, nil)
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http get error, error: %v", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
for appId, result := range ar {
|
||
|
if result.Err != nil {
|
||
|
this.logger.Errorf("Http post error, appId: %d, error: %v", appId, result.Err)
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: result.Err.Error()})
|
||
|
} else {
|
||
|
if result.Res.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, result.Res.Message)
|
||
|
}
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: 0, Message: result.Res.Message})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var ack = &old.MsgGameDataReloadAck{ServerReplies: serverReplies}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GameDataReload, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(ack)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GameMailList(msg *http.Message) {
|
||
|
var req = new(old.MsgGameMailListReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GameMailList, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var serverReplies []*old.ServerMailList
|
||
|
if req.AppId == 0 {
|
||
|
ar, err := this.httpRpcClient.AllGet("game_1", "/server/mail/list", nil, new(old.MsgRegionMailListAck))
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http get error, error: %v", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
for appId, result := range ar {
|
||
|
if result.Err != nil {
|
||
|
this.logger.Errorf("Http get error, appId: %d, error: %v", appId, err)
|
||
|
serverReplies = append(serverReplies, &old.ServerMailList{ServerReply: old.ServerReply{AppId: appId, Status: -1, Message: result.Err.Error()}})
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
if result.Res.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http get failed, appId: %d, message: %s", appId, result.Res.Message)
|
||
|
serverReplies = append(serverReplies, &old.ServerMailList{ServerReply: old.ServerReply{AppId: appId, Status: result.Res.Status, Message: result.Res.Message}})
|
||
|
continue
|
||
|
}
|
||
|
|
||
|
serverReplies = append(serverReplies, &old.ServerMailList{
|
||
|
ServerReply: old.ServerReply{AppId: appId, Status: 0, Message: result.Res.Message},
|
||
|
MailList: result.Res.Data.(*old.MsgRegionMailListAck).List,
|
||
|
})
|
||
|
}
|
||
|
} else {
|
||
|
reply, err := this.httpRpcClient.AppIdGet("game_1", req.AppId, "/server/mail/list", nil, new(old.MsgRegionMailListAck))
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http get error, appId: %d, error: %v", req.AppId, err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
} else {
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http get failed, appId: %d, message: %s", req.AppId, reply.Message)
|
||
|
serverReplies = append(serverReplies, &old.ServerMailList{ServerReply: old.ServerReply{AppId: req.AppId, Status: reply.Status, Message: reply.Message}})
|
||
|
} else {
|
||
|
serverReplies = append(serverReplies, &old.ServerMailList{
|
||
|
ServerReply: old.ServerReply{AppId: req.AppId, Status: 0, Message: reply.Message},
|
||
|
MailList: reply.Data.(*old.MsgRegionMailListAck).List,
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var ack = &old.MsgGameMailListAck{ServerReplies: serverReplies}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GameMailList, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(ack)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GameMailSend(msg *http.Message) {
|
||
|
var req = new(old.MsgGameMailSendReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GameMailSend, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var serverReplies []*old.ServerReply
|
||
|
if len(req.PlayerIds) == 0 { //没有玩家ID发全服邮件
|
||
|
if len(req.AppIds) == 0 {
|
||
|
ar, err := this.httpRpcClient.AllPost("game_1", "/server/mail/send", nil, &old.MsgRegionMailSendReq{BackMail: req.BackMail}, new(old.MsgRegionMailSendAck))
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http get error, error: %v", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
for appId, result := range ar {
|
||
|
if result.Err != nil {
|
||
|
this.logger.Errorf("Http post error, appId: %d, error: %v", appId, result.Err)
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: result.Err.Error()})
|
||
|
} else {
|
||
|
if result.Res.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, result.Res.Message)
|
||
|
}
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: 0, Message: result.Res.Message})
|
||
|
}
|
||
|
}
|
||
|
} else {
|
||
|
for _, appId := range req.AppIds {
|
||
|
reply, err := this.httpRpcClient.AppIdPost("game_1", appId, "/server/mail/send", nil, &old.MsgRegionMailSendReq{BackMail: req.BackMail}, nil)
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http post error, appId: %d, error: %v", appId, err)
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: err.Error()})
|
||
|
return
|
||
|
} else {
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, reply.Message)
|
||
|
}
|
||
|
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: 0, Message: reply.Message})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
} else { //发送玩家邮件
|
||
|
if len(req.AppIds) == 0 {
|
||
|
this.logger.Error("Parameter error, len(req.AppIds) == 0")
|
||
|
_ = msg.Reply(proto.RawErrParameterError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
var header = client.HttpHeader{}
|
||
|
for _, playerId := range req.PlayerIds {
|
||
|
header.Add("PlayerId", util.IntegerToString(playerId))
|
||
|
}
|
||
|
|
||
|
for _, appId := range req.AppIds {
|
||
|
reply, err := this.httpRpcClient.AppIdPost("game_1", appId, "/player/mail/send", nil, &old.MsgRegionMailSendReq{BackMail: req.BackMail}, nil, header)
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http post error, appId: %d, error: %v", appId, err)
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: -1, Message: err.Error()})
|
||
|
return
|
||
|
} else {
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http post failed, appId: %d, message: %s", appId, reply.Message)
|
||
|
}
|
||
|
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: appId, Status: reply.Status, Message: reply.Message})
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var ack = &old.MsgGameMailSendAck{ServerReplies: serverReplies}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GameMailSend, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(ack)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GameMailDelete(msg *http.Message) {
|
||
|
var req = new(old.MsgGameMailDeleteReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] <- GameMailDelete, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
var serverReplies []*old.ServerReply
|
||
|
for _, selectedIds := range req.SelectedLists {
|
||
|
reply, err := this.httpRpcClient.AppIdPost("game_1", selectedIds.AppId, "/server/mail/delete", nil, &old.MsgRegionMailDeleteReq{Ids: selectedIds.Ids}, nil)
|
||
|
if err != nil {
|
||
|
this.logger.Errorf("Http post error, appId: %d, error: %v", selectedIds.AppId, err)
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: selectedIds.AppId, Status: -1, Message: err.Error()})
|
||
|
return
|
||
|
} else {
|
||
|
if reply.Status != errors.StatusSuccessful {
|
||
|
this.logger.Errorf("Http post failed, appId: %d, message: %s", selectedIds.AppId, reply.Message)
|
||
|
}
|
||
|
|
||
|
serverReplies = append(serverReplies, &old.ServerReply{AppId: selectedIds.AppId, Status: reply.Status, Message: reply.Message})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var ack = &old.MsgGameMailDeleteAck{ServerReplies: serverReplies}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GameMailDelete, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(ack)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GamePlayerQuery(msg *http.Message) {
|
||
|
var req = new(old.MsgGamePlayerQueryReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debug("[%s] <- ServerPlayerQuery, req: ", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
if req.AppId == 0 || req.PlayerId == 0 {
|
||
|
this.logger.Error("Parameter error, req.AppId == 0 || req.PlayerId == 0")
|
||
|
_ = msg.Reply(proto.RawErrParameterError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
var query = url.Values{}
|
||
|
query.Add("playerId", util.IntegerToString(req.PlayerId))
|
||
|
|
||
|
reply, err := this.httpRpcClient.AppIdGet("game_1", req.AppId, "/server/player/query", query, new(old.MsgPlayerQueryAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Game player query error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> ServerPlayerQuery, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|
||
|
|
||
|
func (this *InnerHandler) GamePlayerOperate(msg *http.Message) {
|
||
|
var req = new(old.MsgGamePlayerOperateReq)
|
||
|
var err = msg.Read(req)
|
||
|
if err != nil {
|
||
|
this.logger.Error("Read message error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrMessageError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debug("[%s] <- GamePlayerOperate, req: ", msg.R.RemoteAddr, util.ToJsonString(req))
|
||
|
}
|
||
|
|
||
|
if req.AppId == 0 || req.PlayerId == 0 || (req.OperateType != 1 && req.OperateType != 2 && req.OperateType != 3) {
|
||
|
this.logger.Error("Parameter error, req.AppId == 0 || req.PlayerId == 0")
|
||
|
_ = msg.Reply(proto.RawErrParameterError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
reply, err := this.httpRpcClient.AppIdPost("game_1", req.AppId, "/server/player/operate", nil, &old.MsgPlayerOperateReq{PlayerId: req.PlayerId, OperateType: req.OperateType, OperateArg: req.OperateArg}, new(old.MsgPlayerOperateAck))
|
||
|
if err != nil {
|
||
|
this.logger.Error("Game player operate error, ", err)
|
||
|
_ = msg.Reply(proto.RawErrInternalError)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if this.logger.IsDebugEnabled() {
|
||
|
this.logger.Debugf("[%s] -> GamePlayerOperate, reply: %s", msg.R.RemoteAddr, util.ToJsonString(reply))
|
||
|
}
|
||
|
|
||
|
_ = msg.Reply(reply)
|
||
|
}
|