feat(lottery): 扩展传统马来赔率、玩法结算与开注商短码支持
This commit is contained in:
@@ -29,6 +29,7 @@ final class AdminBetProviderController extends Controller
|
||||
$data = $request->validate([
|
||||
'code' => ['required', 'string', 'max:32', 'regex:/^[A-Za-z0-9_-]+$/', Rule::unique('bet_providers', 'code')],
|
||||
'name' => ['required', 'string', 'max:64'],
|
||||
'short_code' => ['required', 'string', 'size:1', 'regex:/^[A-Za-z]$/'],
|
||||
'is_enabled' => ['sometimes', 'boolean'],
|
||||
'sort_order' => ['sometimes', 'integer', 'min:0'],
|
||||
]);
|
||||
@@ -36,6 +37,7 @@ final class AdminBetProviderController extends Controller
|
||||
$provider = BetProvider::query()->create([
|
||||
'code' => strtoupper((string) $data['code']),
|
||||
'name' => trim((string) $data['name']),
|
||||
'short_code' => strtoupper((string) $data['short_code']),
|
||||
'is_enabled' => (bool) ($data['is_enabled'] ?? true),
|
||||
'sort_order' => (int) ($data['sort_order'] ?? 0),
|
||||
]);
|
||||
@@ -47,12 +49,14 @@ final class AdminBetProviderController extends Controller
|
||||
{
|
||||
$data = $request->validate([
|
||||
'name' => ['sometimes', 'required', 'string', 'max:64'],
|
||||
'short_code' => ['sometimes', 'required', 'string', 'size:1', 'regex:/^[A-Za-z]$/'],
|
||||
'is_enabled' => ['sometimes', 'boolean'],
|
||||
'sort_order' => ['sometimes', 'integer', 'min:0'],
|
||||
]);
|
||||
|
||||
$betProvider->fill(array_filter([
|
||||
'name' => isset($data['name']) ? trim((string) $data['name']) : null,
|
||||
'short_code' => isset($data['short_code']) ? strtoupper((string) $data['short_code']) : null,
|
||||
'is_enabled' => array_key_exists('is_enabled', $data) ? (bool) $data['is_enabled'] : null,
|
||||
'sort_order' => array_key_exists('sort_order', $data) ? (int) $data['sort_order'] : null,
|
||||
], static fn (mixed $value): bool => $value !== null))->save();
|
||||
@@ -68,6 +72,7 @@ final class AdminBetProviderController extends Controller
|
||||
'id' => (int) $provider->id,
|
||||
'code' => $provider->code,
|
||||
'name' => $provider->name,
|
||||
'short_code' => $provider->short_code ?: strtoupper(substr((string) $provider->code, 0, 1)),
|
||||
'is_enabled' => (bool) $provider->is_enabled,
|
||||
'sort_order' => (int) $provider->sort_order,
|
||||
'is_default' => $provider->code === BetProvider::DEFAULT_CODE,
|
||||
|
||||
@@ -30,6 +30,7 @@ final class AdminDrawIndexController extends Controller
|
||||
$p = AdminApiList::readPaging($request);
|
||||
$drawNo = trim((string) $request->query('draw_no', ''));
|
||||
$status = trim((string) $request->query('status', ''));
|
||||
$hasPlayerBets = $request->boolean('has_player_bets');
|
||||
$scope = AdminScopePolicy::resolveContext($request, $admin);
|
||||
|
||||
$q = Draw::query()->orderByDesc('draw_time')->orderByDesc('id');
|
||||
@@ -42,6 +43,14 @@ final class AdminDrawIndexController extends Controller
|
||||
$q->where('status', $status);
|
||||
}
|
||||
|
||||
if ($hasPlayerBets) {
|
||||
$ticketItems = TicketItem::query()
|
||||
->selectRaw('1')
|
||||
->whereColumn('ticket_items.draw_id', 'draws.id');
|
||||
$this->scopeTicketItemsToVisiblePlayers($ticketItems, $scope);
|
||||
$q->whereExists($ticketItems);
|
||||
}
|
||||
|
||||
/** @var LengthAwarePaginator $paginator */
|
||||
$paginator = $q->paginate($p['perPage'], ['*'], 'page', $p['page']);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user