| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- /**
- * Created by PhpStorm.
- * User: ring
- * Date: 2019/7/23
- * Time: 上午11:46
- */
- namespace App\Admin\Controllers;
- use Omnipay\Omnipay;
- use App\Api\Util\IM;
- use App\Models\UserCashout;
- use App\Models\UserWallet;
- use Encore\Admin\Controllers\AdminController;
- use Encore\Admin\Form;
- use Encore\Admin\Grid;
- use App\Models\AppSettings;
- use Illuminate\Support\Facades\Cache;
- use \App\Admin\Util\AopTransferToAccountPageGateway;
- class CashoutController extends AdminController
- {
- use IM;
- protected $title = '提现管理';
- protected function grid()
- {
- $grid = new Grid(new UserCashout());
- $grid->id('ID')->sortable();
- $grid->column('user.lid','提现人ID');
- $grid->column('user.tel','提现人电话');
- $grid->column('money', '提现金额');
- $grid->column('card', '收款微信号');
- $grid->column('description', '描述');
- $grid->column('status', '状态?')->display(function ($ios) {
- $msg='申请';
- if($ios==1){
- $msg='完成';
- }
- if($ios==2){
- $msg='拒绝';
- }
- if($ios==3){
- $msg='异常';
- }
- return $msg;
- })->sortable();
- $grid->column('answers', '原因');
- $grid->filter(function ($filter) {
- $filter->disableIdFilter();
- $filter->equal('user.lid','客户ID')->placeholder('客户ID');
- $filter->equal('user.tel','提现人电话')->placeholder('请输入提现人电话');
- $filter->equal('status','状态')->select([1=> '完成',2=>'拒绝',0=>'申请',3=>'异常']);
- });
- $grid->created_at('申请时间')->sortable();
- $grid->updated_at('变动时间');
- $grid->disableExport();
- $grid->disableCreateButton();
- $grid->disableRowSelector();
- $grid->disableColumnSelector();
- $grid->actions(function ($actions) {
- $actions->disableDelete();
- if($actions->row->status&&$actions->row->status!=3){
- $actions->disableEdit();
- }
- $actions->disableView();
- });
- $grid->model()->orderBy('id', 'desc');
- return $grid;
- }
- protected function form()
- {
- $form = new Form(new UserCashout);
- $form->display('user.name', '提现人名称');
- $form->display('user.lid', '提现人ID');
- $form->display('user.tel', '提现人电话');
- $form->display('card', '提现人收款支付宝号');
- $form->display('money', '提现金额');
- $form->display('description', '描述');
- $form->select('status', '状态')->options([1 => '完成', 2 => '拒绝'])->rules('min:1');
- $form->textarea('answers', '拒绝原因');
- $form->footer(function ($footer) {
- $footer->disableReset();
- $footer->disableViewCheck();
- $footer->disableEditingCheck();
- $footer->disableCreatingCheck();
- });
- $form->hidden('uid');
- $form->tools(function (Form\Tools $tools) {
- $tools->disableView();
- $tools->disableDelete();
- });
- $form->saved(function (Form $form) {
- if($form->status==2){
- UserWallet::where('uid',$form->model()->uid)->where('status',5)->update(['status'=>0]);
- $this->imsendmassage('admin',$form->model()->uid,'您的提现申请被拒绝['.$form->answers.']');
- }
- if($form->status==1){
- $sn=time();
- $pay=$this->transferToAccount($form->model()->card,$form->model()->money,time());
- if($pay['status']){
- UserWallet::where('uid',$form->model()->uid)->where('status',5)->update(['status'=>1]);
- UserCashout::where('id',$form->model()->id)->update(['answers'=>'支付单号:'.$sn]);
- $this->imsendmassage('admin',$form->model()->uid,'您的提现申请已通过,请到对应账号查询!支付单号:'.$sn);
- }else{
- UserWallet::where('uid',$form->model()->uid)->where('status',5)->update(['status'=>6]);
- UserCashout::where('id',$form->model()->id)->update(['status'=>3,'answers'=>'支付单号:'.$sn.' 异常原因:'.$pay['msg']]);
- $this->imsendmassage('admin',$form->model()->uid,'您的提现申请异常原因:'.$pay['msg']);
- }
- }
- });
- $form->saving(function ($form) {
-
- if(!$form->status){
- $error = new MessageBag([
- 'title' => '提交时的状态只能选择完成/拒绝!!....',
- 'message' => '提交时的状态只能选择完成/拒绝!!....',
- ]);
- return back()->with(compact('error'));
- }
- });
- return $form;
- }
- private function transferToAccount($account,$amount,$sn){
- $seting= $this->geSeting('alipay.com');
- $gateway = Omnipay::create('\App\Admin\Util\AopTransferToAccountPageGateway');
- $gateway->setSignType('RSA2');
- $gateway->setAppId($seting->access_key);
- $gateway->setPrivateKey($seting->secret_key);
- $gateway->setAlipayPublicKey($seting->other);
- $request = $gateway->purchase();
- $request->setBizContent([
- 'out_biz_no' => $sn,
- 'payee_type' => 'ALIPAY_LOGONID',
- 'payee_account' =>$account,
- 'amount' =>$amount,
- ]);
- $response = $request->send();
- if($response->getCode()==10000){
- info($response->getCode().' msg'.$response->getSubMessage());
- return ['status'=>true,'msg'=>''];
- }else{
- return ['status'=>false,'msg'=>$response->getSubMessage()];
- }
- }
- /**
- * 第三方参数
- * @param $key
- * @param $sole
- * @return mixed
- */
- protected function geSeting($key){
- $seting = Cache::rememberForever($key, function() use ($key){
- return AppSettings::where('sole',$key)->where('enabled',1)->first();
- });
- return $seting;
- }
- }
|