8 changed files with 214 additions and 0 deletions
			
			
		- 
					63app/Admin/Controllers/WithdrawalController.php
 - 
					113app/Admin/Extensions/Grid/Withdrawal.php
 - 
					16app/Admin/Repositories/Withdrawal.php
 - 
					2app/Admin/routes.php
 - 
					5app/Models/Agent.php
 - 
					5app/Models/Guide.php
 - 
					5app/Models/Supplier.php
 - 
					5app/Models/Withdrawal.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(' '); | 
				
			|||
					$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(' '); | 
				
			|||
				}) | 
				
			|||
				->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); | 
				
			|||
			}); | 
				
			|||
        }); | 
				
			|||
    } | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -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]; | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
@ -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; | 
				
			|||
} | 
				
			|||
						Write
						Preview
					
					
					Loading…
					
					Cancel
						Save
					
		Reference in new issue