ecs/servers/gate/handler/inner_server.go
2025-07-17 16:21:08 +08:00

178 lines
4.6 KiB
Go

package handler
import (
"ecs/proto"
"ecs/servers/gate/logic"
"github.com/oylshe1314/framework/http"
"github.com/oylshe1314/framework/util"
"math"
)
func (this *InnerHandler) GetSetting(msg *http.Message) {
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] <- GetGetting, req: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
}
var setting = this.gateManager.GetSetting()
var ack = &proto.MsgGateSettingQueryAck{}
if setting != nil {
ack.Version = setting.Version
ack.LoginClosed = setting.LoginClosed
ack.TimedClose = setting.TimedClose
ack.CloseTime = setting.CloseTime
ack.ClosedList = setting.ClosedList
ack.WhiteList = setting.WhiteList
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] <- GetGetting, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
}
_ = msg.Reply(ack)
}
func (this *InnerHandler) SetSetting(msg *http.Message) {
var req = new(proto.MsgGateSettingSaveReq)
var err = msg.Read(req)
if err != nil {
this.Logger().Error("Read message error, ", err)
_ = msg.Reply(proto.ErrMessageError)
return
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] <- SetSetting, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
}
if req.Version == "" {
this.Logger().Error("Parameter error, req.Version == \"\"")
_ = msg.Reply(proto.ErrParameterError)
return
}
err = this.gateManager.SetSetting(&logic.Setting{
Id: this.server.AppId(),
Version: req.Version,
LoginClosed: req.LoginClosed,
TimedClose: req.TimedClose,
CloseTime: req.CloseTime,
ClosedList: req.ClosedList,
WhiteList: req.WhiteList,
})
if err != nil {
this.Logger().Error("Save setting failed, ", err)
_ = msg.Reply(err)
return
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] -> SetSetting, ack: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
}
_ = msg.Reply(nil)
}
func (this *InnerHandler) QueryNotice(msg *http.Message) {
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] <- QueryNotice, req: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
}
var ack = &proto.MsgGateQueryNoticeAck{}
notices, err := this.gateManager.GetNotice()
if err != nil {
this.Logger().Error("GetNotice error, ", err)
_ = msg.Reply(proto.ErrInternalError)
return
}
for _, notice := range notices {
ack.NoticeList = append(ack.NoticeList, &proto.Notice{
Type: notice.Type,
Title: notice.Title,
Content: notice.Content,
BeginTime: notice.BeginTime,
EndTime: notice.EndTime,
})
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] -> QueryNotice, ack: %s", msg.R.RemoteAddr, util.ToJsonString(ack))
}
_ = msg.Reply(ack)
}
func (this *InnerHandler) AddNotice(msg *http.Message) {
var req = new(proto.MsgGateAddNoticeReq)
var err = msg.Read(req)
if err != nil {
this.Logger().Error("Read message error, ", err)
_ = msg.Reply(proto.ErrMessageError)
return
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] <- AddNotice, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
}
if req.Type == "" || req.Title == "" || req.Content == "" {
this.Logger().Error("Parameter error, req.Type == \"\" || req.Title == \"\" || req.Content == \"\"")
_ = msg.Reply(proto.ErrParameterError)
return
}
err = this.gateManager.AddNotice(&logic.Notice{
Id: util.RandomUid(),
Type: req.Type,
Title: req.Title,
Content: req.Content,
BeginTime: req.BeginTime,
EndTime: util.If(req.EndTime != 0, req.EndTime, math.MaxInt64),
})
if err != nil {
this.Logger().Error("Add notice error, ", err)
_ = msg.Reply(proto.ErrInternalError)
return
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] -> AddNotice, ack: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
}
_ = msg.Reply(nil)
}
func (this *InnerHandler) DeleteNotice(msg *http.Message) {
var req = new(proto.MsgGateDeleteNoticeReq)
var err = msg.Read(req)
if err != nil {
this.Logger().Error("Read message error, ", err)
_ = msg.Reply(proto.ErrMessageError)
return
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] <- DeleteNotice, req: %s", msg.R.RemoteAddr, util.ToJsonString(req))
}
if req.Id == 0 {
this.Logger().Error("Parameter error, req.Id == 0")
_ = msg.Reply(proto.ErrParameterError)
return
}
err = this.gateManager.DeleteNotice(req.Id)
if err != nil {
this.Logger().Error("Delete notice error, ", err)
_ = msg.Reply(proto.ErrInternalError)
return
}
if this.Logger().IsDebugEnabled() {
this.Logger().Debugf("[%s] -> DeleteNotice, ack: %s", msg.R.RemoteAddr, util.ToJsonString(nil))
}
_ = msg.Reply(nil)
}