6
0
Fork 0

添加提现转账限制

release
vine_liutk 2021-12-29 13:55:38 +08:00
parent e6d399987c
commit 688dba2936
21 changed files with 297 additions and 26 deletions

View File

@ -8,11 +8,9 @@ use Dcat\Admin\Widgets\Modal;
class OrderCreatePackage extends AbstractTool class OrderCreatePackage extends AbstractTool
{ {
public function __construct($title = null, $id) public function __construct($id, $title = null)
{ {
if ($title) { parent::__construct($title);
$this->title = $title;
}
$this->setKey($id); $this->setKey($id);
} }
/** /**

View File

@ -304,7 +304,7 @@ class OrderController extends AdminController
//显示发货动作 //显示发货动作
$order = OrderModel::findOrFail($id); $order = OrderModel::findOrFail($id);
if ($order->isWaitShipping() || $order->isShipping()) { if ($order->isWaitShipping() || $order->isShipping()) {
$packagesBox->tool(new OrderCreatePackage(null, $id)); $packagesBox->tool(new OrderCreatePackage($id));
} }
$column->row($packagesBox->collapsable()); $column->row($packagesBox->collapsable());

View File

@ -8,6 +8,7 @@ use App\Admin\Forms\Settings\Distribution;
use App\Admin\Forms\Settings\Ios; use App\Admin\Forms\Settings\Ios;
use App\Admin\Forms\Settings\Kuaidi100; use App\Admin\Forms\Settings\Kuaidi100;
use App\Admin\Forms\Settings\Unipush; use App\Admin\Forms\Settings\Unipush;
use App\Admin\Forms\Settings\Withdraw;
use App\Admin\Repositories\Setting; use App\Admin\Repositories\Setting;
use Dcat\Admin\Admin; use Dcat\Admin\Admin;
use Dcat\Admin\Form; use Dcat\Admin\Form;
@ -110,14 +111,34 @@ class SettingController extends AdminController
case 'app': case 'app':
$tab->add('系统配置', new App(), true); $tab->add('系统配置', new App(), true);
$tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution'])); $tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution']));
$tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw']));
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios'])); $tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'ios'])); $tab->addLink('Android配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100'])); $tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
$tab->addLink('Uni-push配置', admin_route('settings.index', ['type'=>'unipush'])); $tab->addLink('Uni-push配置', admin_route('settings.index', ['type'=>'unipush']));
break; break;
case 'distribution':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->add('会员奖励配置', new Distribution(), true);
$tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw']));
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android']));
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
$tab->addLink('Uni-push配置', admin_route('settings.index', ['type'=>'unipush']));
break;
case 'withdraw':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution']));
$tab->add('提现配置', new Withdraw(), true);
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android']));
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
$tab->addLink('Uni-push配置', admin_route('settings.index', ['type'=>'unipush']));
break;
case 'ios': case 'ios':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app'])); $tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution'])); $tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution']));
$tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw']));
$tab->add('Ios配置', new Ios(), true); $tab->add('Ios配置', new Ios(), true);
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android'])); $tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android']));
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100'])); $tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
@ -126,6 +147,7 @@ class SettingController extends AdminController
case 'android': case 'android':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app'])); $tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution'])); $tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution']));
$tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw']));
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios'])); $tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->add('Android配置', new Android(), true); $tab->add('Android配置', new Android(), true);
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100'])); $tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
@ -134,6 +156,7 @@ class SettingController extends AdminController
case 'kuaidi100': case 'kuaidi100':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app'])); $tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution'])); $tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution']));
$tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw']));
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios'])); $tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android'])); $tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android']));
$tab->add('快递100配置', new Kuaidi100(), true); $tab->add('快递100配置', new Kuaidi100(), true);
@ -142,19 +165,12 @@ class SettingController extends AdminController
case 'unipush': case 'unipush':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app'])); $tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution'])); $tab->addLink('会员奖励配置', admin_route('settings.index', ['type'=>'distribution']));
$tab->addLink('提现配置', admin_route('settings.index', ['type'=>'withdraw']));
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios'])); $tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android'])); $tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android']));
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100'])); $tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
$tab->add('Uni-push配置', new Unipush(), true); $tab->add('Uni-push配置', new Unipush(), true);
break; break;
case 'distribution':
$tab->addLink('系统配置', admin_route('settings.index', ['type'=>'app']));
$tab->add('会员奖励配置', new Distribution(), true);
$tab->addLink('Ios配置', admin_route('settings.index', ['type'=>'ios']));
$tab->addLink('Android配置', admin_route('settings.index', ['type'=>'android']));
$tab->addLink('快递100配置', admin_route('settings.index', ['type'=>'kuaidi100']));
$tab->addLink('Uni-push配置', admin_route('settings.index', ['type'=>'unipush']));
break;
default: default:
break; break;
} }

View File

@ -61,6 +61,8 @@ class UserController extends AdminController
$actions->append(new EnableUser()); $actions->append(new EnableUser());
} }
} }
// todo-禁用可提,禁用余额
}); });
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {

View File

@ -31,6 +31,12 @@ class WalletToBankLogController extends AdminController
$grid->column('amount')->display(function ($v) { $grid->column('amount')->display(function ($v) {
return bcdiv($v, 100, 2); return bcdiv($v, 100, 2);
})->prepend('¥'); })->prepend('¥');
$grid->column('service_amount')->display(function ($v) {
return bcdiv($v, 100, 2);
})->prepend('¥');
$grid->column('account_amount')->display(function ($v) {
return bcdiv($v, 100, 2);
})->prepend('¥');
$grid->column('status')->using([ $grid->column('status')->using([
WalletToBankLogModel::STATUS_PENDING=>'待处理', WalletToBankLogModel::STATUS_PENDING=>'待处理',
WalletToBankLogModel::STATUS_AGREE=>'同意', WalletToBankLogModel::STATUS_AGREE=>'同意',
@ -43,6 +49,10 @@ class WalletToBankLogController extends AdminController
$grid->column('remarks'); $grid->column('remarks');
$grid->column('created_at')->sortable(); $grid->column('created_at')->sortable();
$grid->model()->orderBy('status', 'asc');
$grid->model()->orderBy('created_at', 'desc');
$grid->actions(function (Grid\Displayers\Actions $actions) { $grid->actions(function (Grid\Displayers\Actions $actions) {
if ($actions->row->status == 0 && Admin::user()->can('dcat.admin.wallet_to_bank_logs.verify')) { if ($actions->row->status == 0 && Admin::user()->can('dcat.admin.wallet_to_bank_logs.verify')) {
$actions->append(new WalletToBankLogVerify()); $actions->append(new WalletToBankLogVerify());

View File

@ -0,0 +1,45 @@
<?php
namespace App\Admin\Forms\Settings;
use App\Models\Setting;
use App\Services\SettingService;
use Dcat\Admin\Widgets\Form;
class Withdraw extends Form
{
/**
* Handle the form request.
*
* @param array $input
*
* @return mixed
*/
public function handle(array $input)
{
Setting::where('key', 'withdraw')->updateOrCreate([
'key' => 'withdraw',
], ['value' => $input]);
//清配置缓存
app(SettingService::class)->cleanCache('withdraw');
return $this
->response()
->success('配置更新成功!')
->refresh();
}
/**
* Build a form here.
*/
public function form()
{
$appSettings = Setting::where('key', 'withdraw')->value('value');
// $this->switch('is_use', '提现开关')->value($appSettings['is_use'] ?? 0);
$this->number('threshold_amount', '起提金额(元)')->value($appSettings['threshold_amount'] ?? 0);
$this->currency('rate', '提现费率')->value($appSettings['rate'] ?? 0)->symbol('%');
}
}

View File

@ -7,9 +7,11 @@ use App\Endpoint\Api\Http\Resources\BalanceLogResource;
use App\Endpoint\Api\Http\Resources\DistributionPreIncomeResource; use App\Endpoint\Api\Http\Resources\DistributionPreIncomeResource;
use App\Endpoint\Api\Http\Resources\WalletLogResource; use App\Endpoint\Api\Http\Resources\WalletLogResource;
use App\Endpoint\Api\Http\Resources\WalletToBankLogResource; use App\Endpoint\Api\Http\Resources\WalletToBankLogResource;
use App\Exceptions\BalanceFrozenException;
use App\Exceptions\BizException; use App\Exceptions\BizException;
use App\Exceptions\InvalidPaySerialNumberException; use App\Exceptions\InvalidPaySerialNumberException;
use App\Exceptions\PayPasswordIncorrectException; use App\Exceptions\PayPasswordIncorrectException;
use App\Exceptions\WalletFrozenException;
use App\Exceptions\WalletNotEnoughException; use App\Exceptions\WalletNotEnoughException;
use App\Helpers\Paginator as PaginatorHelper; use App\Helpers\Paginator as PaginatorHelper;
use App\Models\BalanceLog; use App\Models\BalanceLog;
@ -170,17 +172,37 @@ class WalletController extends Controller
]); ]);
$user = $request->user(); $user = $request->user();
$amount = Arr::get($input, 'amount', 0);
if (is_null($user->bank)) {
throw new BizException('请先绑定设置银行卡');
}
//校验是否冻结
if ($user->wallet->is_frozen) {
throw new WalletFrozenException();
}
//校验是否关闭提现
if (!$user->wallet->withdrawable) {
throw new BizException('可提账户已被限制提现');
}
// todo-校验提现门槛
if (bcdiv($amount, 100, 2) < app_settings('withdraw.threshold_amount', 0)) {
throw new BizException('提现金额需大于'.app_settings('withdraw.threshold_amount', 0).'元');
}
//校验安全密码 //校验安全密码
if (! $user->wallet?->verifyPassword($input['wallet_password'])) { if (! $user->wallet?->verifyPassword($input['wallet_password'])) {
throw new PayPasswordIncorrectException(); throw new PayPasswordIncorrectException();
} }
if (is_null($user->bank)) {
throw new BizException('请先绑定设置银行卡');
}
try { try {
DB::beginTransaction(); DB::beginTransaction();
$rate = app_settings('withdraw.rate', '0.00');//手续费率
//计算手续费(四舍五入)
$serviceAmount = round($rate*$amount);
//生成提现记录 //生成提现记录
$log = WalletToBankLog::create([ $log = WalletToBankLog::create([
'user_id' =>$user->id, 'user_id' =>$user->id,
@ -188,11 +210,14 @@ class WalletController extends Controller
'bank_number' => $user->bank->bank_number, 'bank_number' => $user->bank->bank_number,
'bank_description' => $user->bank->bank_description, 'bank_description' => $user->bank->bank_description,
'username' => $user->bank->real_name, 'username' => $user->bank->real_name,
'amount'=> Arr::get($input, 'amount', 0), 'amount'=> $amount,
'rate' => $rate,
'service_amount' => $serviceAmount,
'account_amount' => $amount-$serviceAmount,
]); ]);
//减去用户可提金额 //减去用户可提金额
$walletService->changeBalance($user, -Arr::get($input, 'amount', 0), WalletLog::ACTION_WITHDRAW_BANK, '提现-银行卡', $log); $walletService->changeBalance($user, -$amount, WalletLog::ACTION_WITHDRAW_BANK, '提现-银行卡', $log);
DB::commit(); DB::commit();
} catch (WalletNotEnoughException $th) { } catch (WalletNotEnoughException $th) {
DB::rollBack(); DB::rollBack();
@ -235,6 +260,14 @@ class WalletController extends Controller
]); ]);
$user = $request->user(); $user = $request->user();
//校验是否冻结
if ($user->wallet->is_frozen) {
throw new WalletFrozenException();
}
//校验是否关闭提现
if (!$user->wallet->withdrawable) {
throw new BizException('可提账户已被限制提现');
}
//校验安全密码 //校验安全密码
if (! $user->wallet?->verifyPassword($input['wallet_password'])) { if (! $user->wallet?->verifyPassword($input['wallet_password'])) {
throw new PayPasswordIncorrectException(); throw new PayPasswordIncorrectException();
@ -273,12 +306,26 @@ class WalletController extends Controller
'wallet_password' => ['bail', 'required', 'filled', 'string', 'size:6'], 'wallet_password' => ['bail', 'required', 'filled', 'string', 'size:6'],
]); ]);
$user = $request->user();
//校验是否冻结
if ($user->balance->is_frozen) {
throw new BalanceFrozenException();
}
//校验是否关闭转账
if (!$user->balance->transferable) {
throw new BizException('余额账户已被限制转账');
}
//判断转账对象是否存在 //判断转账对象是否存在
$toUser = User::where('phone', '=', $input['phone'])->first(); $toUser = User::where('phone', '=', $input['phone'])->first();
if (is_null($toUser)) { if (is_null($toUser)) {
throw new BizException('转账对象不存在'); throw new BizException('转账对象不存在');
} }
$user = $request->user(); //校验安全密码
if (! $user->wallet?->verifyPassword($input['wallet_password'])) {
throw new PayPasswordIncorrectException();
}
try { try {
DB::beginTransaction(); DB::beginTransaction();
//转出对象 //转出对象

View File

@ -19,14 +19,16 @@ class UserBalanceResource extends JsonResource
'balance'=> '0.00', 'balance'=> '0.00',
// 'total_expenses'=> $this->total_expenses, // 'total_expenses'=> $this->total_expenses,
// 'total_revenue' => $this->total_revenue, // 'total_revenue' => $this->total_revenue,
// 'withdrawable' => $this->withdrawable, 'withdrawable' => true,
'is_frozen' => false,
]; ];
} }
return [ return [
'balance'=>$this->balance_format, 'balance'=>$this->balance_format,
// 'total_expenses'=> $this->total_expenses, // 'total_expenses'=> $this->total_expenses,
// 'total_revenue' => $this->total_revenue, // 'total_revenue' => $this->total_revenue,
// 'withdrawable' => $this->withdrawable, 'withdrawable' => (bool) $this->withdrawable,
'is_frozen' => (bool) $this->is_frozen,
]; ];
} }
} }

