修复微信扫码区服识别

This commit is contained in:
yml2213
2026-08-17 20:30:15 +08:00
parent 79ced2d121
commit 0bc6cf9f46
3 changed files with 46 additions and 2 deletions
@@ -382,10 +382,11 @@ func buildExternalListingTitle(rank string, insurance string, hafCoinM float64,
func serverRegionFromLoginMethod(value string) string { func serverRegionFromLoginMethod(value string) string {
value = strings.TrimSpace(value) value = strings.TrimSpace(value)
normalized := strings.ToLower(value)
switch { switch {
case strings.Contains(value, "微信"): case strings.Contains(value, "微信"), strings.HasPrefix(normalized, "vx"), strings.HasPrefix(normalized, "wx"):
return "微信" return "微信"
case strings.Contains(strings.ToLower(value), "steam"): case strings.Contains(normalized, "steam"):
return "Steam" return "Steam"
default: default:
return "QQ" return "QQ"
@@ -566,6 +566,28 @@ func TestExternalAccountToCreateRequestMapsUploadFields(t *testing.T) {
} }
} }
func TestServerRegionFromLoginMethod(t *testing.T) {
tests := []struct {
name string
loginMethod string
want string
}{
{name: "QQ账号密码", loginMethod: "QQ账号密码", want: "QQ"},
{name: "微信扫码", loginMethod: "微信扫码", want: "微信"},
{name: "VX扫码", loginMethod: "VX扫码", want: "微信"},
{name: "小写WX扫码", loginMethod: "wx扫码", want: "微信"},
{name: "Steam", loginMethod: "Steam令牌", want: "Steam"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := serverRegionFromLoginMethod(tt.loginMethod); got != tt.want {
t.Fatalf("serverRegionFromLoginMethod(%q) = %q, want %q", tt.loginMethod, got, tt.want)
}
})
}
}
func TestExternalAccountToCreateRequestSeparatesPureCoinAndExtraItems(t *testing.T) { func TestExternalAccountToCreateRequestSeparatesPureCoinAndExtraItems(t *testing.T) {
req := externalAccountToCreateRequest("客服1", 1772526103000, ExternalAccountData{ req := externalAccountToCreateRequest("客服1", 1772526103000, ExternalAccountData{
LoginMethod: "QQ账号密码", LoginMethod: "QQ账号密码",
@@ -0,0 +1,21 @@
-- +goose Up
-- 修正历史外部上传中以 VX/WX 表示微信扫码、但被默认归类为 QQ 的账号。
UPDATE game_accounts AS a
JOIN rental_listings AS l ON l.account_id = a.id
SET a.server_region = '微信'
WHERE a.server_region = 'QQ'
AND EXISTS (
SELECT 1
FROM listing_uploads AS lu
WHERE lu.listing_id = l.id
)
AND (
a.login_platform LIKE '%微信%'
OR LOWER(TRIM(a.login_platform)) LIKE 'vx%'
OR LOWER(TRIM(a.login_platform)) LIKE 'wx%'
);
-- +goose Down
-- 此数据修复不可逆,避免将已修正的微信账号错误回退为 QQ。