Bladeren bron

no message

student 1 maand geleden
bovenliggende
commit
dd673cf55d

BIN
KittyFallWs/etc/key/KITTY_SUB_KEYS.zip


BIN
KittyFallWs/etc/key/KITTY_SUB_KEYS/MPS Form of Kitty Fall.xlsx


BIN
KittyFallWs/etc/key/KITTY_SUB_KEYS/SUB_KEYS.xlsx


+ 34 - 21
Kitty_Fall/Kitty_Fall/Kitty_Fall.Woker/Services/GameRewardPayoutWorker.cs

@@ -132,20 +132,28 @@ namespace Kitty_Fall.Woker.Services
                 }
 
                 var payoutPackageName = GetPackageName(rewardLog);
-                var addPointRes = DotnetLib.Mytel.AddingPointLogic.AddingPointHandler(
-                    log,
-                    configuration,
-                    rewardLog.Msisdn,
-                    rewardLog.RewardLogId.ToString(CultureInfo.InvariantCulture),
-                    payoutPackageName);
-
+                var mockPayoutSuccess = configuration.GetValue("RewardWorker:MockPayoutSuccess", false);
+                var addPointRes = mockPayoutSuccess
+                    ? null
+                    : DotnetLib.Mytel.AddingPointLogic.AddingPointHandler(
+                        log,
+                        configuration,
+                        rewardLog.Msisdn,
+                        rewardLog.RewardLogId.ToString(CultureInfo.InvariantCulture),
+                        payoutPackageName);
+
+                if (mockPayoutSuccess)
+                {
+                    log.Warn($"MOCK payout success enabled; Bonus Gateway was not called. rewardLogId={rewardLog.RewardLogId}, msisdn={rewardLog.Msisdn}, package={payoutPackageName}");
+                }
                 var responseStatus = addPointRes?.result?.status;
                 var hasResponseCode = int.TryParse(
                     responseStatus,
                     NumberStyles.Integer,
                     CultureInfo.InvariantCulture,
                     out var responseCode);
-                var isSuccess = addPointRes?.success == true
+                var isSuccess = mockPayoutSuccess
+                    || addPointRes?.success == true
                     || (hasResponseCode && responseCode == CommonLogic.AddPointSuccess);
                 var isWaiting = hasResponseCode
                     && responseCode == CommonLogic.AddPointWaiting;
@@ -156,26 +164,31 @@ namespace Kitty_Fall.Woker.Services
                     ?? (isSuccess
                         ? CommonLogic.AddPointSuccess.ToString(CultureInfo.InvariantCulture)
                         : CommonLogic.AddPointFailure.ToString(CultureInfo.InvariantCulture));
-                rewardLog.ResponseMessage = Truncate(addPointRes?.message, 500);
+                rewardLog.ResponseMessage = mockPayoutSuccess
+                    ? "MOCK_SUCCESS - Bonus Gateway was not called"
+                    : Truncate(addPointRes?.message, 500);
                 rewardLog.ExternalTransId = rewardLog.RewardLogId.ToString(CultureInfo.InvariantCulture);
                 rewardLog.UpdatedTime = MyanmarClock.Now;
 
                 if (isSuccess)
                 {
                     rewardLog.Status = StatusSuccess;
-                    dbContext.ChargeLogs.Add(new ChargeLog
-                    {
-                        Id = await NextDecimalIdAsync(dbContext, "CHARGE_LOG_SEQ"),
-                        Msisdn = rewardLog.Msisdn,
-                        Fee = -rewardLog.RewardValue,
-                        ChargeTime = now,
-                        InsertTime = now,
-                        Description = $"Exchange expense {rewardLog.RewardType?.ToUpperInvariant()} - {payoutPackageName}",
-                        AccountId = null,
-                        Status = CommonConstants.UNCHARGE_STATUS
-                    });
+                    var chargeFee = -rewardLog.RewardValue;
+                    var chargeDescription = $"Exchange expense {rewardLog.RewardType?.ToUpperInvariant()} - {payoutPackageName}";
+                    var chargeStatus = (decimal)CommonConstants.UNCHARGE_STATUS;
+
+                    // CHARGE_LOG duoc scaffold HasNoKey nen EF khong the Add/track entity.
+                    // Dung SQL truc tiep va transaction de status reward + charge log cung thanh cong/rollback.
+                    await using var transaction = await dbContext.Database.BeginTransactionAsync(cancellationToken);
+                    await dbContext.Database.ExecuteSqlInterpolatedAsync($@"
+                        INSERT INTO CHARGE_LOG
+                            (ID, MSISDN, FEE, CHARGE_TIME, INSERT_TIME, DESCRIPTION, ACCOUNT_ID, STATUS)
+                        VALUES
+                            (CHARGE_LOG_SEQ.NEXTVAL, {rewardLog.Msisdn}, {chargeFee}, {now}, SYSDATE,
+                             {chargeDescription}, NULL, {chargeStatus})", cancellationToken);
                     await dbContext.SaveChangesAsync(cancellationToken);
-                    await SendSuccessMtAsync(dbContext, rewardLog, cancellationToken);
+                    await transaction.CommitAsync(cancellationToken);
+                    // await SendSuccessMtAsync(dbContext, rewardLog, cancellationToken);
                     return;
                 }
                 else if (isWaiting)

+ 8 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Woker/Services/MyanmarClock.cs

@@ -0,0 +1,8 @@
+namespace Kitty_Fall.Woker.Services;
+
+internal static class MyanmarClock
+{
+    private static readonly TimeSpan MyanmarOffset = TimeSpan.FromMinutes(390);
+
+    public static DateTime Now => DateTimeOffset.UtcNow.ToOffset(MyanmarOffset).DateTime;
+}

+ 1 - 0
Kitty_Fall/Kitty_Fall/Kitty_Fall.Woker/appsettings.Development.json

@@ -10,6 +10,7 @@
     // Worker chi goi moi reward NEW mot lan; loi/timeout/PROCESSING de admin doi soat, khong auto retry.
     "IntervalSeconds": 10,
     "BatchSize": 20,
+    "MockPayoutSuccess": true,
     "ServiceId": "KittyFall",
     "DataPackageName": "GAME_DATA",
     "LoyaltyPackageName": "GAME_LOYALTY",

+ 2 - 1
Kitty_Fall/Kitty_Fall/Kitty_Fall.Woker/appsettings.json

@@ -9,7 +9,7 @@
 
   "UsernameAddData": "xxx",
   "PasswordAddData": "xxxx",
-  // "UrlAddData": "http://10.201.5.123:9350/vas-gw/api/v1/add-prize",
+  // "https://bonusgw.mytel.com.mm:9351/vas-gw/api/v1/add-prize",
   "UrlAddData": "http://127.0.0.1:9350/vas-gw/api/v1/add-prize",
   "Hmac256KeyAddData": "xxxxasaxxx",
   "REVENUE_MIN": "200000",
@@ -18,6 +18,7 @@
     // Worker chi goi moi reward NEW mot lan; loi/timeout/PROCESSING de admin doi soat, khong auto retry.
     "IntervalSeconds": 10,
     "BatchSize": 20,
+    "MockPayoutSuccess": false,
     "ServiceId": "Kitty_Fall_DAYLY",
     "DataPackageName": "DATA_",
     "LoyaltyPackageName": "LOYALTY_",