Browse Source

提现

develop
lemon 4 years ago
parent
commit
320c04f9c5
  1. 80
      app/Admin/Controllers/WithdrawalController.php
  2. 139
      app/AdminAgent/Controllers/WalletController.php
  3. 64
      app/AdminAgent/Controllers/WithdrawalAlipayController.php
  4. 64
      app/AdminAgent/Controllers/WithdrawalBankController.php
  5. 2
      app/AdminAgent/Repositories/Withdrawal.php
  6. 16
      app/AdminAgent/Repositories/WithdrawalAlipay.php
  7. 16
      app/AdminAgent/Repositories/WithdrawalBank.php
  8. 4
      app/AdminAgent/routes.php
  9. 6
      app/Models/Withdrawal.php
  10. 4
      app/Models/WithdrawalAlipay.php
  11. 6
      app/Models/WithdrawalBank.php
  12. 38
      app/Traits/WithdrawalTraits.php
  13. 2
      database/migrations/2021_09_11_165223_create_withdrawal_bank_table.php
  14. 32
      dcat_admin_ide_helper.php
  15. 16
      resources/lang/zh_CN/withdrawal-bank.php

80
app/Admin/Controllers/WithdrawalController.php

@ -1,80 +0,0 @@
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\Withdrawal;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class WithdrawalController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Withdrawal(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('user_id');
$grid->column('user_type');
$grid->column('price');
$grid->column('pay_type');
$grid->column('pay_id');
$grid->column('status');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new Withdrawal(), function (Show $show) {
$show->field('id');
$show->field('user_id');
$show->field('user_type');
$show->field('price');
$show->field('pay_type');
$show->field('pay_id');
$show->field('status');
$show->field('created_at');
$show->field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new Withdrawal(), function (Form $form) {
$form->display('id');
$form->text('user_id');
$form->text('user_type');
$form->text('price');
$form->text('pay_type');
$form->text('pay_id');
$form->text('status');
$form->display('created_at');
$form->display('updated_at');
});
}
}

139
app/AdminAgent/Controllers/WalletController.php

@ -0,0 +1,139 @@
<?php
namespace App\AdminAgent\Controllers;
use App\AdminAgent\Repositories\Withdrawal;
use App\Traits\DemandTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Layout\Column;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Layout\Row;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Widgets\Card;
class WalletController extends AdminController
{
public function index(Content $content)
{
return $content
->body(
<<<HTML
<div class="content-header">
<section class="content-header breadcrumbs-top">
<h1 class=" float-left">
<span class="text-capitalize">我的钱包</span>
</h1>
<div class="clearfix"></div>
</section>
</div>
HTML
)
->body($this->build())
->body(function (Row $row) {
$row->column(4, function (Column $column){
$column->row(Card::make('当前余额', function () {
$balance = Admin::user()->balance;
return <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-large-1 text-primary">$balance</h2>
</div>
HTML;
}));
});
$row->column(4, function (Column $column){
$column->row(Card::make('已提现', function () {
$price = \App\Models\Withdrawal::query()
->where([
'user_id' => Admin::user()->id,
'user_type' => DemandTraits::$col[0],
'status' => WithdrawalTraits::$state[3]
])
->sum('price');
return <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-large-1 text-primary">$price</h2>
</div>
HTML;
}));
});
$row->column(4, function (Column $column) {
$column->row(Card::make('提现中', function () {
$price = \App\Models\Withdrawal::query()
->where([
'user_id' => Admin::user()->id,
'user_type' => DemandTraits::$col[0],
'status' => WithdrawalTraits::$state[0]
])
->sum('price');
return <<<HTML
<div class="d-flex justify-content-between align-items-center mt-1" style="margin-bottom: 2px">
<h2 class="ml-1 font-large-1 text-primary">$price</h2>
</div>
HTML;
}));
});
})
->body(
Grid::make(new Withdrawal(), function (Grid $grid) {
$grid->disableActions();
//$grid->disable();
$grid->column('id')->sortable();
$grid->column('price','提现金额');
$grid->column('pay_type','提现方式')->using(WithdrawalTraits::$userTypeText);
//$grid->column('pay_id');
$grid->column('status','状态')->using(WithdrawalTraits::$stateText)->dot([
1 => Admin::color()->yellow(),
2 => 'danger',
3 => 'success',
4 => Admin::color()->info(),
]);
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->disableCreateButton();
$grid->disableRowSelector();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id')->width(3);
$filter->equal('status','状态')->select(WithdrawalTraits::$stateTextSelect)->width(2);
});
})
);
}
protected function build()
{
Form::dialog('支付宝提现')
->click('.alipay-create-form') // 绑定点击按钮
->url('/withdrawak_alipay/create') // 表单页面链接,此参数会被按钮中的 “data-url” 属性替换。。
->width('700px') // 指定弹窗宽度,可填写百分比,默认 720px
->height('650px') // 指定弹窗高度,可填写百分比,默认 690px
->success('Dcat.reload()'); // 新增成功后刷新页面
Form::dialog('银行卡提现')
->click('.bank-create-form') // 绑定点击按钮
->url('/withdrawak_bank/create') // 表单页面链接,此参数会被按钮中的 “data-url” 属性替换。。
->width('700px') // 指定弹窗宽度,可填写百分比,默认 720px
->height('650px') // 指定弹窗高度,可填写百分比,默认 690px
->success('Dcat.reload()'); // 新增成功后刷新页面
return "
<div style='padding:30px 0'>
<span class='btn btn-success alipay-create-form'> 支付宝提现 </span> &nbsp;&nbsp;
<span class='btn btn-success bank-create-form'> 银行卡提现 </span> &nbsp;&nbsp;
</div>";
}
}

