mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-08-28 05:48:35 +08:00
103 lines
2.3 KiB
Go
103 lines
2.3 KiB
Go
package msgin
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/os/gtime"
|
|
"hotgo/internal/consts"
|
|
"hotgo/utility/encrypt"
|
|
)
|
|
|
|
type RpcMsg struct {
|
|
AppId string `json:"appID" v:"0" example:"10001" description:"应用ID"`
|
|
TraceID string `json:"traceID" v:"0" example:"d0bb93048bc5c9164cdee845dcb7f820" description:"链路ID"`
|
|
Timestamp int64 `json:"timestamp" example:"1640966400" description:"服务器时间戳"`
|
|
Sign string `json:"sign" example:"d0bb93048bc5c9164cdee845dcb7f820" description:"签名"`
|
|
}
|
|
|
|
func (i *RpcMsg) SetSign(appId, secretKey string) *RpcMsg {
|
|
i.AppId = appId
|
|
i.Timestamp = gtime.Timestamp()
|
|
i.Sign = i.GetSign(secretKey)
|
|
return i
|
|
}
|
|
|
|
func (i *RpcMsg) GetSign(secretKey string) string {
|
|
return encrypt.Md5ToString(fmt.Sprintf("%v%v%v%v", i.AppId, i.TraceID, i.Timestamp, secretKey))
|
|
}
|
|
|
|
func (i *RpcMsg) GetTraceID() string {
|
|
return i.TraceID
|
|
}
|
|
|
|
func (i *RpcMsg) SetTraceID(traceID string) {
|
|
i.TraceID = traceID
|
|
}
|
|
|
|
type Response struct {
|
|
RpcMsg
|
|
Code int `json:"code" example:"2000" description:"状态码"`
|
|
Message string `json:"message,omitempty" example:"操作成功" description:"提示消息"`
|
|
}
|
|
|
|
// PkgResponse 打包响应消息
|
|
func (m *Response) PkgResponse() {
|
|
m.SetCode()
|
|
// ...
|
|
}
|
|
|
|
// SetCode 设置状态码
|
|
func (m *Response) SetCode(code ...int) {
|
|
if len(code) > 0 {
|
|
m.Code = code[0]
|
|
return
|
|
}
|
|
|
|
// 默认值,转为成功的状态码
|
|
if m.Code == 0 {
|
|
m.Code = consts.TCPMsgCodeSuccess
|
|
}
|
|
}
|
|
|
|
// GetError 获取响应中的错误
|
|
func (m *Response) GetError() (err error) {
|
|
if m.Code != consts.TCPMsgCodeSuccess {
|
|
if m.Message == "" {
|
|
m.Message = "操作失败"
|
|
}
|
|
err = gerror.New(m.Message)
|
|
}
|
|
return
|
|
}
|
|
|
|
// ServerHeartbeat 心跳
|
|
type ServerHeartbeat struct {
|
|
}
|
|
|
|
// ResponseServerHeartbeat 响应心跳
|
|
type ResponseServerHeartbeat struct {
|
|
Response
|
|
}
|
|
|
|
// ServerLogin 服务登录
|
|
type ServerLogin struct {
|
|
RpcMsg
|
|
Group string `json:"group" description:"分组"`
|
|
Name string `json:"name" description:"名称"`
|
|
}
|
|
|
|
// ResponseServerLogin 响应服务登录
|
|
type ResponseServerLogin struct {
|
|
Response
|
|
}
|
|
|
|
// ServerOffline 服务离线
|
|
type ServerOffline struct {
|
|
RpcMsg
|
|
}
|
|
|
|
// ResponseServerOffline 响应服务离线
|
|
type ResponseServerOffline struct {
|
|
Response
|
|
}
|