Ver código fonte

fix 库存不足 缓存5分钟

zoujiajian 3 meses atrás
pai
commit
e2612c18a1

+ 11 - 0
netflix-service/src/main/java/com/cyksj/service/recharge/impl/SancRechargeServiceImpl.java

@@ -50,6 +50,8 @@ public class SancRechargeServiceImpl implements SancRechargeService {
 
     private final GptUserRechargeRecordService gptUserRechargeRecordService;
 
+    private static String SAN_CHUAN_LIMIT_KEY = "SAN_CHUAN_LIMIT_KEY";
+
     private static final GlobalThreadPoolTaskExecutor TASK_EXECUTOR = GlobalThreadPoolTaskExecutor.getInstance();
 
     @Override
@@ -235,6 +237,9 @@ public class SancRechargeServiceImpl implements SancRechargeService {
     private String submitTask(String cardKey, String accessToken) {
         log.info("开始提交三川任务 - 卡密: {}", cardKey);
         try {
+            if (redisService.hasKey(SAN_CHUAN_LIMIT_KEY)) {
+                throw BusinessRuntimeException.getInstance("库存不足");
+            }
             String BASE_URL = gptRechargeCardKeyChannelService.getCardKeyDomain(cardKey);
             String url = BASE_URL + "/cards/verify-gpt";
             JSONObject requestBody = new JSONObject();
@@ -261,6 +266,12 @@ public class SancRechargeServiceImpl implements SancRechargeService {
             return rechargeResponse.getData().getThirdPartyResult();
         } catch (Exception e) {
             log.error("提交任务失败: {}", e.getMessage(), e);
+            if (StringUtil.getErrorMsg(e).contains("库存不足")) {
+                if (!redisService.hasKey(SAN_CHUAN_LIMIT_KEY)) {
+                    //没库存 缓存5分钟
+                    redisService.set(SAN_CHUAN_LIMIT_KEY, "1", 60 * 5L);
+                }
+            }
             throw new RuntimeException("提交任务失败: " + e.getMessage(), e);
         }
     }