64
app/AdminAgent/Controllers/WithdrawalAlipayController.php

@ -0,0 +1,64 @@
<?php
namespace App\AdminAgent\Controllers;
use App\AdminAgent\Repositories\WithdrawalAlipay;
use App\Models\Agent;
use App\Models\Withdrawal;
use App\Traits\DemandTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class WithdrawalAlipayController extends AdminController
{
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new WithdrawalAlipay(), function (Form $form) {
$form->display('id');
$form->decimal('price','提现金额')->required();
$form->text('account')->required();
$form->text('name')->required();
$form->image('qrcode')->required();
$form->hidden('withdrawal_id');
$form->saving(function (Form $form) {
$user = Agent::query()->where('id', Admin::user()->id)->lockForUpdate()->first();
if ($form->price > $user->balance) {
return $form->response()->error('余额不足,当前可用余额为'.$user->balance);
}
$user->balance = bcsub($user->balance,$form->price,6);
$user->save();
$withdrawal = new Withdrawal();
$withdrawal->user_id = Admin::user()->id;
$withdrawal->user_type = DemandTraits::$col[0];
$withdrawal->price = request('price',0);
//$withdrawal->pay_id = $form->getKey();
$withdrawal->pay_type = WithdrawalTraits::$userType[0];
$withdrawal->save();
$form->withdrawal_id = $withdrawal->id;
$form->deleteInput('price');
});
$form->saved(function (Form $form) {
$withdrawal = Withdrawal::find($form->withdrawal_id);
$withdrawal->pay_id = $form->getKey();
$withdrawal->save();
});
});
}
}

64
app/AdminAgent/Controllers/WithdrawalBankController.php

@ -0,0 +1,64 @@
<?php
namespace App\AdminAgent\Controllers;
use App\AdminAgent\Repositories\WithdrawalBank;
use App\Models\Agent;
use App\Models\Withdrawal;
use App\Traits\DemandTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Database\Eloquent\Model;
class WithdrawalBankController extends AdminController
{
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new WithdrawalBank(), function (Form $form) {
$form->display('id');
$form->decimal('price','提现金额')->required();
$form->text('name')->required();
$form->text('card_number')->required();
$form->text('account_name')->required();
$form->text('branch')->required();
$form->hidden('withdrawal_id');
$form->saving(function (Form $form) {
$user = Agent::query()->where('id', Admin::user()->id)->lockForUpdate()->first();
if ($form->price > $user->balance) {
return $form->response()->error('余额不足,当前可用余额为'.$user->balance);
}
$user->balance = bcsub($user->balance,$form->price,6);
$user->save();
$withdrawal = new Withdrawal();
$withdrawal->user_id = Admin::user()->id;
$withdrawal->user_type = DemandTraits::$col[0];
$withdrawal->price = request('price',0);
//$withdrawal->pay_id = $form->getKey();
$withdrawal->pay_type = WithdrawalTraits::$userType[1];
$withdrawal->save();
$form->withdrawal_id = $withdrawal->id;
$form->deleteInput('price');
});
$form->saved(function (Form $form) {
$withdrawal = Withdrawal::find($form->withdrawal_id);
$withdrawal->pay_id = $form->getKey();
$withdrawal->save();
});
});
}
}

