1.优化提现接口/api/finance/withdrawCreate

This commit is contained in:
2026-05-20 12:01:07 +08:00
parent 91229f4477
commit b9e4d806f7
12 changed files with 219 additions and 13 deletions

View File

@@ -39,7 +39,7 @@ export default {
ddpay_spec_intro:
'Withdrawals use DDPay Payout (mobile: withdrawCreate). Deposits with channel ddpay use depositCreate. Below is a short field summary; see the DDPay doc and the mobile API draft in the repo for details.',
ddpay_spec_li_withdraw:
'Withdraw (required): withdraw_coin, receive_type=bank, receive_account, receiver_name (as registered with the bank), bank_code (must match a code from “Withdraw banks by currency” on this page), idempotency_key; bank_branch optional (server sends N/A if omitted).',
'Withdraw (required): channel_code=ddpay, withdraw_coin, receive_type=bank, receive_account, receiver_name (as registered with the bank), receiver_email, receiver_mobile, bank_code (must match a code from “Withdraw banks by currency” on this page), idempotency_key; bank_branch optional (server sends N/A if omitted).',
ddpay_spec_li_bank_table:
'English bank name maps to DDPay bank[name] and must match the official full bank names, or payout may be rejected.',
ddpay_spec_li_deposit:

View File

@@ -7,8 +7,12 @@ export default {
amount: 'Apply amount',
fee: 'Fee',
actual_amount: 'Actual amount',
pay_channel: 'Pay channel',
receive_type: 'Receive type',
receive_account: 'Receive account',
receiver_name: 'Cardholder name',
receiver_email: 'Receiver email',
receiver_mobile: 'Receiver mobile',
idempotency_key: 'Idempotency key',
status: 'Status',
'status 0': 'Pending review',

View File

@@ -39,7 +39,7 @@ export default {
ddpay_spec_intro:
'当前提现走 DDPay 出金Payout移动端调用 withdrawCreate充值渠道为 ddpay 时调用 depositCreate。下列为字段约定摘要详细以仓库内 DDPay 文档与《36字花-移动端接口设计草案》为准。',
ddpay_spec_li_withdraw:
'提现必填withdraw_coin、receive_type=bank、receive_account收款账号、receiver_name与银行登记一致、bank_code须与本页「提现支持银行按币种」中 code 一致、idempotency_keybank_branch 选填,不传则服务端按 N/A 提交。',
'提现必填:channel_code=ddpay支付渠道withdraw_coin、receive_type=bank、receive_account收款账号、receiver_name与银行登记一致receiver_email、receiver_mobile、bank_code须与本页「提现支持银行按币种」中 code 一致、idempotency_keybank_branch 选填,不传则服务端按 N/A 提交。',
ddpay_spec_li_bank_table:
'「银行名(英文)」将映射为 DDPay 的 bank[name],请与 DDPay 官方银行全称列表一致,否则出金可能被拒。',
ddpay_spec_li_deposit:

View File

@@ -7,8 +7,12 @@ export default {
amount: '申请金额',
fee: '手续费',
actual_amount: '实际到账',
pay_channel: '支付渠道',
receive_type: '收款类型',
receive_account: '收款账号',
receiver_name: '持卡人姓名',
receiver_email: '收款人邮箱',
receiver_mobile: '收款人手机号',
idempotency_key: '幂等键',
status: '状态',
'status 0': '待审核',

View File

@@ -79,6 +79,14 @@ const baTable = new baTableClass(
{ label: t('order.withdrawOrder.amount'), prop: 'amount', align: 'center', minWidth: 110, operator: 'RANGE', formatter: formatAmount },
{ label: t('order.withdrawOrder.fee'), prop: 'fee', align: 'center', minWidth: 110, operator: 'RANGE', formatter: formatAmount },
{ label: t('order.withdrawOrder.actual_amount'), prop: 'actual_amount', align: 'center', minWidth: 110, operator: 'RANGE', formatter: formatAmount },
{
label: t('order.withdrawOrder.pay_channel'),
prop: 'pay_channel',
align: 'center',
minWidth: 110,
operator: 'LIKE',
operatorPlaceholder: t('Fuzzy query'),
},
{
label: t('order.withdrawOrder.receive_type'),
prop: 'receive_type',
@@ -96,6 +104,33 @@ const baTable = new baTableClass(
operatorPlaceholder: t('Fuzzy query'),
showOverflowTooltip: true,
},
{
label: t('order.withdrawOrder.receiver_name'),
prop: 'ddpay_receiver_name',
align: 'center',
minWidth: 120,
operator: 'LIKE',
operatorPlaceholder: t('Fuzzy query'),
showOverflowTooltip: true,
},
{
label: t('order.withdrawOrder.receiver_email'),
prop: 'receiver_email',
align: 'center',
minWidth: 180,
operator: 'LIKE',
operatorPlaceholder: t('Fuzzy query'),
showOverflowTooltip: true,
},
{
label: t('order.withdrawOrder.receiver_mobile'),
prop: 'receiver_mobile',
align: 'center',
minWidth: 140,
operator: 'LIKE',
operatorPlaceholder: t('Fuzzy query'),
showOverflowTooltip: true,
},
{
label: t('order.withdrawOrder.idempotency_key'),
prop: 'idempotency_key',

View File

@@ -39,12 +39,24 @@
<el-form-item :label="t('order.withdrawOrder.create_time')">
<el-input :model-value="form.create_time_text" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.pay_channel')">
<el-input :model-value="form.pay_channel || '-'" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.receive_type')">
<el-input :model-value="form.receive_type || '-'" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.receive_account')">
<el-input :model-value="form.receive_account || '-'" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.receiver_name')">
<el-input :model-value="form.receiver_name || '-'" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.receiver_email')">
<el-input :model-value="form.receiver_email || '-'" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.receiver_mobile')">
<el-input :model-value="form.receiver_mobile || '-'" readonly />
</el-form-item>
<el-form-item :label="t('order.withdrawOrder.idempotency_key')">
<el-input :model-value="form.idempotency_key || '-'" readonly />
</el-form-item>
@@ -171,8 +183,12 @@ const form = reactive({
review_admin_text: '-',
review_time_text: '-',
idempotency_key: '',
pay_channel: '',
receive_type: '',
receive_account: '',
receiver_name: '',
receiver_email: '',
receiver_mobile: '',
amount: 0,
fee: 0,
status: 0,
@@ -220,8 +236,12 @@ const hydrate = () => {
form.status = Number(row['status'] ?? 0)
form.remark = String(row['remark'] ?? '')
form.idempotency_key = String(row['idempotency_key'] ?? '')
form.pay_channel = String(row['pay_channel'] ?? '')
form.receive_type = String(row['receive_type'] ?? '')
form.receive_account = String(row['receive_account'] ?? '')
form.receiver_name = String(row['ddpay_receiver_name'] ?? '')
form.receiver_email = String(row['receiver_email'] ?? '')
form.receiver_mobile = String(row['receiver_mobile'] ?? '')
form.create_time_text = formatTime(row['create_time'])
form.review_time_text = formatTime(row['review_time'])
form.user_text = resolveRelationText(row, 'user', row['user_id'])