View File

@ -19,16 +19,18 @@ class UserWalletResource extends JsonResource
'balance'=> '0.00', 'balance'=> '0.00',
// 'total_expenses'=> $this->total_expenses, // 'total_expenses'=> $this->total_expenses,
// 'total_revenue' => $this->total_revenue, // 'total_revenue' => $this->total_revenue,
// 'withdrawable' => $this->withdrawable, 'withdrawable' => true,
'has_password' => false, 'has_password' => false,
'is_frozen' => false,
]; ];
} }
return [ return [
'balance'=> $this->balance_format, 'balance'=> $this->balance_format,
// 'total_expenses'=> $this->total_expenses, // 'total_expenses'=> $this->total_expenses,
// 'total_revenue' => $this->total_revenue, // 'total_revenue' => $this->total_revenue,
// 'withdrawable' => $this->withdrawable, 'withdrawable' => (bool) $this->withdrawable,
'has_password' => (bool) is_null($this?->password) ? false : true, 'is_frozen' => (bool) $this->is_frozen,
'has_password' => (bool) $this->password??false,
]; ];
} }
} }

View File

@ -24,6 +24,7 @@ class WalletToBankLogResource extends JsonResource
'created_at' => $this->created_at->toDateTimeString(), 'created_at' => $this->created_at->toDateTimeString(),
'status' => $this->status, 'status' => $this->status,
'remarks' => $this->remarks, 'remarks' => $this->remarks,
'service_amount' => $this->service_amount_format,
]; ];
} }
} }

