From 096984e49fd4acdf4943375ca9ccb78d9651e0f0 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 25 Jul 2024 10:25:21 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java |   10 +-
 src/main/java/com/nq/utils/task/YEBTask.java                         |    2 
 .idea/inspectionProfiles/Project_Default.xml                         |    8 ++
 src/main/java/com/nq/ws/WebsocketRunClient.java                      |    5 -
 src/main/java/com/nq/enums/EStockType.java                           |   10 ++
 src/main/java/com/nq/service/impl/StockServiceImpl.java              |    6 +-
 src/main/java/com/nq/controller/protol/UserController.java           |    2 
 src/main/java/com/nq/utils/task/stock/StockTask.java                 |   10 +++
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java       |    2 
 src/main/java/com/nq/service/impl/UserServiceImpl.java               |    3 
 src/main/resources/application.properties                            |    7 +
 src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java       |    4 
 src/main/java/com/nq/ws/WebSocketClientBeanConfig.java               |   27 +++++++++
 src/main/java/com/nq/ws/WebSocketInClient.java                       |   61 ++++++++++++++++++++
 14 files changed, 133 insertions(+), 24 deletions(-)

diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 4cc2f57..03a53c0 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -2,6 +2,13 @@
   <profile version="1.0">
     <option name="myName" value="Project Default" />
     <inspection_tool class="AliAccessStaticViaInstance" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliArrayNamingShouldHaveBracket" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliControlFlowStatementWithoutBraces" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliDeprecation" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliEqualsAvoidNull" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliLongLiteralsEndingWithLowercaseL" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliMissingOverrideAnnotation" enabled="true" level="WARNING" enabled_by_default="true" />
+    <inspection_tool class="AliWrapperTypeEquality" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="AlibabaAbstractClassShouldStartWithAbstractNaming" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="AlibabaAbstractMethodOrInterfaceMethodMustUseJavadoc" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="AlibabaAvoidApacheBeanUtilsCopy" enabled="true" level="WARNING" enabled_by_default="true" />
@@ -90,6 +97,7 @@
     <inspection_tool class="JavadocDeclaration" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="ADDITIONAL_TAGS" value="date" />
     </inspection_tool>
+    <inspection_tool class="MapOrSetKeyShouldOverrideHashCodeEquals" enabled="true" level="WARNING" enabled_by_default="true" />
     <inspection_tool class="MissingJavadoc" enabled="true" level="WARNING" enabled_by_default="true">
       <option name="PACKAGE_SETTINGS">
         <Options>
diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index 469ae58..703557a 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -114,7 +114,7 @@
                               @RequestParam("buyNum") Integer buyNum,
                               @RequestParam("buyType") Integer buyType,
                               @RequestParam("lever") Integer lever,
