feat: 拆分开奖与结算审核流程,新增手动结果录入、重开和派彩审批接口
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api\V1\Ticket;
|
||||
|
||||
use App\Models\Player;
|
||||
use App\Models\TicketItem;
|
||||
use App\Models\WalletTxn;
|
||||
use App\Support\ApiResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Support\PaginationTrait;
|
||||
@@ -26,6 +27,14 @@ final class TicketItemsIndexController extends Controller
|
||||
$perPage = $this->perPage($request, 'per_page', 20, 50);
|
||||
$page = $this->page($request);
|
||||
$drawNo = $request->query('draw_no');
|
||||
$statusInput = $request->query('status', []);
|
||||
$statusValues = is_array($statusInput) ? array_values(array_filter(array_map(
|
||||
fn ($status) => is_string($status) ? trim($status) : '',
|
||||
$statusInput,
|
||||
))) : [];
|
||||
$number = trim((string) $request->query('number', ''));
|
||||
$startDate = $this->normalizeDate((string) $request->query('start_date', ''));
|
||||
$endDate = $this->normalizeDate((string) $request->query('end_date', ''));
|
||||
|
||||
$query = TicketItem::query()
|
||||
->where('ticket_items.player_id', $player->id)
|
||||
@@ -40,6 +49,26 @@ final class TicketItemsIndexController extends Controller
|
||||
$query->whereHas('draw', fn ($q) => $q->where('draw_no', $drawNo));
|
||||
}
|
||||
|
||||
if ($statusValues !== []) {
|
||||
$query->whereIn('ticket_items.status', $statusValues);
|
||||
}
|
||||
|
||||
if ($number !== '') {
|
||||
$query->where(function ($q) use ($number): void {
|
||||
$q->where('ticket_items.original_number', 'like', '%'.$number.'%')
|
||||
->orWhere('ticket_items.normalized_number', 'like', '%'.$number.'%')
|
||||
->orWhere('ticket_items.ticket_no', 'like', '%'.$number.'%');
|
||||
});
|
||||
}
|
||||
|
||||
if ($startDate !== null) {
|
||||
$query->whereHas('order', fn ($q) => $q->whereDate('created_at', '>=', $startDate));
|
||||
}
|
||||
|
||||
if ($endDate !== null) {
|
||||
$query->whereHas('order', fn ($q) => $q->whereDate('created_at', '<=', $endDate));
|
||||
}
|
||||
|
||||
$paginator = $query->paginate(perPage: $perPage, page: $page);
|
||||
|
||||
$items = collect($paginator->items())->map(function (TicketItem $row): array {
|
||||
@@ -77,4 +106,14 @@ final class TicketItemsIndexController extends Controller
|
||||
'last_page' => $paginator->lastPage(),
|
||||
]);
|
||||
}
|
||||
|
||||
private function normalizeDate(string $value): ?string
|
||||
{
|
||||
$value = trim($value);
|
||||
if ($value === '' || ! preg_match('/^\d{4}-\d{2}-\d{2}$/', $value)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $value;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user