feat(withdraw): DMEPA提现手续费与最小提现额度配置收敛至商城配置页面并实现内扣闭环

1. 后台商城配置收敛:在【商城配置 -> 充值提现】面板集中增加「DMEPA 数字资产提现配置」(开启开关、手续费率、最小提现额度),并自动双向同步与自愈补齐数据表行
2. 服务层内扣手续费闭环:applyMadow 增加手续费率读取、内扣手续费计算(申请金额 > 手续费校验)与实际到账持久化,驳回/失败全额原路退还 DMEPA 持仓
3. API 与前台联动:rules() 与 madow() 接口返回手续费率,withdraw.vue 实时动态计算扣除 DMEPA 枚数、手续费内扣金额与预计到账金额
4. 后台列表与导出优化:提现管理列表与导出功能支持展示换算市值、手续费与到账金额
5. 新增及更新 3 套自动化规格测试(累计 130 项断言全部通过)
这个提交包含在:
chen
2026-09-21 14:33:20 +08:00
父节点 b598d56483
当前提交 a2220427e2
共有 15 个文件被更改,包括 889 次插入 和 19 次删除

查看文件

@@ -646,6 +646,33 @@
<template #append>次</template>
</el-input>
</el-form-item>
<div class="sa-title is-line" style="margin-top: 24px;">DMEPA 数字资产提现配置</div>
<el-form-item label="开启DMEPA提现">
<div>
<div class="sa-flex">
<el-switch v-model="form.model.withdraw.madow_withdraw_enable" :active-value="1" :inactive-value="0"></el-switch>
<div class="label-tip" :class="form.model.withdraw.madow_withdraw_enable == 1 ? 'sa-color--primary' : ''">
{{ form.model.withdraw.madow_withdraw_enable == 1 ? '开启' : '关闭' }}
</div>
</div>
<div class="tip">
<div>开启后,用户端“我的DMEPA”页面将显示提现入口,支持持仓DMEPA按大盘实时市值提现到银行卡;关闭后隐藏提现入口并禁止提现。</div>
</div>
</div>
</el-form-item>
<el-form-item label="DMEPA提现手续费" prop="withdraw.madow_charge_rate">
<el-input class="sa-w-360" v-model="form.model.withdraw.madow_charge_rate" type="number" :min="0" placeholder="请输入手续费率">
<template #append>%</template>
</el-input>
<div class="tip">提现时从折算人民币到账金额中内扣手续费(如设置 5%,提现 100 元实际到账 95 元;填 0 为无手续费)</div>
</el-form-item>
<el-form-item label="DMEPA最小提现金额" prop="withdraw.madow_min_amount">
<el-input class="sa-w-360" v-model="form.model.withdraw.madow_min_amount" type="number" :min="0" placeholder="请输入单次最小提现金额">
<template #append>元</template>
</el-input>
<div class="tip">每次 DMEPA 折算现金提现的单笔最低申请金额(元)</div>
</el-form-item>
</template>
</template>
@@ -970,6 +997,12 @@
</el-input>
<div class="tip">每次dmepa折合现金提现的最低申请金额(元)</div>
</el-form-item>
<el-form-item label="dmepa提现手续费">
<el-input class="sa-w-360" v-model="form.model.partner_madow_withdraw_charge_rate" type="number" :min="0" placeholder="0">
<template #append>%</template>
</el-input>
<div class="tip">提现时从折算人民币到账金额中内扣手续费(如 5%,提现 100 元到账 95 元;填 0 为无手续费)</div>
</el-form-item>
<el-form-item label="市值规则弹窗标题">
<el-input class="sa-w-360" v-model="form.model.partner_madow_rule_title" placeholder="市值与增值规则"></el-input>
</el-form-item>

查看文件

@@ -33,6 +33,9 @@
<div class="sa-title-right">
<el-button class="sa-button-refresh" icon="RefreshRight" @click="getData"></el-button>
<el-button class="sa-button-refresh" icon="Search" @click="onOpenFilter"></el-button>
{if $auth->check('shopro/withdraw/export') || $auth->check('shopro/withdraw/index')}
<el-button :loading="exportLoading" :disabled="exportLoading" @click="onExport('export')">导出</el-button>
{/if}
</div>
</div>
</el-header>
@@ -57,7 +60,7 @@
换算市值: {{ scope.row.amount || '-' }}元
</div>
<div class="sa-table-line-1" style="font-size: 12px; color: #909399;">
实际到账: {{ scope.row.paid_fee }}元
实际到账: {{ Number(scope.row.paid_fee) > 0 ? scope.row.paid_fee : (scope.row.real_amount || scope.row.amount) }}元
</div>
</template>
<template v-else-if="scope.row.is_money_withdraw">