126 lines
3.6 KiB
PHP
126 lines
3.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Score;
|
|
|
|
use App\Models\ScoreHistory;
|
|
use Illuminate\Http\Request;
|
|
use App\Services\WechatService;
|
|
use App\Models\Score\CashoutLog;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Models\ReferreAwardHistory;
|
|
use App\Utils\Messenger;
|
|
use App\Jobs\SyncScore;
|
|
|
|
class ScoreController extends Controller
|
|
{
|
|
/**
|
|
* @param Request $request
|
|
* @return \Illuminate\Http\JsonResponse|string
|
|
* 福分提现主页接口
|
|
*/
|
|
public function scoreDetail(Request $request){
|
|
|
|
$userId = auth()->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;
|
|
}
|
|
}
|
|
|