6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/VipController.php

53 lines
1.4 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers;
use App\Endpoint\Api\Http\Resources\{VipResource, UserVipResource};
use App\Models\{Vip, UserVip};
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Exceptions\BizException;
use App\Services\VipService;
class VipController extends Controller
{
public function index(Request $request)
{
$list = Vip::where('status', 1)->get();
return VipResource::collection($list);
}
public function buy(Request $request)
{
$request->validate([
'vip_id' => 'required'
]);
$vip = Vip::findOrFail($request->input('vip_id'));
$service = new VipService();
try {
DB::beginTransaction();
$user_vip = $service->buy($request->user(), $vip);
$result = $service->pay($user_vip, $request->input('pay_way'));
DB::commit();
return $result;
} catch (\Exception $e) {
DB::rollBack();
report($e);
throw new BizException($e->getMessage());
}
}
public function list(Request $request)
{
$user = $request->user();
$query = $user->vips()->where('status', UserVip::STATUS_SUCCESS);
$list = $query->paginate($request->input('per_page'));
return UserVipResource::collection($list);
}
}