feat: implement Kavenegar SMS service and refactor system configurations to use static constants
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 1m38s

This commit is contained in:
masoodafar-web
2025-12-26 09:04:27 +03:30
parent 9d2b5ad2d4
commit 02e2f8111f
51 changed files with 4064 additions and 1388 deletions
@@ -1,5 +1,6 @@
using CMSMicroservice.Domain.Events;
using CMSMicroservice.Domain.Enums;
using CMSMicroservice.Domain.Common;
using CMSMicroservice.Application.DayaLoanCQ.Services;
using Microsoft.Extensions.Logging;
@@ -10,11 +11,6 @@ public class CheckDayaLoanStatusCommandHandler : IRequestHandler<CheckDayaLoanSt
private readonly IApplicationDbContext _context;
private readonly IDayaLoanApiService _dayaApiService;
private readonly ILogger<CheckDayaLoanStatusCommandHandler> _logger;
/// <summary>
/// مبلغ وام دایا - 56 میلیون ریال
/// </summary>
private const long DAYA_LOAN_AMOUNT = 56_000_000;
public CheckDayaLoanStatusCommandHandler(
IApplicationDbContext context,
@@ -69,7 +65,7 @@ public class CheckDayaLoanStatusCommandHandler : IRequestHandler<CheckDayaLoanSt
_logger.LogInformation(
"Daya loan processed for User {UserId}, ContractNumber: {ContractNumber}, Amount: {Amount}",
existingContract.UserId, dayaResult.ContractNumber, DAYA_LOAN_AMOUNT);
existingContract.UserId, dayaResult.ContractNumber, SystemConstants.DayaLoanAmount);
}
}
else
@@ -90,7 +86,7 @@ public class CheckDayaLoanStatusCommandHandler : IRequestHandler<CheckDayaLoanSt
_logger.LogInformation(
"Daya loan processed for new contract - User {UserId}, ContractNumber: {ContractNumber}, Amount: {Amount}",
user.Id, dayaResult.ContractNumber, DAYA_LOAN_AMOUNT);
user.Id, dayaResult.ContractNumber, SystemConstants.DayaLoanAmount);
}
var newContract = new DayaLoanContract
@@ -187,13 +183,13 @@ public class CheckDayaLoanStatusCommandHandler : IRequestHandler<CheckDayaLoanSt
var previousBalance = wallet.Balance;
var previousDiscountBalance = wallet.DiscountBalance;
wallet.Balance += DAYA_LOAN_AMOUNT;
wallet.DiscountBalance += DAYA_LOAN_AMOUNT;
wallet.Balance += SystemConstants.DayaLoanAmount;
wallet.DiscountBalance += SystemConstants.DayaLoanAmount;
// 2. ثبت تراکنش - RefId = شماره قرارداد، Status = 0 (Success)، Type = 2 (DepositExternal1)
var transaction = new Transaction
{
Amount = DAYA_LOAN_AMOUNT,
Amount = SystemConstants.DayaLoanAmount,
Description = $"شارژ کیف پول از وام دایا - قرارداد {contractNumber}",
PaymentStatus = PaymentStatus.Success, // 0
PaymentDate = DateTime.Now,
@@ -209,11 +205,11 @@ public class CheckDayaLoanStatusCommandHandler : IRequestHandler<CheckDayaLoanSt
{
WalletId = wallet.Id,
CurrentBalance = wallet.Balance,
ChangeValue = DAYA_LOAN_AMOUNT,
ChangeValue = SystemConstants.DayaLoanAmount,
CurrentNetworkBalance = wallet.NetworkBalance,
ChangeNerworkValue = 0,
CurrentDiscountBalance = wallet.DiscountBalance,
ChangeDiscountValue = DAYA_LOAN_AMOUNT,
ChangeDiscountValue = SystemConstants.DayaLoanAmount,
IsIncrease = true,
RefrenceId = transaction.Id
};
@@ -1,4 +1,5 @@
using CMSMicroservice.Domain.Enums;
using CMSMicroservice.Domain.Common;
namespace CMSMicroservice.Application.DayaLoanCQ.Commands.ProcessDayaLoanApproval;
@@ -18,17 +19,17 @@ public record ProcessDayaLoanApprovalCommand : IRequest<ProcessDayaLoanApprovalR
public string ContractNumber { get; init; }
/// <summary>
/// مبلغ کیف پول عادی (56 میلیون)
/// مبلغ کیف پول عادی
/// </summary>
public long WalletAmount { get; init; } = 56_000_000;
public long WalletAmount { get; init; } = SystemConstants.DayaLoanAmount;
/// <summary>
/// مبلغ کیف پول قفل شده (56 میلیون)
/// مبلغ کیف پول قفل شده
/// </summary>
public long LockedWalletAmount { get; init; } = 56_000_000;
public long LockedWalletAmount { get; init; } = SystemConstants.DayaLoanAmount;
/// <summary>
/// مبلغ کیف پول تخفیف (56 میلیون)
/// مبلغ کیف پول تخفیف (دو برابر)
/// </summary>
public long DiscountWalletAmount { get; init; } = 56_000_000;
public long DiscountWalletAmount { get; init; } = SystemConstants.DayaLoanAmount * 2;
}
@@ -76,22 +76,7 @@ public class ProcessDayaLoanApprovalCommandHandler : IRequestHandler<ProcessDaya
};
await _context.UserWalletChangeLogs.AddAsync(mainLog, cancellationToken);
// شارژ کیف پول شبکه/کارمزد (56 میلیون) - نام‌گذاری قدیم: کیف پول قفل شده
var balanceBeforeLocked = wallet.NetworkBalance;
wallet.NetworkBalance += request.LockedWalletAmount;
// لاگ کیف پول شبکه
var networkLog = new UserWalletChangeLog
{
WalletId = wallet.Id,
CurrentBalance = wallet.Balance,
ChangeValue = 0,
CurrentNetworkBalance = wallet.NetworkBalance,
ChangeNerworkValue = request.LockedWalletAmount,
IsIncrease = true,
RefrenceId = transaction.Id
};
await _context.UserWalletChangeLogs.AddAsync(networkLog, cancellationToken);
// شارژ کیف پول تخفیف (56 میلیون)
var balanceBeforeDiscount = wallet.DiscountBalance;
@@ -119,9 +104,9 @@ public class ProcessDayaLoanApprovalCommandHandler : IRequestHandler<ProcessDaya
// تنظیم نحوه خرید پکیج به DayaLoan
user.PackagePurchaseMethod = PackagePurchaseMethod.DayaLoan;
// ثبت سفارش پکیج (فعلاً پکیج طلایی)
// ثبت سفارش پکیج (فعلاً پکیج پایه)
var goldenPackage = await _context.Packages
.FirstOrDefaultAsync(p => p.Title.Contains("طلایی") || p.Title.Contains("Golden"), cancellationToken);
.FirstOrDefaultAsync(p => p.Id==4, cancellationToken);
if (goldenPackage != null)
{