View File

@ -0,0 +1,11 @@
<?php
namespace App\Exceptions;
class BalanceFrozenException extends BizException
{
public function __construct()
{
parent::__construct('余额账户已被冻结');
}
}

View File

@ -6,6 +6,6 @@ class PayPasswordIncorrectException extends BizException
{ {
public function __construct() public function __construct()
{ {
parent::__construct('支付密码错误', 10001); parent::__construct('安全密码错误', 10001);
} }
} }

View File

@ -0,0 +1,11 @@
<?php
namespace App\Exceptions;
class WalletFrozenException extends BizException
{
public function __construct()
{
parent::__construct('可提账户已被冻结');
}
}

View File

@ -14,6 +14,7 @@ class Balance extends Model
'total_revenue' => 0, 'total_revenue' => 0,
'total_expenses' => 0, 'total_expenses' => 0,
'transferable' => true, 'transferable' => true,
'is_frozen' => false,
]; ];
/** /**
@ -25,6 +26,7 @@ class Balance extends Model
'total_expenses', 'total_expenses',
'total_revenue', 'total_revenue',
'transferable', 'transferable',
'is_frozen',
]; ];
/** /**
@ -32,6 +34,7 @@ class Balance extends Model
*/ */
protected $casts = [ protected $casts = [
'transferable' => 'bool', 'transferable' => 'bool',
'is_frozen'=>'bool',
]; ];
public function getBalanceFormatAttribute() public function getBalanceFormatAttribute()

