feat: 新增提现文案翻译工具类,统一处理失败与驳回原因
这个提交包含在:
@@ -33,6 +33,70 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'backend/format'], fu
|
||||
'</div>';
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信转账失败/撤销错误码 → 中文说明
|
||||
* 与 application/common/library/WithdrawText.php 保持同一份字典
|
||||
*/
|
||||
var FAIL_TEXT = {
|
||||
NOT_ENOUGH: '商户转账账户余额不足',
|
||||
ACCOUNT_ERROR: '收款账户状态异常',
|
||||
V2_ACCOUNT_SIMPLE_BAN: '收款账户被限制收款',
|
||||
V3_ACCOUNT_NOT_EXIST: '收款微信账户不存在',
|
||||
NAME_NOT_MATCH: '收款人姓名与微信实名不一致',
|
||||
USER_NAME_NOT_MATCH: '收款人姓名与微信实名不一致',
|
||||
REAL_NAME_CHECK_FAIL: '收款人微信实名核验未通过',
|
||||
INVALID_OPENID: '收款人微信标识无效',
|
||||
OPENID_ERROR: '收款人微信标识异常',
|
||||
AMOUNT_EXCEED: '超出单笔转账限额',
|
||||
DAILY_LIMIT_EXCEED: '超出当日转账限额',
|
||||
MCH_CANCEL: '商户主动撤销转账',
|
||||
MCH_REVOKE: '商户主动撤销转账',
|
||||
TRANSFER_FAILED: '微信转账未成功',
|
||||
FAIL: '微信转账未成功',
|
||||
CANCEL: '转账已撤销',
|
||||
CANCELLED: '转账已撤销',
|
||||
PARAM_ERROR: '转账参数有误,请联系客服',
|
||||
SYSTEM_ERROR: '微信系统繁忙,请稍后重试',
|
||||
FREQUENCY_LIMITED: '操作过于频繁,请稍后重试',
|
||||
RULE_LIMIT: '触发微信风控限制',
|
||||
ACCOUNT_FROZEN: '收款账户已被冻结',
|
||||
NO_AUTH: '商户无转账接口权限',
|
||||
APPID_MCHID_NOT_MATCH: '小程序与商户号不匹配',
|
||||
SIGN_ERROR: '商户签名错误',
|
||||
IP_NOT_ALLOWED: '服务器IP未加入微信白名单',
|
||||
IP_FORBIDDEN: '服务器IP未加入微信白名单'
|
||||
};
|
||||
var FAIL_FALLBACK = '微信转账未成功,请稍后重试或联系客服';
|
||||
var REASON_FALLBACK = '审核未通过,请联系客服了解详情';
|
||||
|
||||
/**
|
||||
* 失败原因码值转中文
|
||||
*
|
||||
* @param {string} raw 数据库原始 fail_reason
|
||||
* @return {string} 可读中文
|
||||
*/
|
||||
function failText(raw) {
|
||||
var text = $.trim(raw || '');
|
||||
if (!text) return '';
|
||||
text = $.trim(text.replace(/^微信转账(失败|撤销)[::]\s*/, ''));
|
||||
if (FAIL_TEXT[text.toUpperCase()]) return FAIL_TEXT[text.toUpperCase()];
|
||||
if (/^[A-Z0-9_\-.\/]{2,60}$/i.test(text)) return FAIL_FALLBACK;
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* 驳回原因码值转中文
|
||||
*
|
||||
* @param {string} raw 数据库原始 reason
|
||||
* @return {string} 可读中文
|
||||
*/
|
||||
function reasonText(raw) {
|
||||
var text = $.trim(raw || '');
|
||||
if (!text) return '';
|
||||
if (/^[0-9]+$/.test(text) || /^[A-Z0-9_\-.\/]{2,60}$/i.test(text)) return REASON_FALLBACK;
|
||||
return text;
|
||||
}
|
||||
|
||||
var Controller = {
|
||||
/**
|
||||
* 提现列表页初始化
|
||||
@@ -115,10 +179,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'backend/format'], fu
|
||||
return value && m[value] ? m[value] : (value || '-');
|
||||
}
|
||||
},
|
||||
{field: 'reason', title: '拒绝原因', operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||||
{field: 'reason', title: '拒绝原因', operate: 'LIKE', table: table, class: 'autocontent', formatter: function (value) {
|
||||
return reasonText(value) || '-';
|
||||
}},
|
||||
{field: 'fail_reason', title: '转账失败原因', operate: 'LIKE', table: table, class: 'autocontent', formatter: function (value) {
|
||||
if (!value) return '-';
|
||||
return '<span class="text-danger" title="' + value + '">' + value + '</span>';
|
||||
var text = failText(value);
|
||||
if (!text) return '-';
|
||||
return '<span class="text-danger">' + text + '</span>';
|
||||
}},
|
||||
{field: 'paytime', title: __('Paytime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
|
||||
{field: 'createtime', title: __('Createtime'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter: Table.api.formatter.datetime},
|
||||
|
||||
在新工单中引用
屏蔽一个用户