UserWithdrawController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Http\Controllers\Api;
  3. use App\Modes\Proxy;
  4. use App\Modes\Config;
  5. use App\Modes\User;
  6. use App\Modes\UserBank;
  7. use App\Modes\UserMsg;
  8. use App\Modes\UserWithdraw;
  9. use Illuminate\Http\Request;
  10. use App\Http\Controllers\Controller;
  11. use App\Modes\AccountLog;
  12. class UserWithdrawController extends Controller
  13. {
  14. /*
  15. * 提现记录
  16. * wsl
  17. *
  18. * */
  19. public function outCashLog(Request $request){
  20. $list = AccountLog::whereUid(\Auth::id())
  21. ->whereType(1)
  22. ->whereStatus(1)
  23. ->where('money_type','=',2)
  24. ->select(['id', 'uid', 'money', 'created_at', 'type','remark','current_money'])
  25. ->orderBy('created_at','desc')
  26. ->paginate(perPage());
  27. return showJsonSucc('数据获取成功',$list);
  28. }
  29. /**
  30. * 提现
  31. * @author lyh
  32. * @date 2019/4/2
  33. * @description
  34. */
  35. public function add(Request $request)
  36. {
  37. $validator = \Validator::make($param = $request->all(), [
  38. 'user_bank_id' => 'required|integer|exists:user_bank,id',
  39. 'money' => 'required|numeric',
  40. 'pay_password' => [
  41. 'required',
  42. 'string',
  43. 'between:6,18'
  44. ]
  45. ]);
  46. if ($validator->fails()) {
  47. return showJsonErr($validator->errors()->first());
  48. }
  49. $pay_password=md5(md5($param['pay_password']));
  50. if(empty(\Auth::user()->pay_password)){
  51. return showJsonErr('您还未设置支付密码');
  52. }
  53. if ($pay_password!=\Auth::user()->pay_password) {
  54. return showJsonErr('支付密码错误');
  55. }
  56. // 生成提现记录
  57. $userBank = UserBank::find($param['user_bank_id']);
  58. $minWithdraw =Config::where('key','=','WITHDRAWMIN')->first()->toArray();
  59. $jsday =Config::where('key','=','JSDAY')->first()->toArray();
  60. if ($minWithdraw['content'] > $param['money']) {
  61. return showJsonErr('抱歉,未达到最低提现标准');
  62. }
  63. $curday=intval(date('d'));
  64. if($curday<$jsday['content']){
  65. return showJsonErr('抱歉,未到结算日'.$jsday['content'].'号不能提现');
  66. }
  67. // 判断余额是否够提现
  68. if ($param['money'] > \Auth::user()->balance) {
  69. return showJsonErr('抱歉,余额不足');
  70. }
  71. //提现的时候应该先扣除余额 edit by wsl
  72. \DB::beginTransaction();
  73. try {
  74. $id = UserWithdraw::insertGetId([
  75. 'uid' => \Auth::id(),
  76. 'money' => $param['money'],
  77. 'phone' => $userBank->phone,
  78. 'bank_name' => $userBank->bank_name,
  79. 'bank_number' => $userBank->bank_number,
  80. 'service_charge' => 0,
  81. 'status' => 0,
  82. 'remark' => '',
  83. ]);
  84. UserMsg::insert(['title'=>'提现审核通知','uid'=>\Auth::id(),'type'=>8,'content'=>'您于'.date('Y-m-d H:i:s')."发起了提现申请,提现正在审核中"]);
  85. User::whereId(\Auth::id())->update(['balance' => \Auth::user()->balance-$param['money']]);
  86. AccountLog::saveDataByPost(\Auth::id(),1,-$param['money'],\Auth::user()->balance,2,1,'申请提现'.$param['money'].'元');
  87. \DB::commit();
  88. } catch (Exception $exception) {
  89. \DB::rollBack();
  90. }
  91. if (empty($id)) {
  92. return showJsonSucc('提现提交失败');
  93. }
  94. return showJsonSucc('提现提交成功,请等待审核');
  95. }
  96. }