111 lines
2.7 KiB
Go
111 lines
2.7 KiB
Go
|
package smdl
|
|||
|
|
|||
|
import (
|
|||
|
"admin/apps/game/domain/entity"
|
|||
|
dto2 "admin/internal/model/dto"
|
|||
|
"admin/lib/xlog"
|
|||
|
"encoding/base64"
|
|||
|
"strconv"
|
|||
|
)
|
|||
|
|
|||
|
type GameLogHook struct {
|
|||
|
}
|
|||
|
|
|||
|
var removeFields = map[string]struct{}{
|
|||
|
"pub_mediaid": {},
|
|||
|
"pub_role_name": {},
|
|||
|
"pub_udid": {},
|
|||
|
}
|
|||
|
|
|||
|
var alias = map[string]string{
|
|||
|
"pub_viplev": "vip等级",
|
|||
|
"pub_userid": "账号",
|
|||
|
"pub_totalcash": "总充值金额",
|
|||
|
"pub_serverid": "服务器id",
|
|||
|
"pub_rolename": "角色名",
|
|||
|
"pub_roleid": "角色id",
|
|||
|
"pub_lev": "等级",
|
|||
|
"pub_language": "语言",
|
|||
|
"pub_ip": "IP",
|
|||
|
}
|
|||
|
|
|||
|
var base64decodeFields = map[string]struct{}{
|
|||
|
"pub_rolename": {},
|
|||
|
"chatlog_msg": {},
|
|||
|
}
|
|||
|
|
|||
|
func init() {
|
|||
|
for i := 0; i < 15; i++ {
|
|||
|
removeFields["chatlog_score"] = struct{}{}
|
|||
|
removeFields["chatlog_score"+strconv.Itoa(i)] = struct{}{}
|
|||
|
removeFields["chatlog_label"] = struct{}{}
|
|||
|
removeFields["chatlog_label"+strconv.Itoa(i)] = struct{}{}
|
|||
|
removeFields["chatlog_checklevel"] = struct{}{}
|
|||
|
removeFields["chatlog_checklevel"+strconv.Itoa(i)] = struct{}{}
|
|||
|
}
|
|||
|
removeFields["chatlog_code"] = struct{}{}
|
|||
|
removeFields["chatlog_checkresult"] = struct{}{}
|
|||
|
}
|
|||
|
|
|||
|
func (hook *GameLogHook) Trim(projectInfo *entity.Project, eventName []string, totalCount int, fieldsDescInfo []*dto2.GameLogFieldInfo, rows [][]any) (
|
|||
|
int, []*dto2.GameLogFieldInfo, [][]any) {
|
|||
|
|
|||
|
// 删除不需要的字段
|
|||
|
i := 0
|
|||
|
for {
|
|||
|
if i >= len(fieldsDescInfo) {
|
|||
|
break
|
|||
|
}
|
|||
|
field := fieldsDescInfo[i]
|
|||
|
if _, find := removeFields[field.Name]; find {
|
|||
|
// 找到这个字段在去掉的列表里
|
|||
|
fieldsDescInfo = append(fieldsDescInfo[:i], fieldsDescInfo[i+1:]...)
|
|||
|
// 对应所有数据行里也删除这个值
|
|||
|
for _, row := range rows {
|
|||
|
row = append(row[:i], row[i+1:]...)
|
|||
|
}
|
|||
|
} else {
|
|||
|
// 查找要不要把value做base64解码
|
|||
|
if _, find := base64decodeFields[field.Name]; find {
|
|||
|
for _, row := range rows {
|
|||
|
newValue, err := base64.StdEncoding.DecodeString((*(row[i].(*interface{}))).(string))
|
|||
|
if err != nil {
|
|||
|
xlog.Warnf("base64 decode field:%v value:%v error:%v", field.Name, row[i], err)
|
|||
|
} else {
|
|||
|
row[i] = string(newValue)
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
i++
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
// 查找别名
|
|||
|
for _, en := range eventName {
|
|||
|
// 查找全局eventName描述表信息,对里面没有别的字段名改为表里的名字
|
|||
|
descInfo, find := globEventList[en]
|
|||
|
if find {
|
|||
|
for _, f := range fieldsDescInfo {
|
|||
|
find := false
|
|||
|
for _, f1 := range descInfo.fields {
|
|||
|
if f.Name == f1.Name && f1.Alias != "" {
|
|||
|
if f.Name == f.Alias {
|
|||
|
f.Alias = f1.Alias
|
|||
|
}
|
|||
|
find = true
|
|||
|
break
|
|||
|
}
|
|||
|
}
|
|||
|
if !find {
|
|||
|
aliasName, find1 := alias[f.Name]
|
|||
|
if find1 && f.Name == f.Alias && f.Alias != "" {
|
|||
|
f.Alias = aliasName
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return totalCount, fieldsDescInfo, rows
|
|||
|
}
|