From 0c74d36f29e8279d9061d57466b3f488a4e1b89f Mon Sep 17 00:00:00 2001
From: peter <14100000001@qq.com>
Date: Tue, 30 Dec 2025 17:20:14 +0800
Subject: [PATCH] 新增港股

---
 src/main/java/com/nq/controller/StockIndexApiController.java   |    4 
 src/main/resources/mapper/StockOptionMapper.xml                |    9 
 src/main/resources/mapper/StockMapper.xml                      |    6 
 src/main/java/com/nq/service/impl/StockServiceImpl.java        |   81 ++++++--
 src/main/resources/mapper/UserPositionMapper.xml               |    6 
 src/main/java/com/nq/controller/StockApiController.java        |   10 
 src/main/java/com/nq/controller/protol/UserController.java     |    4 
 src/main/resources/mapper/StockIndexMapper.xml                 |    8 
 src/main/java/com/nq/pojo/UserPosition.java                    |    9 +
 src/main/java/com/nq/dao/StockMapper.java                      |    4 
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |  107 +++--------
 src/main/java/com/nq/service/IUserService.java                 |    3 
 src/main/java/com/nq/service/impl/UserServiceImpl.java         |   57 ++---
 src/main/resources/application.properties                      |    3 
 src/main/java/com/nq/utils/stock/sina/SinaStockApi.java        |  100 +++++-----
 src/main/java/com/nq/config/StockType.java                     |   21 ++
 src/main/java/com/nq/service/impl/StockOptionServiceImpl.java  |   11 
 src/main/java/com/nq/service/IStockService.java                |    4 
 src/main/resources/application.yml                             |   12 
 src/main/java/com/nq/dao/StockIndexMapper.java                 |    2 
 src/main/java/com/nq/pojo/StockOption.java                     |    9 +
 src/main/java/com/nq/service/impl/StockIndexServiceImpl.java   |   53 +++++
 22 files changed, 315 insertions(+), 208 deletions(-)

