feat(admin,player,api): 玩家账号密码管理与代理上下分

新增玩家头像、可查密码与全局改密/改账号开关;玩家资料页合并账号密码展示;代理直属玩家列表支持自定义上下分。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-04 11:36:53 +08:00
parent f76728dc3e
commit a8e4ead618
81 changed files with 1763 additions and 217 deletions

View File

@@ -51,6 +51,22 @@ export const adminPagesMs: Record<string, string> = {
'user.field.login_fail': 'Log masuk gagal',
'user.field.phone': 'Telefon',
'user.field.email': 'E-mel',
'user.field.allow_password_change': 'Benarkan pemain tukar kata laluan',
'user.field.allow_username_change': 'Benarkan pemain tukar nama akaun',
'user.field.view_password': 'Kata laluan log masuk',
'user.field.reset_password': 'Set semula kata laluan',
'user.password_not_stored': 'Tiada rekod (pemain telah ubah sendiri)',
'user.btn.show_password': 'Lihat',
'user.btn.hide_password': 'Sembunyi',
'user.ph.reset_password': 'Biarkan kosong untuk kekalkan; nilai baharu boleh dilihat',
'user.ph.reset_password_short': 'Biarkan kosong',
'user.global_settings': 'Kata laluan & akaun (global)',
'user.global_settings_hint': 'Kawal sama ada semua pemain boleh ubah kata laluan/nama akaun dalam app',
'user.section.password_mgmt': 'Pengurusan kata laluan',
'user.field.current_password': 'Kata laluan semasa',
'user.msg.created_with_password': 'Pemain dicipta. Kata laluan: {password}',
'user.msg.password_saved': 'Kata laluan dikemas kini: {password}',
'user.hint.password_reset_to_view': 'Tiada rekod. Isi Set semula kata laluan di bawah dan simpan untuk lihat di sini.',
'user.ph.username_unique': 'Nama log masuk unik',
'user.ph.no_agent': 'Tiada (terus platform)',
'user.hint.no_agent': 'Biarkan kosong untuk pemain diurus platform',
@@ -58,6 +74,10 @@ export const adminPagesMs: Record<string, string> = {
'user.hint.deposit_remark': 'Ditulis ke lejar jika baki permulaan > 0',
'user.hint.freeze_in_list': 'Beku/nyahbeku dari lajur tindakan senarai',
'user.hint.agent_change': 'Kosong = terus platform; perubahan dikira semula kredit ejen',
'user.hint.allow_password_change': 'Matikan: semua pemain tidak boleh ubah kata laluan',
'user.hint.allow_username_change': 'Hidupkan: semua pemain boleh ubah nama log masuk',
'user.hint.view_password': 'Hanya kata laluan cipta/set semula admin; dibersihkan jika pemain ubah sendiri',
'user.hint.reset_password': 'Berkuat kuasa serta-merta dan kemas kini kata laluan boleh lihat',
'user.btn.create': 'Cipta',
'user.btn.save_profile': 'Simpan',
'user.btn.confirm_deposit': 'Sahkan tambah baki',
@@ -222,6 +242,9 @@ export const adminPagesMs: Record<string, string> = {
'agent_portal.agent_username_ph': 'Nama pengguna ejen',
'agent_portal.player_id_ph': 'ID pemain',
'agent_portal.withdraw_btn': 'Keluarkan {amount}',
'agent_portal.withdraw_btn_label': 'Keluarkan',
'agent_portal.transfer_title_deposit': 'Tambah baki {name}',
'agent_portal.transfer_title_withdraw': 'Keluarkan dari {name}',
'msg.agent_sub_created': 'Sub-ejen dicipta',
'msg.withdraw_ok': 'Pengeluaran berjaya',
@@ -241,6 +264,7 @@ export const adminPagesMs: Record<string, string> = {
'msg.import_done': 'Import: {imported} ok, {skipped} dilangkau, {failed} gagal / {total} jumlah',
'msg.topup_ok': 'Tambah baki berjaya',
'msg.topup_failed': 'Tambah baki gagal',
'msg.transfer_failed': 'Operasi gagal',
'msg.amount_gt_zero': 'Jumlah mesti lebih daripada 0',
'msg.credit_zero': 'Pelarasan tidak boleh 0',
'msg.credit_adjusted': 'Kredit dikemas kini',