ProjectWIND/wba/wind_standard_tools.go
2025-04-04 10:33:35 +08:00

74 lines
2.0 KiB
Go

package wba
import (
"fmt"
"strconv"
"strings"
)
type WindStandardTools interface {
// MsgUnmarshal 解析消息JSON字符串为 MessageEventInfo 结构体。
//
// 参数:
//
// - message: 要解析的消息字符串。
//
// 返回值:
//
// - msg: 解析后的消息结构体。
MsgUnmarshal(message string) (msg MessageEventInfo)
// LogWith 使用指定日志级别记录日志,支持可变参数占位符。
// 参数:
// - level: 日志级别: "trace", "debug", "info", "notice", "warn", "error"。
// - log: 日志内容。
// - args: 可变参数,用于格式化日志内容。
LogWith(level string, log string, args ...interface{})
// Log 记录日志,级别为 "info",支持可变参数占位符。
// 参数:
// - log: 日志内容。
// - args: 可变参数,用于格式化日志内容。
Log(log string, args ...interface{})
}
func (v VersionInfo) String() string {
return fmt.Sprintf("%d.%d.%d", v.BigVersion, v.SmallVersion, v.FixVersion)
}
func VersionLabelAnalysis(versionLabel VersionLabel) VersionInfo {
version := strings.Split(versionLabel, ".")
bigVersion, err := strconv.ParseUint(version[0], 10, 8)
if err != nil {
return VersionInfo{}
}
smallVersion, err := strconv.ParseUint(version[1], 10, 8)
if err != nil {
return VersionInfo{}
}
fixVersion, err := strconv.ParseUint(version[2], 10, 8)
if err != nil {
return VersionInfo{}
}
return VersionInfo{
BigVersion: uint8(bigVersion),
SmallVersion: uint8(smallVersion),
FixVersion: uint8(fixVersion),
}
}
func SessionLabelAnalysis(sessionLabel SessionLabel) SessionInfo {
platform := strings.Split(sessionLabel, ":")[0]
sessionTypeAndId := strings.Split(sessionLabel, ":")[1]
sessionType := strings.Split(sessionTypeAndId, "-")[0]
sessionId := strings.Split(sessionTypeAndId, "-")[1]
Id, err := strconv.ParseInt(sessionId, 10, 64)
if err != nil {
return SessionInfo{}
}
return SessionInfo{
Platform: platform,
SessionType: sessionType,
SessionId: Id,
}
}