CashoutController.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ring
  5. * Date: 2019/7/23
  6. * Time: 上午11:46
  7. */
  8. namespace App\Admin\Controllers;
  9. use Omnipay\Omnipay;
  10. use App\Api\Util\IM;
  11. use App\Models\UserCashout;
  12. use App\Models\UserWallet;
  13. use Encore\Admin\Controllers\AdminController;
  14. use Encore\Admin\Form;
  15. use Encore\Admin\Grid;
  16. use App\Models\AppSettings;
  17. use Illuminate\Support\Facades\Cache;
  18. use \App\Admin\Util\AopTransferToAccountPageGateway;
  19. class CashoutController extends AdminController
  20. {
  21. use IM;
  22. protected $title = '提现管理';
  23. protected function grid()
  24. {
  25. $grid = new Grid(new UserCashout());
  26. $grid->id('ID')->sortable();
  27. $grid->column('user.lid','提现人ID');
  28. $grid->column('user.tel','提现人电话');
  29. $grid->column('money', '提现金额');
  30. $grid->column('card', '收款微信号');
  31. $grid->column('description', '描述');
  32. $grid->column('status', '状态?')->display(function ($ios) {
  33. $msg='申请';
  34. if($ios==1){
  35. $msg='完成';
  36. }
  37. if($ios==2){
  38. $msg='拒绝';
  39. }
  40. if($ios==3){
  41. $msg='异常';
  42. }
  43. return $msg;
  44. })->sortable();
  45. $grid->column('answers', '原因');
  46. $grid->filter(function ($filter) {
  47. $filter->disableIdFilter();
  48. $filter->equal('user.lid','客户ID')->placeholder('客户ID');
  49. $filter->equal('user.tel','提现人电话')->placeholder('请输入提现人电话');
  50. $filter->equal('status','状态')->select([1=> '完成',2=>'拒绝',0=>'申请',3=>'异常']);
  51. });
  52. $grid->created_at('申请时间')->sortable();
  53. $grid->updated_at('变动时间');
  54. $grid->disableExport();
  55. $grid->disableCreateButton();
  56. $grid->disableRowSelector();
  57. $grid->disableColumnSelector();
  58. $grid->actions(function ($actions) {
  59. $actions->disableDelete();
  60. if($actions->row->status&&$actions->row->status!=3){
  61. $actions->disableEdit();
  62. }
  63. $actions->disableView();
  64. });
  65. $grid->model()->orderBy('id', 'desc');
  66. return $grid;
  67. }
  68. protected function form()
  69. {
  70. $form = new Form(new UserCashout);
  71. $form->display('user.name', '提现人名称');
  72. $form->display('user.lid', '提现人ID');
  73. $form->display('user.tel', '提现人电话');
  74. $form->display('card', '提现人收款支付宝号');
  75. $form->display('money', '提现金额');
  76. $form->display('description', '描述');
  77. $form->select('status', '状态')->options([1 => '完成', 2 => '拒绝'])->rules('min:1');
  78. $form->textarea('answers', '拒绝原因');
  79. $form->footer(function ($footer) {
  80. $footer->disableReset();
  81. $footer->disableViewCheck();
  82. $footer->disableEditingCheck();
  83. $footer->disableCreatingCheck();
  84. });
  85. $form->hidden('uid');
  86. $form->tools(function (Form\Tools $tools) {
  87. $tools->disableView();
  88. $tools->disableDelete();
  89. });
  90. $form->saved(function (Form $form) {
  91. if($form->status==2){
  92. UserWallet::where('uid',$form->model()->uid)->where('status',5)->update(['status'=>0]);
  93. $this->imsendmassage('admin',$form->model()->uid,'您的提现申请被拒绝['.$form->answers.']');
  94. }
  95. if($form->status==1){
  96. $sn=time();
  97. $pay=$this->transferToAccount($form->model()->card,$form->model()->money,time());
  98. if($pay['status']){
  99. UserWallet::where('uid',$form->model()->uid)->where('status',5)->update(['status'=>1]);
  100. UserCashout::where('id',$form->model()->id)->update(['answers'=>'支付单号:'.$sn]);
  101. $this->imsendmassage('admin',$form->model()->uid,'您的提现申请已通过,请到对应账号查询!支付单号:'.$sn);
  102. }else{
  103. UserWallet::where('uid',$form->model()->uid)->where('status',5)->update(['status'=>6]);
  104. UserCashout::where('id',$form->model()->id)->update(['status'=>3,'answers'=>'支付单号:'.$sn.' 异常原因:'.$pay['msg']]);
  105. $this->imsendmassage('admin',$form->model()->uid,'您的提现申请异常原因:'.$pay['msg']);
  106. }
  107. }
  108. });
  109. $form->saving(function ($form) {
  110. if(!$form->status){
  111. $error = new MessageBag([
  112. 'title' => '提交时的状态只能选择完成/拒绝!!....',
  113. 'message' => '提交时的状态只能选择完成/拒绝!!....',
  114. ]);
  115. return back()->with(compact('error'));
  116. }
  117. });
  118. return $form;
  119. }
  120. private function transferToAccount($account,$amount,$sn){
  121. $seting= $this->geSeting('alipay.com');
  122. $gateway = Omnipay::create('\App\Admin\Util\AopTransferToAccountPageGateway');
  123. $gateway->setSignType('RSA2');
  124. $gateway->setAppId($seting->access_key);
  125. $gateway->setPrivateKey($seting->secret_key);
  126. $gateway->setAlipayPublicKey($seting->other);
  127. $request = $gateway->purchase();
  128. $request->setBizContent([
  129. 'out_biz_no' => $sn,
  130. 'payee_type' => 'ALIPAY_LOGONID',
  131. 'payee_account' =>$account,
  132. 'amount' =>$amount,
  133. ]);
  134. $response = $request->send();
  135. if($response->getCode()==10000){
  136. info($response->getCode().' msg'.$response->getSubMessage());
  137. return ['status'=>true,'msg'=>''];
  138. }else{
  139. return ['status'=>false,'msg'=>$response->getSubMessage()];
  140. }
  141. }
  142. /**
  143. * 第三方参数
  144. * @param $key
  145. * @param $sole
  146. * @return mixed
  147. */
  148. protected function geSeting($key){
  149. $seting = Cache::rememberForever($key, function() use ($key){
  150. return AppSettings::where('sole',$key)->where('enabled',1)->first();
  151. });
  152. return $seting;
  153. }
  154. }