From 6404cb07e5281cfd901267c4fd560ba89bd5e2fd Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 04 Sep 2024 16:49:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/ysz' into ysz

---
 src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java     |   18 
 src/main/java/com/nq/ws/WebsocketRunClient.java                          |   48 +++
 src/main/java/com/nq/utils/task/OrderTask.java                           |    8 
 src/main/java/com/nq/controller/echo/EChoController.java                 |    2 
 src/main/java/com/nq/service/StockDzService.java                         |    2 
 src/main/java/com/nq/utils/task/stock/StockTask.java                     |   80 ++----
 src/main/java/com/nq/service/impl/EchoServices.java                      |    4 
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java           |   15 
 src/main/java/com/nq/common/interceptor/ApiUserAuthorityInterceptor.java |    2 
 src/main/java/com/nq/service/impl/UserServiceImpl.java                   |   11 
 src/main/resources/application.properties                                |   10 
 src/main/java/com/nq/common/ServerResponse.java                          |    8 
 src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java           |    4 
 src/main/java/com/nq/controller/UserApiController.java                   |    2 
 src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java           |    4 
 src/main/java/com/nq/controller/backend/AdminStockDz.java                |    3 
 src/main/java/com/nq/service/impl/PriceServicesImpl.java                 |   38 +--
 src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java       |    4 
 src/main/java/com/nq/utils/task/stock/CarryPositionTask.java             |    4 
 src/main/resources/mapper/StockMapper.xml                                |    2 
 src/main/java/com/nq/enums/EStockType.java                               |   17 
 src/main/java/com/nq/service/impl/UserAssetsServices.java                |    8 
 src/main/java/com/nq/service/impl/StockServiceImpl.java                  |   21 -
 src/main/resources/mapper/UserPositionMapper.xml                         |    6 
 src/main/java/com/nq/controller/protol/UserController.java               |   31 +-
 src/main/java/com/nq/controller/agent/AgentUserController.java           |    4 
 src/main/java/com/nq/utils/task/news/NewsTask.java                       |   12 -
 src/main/java/com/nq/service/impl/MandatoryLiquidationService.java       |   19 -
 src/main/java/com/nq/ws/WebSocketClientBeanConfig.java                   |    4 
 src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java               |    3 
 src/main/java/com/nq/service/impl/StockDzServiceImpl.java                |    6 
 src/main/java/com/nq/ws/WebSocketInClient.java                           |   49 ++++
 src/main/java/com/nq/controller/PayApiController.java                    |  178 ++++++++--------
 src/main/java/com/nq/controller/backend/AdminRechargeController.java     |    8 
 src/main/java/com/nq/service/IUserRechargeService.java                   |    2 
 src/main/resources/application.yml                                       |    2 
 36 files changed, 323 insertions(+), 316 deletions(-)

diff --git a/src/main/java/com/nq/common/ServerResponse.java b/src/main/java/com/nq/common/ServerResponse.java
index 3355367..bc7b2bc 100644
--- a/src/main/java/com/nq/common/ServerResponse.java
+++ b/src/main/java/com/nq/common/ServerResponse.java
@@ -74,7 +74,7 @@
 
 
     public static <T> ServerResponse<T> createBySuccessMsg(String msg,HttpServletRequest request) {
-        return new ServerResponse(ResponseCode.SUCCESS.getCode(), new GoogleTranslateUtil().translate(msg,request.getHeader(LANG)));
+        return new ServerResponse(ResponseCode.SUCCESS.getCode(), msg);
     }
 
     public static <T> ServerResponse<T> createBySuccess(T data) {
@@ -83,7 +83,7 @@
 
 
     public static <T> ServerResponse<T> createBySuccess(String data,HttpServletRequest request) {
-        return new ServerResponse(ResponseCode.SUCCESS.getCode(), new GoogleTranslateUtil().translate(data,request.getHeader(LANG)));
+        return new ServerResponse(ResponseCode.SUCCESS.getCode(), data);
     }
 
     public static <T> ServerResponse<T> createBySuccess(String msg, T data) {
@@ -103,10 +103,10 @@
         return new ServerResponse(ResponseCode.ERROR.getCode(), errormsg);
     }
     public static <T> ServerResponse<T> createByErrorMsg(String errormsg, HttpServletRequest request) {
-        return new ServerResponse(ResponseCode.ERROR.getCode(), new GoogleTranslateUtil().translate(errormsg,request.getHeader(LANG)));
+        return new ServerResponse(ResponseCode.ERROR.getCode(), errormsg);
     }
     public static <T> ServerResponse<T> createByErrorMsg(String errormsg, String langFrom ,String lang) throws Exception {
-        return new ServerResponse(ResponseCode.ERROR.getCode(), new GoogleTranslateUtil().translate(langFrom,lang,errormsg));
+        return new ServerResponse(ResponseCode.ERROR.getCode(), errormsg);
     }
 
 
diff --git a/src/main/java/com/nq/common/interceptor/ApiUserAuthorityInterceptor.java b/src/main/java/com/nq/common/interceptor/ApiUserAuthorityInterceptor.java
index 9a56c8c..4a05e1e 100644
--- a/src/main/java/com/nq/common/interceptor/ApiUserAuthorityInterceptor.java
+++ b/src/main/java/com/nq/common/interceptor/ApiUserAuthorityInterceptor.java
@@ -79,7 +79,7 @@
             httpServletResponse.setCharacterEncoding("UTF-8");
             httpServletResponse.setContentType("application/json;charset=UTF-8");
             PrintWriter writer = httpServletResponse.getWriter();
-            writer.print( new Gson().toJson(ServerResponse.createByErrorCodeMsg(401,googleTranslateUtil.translate("请登录",lang ))));
+            writer.print( new Gson().toJson(ServerResponse.createByErrorCodeMsg(401,"请登录")));
             writer.flush();
             writer.close();
             return false;
diff --git a/src/main/java/com/nq/controller/PayApiController.java b/src/main/java/com/nq/controller/PayApiController.java
index a1a947a..dfda8fa 100644
--- a/src/main/java/com/nq/controller/PayApiController.java
+++ b/src/main/java/com/nq/controller/PayApiController.java
@@ -61,96 +61,96 @@
         }
     }
 
