forked from ProjectWIND/ProjectWIND
144 lines
3.5 KiB
Go
144 lines
3.5 KiB
Go
![]() |
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
|