You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
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 |
|
}
|
|
|