feat: 手动充值、邀请码注册与后台管理增强
新增玩家手动充值全流程(收款方式配置、充值下单/审核、钱包上分), 支持邀请码注册、邀请历史与专属返水率;完善后台代理/玩家管理与响应式操作栏, 并补充前台注册、充值页及多语言错误码。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -349,6 +349,46 @@ export const API_ERROR_MESSAGES = {
|
||||
'en-US': 'Username already taken',
|
||||
'ms-MY': 'Nama pengguna sudah digunakan',
|
||||
},
|
||||
INVITE_CODE_REQUIRED: {
|
||||
'zh-CN': '请填写邀请码',
|
||||
'en-US': 'Invitation code is required',
|
||||
'ms-MY': 'Kod jemputan diperlukan',
|
||||
},
|
||||
INVITE_CODE_INVALID: {
|
||||
'zh-CN': '邀请码无效或已失效',
|
||||
'en-US': 'Invalid or inactive invitation code',
|
||||
'ms-MY': 'Kod jemputan tidak sah atau tidak aktif',
|
||||
},
|
||||
INVITE_CODE_NOT_AVAILABLE: {
|
||||
'zh-CN': '该邀请码暂不可用于注册',
|
||||
'en-US': 'This invitation code is not available for registration',
|
||||
'ms-MY': 'Kod jemputan ini tidak tersedia untuk pendaftaran',
|
||||
},
|
||||
INVITE_NOT_FOUND: {
|
||||
'zh-CN': '邀请码记录不存在',
|
||||
'en-US': 'Invitation record not found',
|
||||
'ms-MY': 'Rekod jemputan tidak dijumpai',
|
||||
},
|
||||
INVITE_MUST_REVOKE_FIRST: {
|
||||
'zh-CN': '请先作废该邀请码后再删除',
|
||||
'en-US': 'Revoke the invitation code before deleting',
|
||||
'ms-MY': 'Batalkan kod jemputan dahulu sebelum padam',
|
||||
},
|
||||
INVITE_CODE_ALREADY_USED: {
|
||||
'zh-CN': '该邀请码已被使用,每个邀请码仅可注册一名玩家',
|
||||
'en-US': 'This invitation code has already been used; each code allows one registration only',
|
||||
'ms-MY': 'Kod jemputan ini telah digunakan; setiap kod hanya untuk satu pendaftaran',
|
||||
},
|
||||
INVITE_CANNOT_DELETE_USED: {
|
||||
'zh-CN': '已使用的邀请码不可删除',
|
||||
'en-US': 'Used invitation codes cannot be deleted',
|
||||
'ms-MY': 'Kod jemputan yang telah digunakan tidak boleh dipadam',
|
||||
},
|
||||
INVITE_CASHBACK_RATE_INVALID: {
|
||||
'zh-CN': '返水比例无效,请输入非负数',
|
||||
'en-US': 'Invalid cashback rate; must be a non-negative number',
|
||||
'ms-MY': 'Kadar rebat tidak sah; mesti nombor bukan negatif',
|
||||
},
|
||||
USERNAME_FORMAT_INVALID: {
|
||||
'zh-CN': '玩家用户名仅可使用英文字母和数字(3–32 位),不可含中文或特殊符号',
|
||||
'en-US': 'Username must be 3–32 letters or digits only',
|
||||
@@ -699,6 +739,51 @@ export const API_ERROR_MESSAGES = {
|
||||
'en-US': 'ACTIVE ticker requires body in at least one locale',
|
||||
'ms-MY': 'Ticker aktif memerlukan kandungan',
|
||||
},
|
||||
INVALID_METHOD_TYPE: {
|
||||
'zh-CN': '无效的收款方式类型',
|
||||
'en-US': 'Invalid payment method type',
|
||||
'ms-MY': 'Jenis kaedah pembayaran tidak sah',
|
||||
},
|
||||
PAYMENT_METHOD_NOT_FOUND: {
|
||||
'zh-CN': '收款方式不存在或已停用',
|
||||
'en-US': 'Payment method not found or inactive',
|
||||
'ms-MY': 'Kaedah pembayaran tidak dijumpai atau tidak aktif',
|
||||
},
|
||||
ORDER_NOT_FOUND: {
|
||||
'zh-CN': '充值订单不存在',
|
||||
'en-US': 'Deposit order not found',
|
||||
'ms-MY': 'Pesanan deposit tidak dijumpai',
|
||||
},
|
||||
ORDER_NOT_PENDING: {
|
||||
'zh-CN': '订单已被审核或不是待审核状态',
|
||||
'en-US': 'Order is not in pending status',
|
||||
'ms-MY': 'Pesanan bukan dalam status menunggu',
|
||||
},
|
||||
REASON_REQUIRED: {
|
||||
'zh-CN': '请填写拒绝原因',
|
||||
'en-US': 'Rejection reason is required',
|
||||
'ms-MY': 'Sebab penolakan diperlukan',
|
||||
},
|
||||
SCREENSHOT_REQUIRED: {
|
||||
'zh-CN': '请上传转账截图',
|
||||
'en-US': 'Screenshot is required',
|
||||
'ms-MY': 'Screenshot diperlukan',
|
||||
},
|
||||
FILE_MUST_BE_IMAGE: {
|
||||
'zh-CN': '请上传图片文件',
|
||||
'en-US': 'File must be an image',
|
||||
'ms-MY': 'Fail mesti imej',
|
||||
},
|
||||
INVALID_AMOUNT: {
|
||||
'zh-CN': '金额无效',
|
||||
'en-US': 'Invalid amount',
|
||||
'ms-MY': 'Jumlah tidak sah',
|
||||
},
|
||||
PAYMENT_METHOD_REQUIRED: {
|
||||
'zh-CN': '请选择收款方式',
|
||||
'en-US': 'Payment method is required',
|
||||
'ms-MY': 'Kaedah pembayaran diperlukan',
|
||||
},
|
||||
} as const satisfies Record<string, Record<Locale, string>>;
|
||||
|
||||
export type ApiErrorCode = keyof typeof API_ERROR_MESSAGES;
|
||||
|
||||
Reference in New Issue
Block a user