middleware('auth.api'); // $this->user = \Auth::guard('api')->user(); // $this->uid = \Auth::guard('api')->id(); $this->user = User::find(824); $this->uid = 824; } public function index() { if ($this->user->identity->identity_id == 0) { return $this->failed('请开通VIP后继续操作'); } $withdraw_explain = \Params::get('withdraw_explain'); $withdraw_explain = str_replace("\n", "
", $withdraw_explain); $withdraw_explain = str_replace("\r", "
", $withdraw_explain); $logs = Withdraw::where('user_id', $this->uid)->orderBy('id', 'desc')->get(); $withdraw_total = sprintf("%.2f", abs($this->user->account->logs()->whereIn('rule_id', [10, 11])->sum('variable'))); return [ 'data' => [ 'withdraw_total' => $withdraw_total, 'withdraw_explain' => $withdraw_explain, 'logsLists' => WithdrawLogsResource::collection($logs), ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } public function create() { if ($this->user->identity->identity_id == 0) { return $this->failed('请开通VIP后继续操作'); } $week_num = 1; $week_start = Carbon::now()->startOfWeek()->toDateTimeString(); $week_end = Carbon::now()->endOfWeek()->toDateTimeString(); $num = Withdraw::where('user_id', $this->uid)->whereBetween('created_at', [$week_start, $week_end])->where('state', '<>', 2)->count(); if ($num > 0) { $week_num = 0; } $banks = Bank::orderBy('sort', 'asc')->get(); $withdraw_explain = \Params::get('withdraw_explain'); $withdraw_explain = str_replace("\n", "
", $withdraw_explain); $withdraw_explain = str_replace("\r", "
", $withdraw_explain); return [ 'data' => [ 'week_num' => $week_num, 'banks' => $banks, 'withdraw_explain' => $withdraw_explain, ], 'status' => 'SUCCESS', 'status_code' => 200, ]; } public function store(Request $request) { if ($this->user->identity->identity_id == 0) { return $this->failed('请开通VIP后继续操作'); } $week_start = Carbon::now()->startOfWeek()->toDateTimeString(); $week_end = Carbon::now()->endOfWeek()->toDateTimeString(); $num = Withdraw::where('user_id', $this->uid)->whereBetween('created_at', [$week_start, $week_end])->where('state', '<>', 2)->count(); if ($num > 0) { return $this->failed('您本周已提现过,下周再来吧~'); } if ($this->user->paypass) { if ($this->user->paypass !== md5($request->paypass)) { return $this->failed('支付密码验证失败'); } } else { return $this->failed('请您先设置支付密码', route('settings.pwd')); } if (empty($request->way)) { return $this->failed('请选择提现方式'); } elseif ($request->way == 'WenxinNo') { if (empty($request->wechat)) { return $this->failed('请输入微信号,工作人员会在1-2个工作日内为您转款'); } } elseif ($request->way == 'Alipay') { if (empty($request->alipay)) { return $this->failed('请输入支付宝账号,工作人员会在1-2个工作日内为您转款'); } } elseif ($request->way == 'Wechat') { if ($request->money > 200) { return $this->failed('单次提现金额最大200元'); } } elseif ($request->way == 'Bankcard') { $validator = Validator::make($request->all(), [ 'mobile' => 'required|mobile|unique:users', 'code' => 'required|sms_check:mobile,BIND', ], [ 'mobile.required' => '手机号码必须填写', 'mobile.mobile' => '手机号码格式不正确', 'mobile.unique' => '手机号码已经绑定', 'code.required' => '验证码必须填写', 'code.sms_check' => '验证码不正确', ]); if ($validator->fails()) { return $this->failed($validator->errors()->first()); } if (!preg_match("/^([\x{4e00}-\x{9fa5}]+)$/u", $request->payee)) { return $this->failed('请输入确认的收款人姓名'); } } if ($request->money < 100) { return $this->failed('提现金额必须大于等于100元'); } if ($request->money > $this->user->account->cash) { return $this->failed('账户余额不足'); } if (empty($request->openid)) { return $this->failed('未获取到微信信息'); } try { DB::transaction(function () use ($request) { $tax = round($request->money * 0.05, 3); $take = $request->money - $tax; Withdraw::create([ 'user_id' => $this->uid, 'amount' => $request->money, 'tax' => $tax, //手续费 'take' => $take, //实到金额 'balance' => $this->user->account->cash - $request->money, 'openid' => $request->openid, 'way' => $request->way, 'wechat' => $request->has('wechat') ? $request->wechat : '', 'alipay' => $request->has('alipay') ? $request->alipay : '', 'bank_no' => $request->has('bank_no') ? $request->bank_no : '', 'bank_name' => $request->has('bank_name') ? $request->bank_name : '', 'payee' => $request->has('payee') ? $request->payee : '', 'state' => 0, ]); if ($request->way == 'Bankcard') { $userinfo = $this->user->info; $userinfo->bank_no = $request->bank_no; $userinfo->bank_name = $request->bank_name; $userinfo->payee = $request->payee; $userinfo->save(); } $this->user->rule('withdraw', -$request->money); }); } catch (\Exception $e) { return $this->failed($e->getmessage()); } return $this->success('申请提现成功,等待管理员审核'); } }