feat: 扩展奖池、风控与报表能力,新增对账补偿、广播和人工操作接口

This commit is contained in:
2026-05-18 15:09:10 +08:00
parent 9157dcb6a1
commit 6ef41cee76
46 changed files with 1889 additions and 98 deletions

View File

@@ -22,8 +22,10 @@ final class AdminUserPermissionSyncRequest extends FormRequest
public function rules(): array
{
return [
'permissions' => ['required', 'array'],
'permissions' => ['sometimes', 'array'],
'permissions.*' => ['string', 'max:128'],
'permission_slugs' => ['sometimes', 'array'],
'permission_slugs.*' => ['string', 'max:128'],
];
}
}

View File

@@ -22,9 +22,17 @@ final class ReconcileJobStoreRequest extends FormRequest
public function rules(): array
{
return [
'date_from' => ['required', 'date_format:Y-m-d'],
'date_to' => ['required', 'date_format:Y-m-d', 'after_or_equal:date_from'],
'date_from' => ['sometimes', 'date_format:Y-m-d'],
'date_to' => ['sometimes', 'date_format:Y-m-d', 'after_or_equal:date_from'],
'player_id' => ['sometimes', 'nullable', 'integer', 'min:1'],
'reconcile_type' => ['sometimes', 'string', 'max:64'],
'period_start' => ['sometimes', 'date'],
'period_end' => ['sometimes', 'date'],
'items' => ['sometimes', 'array'],
'items.*.side_a_ref' => ['sometimes', 'nullable', 'string', 'max:128'],
'items.*.side_b_ref' => ['sometimes', 'nullable', 'string', 'max:128'],
'items.*.difference_amount' => ['sometimes', 'integer'],
'items.*.status' => ['sometimes', 'string', 'max:32'],
];
}
}

View File

@@ -3,6 +3,7 @@
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
/**
* 报表任务创建请求。
@@ -22,10 +23,34 @@ final class ReportJobStoreRequest extends FormRequest
public function rules(): array
{
return [
'report_type' => ['required', 'string', 'max:64'],
'report_type' => ['required', 'string', Rule::in(self::reportTypes())],
'export_format' => ['sometimes', 'string', Rule::in(['csv', 'xlsx'])],
'parameters' => ['sometimes', 'array'],
'parameters.date_from' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'parameters.date_to' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'parameters.date_to' => ['sometimes', 'nullable', 'date_format:Y-m-d', 'after_or_equal:parameters.date_from'],
'filter_json' => ['sometimes', 'array'],
'filter_json.date_from' => ['sometimes', 'nullable', 'date_format:Y-m-d'],
'filter_json.date_to' => ['sometimes', 'nullable', 'date_format:Y-m-d', 'after_or_equal:filter_json.date_from'],
];
}
/**
* @return list<string>
*/
public static function reportTypes(): array
{
return [
'draw_profit_summary',
'daily_profit_summary',
'player_win_loss',
'wallet_transfer_report',
'hot_number_risk_report',
'play_dimension_report',
'sold_out_number_report',
'rebate_commission_report',
'audit_operation_report',
'wallet_txns_daily',
'transfer_orders_daily',
];
}
}