go-common/app/interface/main/push-archive/service/abtest.go

52 lines
1.3 KiB
Go
Raw Normal View History

2019-04-22 10:49:16 +00:00
package service
import (
"go-common/app/interface/main/push-archive/dao"
"go-common/app/interface/main/push-archive/model"
)
var (
// 存放实验组mid尾号
fansTestGroup = make(map[int]struct{})
// 存放对照组mid尾号
fansComparisonGroup = make(map[int]struct{})
// 指定mid放进测试组
fansTestMids = make(map[int64]struct{})
)
func (s *Service) mappingAbtest() {
for _, n := range s.c.Abtest.TestGroup {
fansTestGroup[n] = struct{}{}
}
for _, n := range s.c.Abtest.ComparisonGroup {
fansComparisonGroup[n] = struct{}{}
}
for _, n := range s.c.Abtest.TestMids {
fansTestMids[n] = struct{}{}
}
}
// 将所有粉丝通过abtest规则拆分成 (实验流量||对照组流量) && 其余流量
func (s *Service) fansByAbtest(group *dao.FanGroup, fans []int64) (result, others []int64) {
for _, fan := range fans {
n := int(fan % 10)
if group.Hitby == model.GroupDataTypeAbtest {
if _, ok := fansTestMids[fan]; ok {
result = append(result, fan)
continue
}
if _, ok := fansTestGroup[n]; ok {
result = append(result, fan)
continue
}
} else if group.Hitby == model.GroupDataTypeAbComparison {
if _, ok := fansComparisonGroup[n]; ok {
result = append(result, fan)
continue
}
}
others = append(others, fan)
}
return
}