-    @RequestMapping({"juhenewpayNotify.do"})
-    @ResponseBody
-    public JSONObject juhenewpayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        System.out.println("============开始回调===============");
-        LinkedMap map = new LinkedMap();
-        String orderno = (String) request.getParameter("orderno");
-        String amount = (String) request.getParameter("payamount");
-        String[] arr = orderno.split("_");
-        map.put("payamount", request.getParameter("payamount"));
-        map.put("orderno", orderno);
-        map.put("status", (String) request.getParameter("status"));
-        log.info("回调创建订单前map==="+map.toString());
+//    @RequestMapping({"juhenewpayNotify.do"})
+//    @ResponseBody
+//    public JSONObject juhenewpayNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        System.out.println("============开始回调===============");
+//        LinkedMap map = new LinkedMap();
+//        String orderno = (String) request.getParameter("orderno");
+//        String amount = (String) request.getParameter("payamount");
+//        String[] arr = orderno.split("_");
+//        map.put("payamount", request.getParameter("payamount"));
+//        map.put("orderno", orderno);
+//        map.put("status", (String) request.getParameter("status"));
+//        log.info("回调创建订单前map==="+map.toString());
+//
+//        JSONObject jsonObj = new JSONObject();
+//        Map<String,Object> json = new HashMap<String,Object>();
+//
+//
+//        if ("1".equals((String) request.getParameter("status"))) {
+//            // 这里编写用户业务逻辑代码,如存储订单状态,自动发货等
+//            //TODO
+//            if (amount != null & !StringUtils.isEmpty(amount)) {
+//                System.out.println("============更新用户金额===============");
+//                Double aDouble = Double.valueOf(amount);
+//                Integer integer = aDouble.intValue();
+//                //判断是否回调成功
+//                UserRecharge userRecharge = this.userRechargeMapper.findUserRechargeByOrderSn(orderno);
+//                if(userRecharge == null){
+//                    System.out.println("============充值完成===============");
+//                    iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno);
+//                    jsonObj.put("reason", "success");
+//                } else {
+//                    System.out.println("============充值失败,已回调成功无需重复回调===============");
+//                    jsonObj.put("reason", "error");
+//                }
+//            } else{
+//                jsonObj.put("reason", "error");
+//            }
+//            System.out.println("============回调成功并结束===============");
+//            //jsonObj.putAll(map);
+//            return jsonObj;
+//        } else {
+//            System.out.println("============回调失败并结束===============");
+//            jsonObj.put("reason", "error");
+//            return jsonObj;
+//        }
+//
+//    }
 
-        JSONObject jsonObj = new JSONObject();
-        Map<String,Object> json = new HashMap<String,Object>();
-
-
-        if ("1".equals((String) request.getParameter("status"))) {
-            // 这里编写用户业务逻辑代码,如存储订单状态,自动发货等
-            //TODO
-            if (amount != null & !StringUtils.isEmpty(amount)) {
-                System.out.println("============更新用户金额===============");
-                Double aDouble = Double.valueOf(amount);
-                Integer integer = aDouble.intValue();
-                //判断是否回调成功
-                UserRecharge userRecharge = this.userRechargeMapper.findUserRechargeByOrderSn(orderno);
-                if(userRecharge == null){
-                    System.out.println("============充值完成===============");
-                    iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno);
-                    jsonObj.put("reason", "success");
-                } else {
-                    System.out.println("============充值失败,已回调成功无需重复回调===============");
-                    jsonObj.put("reason", "error");
-                }
-            } else{
-                jsonObj.put("reason", "error");
-            }
-            System.out.println("============回调成功并结束===============");
-            //jsonObj.putAll(map);
-            return jsonObj;
-        } else {
-            System.out.println("============回调失败并结束===============");
-            jsonObj.put("reason", "error");
-            return jsonObj;
-        }
-
-    }
-
-    @RequestMapping({"juheh5payNotify.do"})
-    @ResponseBody
-    public void juheh5payNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
-        System.out.println("============开始回调===============");
-        LinkedMap map = new LinkedMap();
-        String orderno = (String) request.getParameter("name");
-        String amount = (String) request.getParameter("money");
-        String[] arr = orderno.split("_");
-        map.put("money", request.getParameter("money"));
-        map.put("name", orderno);
-        log.info("回调创建订单前map==="+map.toString());
-
-        JSONObject jsonObj = new JSONObject();
-        Map<String,Object> json = new HashMap<String,Object>();
-
-
-        //if ("200".equals((String) request.getParameter("status"))) {
-            // 这里编写用户业务逻辑代码,如存储订单状态,自动发货等
-            //TODO
-            if (amount != null & !StringUtils.isEmpty(amount)) {
-                System.out.println("============更新用户金额===============");
-                Double aDouble = Double.valueOf(amount);
-                Integer integer = aDouble.intValue();
-                //判断是否回调成功
-                UserRecharge userRecharge = this.userRechargeMapper.findUserRechargeByOrderSn(orderno);
-                if(userRecharge == null){
-                    System.out.println("============充值完成===============");
-                    iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno);
-                } else {
-                    System.out.println("============充值失败,已回调成功无需重复回调===============");
-                }
-            } else{
-            }
-            System.out.println("============回调成功并结束===============");
-            //jsonObj.putAll(map);
-            response.getWriter().write("success");
-        /*} else {
-            System.out.println("============回调失败并结束===============");
-            response.getWriter().write("error");
-        }*/
-
-    }
+//    @RequestMapping({"juheh5payNotify.do"})
+//    @ResponseBody
+//    public void juheh5payNotify(HttpServletRequest request, HttpServletResponse response) throws IOException {
+//        System.out.println("============开始回调===============");
+//        LinkedMap map = new LinkedMap();
+//        String orderno = (String) request.getParameter("name");
+//        String amount = (String) request.getParameter("money");
+//        String[] arr = orderno.split("_");
+//        map.put("money", request.getParameter("money"));
+//        map.put("name", orderno);
+//        log.info("回调创建订单前map==="+map.toString());
+//
+//        JSONObject jsonObj = new JSONObject();
+//        Map<String,Object> json = new HashMap<String,Object>();
+//
+//
+//        //if ("200".equals((String) request.getParameter("status"))) {
+//            // 这里编写用户业务逻辑代码,如存储订单状态,自动发货等
+//            //TODO
+//            if (amount != null & !StringUtils.isEmpty(amount)) {
+//                System.out.println("============更新用户金额===============");
+//                Double aDouble = Double.valueOf(amount);
+//                Integer integer = aDouble.intValue();
+//                //判断是否回调成功
+//                UserRecharge userRecharge = this.userRechargeMapper.findUserRechargeByOrderSn(orderno);
+//                if(userRecharge == null){
+//                    System.out.println("============充值完成===============");
+//                    iUserRechargeService.createOrder(Integer.valueOf(arr[0]), 1, aDouble.intValue(), orderno);
+//                } else {
+//                    System.out.println("============充值失败,已回调成功无需重复回调===============");
+//                }
+//            } else{
+//            }
+//            System.out.println("============回调成功并结束===============");
+//            //jsonObj.putAll(map);
+//            response.getWriter().write("success");
+//        /*} else {
+//            System.out.println("============回调失败并结束===============");
+//            response.getWriter().write("error");
+//        }*/
+//
+//    }
 
     @RequestMapping({"flyNotify.do"})
     @ResponseBody
diff --git a/src/main/java/com/nq/controller/UserApiController.java b/src/main/java/com/nq/controller/UserApiController.java
index 096d45c..0052e1a 100644
--- a/src/main/java/com/nq/controller/UserApiController.java
+++ b/src/main/java/com/nq/controller/UserApiController.java
@@ -76,7 +76,7 @@
             UserLoginResultVO resultVO = new UserLoginResultVO();
             resultVO.setKey(pc_cookie_name);
             resultVO.setToken(token);
-            return ServerResponse.createBySuccess(new GoogleTranslateUtil().translate("登录成功",request.getHeader("lang")), resultVO);
+            return ServerResponse.createBySuccess(resultVO );
         }
         return serverResponse;
     }
diff --git a/src/main/java/com/nq/controller/agent/AgentUserController.java b/src/main/java/com/nq/controller/agent/AgentUserController.java
index e3f4d95..9647d9b 100644
--- a/src/main/java/com/nq/controller/agent/AgentUserController.java
+++ b/src/main/java/com/nq/controller/agent/AgentUserController.java
@@ -61,7 +61,9 @@
     //添加用户列表 用户信息
     @RequestMapping({"addSimulatedAccount.do"})
     @ResponseBody
