75 lines
1.9 KiB
PHP
75 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace Peidikeji\User\Http\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Peidikeji\User\Http\Resources\WithdrawResource;
|
|
use Peidikeji\User\WithdrawService;
|
|
|
|
class WithdrawController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$user = auth('api')->user();
|
|
|
|
$query = $user->withdraws()->filter($request->all());
|
|
|
|
$list = $query->paginate($request->input('per_page'));
|
|
|
|
return $this->json(WithdrawResource::collection($list));
|
|
}
|
|
|
|
public function show($id)
|
|
{
|
|
$user = auth('api')->user();
|
|
$info = $user->withdraws()->findOrFail($id);
|
|
|
|
return $this->json(WithdrawResource::make($info));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$user = auth('api')->user();
|
|
$request->validate([
|
|
'amount' => 'numeric|gt:0|lte:' . floatval($user->balance)
|
|
], [
|
|
'amount.gt' => '提现数量必须大于 0',
|
|
'amount.lte' => '余额不足'
|
|
]);
|
|
$amount = $request->input('amount');
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$info = WithdrawService::make()->apply($user, $amount);
|
|
DB::commit();
|
|
return $this->success('申请成功', WithdrawResource::make($info));
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
|
|
return $this->error($e->getMessage());
|
|
}
|
|
|
|
}
|
|
|
|
public function cancel($id)
|
|
{
|
|
$user = auth('api')->user();
|
|
$info = $user->withdraws()->findOrFail($id);
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
WithdrawService::make()->cancel($info);
|
|
DB::commit();
|
|
return $this->success('取消成功');
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
|
|
return $this->error($e->getMessage());
|
|
}
|
|
}
|
|
}
|