From decfc2ff7244cec365d3f32a5090edf5faeae861 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 23 Apr 2025 19:08:18 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/utils/task/stock/StockTask.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/nq/utils/task/stock/StockTask.java b/src/main/java/com/nq/utils/task/stock/StockTask.java
index 97dc181..f7787b7 100644
--- a/src/main/java/com/nq/utils/task/stock/StockTask.java
+++ b/src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -3,6 +3,8 @@
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
 import com.nq.dao.StockMapper;
 import com.nq.dao.UserPositionMapper;
@@ -15,12 +17,15 @@
 import com.nq.service.IStockService;
 import com.nq.service.IUserPositionService;
 import com.nq.utils.http.HttpClientRequest;
+import com.nq.utils.redis.RedisKeyConstant;
 import com.nq.utils.redis.RedisKeyUtil;
+import com.nq.utils.redis.RedisShardedPoolUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -77,7 +82,82 @@
         }
     }
 
+    //黄金
+    private static final String gold_API_URL = "http://139.196.211.109/exchange_curr.action?username=Qq112233&password=3ce25a66d5b3a8cd661024fea6c79388&id=AUUSDO";
 
+    //原油
+    private static final String crude_oil_API_URL = "http://47.112.169.122/fOption_curr.action?username=Qq112233&password=3ce25a66d5b3a8cd661024fea6c79388&id=@CL0W";
+
+    @Scheduled(cron = "0/10 * * * * ?")  // 每6秒执行一次
+    public void gold() {
+        try {
+            // 使用RestTemplate发起HTTP请求
+            RestTemplate restTemplate = new RestTemplate();
+            String response = restTemplate.getForObject(gold_API_URL, String.class);
+
+            // 解析返回的CSV格式数据,去除可能存在的换行符
+            if (response != null) {
+                // 清除换行符并按逗号分割数据
+                String[] parts = response.trim().split(",");
+                String price = parts[2].trim();  // "3348.4"
+                // 转换价格为Double类型
+                // 保存价格到Redis
+                RedisShardedPoolUtils.set(RedisKeyConstant.gold, String.valueOf(price));
+                log.info("黄金定时任务------成功");
+            } else {
+                log.info("黄金定时任务------没有接收到数据");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("黄金定时任务------请求或数据解析失败:" + e.getMessage());
+        }
+    }
+
+    @Scheduled(cron = "0/15 * * * * ?")  // 每6秒执行一次
+    public void crudeOil() {
+        try {
+            // 使用RestTemplate发起HTTP请求
+            RestTemplate restTemplate = new RestTemplate();
+            String response = restTemplate.getForObject(crude_oil_API_URL, String.class);
+
+            // 解析返回的CSV格式数据,去除可能存在的换行符
+            if (response != null) {
+                // 清除换行符并按逗号分割数据
+                String[] parts = response.trim().split(",");
+                String price = parts[2].trim();  // "3348.4"
+                // 转换价格为Double类型
+                // 保存价格到Redis
+                RedisShardedPoolUtils.set(RedisKeyConstant.crude_oil, String.valueOf(price));
+                log.info("原油定时任务------没有接收到数据");
+            } else {
+                log.info("原油定时任务------没有接收到数据");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("原油定时任务------请求或数据解析失败:" + e.getMessage());
+        }
+    }
+
+
+    //黄金
+    private static final String k_gold_API_URL = "http://139.196.211.109/ldMetal_k.action?username=Qq112233&password=3ce25a66d5b3a8cd661024fea6c79388&id=AUUSDO&num=-100&period=";
+
+    //原油
+    private static final String k_crude_oil_API_URL = "http://47.112.169.122/fOption_k.action?username=Qq112233&password=3ce25a66d5b3a8cd661024fea6c79388&id=@CL0W&num=-100&period=";
+
+    @Scheduled(cron = "0/6 * * * * ?")  // 每6秒执行一次
+    public void getKDate() throws InterruptedException {
+        RestTemplate restTemplate = new RestTemplate();
+        String[] arr = {"d", "w", "m", "1", "5", "30"};
+        for (String str : arr) {
+            String g = restTemplate.getForObject(k_gold_API_URL+str, String.class);
+            RedisShardedPoolUtils.set("k_gold_"+str, g);
+            Thread.sleep(6000);
+            String c = restTemplate.getForObject(k_crude_oil_API_URL+str, String.class);
+            RedisShardedPoolUtils.set("k_crude_oil_"+str, c);
+            Thread.sleep(6000);
+        }
+    }
     /**
      * 同步美国股票
      */

--
Gitblit v1.9.3