-                              @RequestParam("password") String password,
+                              @RequestParam(value = "password",required = false) String password,
                               @RequestParam(value = "profitTarget",required = false)
                                   BigDecimal profitTarget,@RequestParam(value = "stopLoss",required = false) BigDecimal stopLoss, HttpServletRequest request) {
         buyLock.lock();
diff --git a/src/main/java/com/nq/enums/EStockType.java b/src/main/java/com/nq/enums/EStockType.java
index ec49158..98dbf01 100644
--- a/src/main/java/com/nq/enums/EStockType.java
+++ b/src/main/java/com/nq/enums/EStockType.java
@@ -11,11 +11,11 @@
 
 
 
-    US("US","美国股票","5",PropertiesUtil.getProperty("US_HTTP_API"),PropertiesUtil.getProperty("US_KEY"),"USD","$");
+    US("US","美国股票","5",PropertiesUtil.getProperty("US_HTTP_API"),PropertiesUtil.getProperty("US_KEY"),"USD","$"),
 //    HK("HK","香港股票","39",PropertiesUtil.getProperty("HK_HTTP_API"),PropertiesUtil.getProperty("HK_KEY"),"HKD","HK$"),
 //    MAS("MAS","马来西亚股票","42",PropertiesUtil.getProperty("MAS_HTTP_API"),PropertiesUtil.getProperty("MAS_KEY"),"MYR","RM"),
 //
-//    IN("IN","印度股票","14", PropertiesUtil.getProperty("IN_HTTP_API"),PropertiesUtil.getProperty("JS_IN_KEY"),"INR","₹");
+    IN("IN","印度股票","14", PropertiesUtil.getProperty("IN_HTTP_API"),PropertiesUtil.getProperty("IN_KEY"),"INR","₹");
 //    TH("TH","泰国股票","41",PropertiesUtil.getProperty("TH_HTTP_API"),PropertiesUtil.getProperty("TH_KEY")),
 //    HG("HG","韩国股票","11",PropertiesUtil.getProperty("HG_HTTP_API"),PropertiesUtil.getProperty("HG_KEY")),
 //    SZHB("SZHB","数字货币","41",PropertiesUtil.getProperty("SZHB_HTTP_API"),PropertiesUtil.getProperty("SZHB_KEY"));
@@ -42,6 +42,12 @@
     }
 
     public static EStockType getEStockTypeByCode(String code){
+        if(EStockType.US.getCode().equals(code)){
+            return US;
+
+        }else if(EStockType.IN.getCode().equals(code)){
+            return  IN;
+        }
         return US;
     }
 
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index 51493bb..93a8c69 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -171,12 +171,12 @@
     @Override
     public ServerResponse getStockByType(int pageNum, int pageSize, String orderBy, String keyWords, String stockType, HttpServletRequest request) {
         List<Stock> stockList = new ArrayList<>();
-        if(stockType.equals(EStockType.US.getCode())){
+        if(stockType.equals("dz")){
             PageHelper.startPage(pageNum, pageSize);
-            stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords));
+            stockList.addAll(stockMapper.findStockTypeDz(orderBy,stockType, keyWords));
         }else{
             PageHelper.startPage(pageNum, pageSize);
-            stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.US.getCode(), keyWords));
+            stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords));
         }
 
         List<StockListVO> stockListVOS = Lists.newArrayList();
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index e1c3e85..729b48c 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -1682,7 +1682,7 @@
 
         userPosition.setOrderSpread(BigDecimal.ZERO);
         userPositionMapper.insert(userPosition);
-        userAssetsServices.availablebalanceChange(EStockType.US.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
+        userAssetsServices.availablebalanceChange(stockDz.getStockType(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"","");
         return ServerResponse.createBySuccess("购买成功", request);
     }
 
diff --git a/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java b/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
index f9a7720..572b210 100644
--- a/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
@@ -222,8 +222,8 @@
 
         for (int i = 0; i <userRecharges.size() ; i++) {
           SitePay s =   sitePayMapper.selectById(userRecharges.get(i).getPayId());
-            userRecharges.get(i).setAssetsType(EStockType.US.getSymbol1());
-            userRecharges.get(i).setChannelName(EStockType.US.getSymbol());
+            userRecharges.get(i).setAssetsType(EStockType.getEStockTypeByCode(s.getAssetsType()).getSymbol1());
+            userRecharges.get(i).setChannelName(EStockType.getEStockTypeByCode(s.getAssetsType()).getSymbol());
         }
 
         return ServerResponse.createBySuccess(pageInfo);
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 91e02aa..a3acfc7 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -200,6 +200,7 @@
                 return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
             }
             userAssetsServices.assetsByTypeAndUserId(EStockType.US.getCode(),user.getId());
+            userAssetsServices.assetsByTypeAndUserId(EStockType.IN.getCode(),user.getId());
             this.iSiteLoginLogService.saveLog(user, request);
             return ServerResponse.createBySuccess(user);
         }
@@ -514,7 +515,7 @@
             rUserAssets.setIsZf(userAssets.getIsZf());
             rUserAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().toString());
             BigDecimal rate = rateServices.currencyRate(
-                    EStockType.getEStockTypeByCode(userAssets.getAccectType()),EStockType.US);
+                    EStockType.getEStockTypeByCode(userAssets.getAccectType()),EStockType.getEStockTypeByCode(userAssets.getAccectType()));
 
            BigDecimal  availableBalanceUSD = amt;
            if(amt.compareTo(BigDecimal.ZERO)>0){
diff --git a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
index 20acdcc..904efed 100644
--- a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -135,7 +135,7 @@
                 }
             }else{
                BigDecimal bound =  new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice());
