feat(Q24+Q26): balance threshold + SP auto-deploy worker
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 9m25s
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 9m25s
Q24: Magic wallet entry/exit trigger now uses Balance <= 1,000,000 Rials instead of Balance == 0 (products have varying prices so exact zero is unreachable). Added MagicWalletEntryThreshold to SystemConstants. Q26: StoredProcedureDeploymentService (IHostedService) auto-deploys stored procedures on startup via embedded SQL resources + SHA256 checksum comparison. Creates [CMS].[__StoredProcedureVersions] table automatically. Supports GO batch separators.
This commit is contained in:
@@ -338,7 +338,8 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
|
||||
_context.UserWalletChangeLogs.Add(walletLog);
|
||||
|
||||
// ═══ Magic Wallet: Entry / Exit Trigger ═══
|
||||
if (wallet.Balance == 0)
|
||||
// Q24: آستانه <= 1,000,000 ریال به جای == 0 (چون قیمت محصولات متفاوت است)
|
||||
if (wallet.Balance <= SystemConstants.MagicWalletEntryThreshold)
|
||||
{
|
||||
var user = await _context.Users
|
||||
.Include(u => u.ClubMembership)
|
||||
@@ -358,7 +359,7 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
|
||||
if (wallet.MagicTotalDeposited >= magicMaxDeposit)
|
||||
{
|
||||
// ── EXIT Magic Mode ──
|
||||
// هر دو شرط: Balance=0 و سقف 100M پر شده
|
||||
// هر دو شرط: Balance<=Threshold و سقف MagicMaxDeposit پر شده
|
||||
wallet.WalletMode = WalletMode.Normal;
|
||||
wallet.MagicCompletedAt = DateTime.UtcNow;
|
||||
|
||||
@@ -398,7 +399,7 @@ public class UserOrderService : UserOrderContract.UserOrderContractBase
|
||||
currentCycle.MagicStartedAt = DateTime.UtcNow;
|
||||
}
|
||||
}
|
||||
// ⚠️ اگه Magic باشه و Balance=0 ولی سقف پر نشده → هنوز Magic!
|
||||
// ⚠️ اگه Magic باشه و Balance<=Threshold ولی سقف پر نشده → هنوز Magic!
|
||||
// کاربر میتونه دوباره شارژ کنه
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user