diff --git a/src/main/java/com/nq/config/StockType.java b/src/main/java/com/nq/config/StockType.java
new file mode 100644
index 0000000..f54b757
--- /dev/null
+++ b/src/main/java/com/nq/config/StockType.java
@@ -0,0 +1,21 @@
+package com.nq.config;
+
+public enum StockType {
+    A("hs", "A股"),
+    HK("hk", "港股");
+    private String code;
+    private String msg;
+
+    StockType(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getCode() {
+        return this.code;
+    }
+
+    public String getMsg() {
+        return this.msg;
+    }
+}
diff --git a/src/main/java/com/nq/controller/StockApiController.java b/src/main/java/com/nq/controller/StockApiController.java
index 9ab5717..11353a8 100644
--- a/src/main/java/com/nq/controller/StockApiController.java
+++ b/src/main/java/com/nq/controller/StockApiController.java
@@ -60,8 +60,8 @@
     //通过股票代码查询股票信息
     @RequestMapping({"getSingleStock.do"})
     @ResponseBody
-    public ServerResponse getSingleStock(@RequestParam("code") String code, HttpServletRequest request) {
-        return this.iStockService.getSingleStock(code, request);
+    public ServerResponse getSingleStock(@RequestParam("stockType") String stockType,@RequestParam("code") String code, HttpServletRequest request) {
+        return this.iStockService.getSingleStock(stockType,code, request);
     }
 
     @RequestMapping({"getMinK.do"})
@@ -179,11 +179,11 @@
     @ResponseBody
     public ServerResponse getStockMarketZDFB(Integer pageNo,Integer pageSize, String sort,
                                             Integer asc,
-                                            String node){
+                                            String node,String stockType){
 //        String key=pageNo+pageSize+sort+asc+node;
 //        String result = (String) CacheUtil.get(key);
 //        if(StringUtils.isEmpty(result)){
-            ServerResponse stockSort = this.iStockService.getStockSort(pageNo, pageSize, sort, asc, node);
+            ServerResponse stockSort = this.iStockService.getStockSort(pageNo, pageSize, sort, asc, node,stockType);
 //            CacheUtil.set(key, JSON.toJSONString(stockSort.getData()),5000);
 //            return stockSort;
 //        }
@@ -243,7 +243,7 @@
     @PostMapping({"getVipList.do"})
     @ResponseBody
     public ServerResponse getVipList() {
-        ServerResponse stockSort = this.iStockService.getStockSort(1, 15, "changepercent", 0, "hs_a");
+        ServerResponse stockSort = this.iStockService.getStockSort(1, 15, "changepercent", 0, "hs_a","hs");
         if(!ObjectUtils.isEmpty(stockSort.getData())){
             JSONArray data = (JSONArray)stockSort.getData();
             ArrayList<HashMap> list = new ArrayList<>();
diff --git a/src/main/java/com/nq/controller/StockIndexApiController.java b/src/main/java/com/nq/controller/StockIndexApiController.java
index 135cafb..ae2945d 100644
--- a/src/main/java/com/nq/controller/StockIndexApiController.java
+++ b/src/main/java/com/nq/controller/StockIndexApiController.java
@@ -39,8 +39,8 @@
 //            serverResponse = this.iStockIndexService.queryListIndex(request);
 //            CacheUtil.set("queryListIndex", serverResponse, 6000);
 //        }
-//        return this.iStockIndexService.queryListIndex(request);
-        return ServerResponse.createByError();
+        return this.iStockIndexService.queryListIndex(request);
+//        return ServerResponse.createByError();
     }
 
     @RequestMapping({"queryTransIndex.do"})
diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index a9a99aa..4fb2525 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -64,8 +64,8 @@
     //添加到自选股
     @RequestMapping({"addOption.do"})
     @ResponseBody
-    public ServerResponse addOption(@RequestParam("code") String code, HttpServletRequest request) {
-        return this.iUserService.addOption(code, request);
+    public ServerResponse addOption(@RequestParam("stockType") String stockType,@RequestParam("code") String code, HttpServletRequest request) {
+        return this.iUserService.addOption(stockType,code, request);
     }
 
     //删除自选股
diff --git a/src/main/java/com/nq/dao/StockIndexMapper.java b/src/main/java/com/nq/dao/StockIndexMapper.java
index 5fdee61..b5c40b0 100644
--- a/src/main/java/com/nq/dao/StockIndexMapper.java
+++ b/src/main/java/com/nq/dao/StockIndexMapper.java
@@ -26,4 +26,6 @@
   List queryHomeIndex();
   
   List queryListIndex();
+
+  List queryListIndexType(@Param("stockType") String stockType);
 }
diff --git a/src/main/java/com/nq/dao/StockMapper.java b/src/main/java/com/nq/dao/StockMapper.java
index a6745b8..67bf730 100644
--- a/src/main/java/com/nq/dao/StockMapper.java
+++ b/src/main/java/com/nq/dao/StockMapper.java
@@ -26,6 +26,10 @@
 
   Stock findStockByCode(String paramString);
 
+  Stock findStockByCodeAndType(@Param("stockType") String stockType,@Param("code") String code);
+
+
+
   Stock findStockByName(String paramString);
 
   List listByAdmin(@Param("showState") Integer paramInteger1, @Param("lockState") Integer paramInteger2, @Param("code") String paramString1, @Param("name") String paramString2, @Param("stockPlate") String paramString3, @Param("stockType") String paramString4);
diff --git a/src/main/java/com/nq/pojo/StockOption.java b/src/main/java/com/nq/pojo/StockOption.java
index 8234d45..7865571 100644
--- a/src/main/java/com/nq/pojo/StockOption.java
+++ b/src/main/java/com/nq/pojo/StockOption.java
@@ -10,6 +10,7 @@
     private String stockName;
     private String stockGid;
     private Integer isLock;
+    private String stockType;
 
     public StockOption(Integer id, Integer userId, Integer stockId, Date addTime, String stockCode, String stockName, String stockGid, Integer isLock) {
         this.id = id;
@@ -89,4 +90,12 @@
     public void setIsLock(Integer isLock) {
         this.isLock = isLock;
     }
+
+    public String getStockType() {
+        return stockType;
+    }
+
+    public void setStockType(String stockType) {
+        this.stockType = stockType;
+    }
 }
diff --git a/src/main/java/com/nq/pojo/UserPosition.java b/src/main/java/com/nq/pojo/UserPosition.java
index 5ba480e..b61da4e 100644
--- a/src/main/java/com/nq/pojo/UserPosition.java
+++ b/src/main/java/com/nq/pojo/UserPosition.java
@@ -47,6 +47,7 @@
     private Integer isLock;
     private String lockMsg;
     private String stockPlate;
+    private String stockType;
     /*点差费金额*/
     private BigDecimal spreadRatePrice;
     /*追加保证金额*/
@@ -528,5 +529,13 @@
     public void setBuyOrderIdIndex(BigDecimal buyOrderIdIndex) {
         this.buyOrderIdIndex = buyOrderIdIndex;
     }
+
+    public String getStockType() {
+        return stockType;
+    }
+
+    public void setStockType(String stockType) {
+        this.stockType = stockType;
+    }
 }
 
diff --git a/src/main/java/com/nq/service/IStockService.java b/src/main/java/com/nq/service/IStockService.java
index 279922d..df265c5 100644
--- a/src/main/java/com/nq/service/IStockService.java
+++ b/src/main/java/com/nq/service/IStockService.java
@@ -42,7 +42,7 @@
   void bj1();
   ServerResponse getDateline(HttpServletResponse paramHttpServletResponse, String paramString);
 
-  ServerResponse getSingleStock(String paramString,HttpServletRequest request);
+  ServerResponse getSingleStock(String stockType,String paramString,HttpServletRequest request);
 
   ServerResponse getMinK(String paramString, Integer paramInteger1, Integer paramInteger2, Integer paramInteger3);
 
@@ -111,7 +111,7 @@
    * @param node  排序的主板类型 科创板  创业板 a股  北交所等
    * @return
    */
-  ServerResponse getStockSort(Integer pageNo, Integer pageSize, String sort, Integer asc, String node);
+  ServerResponse getStockSort(Integer pageNo, Integer pageSize, String sort, Integer asc, String node,String stockType);
 
   /**
    * 涨停板
diff --git a/src/main/java/com/nq/service/IUserService.java b/src/main/java/com/nq/service/IUserService.java
index 8cf01de..2bc7d4d 100644
--- a/src/main/java/com/nq/service/IUserService.java
+++ b/src/main/java/com/nq/service/IUserService.java
@@ -3,6 +3,7 @@
 
 import com.nq.common.ServerResponse;
 import com.nq.pojo.User;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.math.BigDecimal;
 import javax.servlet.http.HttpServletRequest;
@@ -16,7 +17,7 @@
 
   User getCurrentRefreshUser(HttpServletRequest paramHttpServletRequest);
 
-  ServerResponse addOption(String paramString, HttpServletRequest paramHttpServletRequest);
+  ServerResponse addOption(String stockType, String paramString, HttpServletRequest paramHttpServletRequest);
 
   ServerResponse delOption(String paramString, HttpServletRequest paramHttpServletRequest);
 
diff --git a/src/main/java/com/nq/service/impl/StockIndexServiceImpl.java b/src/main/java/com/nq/service/impl/StockIndexServiceImpl.java
index afe96f2..98f247c 100644
--- a/src/main/java/com/nq/service/impl/StockIndexServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockIndexServiceImpl.java
@@ -6,6 +6,7 @@
 import com.github.pagehelper.PageInfo;
 import com.google.common.collect.Lists;
 import com.nq.common.ServerResponse;
+import com.nq.config.StockType;
 import com.nq.dao.StockIndexMapper;
 import com.nq.pojo.StockIndex;
 import com.nq.pojo.User;
@@ -51,7 +52,7 @@
         List<StockIndex> stockIndexList = this.stockIndexMapper.listByAdmin(homeShow, listShow, transState, indexCode, indexName);
         List<StockIndexVO> stockIndexVOS = Lists.newArrayList();
         for (StockIndex stockIndex : stockIndexList) {
-            StockIndexVO stockIndexVO = assembleStockIndexVO(stockIndex);
+            StockIndexVO stockIndexVO = assembleStockIndexVO(stockIndex,null);
             stockIndexVOS.add(stockIndexVO);
         }
         PageInfo pageInfo = new PageInfo(stockIndexList);
@@ -60,7 +61,7 @@
         return ServerResponse.createBySuccess(pageInfo);
     }
 
-    private StockIndexVO assembleStockIndexVO(StockIndex stockIndex) {
+    private StockIndexVO assembleStockIndexVO(StockIndex stockIndex,String stockType) {
         StockIndexVO stockIndexVO = new StockIndexVO();
 
         stockIndexVO.setId(stockIndex.getId());
@@ -78,13 +79,54 @@
         stockIndexVO.setAddTime(stockIndex.getAddTime());
         stockIndexVO.setTDesc(stockIndex.getTDesc());
 
-        MarketVO marketVO = querySingleIndex(stockIndex.getIndexGid());
+        MarketVO marketVO = null;
+        if(StockType.A.getCode().equals(stockType)){
+            marketVO = querySingleIndex(stockIndex.getIndexGid());
+        }else {
+            marketVO = querySingleIndexHk(stockIndex.getIndexGid());
+        }
 
         stockIndexVO.setCurrentPoint(marketVO.getNowPrice());
         stockIndexVO.setFloatPoint(marketVO.getIncrease());
         stockIndexVO.setFloatRate(marketVO.getIncreaseRate());
         stockIndexVO.setType(marketVO.getType());
         return stockIndexVO;
+    }
+
+    public MarketVO querySingleIndexHk(String indexCode) {
+        MarketVO marketVO = null;
+
+        String market_url = PropertiesUtil.getProperty("sina.single.market.hkurl");
+
+        String result = null;
+        try {
+            market_url = market_url + indexCode;
+            //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            //System.out.print("指数请求开始,时间:"+sdf.format(new Date())+",market_url:"+market_url + "\n");
+
+            result = HttpClientRequest.doGet(market_url);
+            //System.out.print("指数请求结束,时间:"+sdf.format(new Date())+",result:"+result + "\n");
+        } catch (Exception e) {
+            log.error("获取 大盘指数 出错 e = {}", e);
+        }
+        try {
+            if (StringUtils.isNotBlank(result)) {
+                result = result.substring(result.indexOf("\"") + 1, result.lastIndexOf("\""));
+
+                marketVO = new MarketVO();
+                if (result.contains(",")) {
+                    String[] sh01_arr = result.split(",");
+                    marketVO.setName(sh01_arr[0]);
+                    marketVO.setNowPrice(sh01_arr[6]);
+                    marketVO.setIncrease(sh01_arr[7]);
+                    marketVO.setIncreaseRate(sh01_arr[8]);
+                }
+            }
+        } catch (Exception e) {
+            log.error("转换大盘指数出错 str = {} ,  e = {}", result, e);
+        }
+
+        return marketVO;
     }
 
 
@@ -162,11 +204,12 @@
 
 
     public ServerResponse queryListIndex(HttpServletRequest request) {
-        List<StockIndex> list = this.stockIndexMapper.queryListIndex();
         List<StockIndexVO> stockIndexVOS = Lists.newArrayList();
+        String stockType = request.getParameter("stockType");
+        List<StockIndex> list = this.stockIndexMapper.queryListIndexType(stockType);
         User user = iUserService.getCurrentUser(request);
         for (StockIndex stockIndex : list) {
-            StockIndexVO stockIndexVO = assembleStockIndexVO(stockIndex);
+            StockIndexVO stockIndexVO = assembleStockIndexVO(stockIndex,stockType);
             //是否添加自選
             if (user == null) {
                 stockIndexVO.setIsOption("0");
diff --git a/src/main/java/com/nq/service/impl/StockOptionServiceImpl.java b/src/main/java/com/nq/service/impl/StockOptionServiceImpl.java
index 51c50b7..7b442a3 100644
--- a/src/main/java/com/nq/service/impl/StockOptionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockOptionServiceImpl.java
@@ -8,6 +8,7 @@
 
  import com.nq.common.ServerResponse;
 
+ import com.nq.config.StockType;
  import com.nq.dao.StockMapper;
 
  import com.nq.dao.StockOptionMapper;
@@ -71,7 +72,7 @@
 
      List<StockOptionListVO> stockOptionListVOS = Lists.newArrayList();
      for (StockOption option : stockOptions) {
-       StockOptionListVO stockOptionListVO = assembleStockOptionListVO(option);
+       StockOptionListVO stockOptionListVO = assembleStockOptionListVO(option,option.getStockType());
        stockOptionListVO.setIsOption("1");
        stockOptionListVOS.add(stockOptionListVO);
      }
@@ -106,7 +107,7 @@
 
      }
 
-   private StockOptionListVO assembleStockOptionListVO(StockOption option) {
+   private StockOptionListVO assembleStockOptionListVO(StockOption option,String stockType) {
 
          StockOptionListVO stockOptionListVO = new StockOptionListVO();
 
@@ -130,7 +131,11 @@
          } else {
              stockVO= SinaStockApi.assembleLideStockVO(LiDeDataUtils.getStock(option.getStockCode()));
              if(ObjectUtils.isEmpty(stockVO)){
-                 stockVO = SinaStockApi.assembleStockVO(SinaStockApi.getSinaStock(option.getStockGid()));
+                 if(StockType.HK.getCode().equals(stockType)){
+                     stockVO = SinaStockApi.otherStockVO(SinaStockApi.getSinaStock(StockType.HK.getCode()+option.getStockGid()));
+                 }else {
+                     stockVO = SinaStockApi.assembleStockVO(SinaStockApi.getSinaStock(option.getStockGid()));
+                 }
              }
          }
          stockOptionListVO.setNowPrice(stockVO.getNowPrice());
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index cfdea37..e1e0312 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -10,6 +10,7 @@
 import com.google.common.collect.Maps;
 import com.nq.common.ServerResponse;
 import com.nq.config.StockPoll;
+import com.nq.config.StockType;
 import com.nq.dao.RealTimeMapper;
 import com.nq.dao.StockFuturesMapper;
 import com.nq.dao.StockIndexMapper;
@@ -35,6 +36,7 @@
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.text.SimpleDateFormat;
@@ -292,7 +294,7 @@
     return ServerResponse.createBySuccess(echartsDataVO);
   }
 
-  public ServerResponse getSingleStock(String code,HttpServletRequest request) {
+  public ServerResponse getSingleStock(String stockType,String code,HttpServletRequest request) {
     if (StringUtils.isBlank(code))
       return ServerResponse.createByErrorMsg("");
     Stock stock = new Stock();
@@ -326,8 +328,11 @@
 
 //
     } else {//股票
-
-      stock = this.stockMapper.findStockByCode(code);
+      if(StockType.HK.getCode().equals(stockType)){
+        stock = this.stockMapper.findStockByCodeAndType(stockType,code);
+      }else {
+        stock = this.stockMapper.findStockByCode(code);
+      }
       if (stock == null)
         return ServerResponse.createByErrorMsg("");
           if (request.getHeader("lang") != null && !request.getHeader("lang").equals("zh-CN") && !request.getHeader("lang").equals("tww") && !request.getHeader("lang").equals("")) {
@@ -345,14 +350,19 @@
     //股票数据
     StockVO stockVO = new StockVO();
 
-        String sinaResult = SinaStockApi.getSinaStock(gid);
+//    String sinaResult = SinaStockApi.getSinaStock(gid);
 
     stockVO= SinaStockApi.assembleLideStockVO(LiDeDataUtils.getStock(stock.getStockCode()));
     if(ObjectUtils.isEmpty(stockVO)){
-      stockVO = SinaStockApi.assembleStockVO(SinaStockApi.getSinaStock(stock.getStockGid()));
-      if (code.contains("hf")) {
-        stockVO = SinaStockApi.assembleStockFuturesVO(sinaResult);
+      if(StockType.HK.getCode().equals(stockType)){
+        stockVO = SinaStockApi.otherStockVO(SinaStockApi.getSinaStock(StockType.HK.getCode()+stock.getStockGid()));
+      }else {
+        stockVO = SinaStockApi.assembleStockVO(SinaStockApi.getSinaStock(stock.getStockGid()));
       }
+
+//      if (code.contains("hf")) {
+//        stockVO = SinaStockApi.assembleStockFuturesVO(sinaResult);
+//      }
     }
 
 //        if (code.contains("hf")) {
@@ -632,8 +642,12 @@
 
   public ServerResponse selectRateByDaysAndStockCode(String stockCode, int days) {
     Stock stock = this.stockMapper.findStockByCode(stockCode);
-    if (stock == null)
-      return ServerResponse.createByErrorMsg("没有该股票");
+    if (stock == null) {
+      //再查港股
+      stock = this.stockMapper.findStockByCodeAndType(StockType.HK.getCode(),stockCode);
+      if (stock == null)
+        return ServerResponse.createByErrorMsg("没有该股票");
+    }
     BigDecimal daysRate = this.iStockMarketsDayService.selectRateByDaysAndStockCode(stock.getId(), days);
     return ServerResponse.createBySuccess(daysRate);
   }
@@ -792,16 +806,45 @@
    * @return
    */
   @Override
-  public ServerResponse getStockSort(Integer pageNo, Integer pageSize, String sort, Integer asc, String node) {
-//    String market_url = PropertiesUtil.getProperty("sina.market.zdf.url");
-    String result = null;
-    String param="page="+pageNo+"&num="+pageSize+"&sort="+sort+"&asc="+asc+"&node="+node+"&symbol=&_s_r_a=sort";
-//    String url=market_url+param;
-//    result = HttpClientRequest.doGet(url);
-//
-    result = HttpClientRequest.doGet("http://111.170.140.248:7001/crypto/getStockSort.do?" + param);
-    com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(result);
-    return ServerResponse.createBySuccess(jsonArray);
+  public ServerResponse getStockSort(Integer pageNo, Integer pageSize, String sort, Integer asc, String node,String stockType) {
+    String market_url = "";
+    String param = "";
+    if(StockType.A.getCode().equals(stockType)){
+      market_url = PropertiesUtil.getProperty("sina.market.zdf.url");
+      param="page="+pageNo+"&num="+pageSize+"&sort="+sort+"&asc="+asc+"&node="+node+"&symbol=&_s_r_a=sort";
+      String result = null;
+      String url=market_url+param;
+      result = HttpClientRequest.doGet(url);
+      com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(result);
+      return ServerResponse.createBySuccess(jsonArray);
+    }else {
+      market_url = PropertiesUtil.getProperty("sina.market.zdf.urlhk");
+      param="page="+pageNo+"&num="+pageSize+"&sort="+sort+"&asc="+asc+"&node="+node+"&symbol=&_s_r_a=sort";
+      String result = null;
+      String url=market_url+param;
+      result = HttpClientRequest.doGet(url);
+      com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(result);
+      for (int i = 0; i < jsonArray.size(); i++) {
+        com.alibaba.fastjson.JSONObject obj = jsonArray.getJSONObject(i);
+        obj.put("buy",obj.get("lasttrade"));
+        obj.put("stock_type","hk");
+        for (String key : obj.keySet()) {
+          if(key.equals("symbol")){
+            continue;
+          }
+          Object value = obj.get(key);
+          if (value instanceof String) {
+            try {
+              BigDecimal bd = new BigDecimal((String) value);
+              obj.put(key, bd.setScale(3, RoundingMode.HALF_UP).stripTrailingZeros().toPlainString());
+            } catch (NumberFormatException e) {
+              // 非数字值保持原样
+            }
+          }
+        }
+      }
+      return ServerResponse.createBySuccess(jsonArray);
+    }
   }
 
   /**
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 61f7920..719fdfd 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.gson.Gson;
+import com.nq.config.StockType;
 import com.nq.dao.*;
 import com.nq.pojo.*;
 import com.nq.service.*;
@@ -169,7 +170,7 @@
             boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
             boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
             log.info("是否在上午交易时间 = {} 是否在下午交易时间 = {}", Boolean.valueOf(am_flag), Boolean.valueOf(pm_flag));
-
+            //TODO
             if (!am_flag && !pm_flag) {
                 return ServerResponse.createByErrorMsg("下单失败,不在港股股交易时段内");
             }
@@ -225,40 +226,13 @@
         //股票类型 现价 数据源的处理
         stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(stock.getStockCode()));
         if (ObjectUtils.isEmpty(stockListVO)) {
-            stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(stock.getStockGid()));
+            if(StockType.HK.getCode().equals(stock.getStockType())){
+                stockListVO = SinaStockApi.assembleStockListVOHk(SinaStockApi.getSinaStock(StockType.HK.getCode()+stock.getStockGid()));
+            }else {
+                stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(stock.getStockGid()));
+            }
         }
         now_price = new BigDecimal(stockListVO.getNowPrice());
-//        if (stock.getDataBase()!=0){
-//             String date = getCurrentTimeMiaoZero();
-//            String result = HttpClientRequest.doGet(PropertiesUtil.getProperty("changePrice.url")+"?cat_time="+date+"&stock_gid="+stock.getStockGid()+"&price="+stockListVO.getNowPrice());
-//            JSONObject jsonObject = JSONObject.fromObject(result);
-//            String nowPrice = jsonObject.getJSONObject("data").getString("new_price");
-//            if (nowPrice!=null){
-//                if ("us".equals(stock.getStockType())){
-//                    ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("USD").getData();
-//                    now_price =new BigDecimal(nowPrice).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                } else if ("hk".equals(stock.getStockType())){
-//                    ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("HKD").getData();
-//                    now_price =new BigDecimal(nowPrice).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                } else {
-//                    now_price = new BigDecimal(nowPrice);
-//                }
-//
-//            }else {
-//                stockListVO.setNowPrice(stockListVO.getNowPrice());
-//                if ("us".equals(stock.getStockType())){
-//                    ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("USD").getData();
-//                    now_price =new BigDecimal(nowPrice).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                } else if ("hk".equals(stock.getStockType())){
-//                    ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("HKD").getData();
-//                    now_price =new BigDecimal(nowPrice).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                } else {
-//                    now_price = new BigDecimal(nowPrice);
-//                }
-//            }
-//        }
-//            String stockOther = RedisShardedPoolUtils.get(stock.getStockName(), 8);
-
 
         if (now_price.compareTo(new BigDecimal("0")) == 0) {
             return ServerResponse.createByErrorMsg("报价0,请稍后再试");
@@ -341,8 +315,14 @@
         }
 
 
-        ServerResponse serverResponse = this.iStockService.selectRateByDaysAndStockCode(stock
-                .getStockCode(), siteSetting.getStockDays().intValue());
+        ServerResponse serverResponse = null;
+        if(StockType.HK.getCode().equals(stock.getStockType())){
+            serverResponse = this.iStockService.selectRateByDaysAndStockCode(stock
+                    .getStockGid(), siteSetting.getStockDays().intValue());
+        }else {
+            serverResponse = this.iStockService.selectRateByDaysAndStockCode(stock
+                    .getStockCode(), siteSetting.getStockDays().intValue());
+        }
         if (!serverResponse.isSuccess()) {
             return serverResponse;
         }
@@ -416,7 +396,7 @@
         userPosition.setBuyOrderTime(new Date());
         userPosition.setBuyOrderPrice(now_price);
         userPosition.setOrderDirection((buyType.intValue() == 0) ? "买涨" : "买跌");
-
+        userPosition.setStockType(stock.getStockType());
         userPosition.setOrderNum(buyNum);
 
 
@@ -646,39 +626,13 @@
         //股票賣出的 價格 數據源
         stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(userPosition.getStockCode()));
         if (ObjectUtils.isEmpty(stockListVO)) {
-            stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(userPosition.getStockGid()));
+            if(StockType.HK.getCode().equals(userPosition.getStockType())){
+                stockListVO = SinaStockApi.assembleStockListVOHk(SinaStockApi.getSinaStock(StockType.HK.getCode()+userPosition.getStockGid()));
+            }else {
+                stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(userPosition.getStockGid()));
+            }
+//            stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(userPosition.getStockGid()));
         }
-        //stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(userPosition.getStockGid()));
-//            if (stock.getDataBase() != 0) {
-//                  String date = getCurrentTimeMiaoZero();
-//                String result = HttpClientRequest.doGet(PropertiesUtil.getProperty("changePrice.url")+"?cat_time="+date+"&stock_gid="+stock.getStockGid()+"&price="+stockListVO.getNowPrice());
-//                JSONObject jsonObject = JSONObject.fromObject(result);
-//                String nowPrice1 = jsonObject.getJSONObject("data").getString("new_price");
-//                if (nowPrice1!=null){
-//                    if ("us".equals(stock.getStockType())){
-//                        ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("USD").getData();
-//                        now_price = new BigDecimal(nowPrice1).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                    } else if ("hk".equals(stock.getStockType())){
-//                        ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("HKD").getData();
-//                        now_price = new BigDecimal(nowPrice1).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                    } else {
-//                        now_price = new BigDecimal(nowPrice1);
-//                    }
-//
-//                }else {
-//                    stockListVO.setNowPrice(stockListVO.getNowPrice());
-//                    if ("us".equals(stock.getStockType())){
-//                        ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("USD").getData();
-//                        now_price = new BigDecimal(stockListVO.getNowPrice()).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                    } else if ("hk".equals(stock.getStockType())){
-//                        ExchangeVO exchangeVO = this.iStockFuturesService.queryExchangeVO("HKD").getData();
-//                        now_price = new BigDecimal(stockListVO.getNowPrice()).multiply(new BigDecimal(exchangeVO.getNowPrice()));
-//                    } else {
-//                        now_price = new BigDecimal(stockListVO.getNowPrice());
-//                    }
-//                }
-//
-//        }
 
         if (stockListVO.getNowPrice() == null) {
             return ServerResponse.createByErrorMsg("平仓失败,获取股票信息失败");
@@ -1221,11 +1175,14 @@
 
             StockListVO stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(position.getStockCode()));
             if (ObjectUtils.isEmpty(stockListVO)) {
-                stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
+                if(StockType.HK.getCode().equals(position.getStockType())){
+                    stockListVO = SinaStockApi.assembleStockListVOHk(SinaStockApi.getSinaStock(position.getStockType()+position.getStockGid()));
+                }else {
+                    stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
+                }
             }
 
             if (stockListVO.getNowPrice() == null || new BigDecimal(stockListVO.getNowPrice()).compareTo(BigDecimal.ZERO) <= 0) {
-//                stockListVO.setNowPrice("0");
                 stockListVO.setNowPrice(String.valueOf(position.getBuyOrderIdIndex()));
             }
 
@@ -1239,7 +1196,6 @@
                 BigDecimal subPrice = nowPrice.subtract(buyPrice);
 
                 BigDecimal profit_and_lose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue()));
-                //BigDecimal profit_and_lose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).divide(new BigDecimal(position.getOrderLever())).setScale(2,4);
                 if ("买跌".equals(position.getOrderDirection())) {
                     profit_and_lose = profit_and_lose.negate();
                 }
@@ -1255,7 +1211,6 @@
 
 
                 BigDecimal position_freez = position.getOrderTotalPrice().divide(new BigDecimal(position.getOrderLever().intValue()), 2, 4);
-                //BigDecimal position_freez = position.getOrderTotalPrice();
                 allFreezAmt = allFreezAmt.add(position_freez).add(position.getMarginAdd());
                 continue;
             }
@@ -1873,12 +1828,14 @@
             allProfitAndLose = profitAndLose.subtract(position.getOrderFee()).subtract(position.getOrderSpread()).subtract(position.getOrderStayFee()).subtract(position.getSpreadRatePrice());
         } else {
             StockListVO stockListVO = new StockListVO();
-            StockCoin stockCoin = new StockCoin();
             stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(position.getStockCode()));
             if (ObjectUtils.isEmpty(stockListVO)) {
-                stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
+                if(StockType.HK.getCode().equals(position.getStockType())){
+                    stockListVO = SinaStockApi.assembleStockListVOHk(SinaStockApi.getSinaStock(StockType.HK.getCode()+position.getStockGid()));
+                }else {
+                    stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
+                }
             }
-            //    stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
             nowPrice = stockListVO.getNowPrice();
             if (nowPrice == null || new BigDecimal(stockListVO.getNowPrice()).compareTo(BigDecimal.ZERO) <= 0) {
                 if(null != position.getBuyOrderIdIndex() && position.getBuyOrderIdIndex().compareTo(BigDecimal.ZERO) > 0){
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index f632221..5cbab4a 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -7,6 +7,7 @@
 import com.google.common.collect.Lists;
 import com.nq.common.ServerResponse;
 import com.nq.config.StockPoll;
+import com.nq.config.StockType;
 import com.nq.dao.*;
 import com.nq.pojo.*;
 import com.nq.service.*;
@@ -45,6 +46,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestParam;
 
 @Service("iUserService")
 public class UserServiceImpl implements IUserService {
@@ -255,15 +257,13 @@
         }
     }
 
-    public ServerResponse addOption(String code, HttpServletRequest request) {
+    public ServerResponse addOption(String stockType, String code, HttpServletRequest request) {
         User user = getCurrentUser(request);
         if (user == null) {
             return ServerResponse.createBySuccessMsg("請先登錄");
         }
+
         String stockcode = code;
-        if(code.contains("hf")){
-            stockcode = code.split("_")[1];
-        }
         stockcode = stockcode.replace("sh","").replace("sz","").replace("bj","");
         StockOption dboption = this.stockOptionMapper.findMyOptionIsExistByCode(user.getId(), stockcode);
 
@@ -293,7 +293,11 @@
 //                stock.setIsLock(0);
 //            }
         } else {
-            stock = this.stockMapper.findStockByCode(code);
+            if(StockType.HK.getCode().equals(stockType)) {
+                stock = stockMapper.findStockByCodeAndType(stockType,code);
+            }else {
+                stock = this.stockMapper.findStockByCode(code);
+            }
         }
         if (stock == null) {
             return ServerResponse.createByErrorMsg("添加失败,股票不存在");
@@ -302,7 +306,14 @@
         stockOption.setUserId(user.getId());
         stockOption.setStockId(stock.getId());
         stockOption.setAddTime(new Date());
-        stockOption.setStockCode(stock.getStockCode());
+
+        if(StockType.HK.getCode().equals(stockType)) {
+            stockOption.setStockCode(stock.getStockGid());
+            stockOption.setStockType(StockType.HK.getCode());
+        }else {
+            stockOption.setStockCode(stock.getStockCode());
+            stockOption.setStockType(StockType.A.getCode());
+        }
         stockOption.setStockName(stock.getStockName());
         stockOption.setStockGid(stock.getStockGid());
         stockOption.setIsLock(stock.getIsLock());
@@ -1867,31 +1878,6 @@
             }
         }
         userInfoVO.setHistoryProfitLoss(historyProfitLoss);
-
-//        IndexPositionVO indexPositionVO = this.iUserIndexPositionService.findUserIndexPositionAllProfitAndLose(user.getId());
-//        BigDecimal allIndexProfitAndLose = indexPositionVO.getAllIndexProfitAndLose();
-//        userInfoVO.setAllIndexProfitAndLose(allIndexProfitAndLose);
-//        userInfoVO.setAllIndexFreezAmt(indexPositionVO.getAllIndexFreezAmt());
-//
-//        BigDecimal userAllIndexAmt = user.getUserIndexAmt();
-//        userAllIndexAmt = userAllIndexAmt.add(allIndexProfitAndLose);
-//        userInfoVO.setUserIndexAmt(userAllIndexAmt);
-//
-//        userInfoVO.setEnableFuturesAmt(user.getEnableFutAmt());
-//
-//
-//        FuturesPositionVO futuresPositionVO = this.iUserFuturesPositionService.findUserFuturesPositionAllProfitAndLose(user.getId());
-//
-//        userInfoVO.setAllFuturesFreezAmt(futuresPositionVO.getAllFuturesDepositAmt());
-//
-//
-//        BigDecimal allFuturesProfitAndLose = futuresPositionVO.getAllFuturesProfitAndLose();
-//        userInfoVO.setAllFuturesProfitAndLose(allFuturesProfitAndLose);
-
-
-//        BigDecimal userAllFuturesAmt = user.getUserFutAmt();
-//        userAllFuturesAmt = userAllFuturesAmt.add(allFuturesProfitAndLose);
-//        userInfoVO.setUserFuturesAmt(userAllFuturesAmt);
         userInfoVO.setDjzj(user.getDjzj());
         return userInfoVO;
     }
@@ -1960,16 +1946,19 @@
             StockCoin stockCoin = new StockCoin();
             stockListVO = SinaStockApi.assembleLideStockListVO(LiDeDataUtils.getStock(position.getStockCode()));
             if (org.springframework.util.ObjectUtils.isEmpty(stockListVO)) {
-                stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
+                if(StockType.HK.getCode().equals(position.getStockType())){
+                    stockListVO = SinaStockApi.assembleStockListVOHk(SinaStockApi.getSinaStock(position.getStockType()+position.getStockGid()));
+                }else {
+                    stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
+                }
+
             }
-            //    stockListVO = SinaStockApi.assembleStockListVO(SinaStockApi.getSinaStock(position.getStockGid()));
             nowPrice = stockListVO.getNowPrice();
             if (nowPrice == null) {
                 nowPrice = String.valueOf(0);
             }
 
             BigDecimal subPrice = (new BigDecimal(nowPrice)).subtract(position.getBuyOrderPrice());
-//            profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).multiply(new BigDecimal(position.getOrderLever())).setScale(2,4);
             profitAndLose = subPrice.multiply(new BigDecimal(position.getOrderNum().intValue())).setScale(2,4);
             if ("买跌".equals(position.getOrderDirection())) {
                 profitAndLose = profitAndLose.negate();
diff --git a/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java b/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
index adc3426..88adf41 100644
--- a/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
+++ b/src/main/java/com/nq/utils/stock/sina/SinaStockApi.java
@@ -40,8 +40,9 @@
 //            System.out.println(sina_url + stockGid);
 //            sina_result = HttpClientRequest.doGet(sina_url + stockGid);
 //            System.out.println("请求返回:"+sina_result);
-            System.out.println("http://111.170.140.248:7001/crypto/getSinaStock?stockGid=" + stockGid);
-            sina_result = HttpClientRequest.doGet("http://111.170.140.248:7001/crypto/getSinaStock?stockGid=" + stockGid);
+
+            System.out.println(PropertiesUtil.getProperty("sina.data.proxy.list.url") + stockGid);
+            sina_result = HttpClientRequest.doGet(PropertiesUtil.getProperty("sina.data.proxy.list.url") + stockGid);
             System.out.println("请求返回:"+sina_result);
 //            sina_result = "var hq_str_sz300270=\"中威电子,0.000,11.710,0.000,0.000,0.000,0.000,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,0,0.000,2025-12-03,09:10:06,00\";";
         } catch (Exception e) {
@@ -49,6 +50,8 @@
         }
         return sina_result.substring(sina_result.indexOf("=") + 2);
     }
+
+
 
 
     /**
@@ -115,6 +118,34 @@
             stockListVO.setPreclose_px(hqarr[2]);
 
             stockListVO.setOpen_px(hqarr[1]);
+        }
+
+        return stockListVO;
+    }
+    public static StockListVO assembleStockListVOHk(String sinaResult) {
+        StockListVO stockListVO = new StockListVO();
+
+        String[] hqarr = sinaResult.split(",");
+
+        if (hqarr.length > 1) {
+
+            stockListVO.setName(hqarr[1]);
+
+            stockListVO.setNowPrice(hqarr[6]);
+
+            stockListVO.setHcrate(new BigDecimal(hqarr[8]));
+
+            stockListVO.setToday_max(hqarr[4]);
+
+            stockListVO.setToday_min(hqarr[5]);
+
+            stockListVO.setBusiness_amount(hqarr[11]);
+
+            stockListVO.setBusiness_balance(hqarr[12]);
+
+            stockListVO.setPreclose_px(hqarr[3]);
+
+            stockListVO.setOpen_px(hqarr[2]);
         }
 
         return stockListVO;
@@ -254,53 +285,28 @@
     }
     //hk  数据转换
     public static StockVO otherStockVO(String Result) {
-        StockVO stockVO = new StockVO();
-        //判断是否是
-        JSONObject jsonObject = JSONObject.parseObject(Result);
-        stockVO.setName(jsonObject.getString("f14"));
+        String[] fields = Result.split(",");
+        StockVO stock = new StockVO();
+        stock.setName(fields[1]); // 中文名称
+        stock.setCode(""); // 需要从其他地方获取
+        stock.setSpell(fields[0]); // 英文名称
+        stock.setGid(""); // 需要从其他地方获取
+        stock.setNowPrice(fields[6]); // 当前价
+        stock.setHcrate(new BigDecimal(fields[8])); // 涨跌幅
+        stock.setToday_max(fields[4]); // 最高价
+        stock.setToday_min(fields[5]); // 最低价
+        stock.setBusiness_balance(fields[11]); // 成交量
+        stock.setBusiness_amount(fields[12]); // 成交额
+        stock.setPreclose_px(fields[3]); // 昨收价
+        stock.setOpen_px(fields[2]); // 开盘价
+        stock.setType("hk"); // 港股标识
 
-        stockVO.setNowPrice(!Objects.equals(jsonObject.getString("f2"), "-") ? jsonObject.getString("f2") : "0");
+        // 买卖盘数据(港股只有1档买卖盘数据)
+        stock.setBuy1(fields[9]); // 买一价
+        stock.setSell1(fields[10]); // 卖一价
+        // 其他买卖盘数据在港股中不可用,保持默认值
 
-        stockVO.setHcrate(new BigDecimal(!Objects.equals(jsonObject.getString("f3"), "-") ? jsonObject.getString("f3"): "0"));
-
-        stockVO.setToday_max(!Objects.equals(jsonObject.getString("f15"), "-") ? jsonObject.getString("f15") : "0");
-
-        stockVO.setToday_min(!Objects.equals(jsonObject.getString("f16"), "-") ? jsonObject.getString("f16") : "0");
-
-        stockVO.setBusiness_amount(!Objects.equals(jsonObject.getString("f6"), "-") ? jsonObject.getString("f6") : "0");
-
-        stockVO.setBusiness_balance(!Objects.equals(jsonObject.getString("f5"), "-") ? jsonObject.getString("f5") : "0");
-
-        stockVO.setPreclose_px(!Objects.equals(jsonObject.getString("f18"), "-") ? jsonObject.getString("f18") : "0");
-
-        stockVO.setOpen_px(!Objects.equals(jsonObject.getString("f17"), "-") ? jsonObject.getString("f17") : "0");
-        stockVO.setType(jsonObject.getString("f13"));
-        String buy = "0";
-        stockVO.setBuy1(buy);
-        stockVO.setBuy2(buy);
-        stockVO.setBuy3(buy);
-        stockVO.setBuy4(buy);
-        stockVO.setBuy5(buy);
-
-        stockVO.setSell1(buy);
-        stockVO.setSell2(buy);
-        stockVO.setSell3(buy);
-        stockVO.setSell4(buy);
-        stockVO.setSell5(buy);
-
-        stockVO.setBuy1_num(buy);
-        stockVO.setBuy2_num(buy);
-        stockVO.setBuy3_num(buy);
-        stockVO.setBuy4_num(buy);
-        stockVO.setBuy5_num(buy);
-
-        stockVO.setSell1_num(buy);
-        stockVO.setSell2_num(buy);
-        stockVO.setSell3_num(buy);
-        stockVO.setSell4_num(buy);
-        stockVO.setSell5_num(buy);
-
-        return stockVO;
+        return stock;
     }
     //us  数据转换
     public static StockUsVO otherUsStockVO(String Result) {
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 7fcf800..b5479fb 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -77,6 +77,7 @@
 #sina.market.url=https://hq.sinajs.cn/rn=1520407404627&list=s_sh000001,s_sz399001,s_sz399006,s_sz399300,s_sz399005,s_sz399673
 sina.market.url=https://hq.sinajs.cn/rn=1520407404627&list=s_sh000001,s_sz399001,s_sz399006,s_sz399300,s_sz399005,s_sz399673,s_sz399106,s_sz399004,s_sz399100
 sina.single.market.url=https://hq.sinajs.cn/rn=1520407404627&list=s_
+sina.single.market.hkurl=https://hq.sinajs.cn/rn=1520407404627&list=rt_
 
 sina.index.market.url=https://ws.api.cnyes.com/ws/api/v4/universal/quote?type=LITQ&column=L
 
@@ -125,6 +126,7 @@
 dfcf.new.stock.url=https://datacenter-web.eastmoney.com/api/data/v1/get?sortColumns=APPLY_DATE,SECURITY_CODE&sortTypes=-1,-1&pageSize=35&pageNumber=1&reportName=RPTA_APP_IPOAPPLY&columns=SECURITY_CODE,SECURITY_NAME,TRADE_MARKET_CODE,APPLY_CODE,TRADE_MARKET,MARKET_TYPE,ORG_TYPE,ISSUE_NUM,ONLINE_ISSUE_NUM,OFFLINE_PLACING_NUM,TOP_APPLY_MARKETCAP,PREDICT_ONFUND_UPPER,ONLINE_APPLY_UPPER,PREDICT_ONAPPLY_UPPER,ISSUE_PRICE,LATELY_PRICE,CLOSE_PRICE,APPLY_DATE,BALLOT_NUM_DATE,BALLOT_PAY_DATE,LISTING_DATE,AFTER_ISSUE_PE&quoteColumns=f2~01~SECURITY_CODE~NEWEST_PRICE&quoteType=0&filter=(APPLY_DATE%3E%272022-06-20%27)&source=WEB&client=WEB
 #新浪财经涨跌幅查询接口
 sina.market.zdf.url=https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHQNodeData?
+sina.market.zdf.urlhk=https://vip.stock.finance.sina.com.cn/quotes_service/api/json_v2.php/Market_Center.getHKStockData?
 
 
 #????
@@ -158,6 +160,7 @@
 sina.TwMarket.list.url=http://b.workingman.icu/stock/api/stock/getStockType?exchange=TAI
 sina.StockType.list.url=http://b.workingman.icu/stock/api/stock/getStockType?exchange=
 sina.StockCategory.list.url=http://b.workingman.icu/stock/api/stock/getWapStocks
+sina.data.proxy.list.url=http://localhost:7001/crypto/getSinaStock?stockGid=
 
 http.proxyHost =
 http.proxyPort =
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 144e247..79ceb3f 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -2,7 +2,7 @@
 # 开发环境配置
 server:
   # 服务器的HTTP端口,默认为8090
-  port: 8091
+  port: 8092
   tomcat:
     # tomcat的URI编码
     uri-encoding: UTF-8
@@ -104,12 +104,12 @@
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driverClassName: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://127.0.0.1:3306/mix?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
-    username: mix
-    password: PsRwRm5nGbtS22Xp
-#    url: jdbc:mysql://127.0.0.1:3306/stock_hongta?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+#    url: jdbc:mysql://127.0.0.1:3306/stock_hongta_1226?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
 #    username: root
-#    password: 123456
+#    password: PsRwRm5nGbtS22Xp
+    url: jdbc:mysql://127.0.0.1:3306/stock_hongta_1226?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+    username: root
+    password: 123456
     druid:
       # 初始连接数
       initialSize: 5
diff --git a/src/main/resources/mapper/StockIndexMapper.xml b/src/main/resources/mapper/StockIndexMapper.xml
index 4597d49..17e28ac 100644
--- a/src/main/resources/mapper/StockIndexMapper.xml
+++ b/src/main/resources/mapper/StockIndexMapper.xml
@@ -270,6 +270,14 @@
     order by id asc
   </select>
 
+  <select id="queryListIndexType" resultMap="BaseResultMap">
+    SELECT
+    <include refid="Base_Column_List"/>
+    FROM stock_index
+    WHERE list_show = 1 AND stock_type=#{stockType}
+    order by id asc
+  </select>
+
 
 
 </mapper>
diff --git a/src/main/resources/mapper/StockMapper.xml b/src/main/resources/mapper/StockMapper.xml
index 7d7567f..76598ea 100644
--- a/src/main/resources/mapper/StockMapper.xml
+++ b/src/main/resources/mapper/StockMapper.xml
@@ -212,6 +212,12 @@
     from stock
     WHERE stock_code = #{code}
   </select>
+  <select id="findStockByCodeAndType" resultMap="BaseResultMap" parameterType="string">
+    SELECT
+    <include refid="Base_Column_List" />
+    from stock
+    WHERE stock_gid = #{code} AND stock_type=#{stockType}
+  </select>
   <select id="findStockByName" resultMap="BaseResultMap" parameterType="string">
     SELECT
     <include refid="Base_Column_List" />
diff --git a/src/main/resources/mapper/StockOptionMapper.xml b/src/main/resources/mapper/StockOptionMapper.xml
index b9832f2..f1c24d7 100644
--- a/src/main/resources/mapper/StockOptionMapper.xml
+++ b/src/main/resources/mapper/StockOptionMapper.xml
@@ -14,7 +14,7 @@
     </constructor>
   </resultMap>
   <sql id="Base_Column_List" >
-    id, user_id, stock_id, add_time, stock_code, stock_name, stock_gid, is_lock
+    id, user_id, stock_id, add_time, stock_code, stock_name, stock_gid, is_lock,stock_type
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
@@ -29,10 +29,10 @@
   <insert id="insert" parameterType="com.nq.pojo.StockOption" >
     insert into stock_option (id, user_id, stock_id, 
       add_time, stock_code, stock_name, 
-      stock_gid, is_lock)
+      stock_gid, is_lock,stock_type)
     values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, #{stockId,jdbcType=INTEGER}, 
       #{addTime,jdbcType=TIMESTAMP}, #{stockCode,jdbcType=VARCHAR}, #{stockName,jdbcType=VARCHAR}, 
-      #{stockGid,jdbcType=VARCHAR}, #{isLock,jdbcType=INTEGER})
+      #{stockGid,jdbcType=VARCHAR}, #{isLock,jdbcType=INTEGER},#{stockType,jdbcType=VARCHAR})
   </insert>
   <insert id="insertSelective" parameterType="com.nq.pojo.StockOption" >
     insert into stock_option
@@ -124,7 +124,8 @@
       stock_code = #{stockCode,jdbcType=VARCHAR},
       stock_name = #{stockName,jdbcType=VARCHAR},
       stock_gid = #{stockGid,jdbcType=VARCHAR},
-      is_lock = #{isLock,jdbcType=INTEGER}
+      is_lock = #{isLock,jdbcType=INTEGER},
+      stock_type = #{stockType,jdbcType=INTEGER}
     where id = #{id,jdbcType=INTEGER}
   </update>
 
diff --git a/src/main/resources/mapper/UserPositionMapper.xml b/src/main/resources/mapper/UserPositionMapper.xml
index 67df1d3..0d8bec7 100644
--- a/src/main/resources/mapper/UserPositionMapper.xml
+++ b/src/main/resources/mapper/UserPositionMapper.xml
@@ -45,7 +45,7 @@
     stock_gid, stock_spell, buy_order_id, buy_order_time, buy_order_price, sell_order_id, 
     sell_order_time, sell_order_price, profit_target_price, stop_target_price, order_direction, 
     order_num, order_lever, order_total_price, order_fee, order_spread, order_stay_fee, 
-    order_stay_days, profit_and_lose, all_profit_and_lose,is_lock,lock_msg,stock_plate,spread_rate_price,margin_add,buy_order_id_index
+    order_stay_days, profit_and_lose, all_profit_and_lose,is_lock,lock_msg,stock_plate,spread_rate_price,margin_add,buy_order_id_index,stock_type
   </sql>
   <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
     select 
@@ -67,7 +67,7 @@
       order_direction, order_num, order_lever, 
       order_total_price, order_fee, order_spread, 
       order_stay_fee, order_stay_days, profit_and_lose, 
-      all_profit_and_lose, is_lock, lock_msg,stock_plate,spread_rate_price)
+      all_profit_and_lose, is_lock, lock_msg,stock_plate,spread_rate_price,stock_type)
     values (#{id,jdbcType=INTEGER}, #{positionType,jdbcType=INTEGER}, #{positionSn,jdbcType=VARCHAR}, 
       #{userId,jdbcType=INTEGER}, #{nickName,jdbcType=VARCHAR}, #{agentId,jdbcType=INTEGER}, 
       #{stockName,jdbcType=VARCHAR}, #{stockCode,jdbcType=VARCHAR}, #{stockGid,jdbcType=VARCHAR}, 
@@ -78,7 +78,7 @@
       #{orderTotalPrice,jdbcType=DECIMAL}, #{orderFee,jdbcType=DECIMAL}, #{orderSpread,jdbcType=DECIMAL}, 
       #{orderStayFee,jdbcType=DECIMAL}, #{orderStayDays,jdbcType=INTEGER}, #{profitAndLose,jdbcType=DECIMAL}, 
       #{allProfitAndLose,jdbcType=DECIMAL}, #{isLock,jdbcType=INTEGER}, #{lockMsg,jdbcType=VARCHAR},
-      #{stockPlate,jdbcType=VARCHAR},#{spreadRatePrice,jdbcType=DECIMAL}
+      #{stockPlate,jdbcType=VARCHAR},#{spreadRatePrice,jdbcType=DECIMAL},#{stockType,jdbcType=VARCHAR}
       )
   </insert>
 

--
Gitblit v1.9.3