-    public ServerResponse addSimulatedAccount(HttpServletRequest request, @RequestParam(value = "agentId", required = false) Integer agentId, @RequestParam("phone") String phone, @RequestParam("amt") String amt, @RequestParam("accountType") Integer accountType, @RequestParam("pwd") String pwd) {
+    public ServerResponse addSimulatedAccount(HttpServletRequest request, @RequestParam(value = "agentId", required = false) Integer agentId,
+                                              @RequestParam("phone") String phone, @RequestParam("amt") String amt,
+                                              @RequestParam("accountType") Integer accountType, @RequestParam("pwd") String pwd) {
         return this.iUserService.addSimulatedAccount(agentId, phone, pwd, amt, accountType, request);
     }
 
diff --git a/src/main/java/com/nq/controller/backend/AdminRechargeController.java b/src/main/java/com/nq/controller/backend/AdminRechargeController.java
index 9fd6e03..f0640b0 100644
--- a/src/main/java/com/nq/controller/backend/AdminRechargeController.java
+++ b/src/main/java/com/nq/controller/backend/AdminRechargeController.java
@@ -94,8 +94,12 @@
     //创建资金管理 充值订单
     @RequestMapping({"createOrder.do"})
     @ResponseBody
-    public ServerResponse createOrder(@RequestParam(value = "userId", required = false) Integer userId, @RequestParam(value = "state", required = false) Integer state, @RequestParam(value = "amt", required = false) Integer amt, @RequestParam(value = "payChannel", required = false) String payChannel) {
-        return this.iUserRechargeService.createOrder(userId, state, amt, payChannel);
+    public ServerResponse createOrder(@RequestParam(value = "userId", required = false) Integer userId,
+                                      @RequestParam(value = "state", required = false) Integer state,
+                                      @RequestParam(value = "amt", required = false) Integer amt,
+                                      @RequestParam(value = "accountType", required = true) String accountType,
+                                      @RequestParam(value = "payChannel", required = false) String payChannel) {
+        return this.iUserRechargeService.createOrder(userId, state, amt, payChannel,accountType);
     }
 
     //删除资金管理 充值列表订单信息
diff --git a/src/main/java/com/nq/controller/backend/AdminStockDz.java b/src/main/java/com/nq/controller/backend/AdminStockDz.java
index b6c31bd..60d7a25 100644
--- a/src/main/java/com/nq/controller/backend/AdminStockDz.java
+++ b/src/main/java/com/nq/controller/backend/AdminStockDz.java
@@ -34,9 +34,8 @@
                                      @RequestParam(value = "password")String password,
                                      @RequestParam(value = "startTime")String startTime,
                                      @RequestParam(value = "endTime")String endTime,
-                                     @RequestParam(value = "discount") String discount,
                                      @RequestParam(value = "period")Integer period) {
-        return stockDzService.addByAdmin(stockCode,stockNum,password,startTime,endTime,discount,period);
+        return stockDzService.addByAdmin(stockCode,stockNum,password,startTime,endTime,period);
     }
     /**
      * 删除大宗
diff --git a/src/main/java/com/nq/controller/echo/EChoController.java b/src/main/java/com/nq/controller/echo/EChoController.java
index 6ab33d2..324a027 100644
--- a/src/main/java/com/nq/controller/echo/EChoController.java
+++ b/src/main/java/com/nq/controller/echo/EChoController.java
@@ -62,7 +62,7 @@
             }
         }
         User user = this.iUserService.getCurrentRefreshUser(request);
-        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN", user.getId());
+        UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
         if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
             return ServerResponse.createByErrorMsg("请先缴清待补资金", request);
         }
diff --git a/src/main/java/com/nq/controller/protol/UserController.java b/src/main/java/com/nq/controller/protol/UserController.java
index 760ce33..d05b469 100644
--- a/src/main/java/com/nq/controller/protol/UserController.java
+++ b/src/main/java/com/nq/controller/protol/UserController.java
@@ -155,8 +155,8 @@
     //用户平仓操作
     @RequestMapping({"sell.do"})
     @ResponseBody
-    public ServerResponse sell(HttpServletRequest request, @RequestParam("positionSn") String positionSn, @RequestParam("closeNumber") Integer closeNumber) {
-            return this.iUserPositionService.sell(positionSn,closeNumber, 1,request);
+    public ServerResponse sell(HttpServletRequest request, @RequestParam("positionSn") String positionSn) {
+            return this.iUserPositionService.sell(positionSn, 1);
     }
 
 
@@ -276,21 +276,24 @@
     @RequestMapping({"upload.do"})
     @ResponseBody
     public ServerResponse upload(HttpSession session, @RequestParam(value = "upload_file", required = false) MultipartFile file, HttpServletRequest request) {
-        String path = request.getSession().getServletContext().getRealPath("upload");
+        try {
+            String path = request.getSession().getServletContext().getRealPath("upload");
 
-        ServerResponse serverResponse = this.iFileUploadService.upload(file, path);
-        if (serverResponse.isSuccess()) {
-            String targetFileName = serverResponse.getData().toString();
-            String url = PropertiesUtil.getProperty("ftp.server.http.prefix") + targetFileName;
+            ServerResponse serverResponse = this.iFileUploadService.upload(file, path);
+            if (serverResponse.isSuccess()) {
+                String targetFileName = serverResponse.getData().toString();
+                String url = PropertiesUtil.getProperty("ftp.server.http.prefix") + targetFileName;
+                Map fileMap = Maps.newHashMap();
+                fileMap.put("uri", targetFileName);
+                fileMap.put("url", url);
 
-
-            Map fileMap = Maps.newHashMap();
-            fileMap.put("uri", targetFileName);
-            fileMap.put("url", url);
-
-            return ServerResponse.createBySuccess(fileMap);
+                return ServerResponse.createBySuccess(fileMap);
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+            log.error("上传失败",e);
         }
-        return serverResponse;
+        return ServerResponse.createByErrorMsg("上传失败");
     }
 
 
diff --git a/src/main/java/com/nq/enums/EStockType.java b/src/main/java/com/nq/enums/EStockType.java
index 98dbf01..7ba37cd 100644
--- a/src/main/java/com/nq/enums/EStockType.java
+++ b/src/main/java/com/nq/enums/EStockType.java
@@ -11,11 +11,12 @@
 
 
 
-    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"),
+    MAS("MAS","马来西亚股票","42",PropertiesUtil.getProperty("MY_HTTP_API"),PropertiesUtil.getProperty("MY_KEY"),"MAS","RM"),
+    SGP("SGP","新加坡股票","36",PropertiesUtil.getProperty("SGP_HTTP_API"),PropertiesUtil.getProperty("SGP_KEY"),"SGP","S$");
 //
-    IN("IN","印度股票","14", PropertiesUtil.getProperty("IN_HTTP_API"),PropertiesUtil.getProperty("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,13 +43,13 @@
     }
 
     public static EStockType getEStockTypeByCode(String code){
-        if(EStockType.US.getCode().equals(code)){
-            return US;
+        if(EStockType.MAS.getCode().equals(code)){
+            return MAS;
 
-        }else if(EStockType.IN.getCode().equals(code)){
-            return  IN;
+        }else if(EStockType.SGP.getCode().equals(code)){
+            return  SGP;
         }
-        return US;
+        return MAS;
     }
 
     public String getContryId() {
diff --git a/src/main/java/com/nq/service/IUserRechargeService.java b/src/main/java/com/nq/service/IUserRechargeService.java
index 24927a1..7fed3f8 100644
--- a/src/main/java/com/nq/service/IUserRechargeService.java
+++ b/src/main/java/com/nq/service/IUserRechargeService.java
@@ -30,7 +30,7 @@
   
   ServerResponse updateState(Integer paramInteger1, Integer paramInteger2) throws Exception;
   
-  ServerResponse createOrder(Integer paramInteger1, Integer paramInteger2, Integer paramInteger3, String paramString);
+  ServerResponse createOrder(Integer paramInteger1, Integer paramInteger2, Integer paramInteger3, String paramString,String accountType);
   
   ServerResponse del(Integer paramInteger);
   
diff --git a/src/main/java/com/nq/service/StockDzService.java b/src/main/java/com/nq/service/StockDzService.java
index 84f275a..bc58914 100644
--- a/src/main/java/com/nq/service/StockDzService.java
+++ b/src/main/java/com/nq/service/StockDzService.java
@@ -13,7 +13,7 @@
 
     ServerResponse getDzList();
 
-    ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period);
+    ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime,Integer period);
 
     ServerResponse getDzListByAdmin(String keywords);
 
diff --git a/src/main/java/com/nq/service/impl/EchoServices.java b/src/main/java/com/nq/service/impl/EchoServices.java
index 8ef961d..2e8b4db 100644
--- a/src/main/java/com/nq/service/impl/EchoServices.java
+++ b/src/main/java/com/nq/service/impl/EchoServices.java
@@ -73,7 +73,7 @@
 
             UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                     .eq(UserAssets::getUserId, orderEchoBean.getUserId())
-                    .eq(UserAssets::getAccectType, "IN")
+                    .eq(UserAssets::getAccectType, "MAS")
             );
             userAssets.setAvailableBalance(userAssets.getAvailableBalance().subtract(money));
             userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(money));
@@ -116,7 +116,7 @@
                     BigDecimal aml = incomeAmount.add(money);
                     UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                             .eq(UserAssets::getUserId, orderEchoBean.getUserId())
-                            .eq(UserAssets::getAccectType, "IN")
+                            .eq(UserAssets::getAccectType, "MAS")
                     );
                     if (userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0) {
                         continue;
diff --git a/src/main/java/com/nq/service/impl/MandatoryLiquidationService.java b/src/main/java/com/nq/service/impl/MandatoryLiquidationService.java
index c2b0ae0..ea8c9ec 100644
--- a/src/main/java/com/nq/service/impl/MandatoryLiquidationService.java
+++ b/src/main/java/com/nq/service/impl/MandatoryLiquidationService.java
@@ -24,25 +24,6 @@
     @Transactional
     @Override
     public void RealTimeDataProcess(EStockType eStockType, StockRealTimeBean timeBean) {
-        QueryWrapper<UserPosition>  upQuery  = new QueryWrapper<>();
-        upQuery.eq("stock_code",timeBean.getPid());
-        upQuery.isNotNull("sell_order_id");
-        // 查询未平仓的价格
-        List<UserPosition> userPositionList =  userPositionMapper.selectList(upQuery);
-        for (int i = 0; i <userPositionList.size() ; i++) {
-            UserPosition userPosition = userPositionList.get(i);
-            BigDecimal bigDecimal =    new BigDecimal(timeBean.getLast()).subtract(userPosition.getBuyOrderPrice())
-                    .multiply(new BigDecimal(userPosition.getOrderNum()));
-            if(!userPosition.getOrderDirection().equals("买涨")){
-                bigDecimal =  bigDecimal.negate();
-            }
-            userPosition.setProfitAndLose(bigDecimal);
-            userPosition.setAllProfitAndLose(bigDecimal);
-            userPositionMapper.updateById(userPosition);
-        }
-
-
         RedisKeyUtil.setCacheRealTimeStock(eStockType,timeBean);
-
     }
 }
diff --git a/src/main/java/com/nq/service/impl/PriceServicesImpl.java b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
index 23b8afa..a6ebd90 100644
--- a/src/main/java/com/nq/service/impl/PriceServicesImpl.java
+++ b/src/main/java/com/nq/service/impl/PriceServicesImpl.java
@@ -8,6 +8,7 @@
 import com.nq.dao.StockMapper;
 import com.nq.dao.StockSettingMapper;
 import com.nq.enums.EConfigKey;
+import com.nq.enums.EStockType;
 import com.nq.pojo.*;
 import com.nq.service.IPriceServices;
 import com.nq.service.IStockConfigServices;
@@ -19,8 +20,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
+import java.io.*;
 import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import  java.io.BufferedReader;
@@ -59,7 +59,7 @@
                 if(stockSetting.getType().equals("0")){
                     return  new BigDecimal(stockSetting.getPrice());
                 }else{
-                    String s = doGet(stock.getStockCode());
+                    String s = doPost(stock);
                     if(null != s){
                         Map<String, Object> stringObjectMap = jsonToMap(s);
                         return   new BigDecimal(stringObjectMap.get("last").toString()).multiply(new BigDecimal(stockSetting.getPrice()));
@@ -68,7 +68,7 @@
             }
         }
 
-        String s = doGet(stock.getStockCode());
+        String s = doPost(stock);
         if(null != s) {
             Map<String, Object> stringObjectMap = jsonToMap(s);
             return  new BigDecimal(stringObjectMap.get("last").toString());
@@ -79,7 +79,7 @@
     @Override
     public Map<String, Object> getNewStock(String stockCode) {
         Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code",stockCode));
-        String s = doGet(stock.getStockCode());
+        String s = doPost(stock);
         if(null != s){
             Map<String, Object> stringObjectMap = jsonToMap(s);
             return   stringObjectMap;
@@ -102,28 +102,16 @@
         }
     }
 
-    public String doGet(String pid){
-        String  apiUrl  =  PropertiesUtil.getProperty("US_HTTP_API")+"stock?pid="+pid+"&key="+PropertiesUtil.getProperty("US_KEY");
-        try  {
-            URL  url  =  new  URL(apiUrl);
-            HttpURLConnection  connection  =  (HttpURLConnection)  url.openConnection();
-            connection.setRequestMethod("GET");
-
-            BufferedReader in  =  new  BufferedReader(new InputStreamReader(connection.getInputStream()));
-            String  inputLine;
-            StringBuffer  response  =  new  StringBuffer();
-
-            while  ((inputLine  =  in.readLine())  !=  null)  {
-                response.append(inputLine);
-            }
-            in.close();
-            return response.toString();
-        }  catch  (Exception  e)  {
-            e.printStackTrace();
-        }
-        return null;
+    public String doPost(Stock stock) {
+        EStockType eStockType = EStockType.getEStockTypeByCode(stock.getStockType());
+        String  apiUrl  =  eStockType.getStockUrl()+"stock?version=v1&key="+eStockType.getStockKey();
+        Map<String, Object> paramMap = new HashMap<>();
+        paramMap.put("pid",stock.getStockCode());
+        String r = HttpClientRequest.doPost(apiUrl, paramMap);
+        return r;
     }
 
+
     @Override
     public BigDecimal getNowPrice(String stockCode, String stockType) {
       BigDecimal nowPrice =   getNowPrice(stockCode);
diff --git a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
index b526ad5..627adeb 100644
--- a/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -132,7 +132,8 @@
 
     @Override
     public void grabNews() {
-        addNews(1, PropertiesUtil.getProperty("IN_NEW_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("IN_NEW_KEY") + "&type=6");
+        addNews(1, PropertiesUtil.getProperty("MY_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("MY_KEY") + "&type=6");
+        addNews(1, PropertiesUtil.getProperty("SGP_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("SGP_KEY") + "&type=6");
     }
 
     private void addNews(Integer type, String url) {
diff --git a/src/main/java/com/nq/service/impl/StockDzServiceImpl.java b/src/main/java/com/nq/service/impl/StockDzServiceImpl.java
index f9e1199..e72e6dc 100644
--- a/src/main/java/com/nq/service/impl/StockDzServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockDzServiceImpl.java
@@ -59,8 +59,8 @@
     }
 
     @Override
-    public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, String discount,Integer period) {
-        if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")||password == null || discount == null|| discount.equals("")||
+    public ServerResponse addByAdmin(String stockCode, String stockNum, String password, String startTime, String endTime, Integer period) {
+        if (stockCode == null || stockCode.equals("")||stockNum == null || stockNum.equals("")||password == null ||
                 password.equals("")|| startTime == null || startTime.equals("")||endTime == null || endTime.equals("") || period == null){
             return ServerResponse.createByErrorMsg("参数不能为空");
         }
@@ -91,7 +91,7 @@
         stockDz.setPassword(password);
         stockDz.setStartTime(DateTimeUtil.strToDate(startTime));
         stockDz.setEndTime(DateTimeUtil.strToDate(endTime));
-        stockDz.setDiscount(new BigDecimal(discount));
+        stockDz.setDiscount(new BigDecimal(0));
         stockDz.setPeriod(period);
         int res = stockDzMapper.insert(stockDz);
         if (res > 0) {
diff --git a/src/main/java/com/nq/service/impl/StockServiceImpl.java b/src/main/java/com/nq/service/impl/StockServiceImpl.java
index 93a8c69..0e84de3 100644
--- a/src/main/java/com/nq/service/impl/StockServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/StockServiceImpl.java
@@ -134,7 +134,7 @@
         List<Stock> stockList = new ArrayList<>();
         if (stockType.equals("99")) {
             PageHelper.startPage(pageNum, pageSize);
-            stockList.addAll(stockMapper.findZtStockListByKeyWords(keyWords, stockPlate, "IN", Integer.valueOf(0)));
+            stockList.addAll(stockMapper.findZtStockListByKeyWords(keyWords, stockPlate, "MAS", Integer.valueOf(0)));
         } else if (stockType.equals("100")) {
             User user = iUserService.getCurrentRefreshUser(request);
             if (user == null) {
@@ -171,7 +171,7 @@
     @Override
     public ServerResponse getStockByType(int pageNum, int pageSize, String orderBy, String keyWords, String stockType, HttpServletRequest request) {
         List<Stock> stockList = new ArrayList<>();
-        if(stockType.equals("dz")){
+        if(stockType.equals("DZ")){
             PageHelper.startPage(pageNum, pageSize);
             stockList.addAll(stockMapper.findStockTypeDz(orderBy,stockType, keyWords));
         }else{
@@ -183,23 +183,6 @@
         if (stockList.size() > 0){
             stockListVOS.addAll(Objects.requireNonNull(StockApi.getStockReailTimes(stockList)));
         }
-
-        // Create a list to hold Futures
-        List<CompletableFuture<Void>> futures = new ArrayList<>();
-
-        // Use CompletableFuture to perform asynchronous processing for each stockListVO
-//        for (StockListVO stockListVO : stockListVOS) {
-//            CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
-//                stockListVO.setNowPrice(iPriceServices.getNowPrice(stockListVO.getCode(), stockType).toString());
-//                Map<String, Object> newStock = iPriceServices.getNewStock(stockListVO.getCode());
-//                stockListVO.setHcrateP(newStock.get("pcp").toString());
-//            });
-//            futures.add(future);
-//        }
-//
-//        // Wait for all futures to complete
-//        CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();
-
         RPageInfo pageInfo = new RPageInfo();
         pageInfo.setList(stockListVOS);
         pageInfo.setStockType(stockType);
diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 7652a08..a364a0d 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -38,9 +38,6 @@
 
     @Override
     public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
-        if(accetType.equals("SZHB")){
-            accetType = "US";
-        }
         QueryWrapper<UserAssets>  queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("accect_type",accetType);
         queryWrapper.eq("user_id",userId);
@@ -92,7 +89,7 @@
             }
         }else{
             if(type.equals("2")){
-                return  userRechargeService.createOrder(userAssets.getUserId(),1,bigAmt.intValue(),"1");
+                return  userRechargeService.createOrder(userAssets.getUserId(),1,bigAmt.intValue(),"1",userAssets.getAccectType());
             }else{
 
 
@@ -111,9 +108,6 @@
 
     @Override
     public BigDecimal getAvailableBalance(String accetType, Integer userId) {
-        if(accetType.equals("SZHB")){
-            accetType = "US";
-        }
         return  assetsByTypeAndUserId(accetType,userId).getAvailableBalance();
     }
 
diff --git a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
index 52914a4..11591c9 100644
--- a/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPendingorderServiceImpl.java
@@ -94,7 +94,7 @@
 
         UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                 .eq(UserAssets::getUserId, user.getId())
-                .eq(UserAssets::getAccectType, "IN")
+                .eq(UserAssets::getAccectType, "MAS")
         );
         BigDecimal amount = new BigDecimal(buyNum).multiply(targetPrice).setScale(5, RoundingMode.DOWN);
         userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
@@ -319,7 +319,7 @@
             if (delCount > 0) {
                 UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
                         .eq(UserAssets::getUserId, user.getId())
-                        .eq(UserAssets::getAccectType, "IN")
+                        .eq(UserAssets::getAccectType, "MAS")
                 );
                 BigDecimal amount = new BigDecimal(userPendingorder.getBuyNum()).multiply(userPendingorder.getTargetPrice()).setScale(5, RoundingMode.DOWN);
                 userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index c536946..0293bd3 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -135,7 +135,7 @@
 
 
     @Transactional
-    public ServerResponse buy(Integer stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget, HttpServletRequest request,Integer userId) {
+    public ServerResponse buy(Integer stockId, Integer buyNum, Integer buyType, Integer lever, BigDecimal profitTarget, BigDecimal stopTarget,String password, HttpServletRequest request,Integer userId) {
 
         SiteProduct siteProduct = iSiteProductService.getProductSetting();
 
@@ -192,10 +192,10 @@
         if (nowPrice.compareTo(new BigDecimal("0")) == 0) {
             return ServerResponse.createByErrorMsg("报价0,请稍后再试", request);
         }
-//        //vip抢筹
-//        SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
-//        StockRealTimeBean stockRealTimeBean = RedisKeyUtil.getCacheRealTimeStock(stock);
-//        BigDecimal pcp = new BigDecimal(stockRealTimeBean.getPcp());
+        //vip抢筹
+        SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
+        StockRealTimeBean stockRealTimeBean = RedisKeyUtil.getCacheRealTimeStock(stock);
+        BigDecimal pcp = new BigDecimal(stockRealTimeBean.getPcp());
 //        SiteVipRob siteVipRob = iSiteVipRobService.getByStockCode(stock.getStockCode());
 //        // 检查VIP抢筹功能是否开启且用户符合条件
 //        if (null != siteVipRob && siteVipRob.getStatus() == 1 && pcp.compareTo(siteVipRob.getStockChg()) >= 0) {
@@ -1262,10 +1262,7 @@
             userPosition.setStockCode(stock.getStockCode());
             userPosition.setStockSpell(stock.getStockSpell());
             userPosition.setStockName(userStockSubscribe.getNewName());
-            StringBuffer gid = new StringBuffer();
-            gid.append(stockSubscribe.getStockType()!=null?stockSubscribe.getStockType():"");
-            gid.append(userStockSubscribe.getNewCode()!=null?userStockSubscribe.getNewCode():"stock code invaild");
-            userPosition.setStockGid(gid.toString());
+            userPosition.setStockGid(stock.getStockType());
             userPosition.setBuyOrderId(GeneratePosition.getPositionId());
             userPosition.setBuyOrderTime(new Date());
             userPosition.setBuyOrderPrice(userStockSubscribe.getBuyPrice());
diff --git a/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java b/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
index 572b210..a2e2f97 100644
--- a/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java
@@ -318,7 +318,7 @@
     }
 
 
-    public ServerResponse createOrder(Integer userId, Integer state, Integer amt, String payChannel) {
+    public ServerResponse createOrder(Integer userId, Integer state, Integer amt, String payChannel,String accountType) {
         if (userId == null || state == null || amt == null) {
             return ServerResponse.createByErrorMsg("参数不能为空");
         }
@@ -342,7 +342,7 @@
         userRecharge.setPayTime(new Date());
         userRecharge.setOrderStatus(Integer.valueOf(1));
         userRecharge.setPayId(1);
-        userAssetsServices.availablebalanceChange(EStockType.US.getCode(),
+        userAssetsServices.availablebalanceChange(EStockType.getEStockTypeByCode(accountType).getCode(),
                 userId,EUserAssets.TOP_UP,new BigDecimal(amt),"","");
         int insertCount = this.userRechargeMapper.insert(userRecharge);
         if (insertCount > 0) {
diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index a3acfc7..4af5e15 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -199,8 +199,8 @@
             if (user.getIsLogin().intValue() == 1) {
                 return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
             }
-            userAssetsServices.assetsByTypeAndUserId(EStockType.US.getCode(),user.getId());
-            userAssetsServices.assetsByTypeAndUserId(EStockType.IN.getCode(),user.getId());
+            userAssetsServices.assetsByTypeAndUserId(EStockType.MAS.getCode(),user.getId());
+            userAssetsServices.assetsByTypeAndUserId(EStockType.SGP.getCode(),user.getId());
             this.iSiteLoginLogService.saveLog(user, request);
             return ServerResponse.createBySuccess(user);
         }
@@ -602,7 +602,7 @@
         userPositions = userPositionMapper.
                 findMyPositionByCodeAndSpell(userId,
                         "","",
-                        0, "IN");
+                        0, "MAS");
 
 
         List<UserPositionVO> userPositionVOS = Lists.newArrayList();
@@ -790,8 +790,9 @@
 
         int insertCount = this.userMapper.insert(user);
          dbUser = userMapper.selectOne(queryWrapper);
-        userAssetsServices.getAvailableBalance(EStockType.US.getCode(),dbUser.getId() );
-        userAssetsServices.availablebalanceChange(EStockType.US.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
+        userAssetsServices.getAvailableBalance(EStockType.MAS.getCode(),dbUser.getId() );
+        userAssetsServices.getAvailableBalance(EStockType.SGP.getCode(),dbUser.getId() );
+//        userAssetsServices.availablebalanceChange(EStockType.US.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
         if (insertCount > 0) {
             return ServerResponse.createBySuccessMsg("Success");
         }
diff --git a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
index 904efed..75ae719 100644
--- a/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java
@@ -1,14 +1,12 @@
 package com.nq.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.nq.common.ServerResponse;
-import com.nq.dao.StockSubscribeMapper;
-import com.nq.dao.UserAssetsMapper;
-import com.nq.dao.UserMapper;
-import com.nq.dao.UserStockSubscribeMapper;
+import com.nq.dao.*;
 import com.nq.enums.EStockType;
 import com.nq.enums.EUserAssets;
 import com.nq.pojo.*;
@@ -70,6 +68,9 @@
     @Autowired
     UserAssetsMapper userAssetsMapper;
 
+    @Autowired
+    StockMapper stockMapper;
+
     /**
      * 用户新股申购
      * @param model
@@ -83,7 +84,7 @@
             return ServerResponse.createByErrorMsg("参数错误",request);
         }
         User user = iUserService.getCurrentRefreshUser(request);
-        UserAssets userAssets =   iUserAssetsServices.assetsByTypeAndUserId("IN",user.getId());
+        UserAssets userAssets =   iUserAssetsServices.assetsByTypeAndUserId("MAS",user.getId());
         if (model.getNewCode() != null) {
             StockSubscribe stockSubscribe = stockSubscribeMapper.selectOne(new QueryWrapper<StockSubscribe>()
                     .eq("code", model.getNewCode()).eq("type",model.getType()));
@@ -111,8 +112,8 @@
             if (stockSubscribe == null) {
                 return ServerResponse.createByErrorMsg("新的股票代码不存在",request);
             }
-            if (model.getApplyNums() == null || model.getApplyNums() > stockSubscribe.getOrderNumber()|| model.getApplyNums() < 500) {
-                return ServerResponse.createByErrorMsg("最小起订量是500,最大值"
+            if (model.getApplyNums() == null || model.getApplyNums() > stockSubscribe.getOrderNumber()) {
+                return ServerResponse.createByErrorMsg("最大申购数量:"
                         + stockSubscribe.getOrderNumber(),request);
             }
             if(stockSubscribe.getType() == 1){
@@ -196,7 +197,8 @@
                     model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber())));
                     model.setDbMoney(model.getDbMoney());
                     //客户中签直接扣除客户账户可用资金
-                    UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", userStockSubscribe.getUserId());
+                    Stock stock = stockMapper.selectOne(new LambdaQueryWrapper<>(Stock.class).eq(Stock::getStockCode, model.getNewCode()));
+                    UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId(stock.getStockType(), userStockSubscribe.getUserId());
                     if(null == userAssets){
                         return ServerResponse.createByErrorMsg("客户资金账户不存在");
                     }
diff --git a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
index db8c88e..308bbb0 100644
--- a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -221,7 +221,7 @@
             User user = this.userMapper.selectById(userWithdraw.getUserId());
 
 
-            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
+            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
             if (userAssets == null) {
                 return ServerResponse.createByErrorMsg("用户资金账户不存在");
             }
@@ -334,7 +334,7 @@
             if (user == null) {
                 return ServerResponse.createByErrorMsg("用户不存在");
             }
-            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
+            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("MAS", user.getId());
             if (userAssets == null) {
                 return ServerResponse.createByErrorMsg("用户资金账户不存在");
             }
diff --git a/src/main/java/com/nq/utils/task/OrderTask.java b/src/main/java/com/nq/utils/task/OrderTask.java
index 098faf9..35a018a 100644
--- a/src/main/java/com/nq/utils/task/OrderTask.java
+++ b/src/main/java/com/nq/utils/task/OrderTask.java
@@ -15,8 +15,8 @@
     private UserPendingorderService pendingorderService;
 
 
-    @Scheduled(cron = "0 0/1 * * * ?")
-    public void orderTask() {
-        pendingorderService.orderTask();
-    }
+//    @Scheduled(cron = "0 0/1 * * * ?")
+//    public void orderTask() {
+//        pendingorderService.orderTask();
+//    }
 }
diff --git a/src/main/java/com/nq/utils/task/news/NewsTask.java b/src/main/java/com/nq/utils/task/news/NewsTask.java
index cb0aa05..56394d4 100644
--- a/src/main/java/com/nq/utils/task/news/NewsTask.java
+++ b/src/main/java/com/nq/utils/task/news/NewsTask.java
@@ -38,7 +38,7 @@
     /*
      * 新聞資訊抓取
      * */
-    @Scheduled(cron = "0 0/5 * * * ?")
+    @Scheduled(cron = "0 0/1 * * * ?")
     public void NewsInfoTask() {
         if (NewsInfoTask.get()) { // 判断任务是否在处理中
             return;
@@ -57,14 +57,4 @@
             }
         }
     }
