love_php/app/Http/Controllers/ScoreController.php
2026-04-02 09:20:51 +08:00

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;
}
}