feat(risk): 支持按开注商隔离风险池并新增经营报表
Some checks failed
lotterLaravel CI / test (push) Has been cancelled
lotterLaravel E2E / e2e-api (push) Has been cancelled

This commit is contained in:
2026-07-10 10:23:30 +08:00
parent d4779660c8
commit 2ea3e810a0
31 changed files with 610 additions and 58 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Http\Controllers\Api\V1\Admin\Risk;
use App\Models\BetProvider;
use App\Models\Draw;
use App\Models\RiskPool;
use App\Models\TicketOrder;
@@ -25,9 +26,13 @@ final class AdminRiskPoolIndexController extends Controller
$highRiskOnly = $request->boolean('high_risk_only');
$activeOnly = $request->boolean('active_only');
$number = trim((string) $request->query('normalized_number', ''));
$providerCode = strtoupper(trim((string) $request->query('provider_code', '')));
$sort = trim((string) $request->query('sort', 'usage_desc'));
$q = RiskPool::query()->where('draw_id', $draw->id);
if ($providerCode !== '') {
$q->where('provider_code', $providerCode);
}
if ($soldOutOnly) {
$q->where('sold_out_status', 1);
@@ -47,11 +52,12 @@ final class AdminRiskPoolIndexController extends Controller
}
match ($sort) {
'locked_desc' => $q->orderByDesc('locked_amount')->orderBy('normalized_number'),
'remaining_asc' => $q->orderBy('remaining_amount')->orderBy('normalized_number'),
'number_asc' => $q->orderBy('normalized_number'),
'locked_desc' => $q->orderByDesc('locked_amount')->orderBy('provider_code')->orderBy('normalized_number'),
'remaining_asc' => $q->orderBy('remaining_amount')->orderBy('provider_code')->orderBy('normalized_number'),
'number_asc' => $q->orderBy('provider_code')->orderBy('normalized_number'),
default => $q->orderByRaw('(locked_amount * 1.0 / NULLIF(total_cap_amount, 0)) DESC')
->orderByDesc('locked_amount')
->orderBy('provider_code')
->orderBy('normalized_number'),
};
@@ -76,6 +82,7 @@ final class AdminRiskPoolIndexController extends Controller
$locked = (int) $pool->locked_amount;
return [
'provider_code' => $pool->provider_code ?? BetProvider::DEFAULT_CODE,
'normalized_number' => $pool->normalized_number,
'total_cap_amount' => $cap,
'locked_amount' => $locked,