ProjectWIND/core/api_wst.go
2025-04-22 12:28:44 +08:00

144 lines
3.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package core
import (
"ProjectWIND/LOG"
"ProjectWIND/wba"
"encoding/json"
"strconv"
"strings"
)
type toolsAPI struct{}
//二、LOG模块
/*
关于LOG模块的说明
1.日志模块级别分为TRACE、DEBUG、INFO、NOTICE、WARN、ERROR五个级别默认级别为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