game_sync/model/smart.go

100 lines
2.5 KiB
Go

package model
import "mongo.games.com/game/common"
type SmartConfig struct {
SwitchPlatform []string // 智能化运营平台开关 如: ["-1"] 所有平台不启用,["1","2"] 平台1和平台2开启
SwitchABTestTailFilter []int32 // 智能化运营,玩家尾号限定 如:[] 表示不限定尾号 , [1,5,7]表示只有尾号是1,5,7的用户进入ABtest
SwitchABTestSnIdFilter []int32 // 智能化运营,玩家限定 如:[] 表示不限定号 , [205123,205124]表示只有205123,205124用户进入ABtest
ABTestTick int32 // AB测试开始tick
SwitchPlatformABTestTick []string // 智能化运营”ABTestTick“平台开关 如:[] 全平台开启 ["-1"] 所有平台不启用,["1","2"] 平台1和平台2启用
SwitchPlatformABTestTickSnIdFilter []int32 // AB测试智能化运营,玩家尾号限定 如:[] 表示不限定号 , [205123,205124]表示只有205123,205124用户进入ABtest
}
// Switch 对战场开关状态
func (c *SmartConfig) Switch(platform string, snid int32) bool {
n := len(c.SwitchPlatform)
if n > 0 && c.SwitchPlatform[0] == "-1" {
return false
}
if n == 0 {
return true
}
has := false
for i := 0; i < n; i++ {
if c.SwitchPlatform[i] == platform {
has = true
break
}
}
if !has {
return false
}
//指定账号
if len(c.SwitchABTestSnIdFilter) != 0 {
if common.InSliceInt32(c.SwitchABTestSnIdFilter, snid) {
return true
}
return false
}
//指定尾号
if len(c.SwitchABTestTailFilter) != 0 {
if common.InSliceInt32(c.SwitchABTestTailFilter, snid%10) {
return true
}
return false
}
return true
}
func (c *SmartConfig) SwitchTick(platform string, snid int32) bool {
n := len(c.SwitchPlatformABTestTick)
if n > 0 && c.SwitchPlatformABTestTick[0] == "-1" {
return true
}
if n == 0 {
return false
}
has := false
for i := 0; i < n; i++ {
if c.SwitchPlatformABTestTick[i] == platform {
has = true
}
}
if !has {
return false
}
//指定账号
if len(c.SwitchPlatformABTestTickSnIdFilter) != 0 {
if common.InSliceInt32(c.SwitchPlatformABTestTickSnIdFilter, snid%10) {
return true
}
return false
}
return false
}
// SwitchHundred 百人场开关状态
func (c *SmartConfig) SwitchHundred(platform string) bool {
n := len(c.SwitchPlatform)
if n > 0 && c.SwitchPlatform[0] == "-1" {
return false
}
if n == 0 {
return true
}
has := false
for i := 0; i < n; i++ {
if c.SwitchPlatform[i] == platform {
has = true
break
}
}
return has
}