feat: 迁移渠道列表新增和游戏累计分布

This commit is contained in:
Yvan
2026-11-03 21:32:51 +08:00
parent 5e58c6bcf3
commit 075d94a51e
39 changed files with 2216 additions and 12 deletions
@@ -13,12 +13,26 @@ import (
type Passwords struct{ AuthCode, MigrateAuthCode, TablePrefix string }
func NewPasswords() business.PlatformPasswordVerifier {
return loadPasswords()
}
func NewPasswordEncoder() business.PlatformPasswordEncoder {
return loadPasswords()
}
func loadPasswords() *Passwords {
prefix := os.Getenv("SW_SDK_TABLE_PREFIX")
if prefix == "" {
prefix = "sys_"
}
return &Passwords{AuthCode: os.Getenv("SW_SDK_AUTH_CODE"), MigrateAuthCode: os.Getenv("SW_SDK_MIGRATE_AUTH_CODE"), TablePrefix: prefix}
}
// Encode 保留源平台 cmfPassword 的存储格式,新增渠道不能改用 Kra 账号密码格式。
func (p *Passwords) Encode(password string) (string, error) {
if p.AuthCode == "" {
return "", business.ErrPlatformPasswordConfig
}
return "###" + md5Hex(md5Hex(p.AuthCode+password)), nil
}
func md5Hex(value string) string { sum := md5.Sum([]byte(value)); return hex.EncodeToString(sum[:]) }
func (p *Passwords) Verify(password, stored string) (bool, error) {
@@ -17,3 +17,14 @@ func TestLegacyPasswordFormats(t *testing.T) {
t.Fatal("缺少兼容盐时必须明确报错")
}
}
func TestNewChannelPasswordMatchesLegacyFixedVector(t *testing.T) {
passwords := &Passwords{AuthCode: "test-auth"}
hash, err := passwords.Encode("demo123")
if err != nil || hash != "###eef6d9b7160f32a869f3e03b7ea575a5" {
t.Fatal("新渠道密码与旧平台格式不兼容")
}
if _, err := (&Passwords{}).Encode("demo123"); err == nil {
t.Fatal("缺少盐不能写入不可登录的渠道密码")
}
}
+1
View File
@@ -24,6 +24,7 @@ import (
var ProviderSet = wire.NewSet(
gameplatform.NewPasswords,
gameplatform.NewPasswordEncoder,
gameplatform.NewPasswordSMS,
cache.New,
email.NewEmailRepo,