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

108 lines
3.0 KiB
PHP

<?php
namespace App\Endpoint\Api\Http\Controllers\Dealer;
use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\Dealer\DealerEarningResource;
use App\Endpoint\Api\Http\Resources\Dealer\DealerEarningSimpleResource;
use App\Enums\DealerEarningStatus;
use App\Exceptions\BizException;
use App\Helpers\Paginator;
use App\Models\DealerEarning;
use Illuminate\Http\Request;
class EarningController extends Controller
{
/**
* 列表
*
* @param Request $request
* @return void
*/
public function index(Request $request)
{
$cate = $request->input('cate', '');//获取订单类别
$user = $request->user();
switch ($cate) {
case 'pending'://
$query = $user->dealerEarnings()->onlyPending()->whereNotNull('settle_at');
break;
case 'paid':
$query = $user->dealerPayEarnings()->onlyPaid()->whereNotNull('settle_at');
break;
default://全部
$query = DealerEarning::where(function ($q) use ($user) {
return $q->where('user_id', $user->id)->orWhere('payer_id', $user->id);
});
break;
}
$earnings = $query->latest('id')->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50));
return DealerEarningSimpleResource::collection($earnings);
}
/**
* 详情
*
* @param [type] $id
* @param Request $request
* @return void
*/
public function show($id, Request $request)
{
$earning = $request->user()->dealerEarnings()->findOrFail($id);
return DealerEarningResource::make($earning);
}
/**
* 确认打款
*
* @param [type] $id
* @param Request $request
* @return void
*/
public function payEarning($id, Request $request)
{
$earning = DealerEarning::findOrFail($id);
if (!$earning->isPayer($request->user()->id)) {
throw new BizException('无法操作该订单');
}
$input = $request->validate([
'pay_image' => ['bail', 'required', 'string'],
]);
if ($earning->isPending()) {
$earning->update([
'status' => DealerEarningStatus::Paid,
'pay_info' => $earning->getPayInfo(),
'pay_image'=> $input['pay_image'],
'pay_at' => now(),
]);
}
return response()->noContent();
}
/**
* 确认收款
*
* @param [type] $id
* @param Request $request
*/
public function confirmEarning($id, Request $request)
{
$earning = DealerEarning::findOrFail($id);
if (!$earning->isUser($request->user()->id)) {
throw new BizException('无法操作该订单');
}
if ($earning->isPaid()) {
$earning->update([
'status' => DealerEarningStatus::Completed,
]);
}
return response()->noContent();
}
}