初始化项目框架,完成部分接口开发

This commit is contained in:
2025-07-10 21:04:29 +08:00
commit b2871ec0d2
168 changed files with 6399 additions and 0 deletions

17
utility/ecode/common.go Normal file
View File

@ -0,0 +1,17 @@
package ecode
var (
OK = New(0, "success")
Sub = New(1, "") // 自定义错误信息
Fail = New(2, "server_error")
InvalidOperation = New(3, "invalid_operation")
Params = New(4, "params_error")
Logout = New(5, "not_login")
Disabled = New(6, "account_disabled")
Denied = New(7, "permission_denied")
Expire = New(8, "token_expired")
Auth = New(1000, "auth_failed")
Password = New(1001, "password_incorrect")
EmailExist = New(1002, "email_exists")
NotFound = New(1003, "not_found")
)

90
utility/ecode/ecode.go Normal file
View File

@ -0,0 +1,90 @@
package ecode
import (
"context"
"fmt"
"server/utility/i18n"
"github.com/gogf/gf/v2/errors/gcode"
)
type Error struct {
code int
message string
sub string
params []interface{}
}
func New(code int, message string) Error {
return Error{
code: code,
message: message,
}
}
func (e Error) Params(params ...interface{}) Error {
e.params = append(e.params, params...)
return e
}
func (e Error) Error() string {
return e.Message()
}
func (e Error) Sub(sub string) Error {
e.sub = sub
return e
}
func (e Error) Message() string {
if e.message != "" && len(e.params) > 0 {
e.message = fmt.Sprintf(e.message, e.params...)
}
if e.sub != "" {
if e.message != "" {
if len(e.params) > 0 {
e.message = fmt.Sprintf(e.message, e.params...)
}
return fmt.Sprintf("%s:%s", e.message, e.sub)
}
return e.sub
}
return e.message
}
// MessageI18n 返回国际化消息
func (e Error) MessageI18n(ctx context.Context) string {
// 如果有子消息,优先使用子消息的国际化
if e.sub != "" {
return i18n.T(ctx, e.sub)
}
// 否则使用主消息的国际化
if e.message != "" {
// 尝试从国际化系统获取消息
i18nMsg := i18n.T(ctx, e.message)
if i18nMsg != e.message {
// 如果找到了国际化消息,使用它
if len(e.params) > 0 {
return fmt.Sprintf(i18nMsg, e.params...)
}
return i18nMsg
}
// 如果没有找到国际化消息,使用原来的逻辑
if len(e.params) > 0 {
return fmt.Sprintf(e.message, e.params...)
}
return e.message
}
return ""
}
func (e Error) Code() gcode.Code {
return gcode.New(e.code, e.Message(), "customer")
}
func (e Error) Detail() interface{} {
return "customer"
}