61b7e4f8f2
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 8m29s
F2: اضافه شدن packageName به SmsTemplates، IUserNotificationService، UserNotificationService
- DayaLoan، ClubActivated، CommissionDeposited حالا نام پکیج را نشان میدهند
F4: اضافه شدن ستون پکیج به CSV خروجیها
- commission.proto: package_name در WithdrawalRequestModel
- manualpayment.proto: package_name در ManualPaymentModel
- کوئریهندلرها UserPackagePurchases لوکاپ اضافه شد
F6: مقادیر داینامیک کیفپول جادویی از پکیج
- userwallet.proto: magic_multiplier + magic_max_credit
- UserWalletService: پاپیولیت فیلدهای جدید + فالبک به SystemConstants
F7: ولیدیتورها از SystemConstants استفاده میکنند
- WalletMaxSafeAmount (10B ریال) به عنوان حصار ایمنی
- MagicWalletMinCharge، DiscountWalletMinCharge ثابتهای مرکزی
- سقف واقعی per-package در هندلرها اعمال میشود
Proto: v0.0.189
185 lines
7.1 KiB
C#
185 lines
7.1 KiB
C#
namespace CMSMicroservice.Domain.Common;
|
|
|
|
/// <summary>
|
|
/// تنظیمات ثابت سیستم - Static و در مموری
|
|
/// این مقادیر هرگز تغییر نمیکنند و نیازی به جدول ندارند
|
|
/// </summary>
|
|
public static class SystemConstants
|
|
{
|
|
#region Network Settings
|
|
|
|
/// <summary>
|
|
/// اجازه حذف والدین که فرزند دارند
|
|
/// </summary>
|
|
public const bool NetworkAllowOrphanNodes = false;
|
|
|
|
/// <summary>
|
|
/// حداکثر تعداد فرزند مستقیم در هر پا
|
|
/// </summary>
|
|
public const int NetworkMaxChildrenPerLeg = 1;
|
|
|
|
#endregion
|
|
|
|
#region Commission Settings
|
|
|
|
/// <summary>
|
|
/// امکان برداشت نقدی فعال باشد
|
|
/// </summary>
|
|
public const bool CommissionCashWithdrawalEnabled = true;
|
|
|
|
/// <summary>
|
|
/// حداقل مبلغ برداشت (ریال)
|
|
/// </summary>
|
|
public const long CommissionMinWithdrawalAmount = 1_000_000;
|
|
|
|
/// <summary>
|
|
/// روش محاسبه (ORM یا SP)
|
|
/// </summary>
|
|
public const string CommissionCalculationStrategy = "SP";
|
|
|
|
#endregion
|
|
|
|
#region System Settings
|
|
|
|
/// <summary>
|
|
/// حالت تعمیر و نگهداری سیستم
|
|
/// </summary>
|
|
public const bool SystemMaintenanceMode = false;
|
|
|
|
/// <summary>
|
|
/// فعالسازی لاگ تغییرات
|
|
/// </summary>
|
|
public const bool SystemEnableAuditLog = true;
|
|
|
|
#endregion
|
|
|
|
#region Magic Wallet Settings
|
|
|
|
// Per-package magic wallet settings are now in Package entity:
|
|
// Package.MagicWalletMultiplier, Package.MagicWalletMaxDeposit, Package.MagicWalletMaxCredit
|
|
|
|
/// <summary>
|
|
/// آستانه ورود/خروج کیفپول جادویی (ریال).
|
|
/// وقتی موجودی کیفپول به این مقدار یا کمتر برسد، تریگر Entry/Exit اجرا میشود.
|
|
/// مقدار ۱٬۰۰۰٬۰۰۰ ریال = ۱۰۰ هزار تومان
|
|
/// (Q24: چون قیمت محصولات متفاوت است، موجودی دقیقاً صفر نمیشود)
|
|
/// </summary>
|
|
public const long MagicWalletEntryThreshold = 1_000_000;
|
|
|
|
/// <summary>
|
|
/// مقدار پیشفرض ضریب جادویی وقتی پکیج یافت نشود (بازگشت به پایه)
|
|
/// </summary>
|
|
public const double MagicWalletDefaultMultiplier = 2.5;
|
|
|
|
/// <summary>
|
|
/// مقدار پیشفرض حداکثر واریز جادویی وقتی پکیج یافت نشود (ریال)
|
|
/// </summary>
|
|
public const long MagicWalletDefaultMaxDeposit = 1_000_000_000;
|
|
|
|
/// <summary>
|
|
/// مقدار پیشفرض حداکثر اعتبار جادویی وقتی پکیج یافت نشود (ریال)
|
|
/// </summary>
|
|
public const long MagicWalletDefaultMaxCredit = 2_500_000_000;
|
|
|
|
#endregion
|
|
|
|
#region Wallet Validation Settings
|
|
|
|
/// <summary>
|
|
/// حداکثر مبلغ مجاز در ولیدیتور (حصار ایمنی — مقدار واقعی از پکیج خوانده میشود).
|
|
/// ۱۰ میلیارد ریال = ۱ میلیارد تومان
|
|
/// </summary>
|
|
public const long WalletMaxSafeAmount = 10_000_000_000;
|
|
|
|
/// <summary>
|
|
/// حداقل مبلغ شارژ جادویی (ریال) — ۱۰۰٬۰۰۰ ریال = ۱۰ هزار تومان
|
|
/// </summary>
|
|
public const long MagicWalletMinCharge = 100_000;
|
|
|
|
/// <summary>
|
|
/// حداقل مبلغ شارژ تخفیفی (ریال) — ۱۰٬۰۰۰ ریال = ۱ هزار تومان
|
|
/// </summary>
|
|
public const long DiscountWalletMinCharge = 10_000;
|
|
|
|
#endregion
|
|
|
|
#region Shop Settings
|
|
|
|
/// <summary>
|
|
/// مالیات بر ارزش افزوده (10%)
|
|
/// </summary>
|
|
public const decimal ShopVAT = 0.1m;
|
|
|
|
/// <summary>
|
|
/// مالیات فعال است؟
|
|
/// </summary>
|
|
public const bool ShopVATEnabled = true;
|
|
|
|
#endregion
|
|
|
|
#region Helper Methods
|
|
|
|
/// <summary>
|
|
/// دریافت مقدار به صورت دیکشنری برای نمایش در Admin Panel
|
|
/// Note: Per-package values (Price, MaxBalancesPerLeg, etc.) are now read from Package entity
|
|
/// via ConfigurationService — only static/global constants remain here.
|
|
/// </summary>
|
|
public static Dictionary<string, object> GetAllAsDict()
|
|
{
|
|
return new Dictionary<string, object>
|
|
{
|
|
// Network
|
|
["Network.AllowOrphanNodes"] = NetworkAllowOrphanNodes,
|
|
["Network.MaxChildrenPerLeg"] = NetworkMaxChildrenPerLeg,
|
|
|
|
// Commission (global settings only — per-package limits are in Package entity)
|
|
["Commission.CashWithdrawalEnabled"] = CommissionCashWithdrawalEnabled,
|
|
["Commission.MinWithdrawalAmount"] = CommissionMinWithdrawalAmount,
|
|
["Commission.CalculationStrategy"] = CommissionCalculationStrategy,
|
|
|
|
// System
|
|
["System.MaintenanceMode"] = SystemMaintenanceMode,
|
|
["System.EnableAuditLog"] = SystemEnableAuditLog,
|
|
|
|
// Magic Wallet (global threshold)
|
|
["MagicWallet.EntryThreshold"] = MagicWalletEntryThreshold,
|
|
|
|
// Shop
|
|
["Shop.VAT"] = ShopVAT,
|
|
["Shop.VATEnabled"] = ShopVATEnabled
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// دریافت لیست تنظیمات با توضیحات
|
|
/// Note: Per-package values are served from Package entity via ConfigurationService.
|
|
/// </summary>
|
|
public static List<(string Key, object Value, string Description)> GetAllWithDescriptions()
|
|
{
|
|
return new List<(string Key, object Value, string Description)>
|
|
{
|
|
// Network
|
|
("Network.AllowOrphanNodes", NetworkAllowOrphanNodes, "اجازه حذف والدین که فرزند دارند"),
|
|
("Network.MaxChildrenPerLeg", NetworkMaxChildrenPerLeg, "حداکثر تعداد فرزند مستقیم در هر پا"),
|
|
|
|
// Commission (global settings only)
|
|
("Commission.CashWithdrawalEnabled", CommissionCashWithdrawalEnabled, "امکان برداشت نقدی فعال باشد"),
|
|
("Commission.MinWithdrawalAmount", CommissionMinWithdrawalAmount, "حداقل مبلغ برداشت (ریال)"),
|
|
("Commission.CalculationStrategy", CommissionCalculationStrategy, "روش محاسبه (ORM/SP)"),
|
|
|
|
// System
|
|
("System.MaintenanceMode", SystemMaintenanceMode, "حالت تعمیر و نگهداری سیستم"),
|
|
("System.EnableAuditLog", SystemEnableAuditLog, "فعالسازی لاگ تغییرات"),
|
|
|
|
// Magic Wallet (global threshold)
|
|
("MagicWallet.EntryThreshold", MagicWalletEntryThreshold, "آستانه ورود/خروج کیفپول جادویی (ریال) — Q24"),
|
|
|
|
// Shop
|
|
("Shop.VAT", ShopVAT, "مالیات بر ارزش افزوده"),
|
|
("Shop.VATEnabled", ShopVATEnabled, "مالیات فعال است؟")
|
|
};
|
|
}
|
|
|
|
#endregion
|
|
}
|