id(); $score = Score::where('user_id', $userId)->first(); if(empty($score)){ return $this->failure("没有福分记录"); } $cashScore = $score->cash_score ?: 0; $allScore = $score->remain_amount ?: 0; $scoreInfo = ScoreHistory::where('user_id', $userId)->orderBy('created_at', 'desc')->paginate(); return $this->success(compact('cashScore', 'allScore', 'scoreInfo')); } /** * @param Request $request * @return \Illuminate\Http\JsonResponse|string * 提现 */ public function scoreCashout(Request $request){ $user = auth()->user(); $userId = $user->id; // if(!$request->has('amount')){ // $this->failure("请输入提现金额"); // } $score = Score::where('user_id', $userId)->first(); if(empty($score)){ return $this->failure('没有可提现的福分'); } $amount =$request->amount ?: $score->cash_amount; $trade_no =\CommonUtilsService::getTradeNO(); // if($request->admount > $cashScore){ // $this->failure('提现金额大于可提现金额'); // } if($amount < 1){ $this->failure("可提现福分过少"); } $desc = "福分提现"; $result = WechatService::userTransfer($trade_no, $user->wechat->openid, $amount*100, $desc); if(!$result){ return $this->failure('提现失败,请稍后重试'); } // DB::beginTransaction(); // try{ CashoutLog::create([ 'user_id' => $userId, 'trade_no' =>$this->getTradeNO(), 'amount' =>$amount, 'status' =>2, ]); ScoreHistory::create([ 'user_id' => $userId, 'type' => 'used', 'amount' => $amount, 'value' => $score->cash_amount - $amount, 'message' => '福分提现', 'status' => 1, ]); $score->cash_amount = 0; $score->remain_amount = $score->remain_amount + $amount; $score->used_amount = $score->used_amount + $amount; $score->save(); $array['message'] = "福分提现"; $array['user_id'] = $userId; $array['other_user_id'] = ''; $array['type'] = 'used'; $array['score'] = $amount ; $array['status'] = 1; SyncScore::dispatch($array)->onQueue('love'); return $this->success('ok'); // DB::commit(); // }catch (\Exception $e) { // DB::rollBack(); // } } /** * @param Request $request * @return \Illuminate\Http\JsonResponse|string * 提现记录 */ public function cashoutList(Request $request){ $userId = auth()->id(); $log = CashoutLog::orderBy('created_at', 'desc')->where('user_id', $userId)->paginate(); return $this->success('ok', $log); } public function getTradeNO() { $dateline = time(); $mix_1 = rand(100, 999); $mix_2 = rand(100, 999); return $dateline . $mix_1 . $mix_2; } }