Browse Source

总后台审核

develop
lemon 4 years ago
parent
commit
6e2f156145
  1. 63
      app/Admin/Controllers/WithdrawalController.php
  2. 113
      app/Admin/Extensions/Grid/Withdrawal.php
  3. 16
      app/Admin/Repositories/Withdrawal.php
  4. 2
      app/Admin/routes.php
  5. 5
      app/Models/Agent.php
  6. 5
      app/Models/Guide.php
  7. 5
      app/Models/Supplier.php
  8. 5
      app/Models/Withdrawal.php

63
app/Admin/Controllers/WithdrawalController.php

@ -0,0 +1,63 @@
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\Withdrawal;
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;
class WithdrawalController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new Withdrawal(['user','pay']), function (Grid $grid) {
$grid->disableActions();
//$grid->disable();
$grid->column('id')->sortable();
$grid->column('price','提现金额');
$grid->column('user.name','用户名称');
$grid->column('pay_type','提现方式')->using(WithdrawalTraits::$userTypeText);
$grid->column('status','状态')
->if(fn() => $this->status == WithdrawalTraits::$state[0])
->display('')
->then(function ($column) {
$column->append((new \App\Admin\Extensions\Grid\Withdrawal(null, 1))->setKey($this->id))->append('&nbsp;');
$column->append((new \App\Admin\Extensions\Grid\Withdrawal(null, 2))->setKey($this->id));
})
->if(fn() => $this->status == WithdrawalTraits::$state[2])
->display('')
->then(function ($column) {
$column->append((new \App\Admin\Extensions\Grid\Withdrawal(null, 3))->setKey($this->id))->append('&nbsp;');
})
->if(fn() => $this->status == WithdrawalTraits::$state[1] || $this->status == WithdrawalTraits::$state[3])
->then(function ($column) {
$column->using(WithdrawalTraits::$stateText)->dot([
1 => Admin::color()->yellow(),
2 => 'danger',
3 => Admin::color()->info(),
4 => 'success',
]);
});
$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);
});
});
}
}

113
app/Admin/Extensions/Grid/Withdrawal.php

@ -0,0 +1,113 @@
<?php
namespace App\Admin\Extensions\Grid;
use App\Common\ProductStatus;
use App\Models\Agent;
use App\Models\Guide;
use App\Models\Product;
use App\Models\Supplier;
use App\Traits\DemandTraits;
use App\Traits\WithdrawalTraits;
use Dcat\Admin\Admin;
use Dcat\Admin\Grid\RowAction;
use Illuminate\Http\Request;
/**
* 供应商审核
* Class AuditProduct
* @package App\Admin\Extensions\Grid
*/
class Withdrawal extends RowAction
{
private $action;
public function __construct($title = null, $action = 1)
{
parent::__construct($title);
$this->action = $action; //$action:1=通过;2=拒绝
switch ($action) {
case 1:
$this->title = '通过';
break;
case 2:
$this->title = '拒绝';
break;
case 3:
$this->title = '确认打款';
break;
default:
$this->title = '通过';
}
}
protected function html()
{
switch ($this->action) {
case 1:
$class = 'btn btn-sm btn-success';
break;
case 2:
$class = 'btn btn-sm btn-danger';
break;
case 3:
$class = 'btn btn-sm btn-info';
break;
default:
$class = 'btn btn-sm btn-success';
}
$this->appendHtmlAttribute('class', $class);
$this->defaultHtmlAttribute('href', 'javascript:;');
return "<a {$this->formatHtmlAttributes()}>{$this->title}</a>";
}
public function handle(Request $request)
{
try {
if ($request->action == 1) {
//同意打款
$withdrawal = \App\Models\Withdrawal::find($this->getKey());
$withdrawal->status = WithdrawalTraits::$state[2];
} elseif ($request->action == 2) {
//拒绝打款
$withdrawal = \App\Models\Withdrawal::find($this->getKey());
$withdrawal->status = WithdrawalTraits::$state[1];
//退回余额
if ($withdrawal->user_type == DemandTraits::$col[0]) {
$user = Agent::query();
} elseif($withdrawal->user_type == DemandTraits::$col[1]) {
$user = Supplier::query();
} elseif($withdrawal->user_type == DemandTraits::$col[2]) {
$user = Guide::query();
}
$user = $user->where('id', $withdrawal->user_id)->lockForUpdate()->first();
$user->balance = bcadd($user->balance,$withdrawal->price,6);
$user->save();
} elseif ($request->action == 3) {
//确认打款
$withdrawal = \App\Models\Withdrawal::find($this->getKey());
$withdrawal->status = WithdrawalTraits::$state[3];
}
$withdrawal->save();
return $this->response()->success("操作成功")->refresh();
} catch (\Exception $e) {
return $this->response()->error($e->getMessage());
}
}
public function confirm()
{
return ['确定要'.$this->title.'本次提现吗?', ''];
}
public function parameters()
{
return ['action' => $this->action];
}
}

16
app/Admin/Repositories/Withdrawal.php

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

2
app/Admin/routes.php

@ -42,4 +42,6 @@ Route::group([
$router->resource('mini_program/draft', 'MiniProgramDraftController');
$router->resource('mini_program/template', 'MiniProgramTemplateController');
$router->resource('mini_program/list', 'MiniProgramListController');
$router->resource('withdrawal', 'WithdrawalController');
});

5
app/Models/Agent.php

@ -59,4 +59,9 @@ class Agent extends BaseModel
{
return $this->morphMany('App\Models\Statement', 'user');
}
public function withdrawal()
{
return $this->morphOne('App\Models\Withdrawal', 'user');
}
}

5
app/Models/Guide.php

@ -48,4 +48,9 @@ class Guide extends BaseModel
return $this->morphMany('App\Models\Statement', 'user');
}
public function withdrawal()
{
return $this->morphOne('App\Models\Withdrawal', 'user');
}
}

5
app/Models/Supplier.php

@ -59,4 +59,9 @@ class Supplier extends BaseModel
{
return $this->morphMany('App\Models\Statement', 'user');
}
public function withdrawal()
{
return $this->morphOne('App\Models\Withdrawal', 'user');
}
}

5
app/Models/Withdrawal.php

@ -17,4 +17,9 @@ class Withdrawal extends Model
{
return $this->morphTo();
}
public function user()
{
return $this->morphTo();
}
}
Loading…
Cancel
Save