feat(player): 注册账号、登录双模式与移动端性能优化

注册必填 7-32 位账号,手机号区号/本地号分存;登录默认账号模式并支持切换手机号登录;Player i18n 拆包与赛事接口优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-12 10:56:51 +08:00
parent 83f0f380c5
commit 312c3c5816
35 changed files with 1944 additions and 1394 deletions

View File

@@ -0,0 +1,26 @@
ALTER TABLE "user_preferences"
ADD COLUMN IF NOT EXISTS "phone_country_dial" VARCHAR(8),
ADD COLUMN IF NOT EXISTS "phone_local" VARCHAR(24);
CREATE INDEX IF NOT EXISTS "user_preferences_phone_country_dial_phone_local_idx"
ON "user_preferences" ("phone_country_dial", "phone_local");
-- 回填已有手机号的区号/本地号username 为纯数字国际号码时)
UPDATE "user_preferences" up
SET
"phone_country_dial" = matched.dial,
"phone_local" = SUBSTRING(u.username FROM (LENGTH(matched.dial) + 1))
FROM "users" u
JOIN LATERAL (
SELECT dial FROM (
VALUES ('880'), ('886'), ('60'), ('65'), ('66'), ('84'), ('91'), ('61')
) AS d(dial)
WHERE u.username LIKE d.dial || '%'
ORDER BY LENGTH(d.dial) DESC
LIMIT 1
) matched ON TRUE
WHERE up.user_id = u.id
AND up.phone IS NOT NULL
AND up.phone_country_dial IS NULL
AND u.username ~ '^[0-9]+$'
AND LENGTH(u.username) >= 10;