feat: enhance agent settlement features and improve data access controls
- Added new section in AGENTS.md detailing learned workspace facts for better understanding of settlement processes. - Updated AgentNodeDestroyController to remove unnecessary checks for admin users. - Enhanced AgentSettlement controllers to assert permissions for finance adjustments and bill operations. - Improved query scopes in AgentSettlement services to ensure proper data access based on admin roles. - Refactored methods in SettlementPartyEnrichment for better bill row enrichment and data handling. - Introduced new methods in AdminAgentSettlementScope for managing agent node visibility and finance adjustments.
This commit is contained in:
@@ -3,7 +3,6 @@
|
||||
namespace App\Services\AgentSettlement;
|
||||
|
||||
use App\Models\AdminUser;
|
||||
use App\Support\AdminDataScope;
|
||||
use App\Support\AdminAgentSettlementScope;
|
||||
use App\Support\AgentSettlementPeriodWindow;
|
||||
use App\Support\CurrencyFormatter;
|
||||
@@ -246,7 +245,7 @@ final class SettlementCenterLedgerService
|
||||
->whereNull('sl.reversal_of_id')
|
||||
->selectRaw("'share' as entry_kind, sl.id as entry_id, sl.settled_at as sort_at");
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
$this->applyLedgerPlayerFilters($query, 'p', $filters);
|
||||
|
||||
if ($range !== null) {
|
||||
@@ -276,7 +275,7 @@ final class SettlementCenterLedgerService
|
||||
->where('p.funding_mode', PlayerFundingMode::CREDIT)
|
||||
->selectRaw("'credit' as entry_kind, cl.id as entry_id, cl.created_at as sort_at");
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
$this->applyLedgerPlayerFilters($query, 'p', $filters);
|
||||
|
||||
if ($range !== null) {
|
||||
@@ -408,7 +407,7 @@ final class SettlementCenterLedgerService
|
||||
$outer->whereNull('p.id')
|
||||
->orWhere(function (\Illuminate\Database\Query\Builder $scoped) use ($admin, $siteCode, $filters): void {
|
||||
$scoped->where('p.site_code', $siteCode);
|
||||
AdminDataScope::applyToPlayersAlias($scoped, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($scoped, $admin, 'p');
|
||||
$this->applyLedgerPlayerFilters($scoped, 'p', $filters);
|
||||
});
|
||||
});
|
||||
@@ -767,7 +766,7 @@ final class SettlementCenterLedgerService
|
||||
'sla.name as share_agent_name',
|
||||
]);
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
|
||||
return $query->get()->all();
|
||||
}
|
||||
@@ -840,7 +839,7 @@ final class SettlementCenterLedgerService
|
||||
$query->where('sb.settlement_period_id', $periodId);
|
||||
}
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
|
||||
$map = [];
|
||||
foreach ($query->limit(500)->get() as $bill) {
|
||||
@@ -907,7 +906,7 @@ final class SettlementCenterLedgerService
|
||||
])
|
||||
->orderByDesc('cl.id');
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
|
||||
if ($playerId !== null && $playerId > 0) {
|
||||
$query->where('p.id', $playerId);
|
||||
@@ -969,7 +968,7 @@ final class SettlementCenterLedgerService
|
||||
])
|
||||
->orderByDesc('cl.id');
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
$this->applyLedgerPlayerFilters($query, 'p', $filters);
|
||||
|
||||
if ($range !== null) {
|
||||
@@ -1023,7 +1022,7 @@ final class SettlementCenterLedgerService
|
||||
'pa.name as parent_agent_name',
|
||||
]);
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
|
||||
return $query->get()->all();
|
||||
}
|
||||
@@ -1082,7 +1081,7 @@ final class SettlementCenterLedgerService
|
||||
$query->where('p.id', $playerId);
|
||||
}
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
|
||||
$siteIds = $admin->accessibleAdminSiteIds();
|
||||
if ($siteIds !== null) {
|
||||
@@ -1212,7 +1211,7 @@ final class SettlementCenterLedgerService
|
||||
$query->where('p.id', $playerId);
|
||||
}
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
|
||||
$siteIds = $admin->accessibleAdminSiteIds();
|
||||
if ($siteIds !== null) {
|
||||
@@ -1272,7 +1271,7 @@ final class SettlementCenterLedgerService
|
||||
'pa.name as parent_agent_name',
|
||||
]);
|
||||
|
||||
AdminDataScope::applyToPlayersAlias($query, $admin, 'p');
|
||||
AdminAgentSettlementScope::applyDirectPlayersToAlias($query, $admin, 'p');
|
||||
$this->applyLedgerSiteScope($query, $admin, 'sp');
|
||||
|
||||
return $query->get()->all();
|
||||
|
||||
Reference in New Issue
Block a user