2
app/Admin/Repositories/Withdrawal.php → app/AdminAgent/Repositories/Withdrawal.php

@ -1,6 +1,6 @@
<?php
namespace App\Admin\Repositories;
namespace App\AdminAgent\Repositories;
use App\Models\Withdrawal as Model;
use Dcat\Admin\Repositories\EloquentRepository;

16
app/AdminAgent/Repositories/WithdrawalAlipay.php

@ -0,0 +1,16 @@
<?php
namespace App\AdminAgent\Repositories;
use App\Models\WithdrawalAlipay as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class WithdrawalAlipay extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}

16
app/AdminAgent/Repositories/WithdrawalBank.php

@ -0,0 +1,16 @@
<?php
namespace App\AdminAgent\Repositories;
use App\Models\WithdrawalBank as Model;
use Dcat\Admin\Repositories\EloquentRepository;
class WithdrawalBank extends EloquentRepository
{
/**
* Model.
*
* @var string
*/
protected $eloquentClass = Model::class;
}

4
app/AdminAgent/routes.php

@ -44,6 +44,10 @@ Route::group([
$router->resource('workorder', 'WorkorderController');
$router->resource('wallet', 'WalletController');
$router->resource('withdrawak_alipay', 'WithdrawalAlipayController');
$router->resource('withdrawak_bank', 'WithdrawalBankController');
//api
$router->any('send_text', 'WorkorderController@sendText');
$router->any('send_image', 'WorkorderController@sendImage');

6
app/Models/Withdrawal.php

@ -12,5 +12,9 @@ class Withdrawal extends Model
use SoftDeletes;
protected $table = 'withdrawal';
public function pay()
{
return $this->morphTo();
}
}

4
app/Models/WithdrawalAlipay.php

@ -13,4 +13,8 @@ class WithdrawalAlipay extends Model
use SoftDeletes;
protected $table = 'withdrawal_alipay';
public function withdrawal()
{
return $this->morphOne('App\Models\Withdrawal', 'pay');
}
}

6
app/Models/WithdrawalBank.php

@ -12,5 +12,9 @@ class WithdrawalBank extends Model
use SoftDeletes;
protected $table = 'withdrawal_bank';
public function withdrawal()
{
return $this->morphOne('App\Models\Withdrawal', 'pay');
}
}

38
app/Traits/WithdrawalTraits.php

@ -0,0 +1,38 @@
<?php
namespace App\Traits;
trait WithdrawalTraits
{
public static $userType = [
'App\Models\WithdrawalAlipay',
'App\Models\WithdrawalBank',
];
public static $userTypeText = [
'App\Models\WithdrawalAlipay' => '支付宝',
'App\Models\WithdrawalBank' => '银行卡',
];
//状态 1·待审核 2 已拒绝 3 已通过 4 已打款
public static $state= [
1,
2,
3,
4,
];
public static $stateText = [
1 => '待审核',
2 => '已拒绝',
3 => '已通过',
4 => '已打款',
];
public static $stateTextSelect = [
1 => '待审核',
3 => '已通过',
4 => '已打款',
];
}

2
database/migrations/2021_09_11_165223_create_withdrawal_bank_table.php