-               BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.US.getCode(), user.getId());
+               BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(stockSubscribe.getStockType(), user.getId());
                if(useEnaAmount.compareTo(bound)<0){
                    return ServerResponse.createByErrorMsg("余额不足,配售失败",request);
                }
@@ -152,7 +152,7 @@
                 model.setType(stockSubscribe.getType());
                 model.setDbMoney(BigDecimal.ZERO);
                 ret = userStockSubscribeMapper.insert(model);
-                iUserAssetsServices.availablebalanceChange(EStockType.US.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"","");
+                iUserAssetsServices.availablebalanceChange(stockSubscribe.getStockType(), user.getId(),EUserAssets.BUY,bound.negate(),"","");
                 if (ret > 0) {
                     return ServerResponse.createBySuccessMsg("配售成功",request);
                 } else {
@@ -217,7 +217,7 @@
                     }
                     BigDecimal cCount = new BigDecimal(model.getApplyNums()-model.getApplyNumber());
                     BigDecimal tMoney = stockSubscribe.getPrice().multiply(cCount);
-                    iUserAssetsServices.availablebalanceChange(EStockType.US.getCode(),userStockSubscribe.getUserId(),
+                    iUserAssetsServices.availablebalanceChange(stockSubscribe.getStockType(),userStockSubscribe.getUserId(),
                             EUserAssets.TOP_UP,tMoney,"","");
                     model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber())));
                     model.setDbMoney(BigDecimal.ZERO);
@@ -419,14 +419,14 @@
                     userStockSubscribe.setSubmitTime(DateTimeUtil.getCurrentDate());
                     userStockSubscribe.setStatus(4);
                     BigDecimal bigDecimal =  iUserAssetsServices.
-                            getAvailableBalance(EStockType.US.getCode(),
+                            getAvailableBalance(stockSubscribe.getStockType(),
                                     userStockSubscribe.getUserId());
 
                     BigDecimal multiply = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(userStockSubscribe.getApplyNumber()));
                     if(bigDecimal.compareTo(multiply) <= 0){
                         return ServerResponse.createByErrorMsg("余额不足",request);
                     }
