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