@ -15,7 +15,7 @@ class CreateWithdrawalBankTable extends Migration
{
Schema::create('withdrawal_bank', function (Blueprint $table) {
$table->increments('id');
$table->integer('withdrawal_id')->index()->comment('提现主表');
$table->integer('withdrawal_id')->index()->default(0)->comment('提现主表');
$table->string('name')->default('')->comment('银行名称');
$table->string('branch')->default('')->comment('支行');
$table->bigInteger('card_number')->default(0)->comment('卡号');

32
dcat_admin_ide_helper.php

@ -11,6 +11,7 @@ namespace Dcat\Admin {
use Illuminate\Support\Collection;
/**
* @property Grid\Column|Collection disable
* @property Grid\Column|Collection created_at
* @property Grid\Column|Collection detail
* @property Grid\Column|Collection id
@ -147,12 +148,20 @@ namespace Dcat\Admin {
* @property Grid\Column|Collection openid
* @property Grid\Column|Collection province
* @property Grid\Column|Collection unionid
* @property Grid\Column|Collection pay_id
* @property Grid\Column|Collection account
* @property Grid\Column|Collection qrcode
* @property Grid\Column|Collection withdrawal_id
* @property Grid\Column|Collection account_name
* @property Grid\Column|Collection branch
* @property Grid\Column|Collection card_number
* @property Grid\Column|Collection close_time
* @property Grid\Column|Collection point_id
* @property Grid\Column|Collection point_type
* @property Grid\Column|Collection is_read
* @property Grid\Column|Collection workorder_id
*
* @method Grid\Column|Collection disable(string $label = null)
* @method Grid\Column|Collection created_at(string $label = null)
* @method Grid\Column|Collection detail(string $label = null)
* @method Grid\Column|Collection id(string $label = null)
@ -289,6 +298,13 @@ namespace Dcat\Admin {
* @method Grid\Column|Collection openid(string $label = null)
* @method Grid\Column|Collection province(string $label = null)
* @method Grid\Column|Collection unionid(string $label = null)
* @method Grid\Column|Collection pay_id(string $label = null)
* @method Grid\Column|Collection account(string $label = null)
* @method Grid\Column|Collection qrcode(string $label = null)
* @method Grid\Column|Collection withdrawal_id(string $label = null)
* @method Grid\Column|Collection account_name(string $label = null)
* @method Grid\Column|Collection branch(string $label = null)
* @method Grid\Column|Collection card_number(string $label = null)
* @method Grid\Column|Collection close_time(string $label = null)
* @method Grid\Column|Collection point_id(string $label = null)
* @method Grid\Column|Collection point_type(string $label = null)
@ -300,6 +316,7 @@ namespace Dcat\Admin {
class MiniGrid extends Grid {}
/**
* @property Show\Field|Collection disable
* @property Show\Field|Collection created_at
* @property Show\Field|Collection detail
* @property Show\Field|Collection id
@ -436,12 +453,20 @@ namespace Dcat\Admin {
* @property Show\Field|Collection openid
* @property Show\Field|Collection province
* @property Show\Field|Collection unionid
* @property Show\Field|Collection pay_id
* @property Show\Field|Collection account
* @property Show\Field|Collection qrcode
* @property Show\Field|Collection withdrawal_id
* @property Show\Field|Collection account_name
* @property Show\Field|Collection branch
* @property Show\Field|Collection card_number
* @property Show\Field|Collection close_time
* @property Show\Field|Collection point_id
* @property Show\Field|Collection point_type
* @property Show\Field|Collection is_read
* @property Show\Field|Collection workorder_id
*
* @method Show\Field|Collection disable(string $label = null)
* @method Show\Field|Collection created_at(string $label = null)
* @method Show\Field|Collection detail(string $label = null)
* @method Show\Field|Collection id(string $label = null)
@ -578,6 +603,13 @@ namespace Dcat\Admin {
* @method Show\Field|Collection openid(string $label = null)
* @method Show\Field|Collection province(string $label = null)
* @method Show\Field|Collection unionid(string $label = null)
* @method Show\Field|Collection pay_id(string $label = null)
* @method Show\Field|Collection account(string $label = null)
* @method Show\Field|Collection qrcode(string $label = null)
* @method Show\Field|Collection withdrawal_id(string $label = null)
* @method Show\Field|Collection account_name(string $label = null)
* @method Show\Field|Collection branch(string $label = null)
* @method Show\Field|Collection card_number(string $label = null)
* @method Show\Field|Collection close_time(string $label = null)
* @method Show\Field|Collection point_id(string $label = null)
* @method Show\Field|Collection point_type(string $label = null)

16
resources/lang/zh_CN/withdrawal-bank.php

@ -0,0 +1,16 @@
<?php
return [
'labels' => [
'WithdrawalBank' => 'WithdrawalBank',
'withdrawal-bank' => 'WithdrawalBank',
],
'fields' => [
'account_name' => '开户人',
'branch' => '开户支行',
'card_number' => '卡号',
'name' => '银行名称',
'withdrawal_id' => '提现主表',
],
'options' => [
],
];
Loading…
Cancel
Save