-
-
-
-    /*
-     * 新聞公告抓取
-     * */
-//    @Scheduled(cron = "0 0/30 9-20 * * ?")
-//    public void ArtInfoTask() {
-//        this.iSiteArticleService.grabArticle();
-//    }
 }
diff --git a/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java b/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
index ebf714f..0b7ef00 100644
--- a/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
+++ b/src/main/java/com/nq/utils/task/stock/CarryPositionTask.java
@@ -60,7 +60,7 @@
     private final AtomicBoolean ballot = new AtomicBoolean(false);
 
 
-    @Scheduled(cron = "0 0/10 * * * ?")
+    @Scheduled(cron = "0 0/1 * * * ?")
     public void ballot() {
         if (ballot.get()) { // 判断任务是否在处理中
             return;
@@ -112,7 +112,7 @@
                 List<UserStockSubscribe> userStockSubscribes = userStockSubscribeMapper.selectList(new LambdaQueryWrapper<UserStockSubscribe>()
                         .eq(UserStockSubscribe::getStatus, 3));
                 userStockSubscribes.forEach(f->{
-                    UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("IN",f.getUserId());
+                    UserAssets userAssets = userAssetsServices.assetsByTypeAndUserId("MAS",f.getUserId());
                     if(null != userAssets && userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) == 0){
                         f.setStatus(4);
                         userStockSubscribeMapper.updateById(f);
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 620e980..f41d9d9 100644
--- a/src/main/java/com/nq/utils/task/stock/StockTask.java
+++ b/src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -52,48 +52,51 @@
 
     private static final Logger log = LoggerFactory.getLogger(StockTask.class);
 
+    private final AtomicBoolean syncMASStockData = new AtomicBoolean(false);
 
+    private final Lock syncMASStockDataLock = new ReentrantLock();
 
-    private final AtomicBoolean syncINStockData = new AtomicBoolean(false);
+    private final AtomicBoolean syncSGPStockData = new AtomicBoolean(false);
 
-    private final Lock syncINStockDataLock = new ReentrantLock();
+    private final Lock syncSGPStockDataLock = new ReentrantLock();
 
     /**
-     * 同步系统所需要的股票
+     * 同步马来西亚系统所需要的股票
      */
-    @Scheduled(cron = "0/5 * * * * ?")
-    public void syncINStockData() {
-        if (syncINStockData.get()) { // 判断任务是否在处理中
+    @Scheduled(cron = "0 0/1 * * * ?")
+    public void syncMASStockData() {
+        if (syncMASStockData.get()) { // 判断任务是否在处理中
             return;
         }
-        if (syncINStockDataLock.tryLock()) {
+        if (syncMASStockDataLock.tryLock()) {
             try {
-                syncINStockData.set(true); // 设置处理中标识为true
-                loadAllStock(EStockType.IN);
+                syncMASStockData.set(true); // 设置处理中标识为true
+                loadAllStock(EStockType.MAS);
             } finally {
-                syncINStockDataLock.unlock();
-                syncINStockData.set(false); // 设置处理中标识为false
+                syncMASStockDataLock.unlock();
+                syncMASStockData.set(false); // 设置处理中标识为false
             }
         }
     }
 
-
     /**
-     * 同步美国股票
+     * 新加坡系统所需要的股票
      */
-//    @Scheduled(cron = "0 0/30 * * * ?")
-    public void loadStockCompanies() {
-        loadAllCompanies();
-    }
-
-    /**
-     * 同步美国股票
-     * */
     @Scheduled(cron = "0/10 * * * * ?")
-    public  void synsUSStockData(){
-        loadAllStock(EStockType.US);
+    public void syncSGPStockData() {
+        if (syncSGPStockData.get()) { // 判断任务是否在处理中
+            return;
+        }
+        if (syncSGPStockDataLock.tryLock()) {
+            try {
+                syncSGPStockData.set(true); // 设置处理中标识为true
+                loadAllStock(EStockType.SGP);
+            } finally {
+                syncSGPStockDataLock.unlock();
+                syncSGPStockData.set(false); // 设置处理中标识为false
+            }
+        }
     }
-
 
     /**
      * 加载公司信息
@@ -177,35 +180,6 @@
         } catch (
                 Exception e) {
             log.error("同步出错", e);
-        }
-    }
-
-    private final AtomicBoolean stockConstraint = new AtomicBoolean(false);
-
-    /**
-     * 强制平仓
-     */
-//    @Scheduled(cron = "0/1 * * * * ?")
-    public void stockConstraint() {
-        if (stockConstraint.get()) { // 判断任务是否在处理中
-            return;
-        }
-        if (stockConstraintLock.tryLock()) {
-            try {
-                stockConstraint.set(true); // 设置处理中标识为true
-                List<UserPosition> userPositions = userPositionMapper.selectList(new LambdaQueryWrapper<UserPosition>().isNull(UserPosition::getSellOrderId));
-                if (CollectionUtils.isNotEmpty(userPositions)) {
-                    userPositionService.stockConstraint(userPositions);
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-                log.error("强制平仓任务错误:" + e.getMessage());
-            } finally {
-                stockConstraintLock.unlock();
-                stockConstraint.set(false); // 设置处理中标识为false
-            }
-        } else {
-            log.info("强制平仓任务--------->上次任务还未执行完成,本次任务忽略");
         }
     }
 }
diff --git a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
index c0b5456..d59027c 100644
--- a/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
+++ b/src/main/java/com/nq/ws/WebSocketClientBeanConfig.java
@@ -22,7 +22,7 @@
 
         Map<String, WebSocketClient> retMap = new HashMap<>(2);
         try {
-            WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL")),EStockType.US);
+            WebsocketRunClient websocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("SGP_WS_URL")),EStockType.SGP);
             websocketRunClient.connect();
             websocketRunClient.setConnectionLostTimeout(0);
             new Thread(() -> {
@@ -49,7 +49,7 @@
 
         Map<String, WebSocketClient> retMap = new HashMap<>(2);
         try {
-            WebSocketInClient webSocketInClient = new WebSocketInClient(new URI(PropertiesUtil.getProperty("IN_WS_URL")),EStockType.IN);
+            WebSocketInClient webSocketInClient = new WebSocketInClient(new URI(PropertiesUtil.getProperty("MY_WS_URL")),EStockType.MAS);
             webSocketInClient.connect();
             webSocketInClient.setConnectionLostTimeout(0);
             new Thread(() -> {
diff --git a/src/main/java/com/nq/ws/WebSocketInClient.java b/src/main/java/com/nq/ws/WebSocketInClient.java
index a4430a3..c383de9 100644
--- a/src/main/java/com/nq/ws/WebSocketInClient.java
+++ b/src/main/java/com/nq/ws/WebSocketInClient.java
@@ -7,13 +7,24 @@
 import com.nq.service.IMandatoryLiquidationService;
 import com.nq.service.impl.MandatoryLiquidationService;
 import com.nq.utils.ApplicationContextRegisterUtil;
+import com.nq.utils.redis.RedisKeyUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
 import org.java_websocket.client.WebSocketClient;
 import org.java_websocket.handshake.ServerHandshake;
 import org.springframework.context.ApplicationContext;
 
+import java.io.IOException;
 import java.lang.reflect.Type;
 import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -23,6 +34,14 @@
  **/
 @Slf4j
 public class WebSocketInClient  extends WebSocketClient {
+    private static HttpClient httpClient = HttpClients.createDefault(); // 单例化 HttpClient
+
+
+    private static HttpPost httpPost;
+    static {
+        httpPost = new HttpPost("http://127.0.0.1:8001/api/sendNotification"); // 初始化 HttpPost
+    }
+
     private EStockType eStockType;
     public WebSocketInClient(URI serverUri,
                               EStockType eStockType
@@ -39,23 +58,43 @@
     @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);
+            RedisKeyUtil.setCacheRealTimeStock(eStockType,stockDetailBean);
+            send(s);
         }catch (Exception e){
-
+            log.error("websocket  马来西亚 错误:"+s);
+            e.printStackTrace();
         }
     }
 
 
     @Override
     public void onClose(int i, String s, boolean b) {
-        log.info("websocket  印度股票  关闭"+1);
+        log.info("websocket  马来西亚  关闭"+1);
     }
 
     @Override
     public void onError(Exception e) {
         log.info("websocket 错误");
     }
+
+    public void send(String message) {
+        try {
+            // 准备 form-data 参数
+            List<BasicNameValuePair> params = new ArrayList<>();
+            params.add(new BasicNameValuePair("message", message));
+
+            // 设置编码格式为 UTF-8
+            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, StandardCharsets.UTF_8);
+            httpPost.setEntity(entity); // 设置 HttpPost 对象的参数
+
+            // 发送请求
+            HttpResponse response = httpClient.execute(httpPost);
+
+            // 处理响应
+            int statusCode = response.getStatusLine().getStatusCode();
+        } catch (IOException e) {
+            log.error("Http 请求错误", e);
+        }
+    }
 }
diff --git a/src/main/java/com/nq/ws/WebsocketRunClient.java b/src/main/java/com/nq/ws/WebsocketRunClient.java
index bbb262d..fa2c7b4 100644
--- a/src/main/java/com/nq/ws/WebsocketRunClient.java
+++ b/src/main/java/com/nq/ws/WebsocketRunClient.java
@@ -9,16 +9,34 @@
 import com.nq.utils.ApplicationContextRegisterUtil;
 import com.nq.utils.redis.RedisKeyUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
 import org.java_websocket.client.WebSocketClient;
 import org.java_websocket.handshake.ServerHandshake;
 import org.springframework.context.ApplicationContext;
 
+import java.io.IOException;
 import java.lang.reflect.Type;
 import java.net.URI;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 @Slf4j
 public class WebsocketRunClient  extends WebSocketClient {
+
+    private static HttpClient httpClient = HttpClients.createDefault(); // 单例化 HttpClient
+
+
+    private static HttpPost httpPost;
+    static {
+        httpPost = new HttpPost("http://127.0.0.1:8002/api/sendNotification"); // 初始化 HttpPost
+    }
 
     private EStockType eStockType;
     public WebsocketRunClient(URI serverUri,
@@ -36,23 +54,43 @@
     @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);
+            RedisKeyUtil.setCacheRealTimeStock(eStockType,stockDetailBean);
+            send(s);
         }catch (Exception e){
-
+            log.error("websocket  新加坡 错误:"+s);
+            e.printStackTrace();
         }
     }
 
 
     @Override
     public void onClose(int i, String s, boolean b) {
-        log.info("websocket  美国股票  关闭"+1);
+        log.info("websocket  新加坡  关闭"+1);
     }
 
     @Override
     public void onError(Exception e) {
         log.info("websocket 错误");
     }
+
+    public void send(String message) {
+        try {
+            // 准备 form-data 参数
+            List<BasicNameValuePair> params = new ArrayList<>();
+            params.add(new BasicNameValuePair("message", message));
+
+            // 设置编码格式为 UTF-8
+            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, StandardCharsets.UTF_8);
+            httpPost.setEntity(entity); // 设置 HttpPost 对象的参数
+
+            // 发送请求
+            HttpResponse response = httpClient.execute(httpPost);
+
+            // 处理响应
+            int statusCode = response.getStatusLine().getStatusCode();
+        } catch (IOException e) {
+            log.error("Http 请求错误", e);
+        }
+    }
 }
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index bd147d3..e260015 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -45,6 +45,16 @@
 US_WS_URL = ws://ws-us.js-stock.top
 US_KEY = 9sudfjhwdsosdfZyBL4KDa00h
 
+#新加坡股票key的地址
+SGP_HTTP_API = http://api-sg.js-stock.top/
+SGP_WS_URL = ws://api-sg-ws.js-stock.top
+SGP_KEY = 7rQvdwEYDvsNFwT8VmE9
+
+#马来西亚股票key的地址
+MY_HTTP_API = http://api-my.js-stock.top/
+MY_WS_URL = ws://api-my-ws.js-stock.top
+MY_KEY = WgPXdkgCexNXNnoMM46v
+
 
 #股票key的地址
 IN_HTTP_API = https://data.is4vc.com/v1/
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 18d5047..3ba29fb 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -122,7 +122,7 @@
   datasource:
     type: com.alibaba.druid.pool.DruidDataSource
     driverClassName: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://127.0.0.1:3306/stock?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+    url: jdbc:mysql://127.0.0.1:3306/dzh?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
 #    url: jdbc:mysql://127.0.0.1:3306/cgstock?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
     username: root
     password: 123456
diff --git a/src/main/resources/mapper/StockMapper.xml b/src/main/resources/mapper/StockMapper.xml
index dea23bb..f4e3b60 100644
--- a/src/main/resources/mapper/StockMapper.xml
+++ b/src/main/resources/mapper/StockMapper.xml
@@ -334,7 +334,7 @@
     <include refid="Base_Column_List"/>
     FROM stock
 
-    where stock_type = #{stockType}
+    where 1=1
 
     <if test="keyWords != null and keyWords != '' ">
       and (stock_spell like concat('%',#{keyWords},'%')  or stock_name like concat('%',#{keyWords},'%')  )
diff --git a/src/main/resources/mapper/UserPositionMapper.xml b/src/main/resources/mapper/UserPositionMapper.xml
index 7ea7077..ebc763f 100644
--- a/src/main/resources/mapper/UserPositionMapper.xml
+++ b/src/main/resources/mapper/UserPositionMapper.xml
@@ -454,9 +454,9 @@
       <if test="stockSpell != null and stockSpell != '' ">
         and stock_spell like CONCAT('%','${stockSpell}','%')
       </if>
-<!--      <if test="stockType != null and stockType!= ''">-->
-<!--        and stock_gid = #{stockType}-->
-<!--      </if>-->
+      <if test="stockType != null and stockType!= ''">
+        and stock_gid = #{stockType}
+      </if>
 
 
     </where>

--
Gitblit v1.9.3