ProjectWIND/core/api_wst.go

144 lines
3.5 KiB
Go
Raw Permalink Normal View History

2025-04-22 12:28:44 +08:00
package core
import (
"ProjectWIND/LOG"
"ProjectWIND/wba"
"encoding/json"
"strconv"
"strings"
)
type toolsAPI struct{}
//二、LOG模块
/*
关于LOG模块的说明
1.日志模块级别分为TRACEDEBUGINFONOTICEWARNERROR五个级别默认级别为INFO
2.日志模块提供LogWith方法可以自定义日志级别
3.日志模块提供Log方法默认日志级别为INFO
*/
// LogWith 打印日志(带级别)
//
// 参数:
// - level: 日志级别,支持"TRACE"、"DEBUG"、"INFO"、"NOTICE"、 "WARN"、"ERROR"
// - content: 日志内容
// - args: 可选参数,用于格式化日志内容
//
// 返回值:
// - 无
func (t *toolsAPI) LogWith(level string, content string, args ...interface{}) {
level = strings.ToLower(level)
switch level {
case "trace":
LOG.Trace(content, args...)
return
case "debug":
LOG.Debug(content, args...)
return
case "notice":
LOG.Notice(content, args...)
return
case "warn":
LOG.Warn(content, args...)
return
case "error":
LOG.Error(content, args...)
return
default:
LOG.Info(content, args...)
return
}
}
// Log 打印日志
//
// 参数:
// - content: 日志内容
// - args: 可选参数,用于格式化日志内容
func (t *toolsAPI) Log(content string, args ...interface{}) {
LOG.Info(content, args...)
}
// MsgUnmarshal 解析消息
//
// 参数:
// - messageJSON: 从数据库中获取的JSON序列化后的消息字符串
//
// 返回值:
// - wba.MessageEventInfo: 解析后的消息事件信息,解析失败时返回空结构体
func (t *toolsAPI) MsgUnmarshal(messageJSON string) (msg wba.MessageEventInfo) {
err := json.Unmarshal([]byte(messageJSON), &msg)
if err != nil {
return wba.MessageEventInfo{}
}
return msg
}
func (t *toolsAPI) SessionLabelAnalysis(sessionLabel wba.SessionLabel) wba.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 wba.SessionInfo{}
}
return wba.SessionInfo{
Platform: platform,
SessionType: sessionType,
SessionId: Id,
}
}
func (t *toolsAPI) VersionCompare(version1, version2 wba.VersionLabel) int {
version1Info := VersionLabelAnalysis(version1)
version2Info := VersionLabelAnalysis(version2)
if version1Info.BigVersion < version2Info.BigVersion {
return -1
} else if version1Info.BigVersion > version2Info.BigVersion {
return 1
} else {
if version1Info.SmallVersion < version2Info.SmallVersion {
return -1
} else if version1Info.SmallVersion > version2Info.SmallVersion {
return 1
} else {
if version1Info.FixVersion < version2Info.FixVersion {
return -1
} else if version1Info.FixVersion > version2Info.FixVersion {
return 1
} else {
return 0
}
}
}
}
func VersionLabelAnalysis(versionLabel wba.VersionLabel) wba.VersionInfo {
version := strings.Split(versionLabel, ".")
bigVersion, err := strconv.ParseUint(version[0], 10, 8)
if err != nil {
return wba.VersionInfo{}
}
smallVersion, err := strconv.ParseUint(version[1], 10, 8)
if err != nil {
return wba.VersionInfo{}
}
fixVersion, err := strconv.ParseUint(version[2], 10, 8)
if err != nil {
return wba.VersionInfo{}
}
return wba.VersionInfo{
BigVersion: uint8(bigVersion),
SmallVersion: uint8(smallVersion),
FixVersion: uint8(fixVersion),
}
}
var ToolsApi toolsAPI