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; } }