Merge branch 'kub-stage' of https://git.se.kbs1.ir/admin/CMS into kub-stage
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 16m9s

This commit is contained in:
masoodafar-web
2026-06-20 23:31:31 +03:30
2 changed files with 344 additions and 40 deletions
@@ -1,5 +1,4 @@
using CMSMicroservice.Application.Common.Interfaces;
using CMSMicroservice.Domain.Entities;
using CMSMicroservice.Domain.Entities.Commission;
using CMSMicroservice.Domain.Entities.History;
using CMSMicroservice.Domain.Enums;
@@ -25,7 +24,6 @@ public class BulkCreditPayoutsCommandHandler : IRequestHandler<BulkCreditPayouts
public async Task<BulkCreditPayoutsResult> Handle(BulkCreditPayoutsCommand request, CancellationToken cancellationToken)
{
// بارگذاری همه پرداخت‌های Pending این هفته
var pendingPayouts = await _context.UserCommissionPayouts
.Where(p => p.WeekDefinitionId == request.WeekDefinitionId
&& p.Status == CommissionPayoutStatus.Pending
@@ -37,72 +35,37 @@ public class BulkCreditPayoutsCommandHandler : IRequestHandler<BulkCreditPayouts
return new BulkCreditPayoutsResult { CreditedCount = 0, TotalCredited = 0 };
}
// بارگذاری کیف پول همه کاربران مربوطه (یک query)
var userIds = pendingPayouts.Select(p => p.UserId).Distinct().ToList();
var wallets = await _context.UserWallets
.Where(w => userIds.Contains(w.UserId) && !w.IsDeleted)
.ToDictionaryAsync(w => w.UserId, cancellationToken);
var performedBy = _currentUser.GetPerformedBy() ?? "System";
var now = DateTime.UtcNow;
var walletHistories = new List<UserWalletHistory>();
var payoutHistories = new List<CommissionPayoutHistory>();
var creditedCount = 0;
long totalCredited = 0;
foreach (var payout in pendingPayouts)
{
if (!wallets.TryGetValue(payout.UserId, out var wallet))
{
_logger.LogWarning(
"Wallet not found for UserId={UserId}, PayoutId={PayoutId} — skipping",
payout.UserId, payout.Id);
continue;
}
var oldBalance = wallet.Balance;
// واریز مبلغ به کیف پول
wallet.Balance += payout.TotalAmount;
walletHistories.Add(new UserWalletHistory
{
WalletId = wallet.Id,
CurrentBalance = wallet.Balance,
CurrentNetworkBalance = wallet.NetworkBalance,
CurrentDiscountBalance = wallet.DiscountBalance,
ChangeValue = payout.TotalAmount,
ChangeNerworkValue = 0,
ChangeDiscountValue = 0,
IsIncrease = true,
RefrenceId = payout.Id
});
// به‌روزرسانی وضعیت پرداخت
payout.Status = CommissionPayoutStatus.Paid;
payout.PaidAt = now;
payout.LastModified = now;
payoutHistories.Add(new CommissionPayoutHistory
{
UserCommissionPayoutId = payout.Id,
UserCommissionPayoutId = payout.Id,
UserId = payout.UserId,
WeekDefinitionId = payout.WeekDefinitionId,
AmountBefore = 0,
AmountBefore = payout.TotalAmount,
AmountAfter = payout.TotalAmount,
OldStatus = CommissionPayoutStatus.Pending,
NewStatus = CommissionPayoutStatus.Paid,
Action = CommissionPayoutAction.Paid,
PerformedBy = performedBy,
Reason = $"واریز دسته‌جمعی کمیسیون هفته {payout.WeekDefinitionId} توسط {performedBy}"
Reason = $"تایید پرداخت دسته‌جمعی کمیسیون هفته {payout.WeekDefinitionId} توسط {performedBy}"
});
creditedCount++;
totalCredited += payout.TotalAmount;
}
await _context.UserWalletHistories.AddRangeAsync(walletHistories, cancellationToken);
await _context.CommissionPayoutHistories.AddRangeAsync(payoutHistories, cancellationToken);
await _context.SaveChangesAsync(cancellationToken);