go_dreamfactory/modules/buried/core.go
2023-05-30 21:25:29 +08:00

84 lines
1.8 KiB
Go

package buried
import (
"fmt"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
const (
//创号后入录数据
rtype1 = 1
//接任务后入录数据
rtype2 = 2
)
const (
//覆盖
cover = 1
//累加
overlay = 2
//统计
statistics = 3
)
const (
eq = "eq" // ==
gt = "gt" // >
gte = "gte" //>=
lt = "lt" // <
lte = "lte" // <=
ne = "ne" // !=
)
//判断埋点数据的有效性
func checkburied(buried *pb.BuriedParam, bconf *cfg.GameBuriedTypeData, conf *cfg.GameBuriedCondiData) (efficient bool) {
if !(len(buried.Filter) == len(conf.Filter) && len(bconf.Filter) == len(conf.Filter)) {
log.Error("校验埋点错误!", log.Field{Key: "buried", Value: buried}, log.Field{Key: "conf", Value: conf})
return
}
for i, v := range conf.Filter {
efficient = false
value := buried.Filter[i]
symbol := bconf.Filter[i]
target := conf.Filter[i]
switch symbol {
case eq: //==
if value == target {
efficient = true
}
case gt: //>
if value > target {
efficient = true
}
case gte: //>=
if value >= target {
efficient = true
}
case lt: //<
if value < target {
efficient = true
}
case lte: //<=
if value <= target {
efficient = true
}
case ne: //!=
if value != target {
efficient = true
}
default:
log.Error("校验埋点配置错误!", log.Field{Key: "不存在的比较符号", Value: v}, log.Field{Key: "buried", Value: buried}, log.Field{Key: "conf", Value: conf})
return
}
if !efficient { //校验不过
log.Debug("校验不通!", log.Field{Key: "埋点id", Value: buried.TaskType}, log.Field{Key: "条件id", Value: conf.Id}, log.Field{Key: "判断公式", Value: fmt.Sprintf("%d %s %d", value, symbol, target)})
return
}
}
efficient = true
return
}