refactor(error): 重构错误处理机制,使用ErrorCode枚举替代OutInfo接口

This commit is contained in:
1
2025-07-31 07:31:25 +00:00
parent 3bbc786520
commit a53ecc4fa9
9 changed files with 31 additions and 60 deletions

View File

@@ -1,17 +1,23 @@
package errorcode
import "github.com/tnnmigga/enum"
import (
"fmt"
"github.com/tnnmigga/enum"
)
// ErrorCode 错误码枚举类型
type ErrorCode uint32
func (t ErrorCode) Code() string { return fmt.Sprintf("%d", t) }
// ErrorMap 错误码到错误信息的映射
//var ErrorMap = make(map[ErrorCode]ErrorInfo)
// ErrorCodes 错误码注册表
var ErrorCodes = enum.New[struct {
// 系统错误码
ErrLoginFailed ErrorCode `enum:"10001"` // 登录失败
// 登录失败
ErrLoginFailed ErrorCode `enum:"10001"`
ErrAlreadyLoggedIn ErrorCode `enum:"10004"` // 已在别处登录
ErrIllegalLanguage ErrorCode `enum:"10005"` // 使用非法语言
ErrUserOffline ErrorCode `enum:"10006"` // 用户离线

View File

@@ -2,6 +2,7 @@ package controller
import (
"blazing/common/data/entity"
"blazing/common/socket/errorcode"
"blazing/common/socket/handler"
"blazing/cool"
"blazing/logic/service"
@@ -208,13 +209,13 @@ func Recv(c *entity.Conn, data handler.TomeeHeader) {
return
}
aa, ok := ret[1].Interface().(service.OutInfo) //判断错误
aa, ok := ret[1].Interface().(errorcode.ErrorCode) //判断错误
if ok && aa != nil { //这里实现回复错误包
if ok && aa != 0 { //这里实现回复错误包
cool.Loger.Error(context.Background(), aa.Error(), aa.Code())
cool.Loger.Error(context.Background(), aa.Code())
data.Result = uint32(aa.Code())
data.Result = uint32(aa)
c.SendPack(data.Pack(nil))
return

View File

@@ -1,14 +1,14 @@
package controller
import (
"blazing/logic/service"
"blazing/common/socket/errorcode"
"blazing/logic/service/commendsvr"
"github.com/panjf2000/gnet/v2"
)
// 处理命令: 105
func (h Controller) GetServer(data *commendsvr.SidInfo, c gnet.Conn) (result *commendsvr.CommendSvrInfo, err service.OutInfo) { //这个时候player应该是空的
func (h Controller) GetServer(data *commendsvr.SidInfo, c gnet.Conn) (result *commendsvr.CommendSvrInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
result = commendsvr.NewInInfo()
result.ServerList = commendsvr.GetServerInfoList()
return

View File

@@ -3,12 +3,13 @@ package controller
import (
"blazing/common/data/entity"
"blazing/common/data/share"
"blazing/common/socket/errorcode"
"blazing/logic/service"
"blazing/logic/service/login"
)
// 处理命令: 1001
func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.OutInfo, err service.OutInfo) { //这个时候player应该是空的
func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.OutInfo, err errorcode.ErrorCode) { //这个时候player应该是空的
if tt := data.CheakSession(); tt { //说明sid正确
h.RPCClient.Kick(data.Head.UserID) //先踢人
@@ -19,11 +20,10 @@ func (h *Controller) Login(data *login.InInfo, c *entity.Conn) (result *login.Ou
share.ShareManager.SetUserOnline(data.Head.UserID, h.Port) //设置用户登录服务器
t.CompleteLogin() //通知客户端登录成功
c.SendPack(data.Def())
} else {
err = &login.LoginErr{}
err = errorcode.ErrorCodes.ErrLoginFailed
return
}
return

View File

@@ -2,11 +2,11 @@ package controller
import (
"blazing/common/data/entity"
"blazing/logic/service"
"blazing/common/socket/errorcode"
"blazing/logic/service/maphot"
)
func (h Controller) MapHot(data *maphot.InInfo, c *entity.Player) (result *maphot.OutInfo, err service.OutInfo) {
func (h Controller) MapHot(data *maphot.InInfo, c *entity.Player) (result *maphot.OutInfo, err errorcode.ErrorCode) {
data.Def()
result = &maphot.OutInfo{

View File

@@ -2,11 +2,11 @@ package controller
import (
"blazing/common/data/entity"
"blazing/logic/service"
"blazing/common/socket/errorcode"
"blazing/logic/service/systemtime"
)
func (h Controller) SystemTimeInfo(data *systemtime.InInfo, c *entity.Player) (result *systemtime.OutInfo, err service.OutInfo) {
func (h Controller) SystemTimeInfo(data *systemtime.InInfo, c *entity.Player) (result *systemtime.OutInfo, err errorcode.ErrorCode) {
result = systemtime.NewOutInfo()
return

View File

@@ -1,19 +0,0 @@
package login
import (
"blazing/common/socket/errorcode"
)
type LoginErr struct {
}
func (h *LoginErr) Code() errorcode.ErrorCode {
return errorcode.ErrorCodes.ErrLoginFailed
}
func (h *LoginErr) Error() string {
return "登录失败"
}

View File

@@ -58,11 +58,11 @@ func SetPlayer(c *entity.Conn, userid uint32) *entity.Player { //TODO 这里待
// return nil
}
/**
* @var type OutboundInf
* @global
*/
type OutInfo interface {
error //实现错误接口
Code() errorcode.ErrorCode //返回错误码,如果error不等于nil就返回这个实现对前台传错误码
}
// /**
// * @var type OutboundInf
// * @global
// */
// type OutInfo interface {
// error //实现错误接口
// Code() errorcode.ErrorCode //返回错误码,如果error不等于nil就返回这个实现对前台传错误码
// }

View File

@@ -1,17 +0,0 @@
package systemtime
import "blazing/common/socket/errorcode"
type TimeErr struct {
}
func (h *TimeErr) Code() errorcode.ErrorCode {
return errorcode.ErrorCodes.ErrInvalidPassword
}
func (h *TimeErr) Error() string {
return "登录失败"
}