View File

@ -24,6 +24,7 @@ class Wallet extends Model
'total_revenue' => 0, 'total_revenue' => 0,
'total_expenses' => 0, 'total_expenses' => 0,
'withdrawable' => true, 'withdrawable' => true,
'is_frozen' => false,
]; ];
/** /**
@ -36,6 +37,7 @@ class Wallet extends Model
'total_revenue', 'total_revenue',
'withdrawable', 'withdrawable',
'password', //安全密码 'password', //安全密码
'is_frozen',
]; ];
/** /**
@ -43,6 +45,7 @@ class Wallet extends Model
*/ */
protected $casts = [ protected $casts = [
'withdrawable' => 'bool', 'withdrawable' => 'bool',
'is_frozen'=>'bool',
]; ];
public function getBalanceFormatAttribute() public function getBalanceFormatAttribute()

View File

@ -27,6 +27,9 @@ class WalletToBankLog extends Model
'amount', 'amount',
'status', 'status',
'remarks', 'remarks',
'rate',
'service_amount',
'account_amount',
]; ];
/** /**
@ -42,4 +45,9 @@ class WalletToBankLog extends Model
{ {
return trim_trailing_zeros(bcdiv($this->attributes['amount'], 100, 2)); return trim_trailing_zeros(bcdiv($this->attributes['amount'], 100, 2));
} }
public function getServiceAmountFormatAttribute()
{
return trim_trailing_zeros(bcdiv($this->attributes['service_amount'], 100, 2));
}
} }

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddIsFrozenToWalletsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('wallets', function (Blueprint $table) {
//
$table->boolean('is_frozen')->default(false)->comment('是否冻结');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('wallets', function (Blueprint $table) {
//
$table->dropColumn(['is_frozen']);
});
}
}

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddIsFrozenToBalancesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('balances', function (Blueprint $table) {
//
$table->boolean('is_frozen')->default(false)->comment('是否冻结');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('balances', function (Blueprint $table) {
//
$table->dropColumn(['is_frozen']);
});
}
}

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddServiceToWalletToBankLogsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('wallet_to_bank_logs', function (Blueprint $table) {
//
$table->unsignedDecimal('rate', 18, 2)->default(0)->comment('费率');
$table->unsignedBigInteger('service_amount')->comment('手续费:分');
$table->unsignedBigInteger('account_amount')->comment('到账金额:分');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('wallet_to_bank_logs', function (Blueprint $table) {
//
$table->dropColumn(['rate', 'service_amount', 'account_amount']);
});
}
}

View File

@ -36,6 +36,12 @@ class AppSettingSeeder extends Seeder
], ],
'remarks' => '系统配置', 'remarks' => '系统配置',
], ],
'withdraw' => [
'value'=>[
'threshold_amount'=>0,
'rate'=>'0.00',
],
],
'ios' => [ 'ios' => [
'value'=> [ 'value'=> [
'v'=>0, 'v'=>0,

View File

@ -11,6 +11,8 @@ return [
'bank_description' => '收款银行开户行', 'bank_description' => '收款银行开户行',
'username' => '持卡人', 'username' => '持卡人',
'amount' => '提现金额', 'amount' => '提现金额',
'service_amount' => '手续费',
'account_amount' => '到账金额',
'status' => '状态', 'status' => '状态',
'remarks' => '备注', 'remarks' => '备注',
'created_at'=> '申请时间', 'created_at'=> '申请时间',