-                    iUserAssetsServices.availablebalanceChange(EStockType.US.getCode(),userStockSubscribe.getUserId(),
+                    iUserAssetsServices.availablebalanceChange(stockSubscribe.getStockType(),userStockSubscribe.getUserId(),
                             EUserAssets.BUY,multiply.negate(),"","");
                     userStockSubscribe.setDbMoney(BigDecimal.ZERO);
                     userStockSubscribeMapper.update1(userStockSubscribe);
diff --git a/src/main/java/com/nq/utils/task/YEBTask.java b/src/main/java/com/nq/utils/task/YEBTask.java
index 7b49ec2..23f68b5 100644
--- a/src/main/java/com/nq/utils/task/YEBTask.java
+++ b/src/main/java/com/nq/utils/task/YEBTask.java
@@ -25,7 +25,7 @@
     /**
      * 余额宝发放利息
      */
-    @Scheduled(cron = "0 0/1 * * * ?")
+//    @Scheduled(cron = "0 0/1 * * * ?")
     public void sendYEBMoney() {
         if (isSendYEBMoney.get()) { // 判断任务是否在处理中
             return;
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 cc02e3b..620e980 100644
--- a/src/main/java/com/nq/utils/task/stock/StockTask.java
+++ b/src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -69,7 +69,7 @@
         if (syncINStockDataLock.tryLock()) {
             try {
                 syncINStockData.set(true); // 设置处理中标识为true
-                loadAllStock(EStockType.US);
+                loadAllStock(EStockType.IN);
             } finally {
                 syncINStockDataLock.unlock();
                 syncINStockData.set(false); // 设置处理中标识为false
@@ -86,6 +86,14 @@
         loadAllCompanies();
     }
 
+    /**
+     * 同步美国股票
+     * */
+    @Scheduled(cron = "0/10 * * * * ?")
+    public  void synsUSStockData(){
+        loadAllStock(EStockType.US);
+    }
+
 
     /**
      * 加载公司信息
diff --git a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
index f53887d..c0b5456 100644
--- a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
+++ b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
@@ -44,5 +44,32 @@
         return retMap;
     }
 
+    @Bean
+    public Map<String, WebSocketClient> websocketInRunClientMap() {
+
+        Map<String, WebSocketClient> retMap = new HashMap<>(2);
+        try {
+            WebSocketInClient webSocketInClient = new WebSocketInClient(new URI(PropertiesUtil.getProperty("IN_WS_URL")),EStockType.IN);
+            webSocketInClient.connect();
+            webSocketInClient.setConnectionLostTimeout(0);
+            new Thread(() -> {
+                while (true) {
+                    try {
+                        Thread.sleep(8000);
+                        webSocketInClient.send("heartbeat".getBytes());
+                    } catch (Exception e) {
+                        webSocketInClient.reconnect();
+                        webSocketInClient.setConnectionLostTimeout(0);
+                    }
+                }
+            }).start();
+        } catch (Exception e) {
+        }
+
+
+
+        return retMap;
+    }
+
 
 }
diff --git a/src/main/java/com/nq/ws/WebSocketInClient.java b/src/main/java/com/nq/ws/WebSocketInClient.java
new file mode 100644
index 0000000..a4430a3
--- /dev/null
+++ b/src/main/java/com/nq/ws/WebSocketInClient.java
@@ -0,0 +1,61 @@
+package com.nq.ws;
+
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.nq.enums.EStockType;
+import com.nq.pojo.StockRealTimeBean;
+import com.nq.service.IMandatoryLiquidationService;
+import com.nq.service.impl.MandatoryLiquidationService;
+import com.nq.utils.ApplicationContextRegisterUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.java_websocket.client.WebSocketClient;
+import org.java_websocket.handshake.ServerHandshake;
+import org.springframework.context.ApplicationContext;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.util.Map;
+
+/**
+ * @program: dabaogp
+ * @description:
+ * @create: 2024-07-24 15:02
+ **/
+@Slf4j
+public class WebSocketInClient  extends WebSocketClient {
+    private EStockType eStockType;
+    public WebSocketInClient(URI serverUri,
+                              EStockType eStockType
+    ) {
+        super(serverUri);
+        this.eStockType = eStockType;
+    }
+
+    @Override
+    public void onOpen(ServerHandshake serverHandshake) {
+        send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes());
+    }
+
+    @Override
+    public void onMessage(String s) {
+        try {
+            ApplicationContext act = ApplicationContextRegisterUtil.getApplicationContext();
+            MandatoryLiquidationService liquidationService = (MandatoryLiquidationService) act.getBean(IMandatoryLiquidationService.class);
+            StockRealTimeBean stockDetailBean =  new Gson().fromJson(s, StockRealTimeBean.class);
+            liquidationService.RealTimeDataProcess(eStockType,stockDetailBean);
+        }catch (Exception e){
+
+        }
+    }
+
+
+    @Override
+    public void onClose(int i, String s, boolean b) {
+        log.info("websocket  印度股票  关闭"+1);
+    }
+
+    @Override
+    public void onError(Exception e) {
+        log.info("websocket 错误");
+    }
+}
diff --git a/src/main/java/com/nq/ws/WebsocketRunClient.java b/src/main/java/com/nq/ws/WebsocketRunClient.java
index f9dcb1a..bbb262d 100644
--- a/src/main/java/com/nq/ws/WebsocketRunClient.java
+++ b/src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -45,11 +45,6 @@
         }
     }
 
-    public static Map<String, Object> jsonToMap(String json) {
-        Gson gson = new Gson();
-        Type type = new TypeToken<Map<String, Object>>(){}.getType();
-        return gson.fromJson(json, type);
-    }
 
     @Override
     public void onClose(int i, String s, boolean b) {
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 502f940..bd147d3 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -43,10 +43,13 @@
 #股票key的地址
 US_HTTP_API = http://api-us.js-stock.top/
 US_WS_URL = ws://ws-us.js-stock.top
-US_KEY = 4Z6dY7zcnsdfsdfZyBL4KDa00h
+US_KEY = 9sudfjhwdsosdfZyBL4KDa00h
 
 
-
+#股票key的地址
+IN_HTTP_API = https://data.is4vc.com/v1/
+IN_WS_URL =wss://ws.is4vc.com/websocket-server/v1
+IN_KEY = r3ZAgtcYzuBizmqge2hK
 
 #?? ?? - ????
 admin.auth.email.subject=???? - ??????

--
Gitblit v1.9.3