84 lines
1.8 KiB
Go
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
|
|
}
|