52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
|
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
|
|||
|
}
|