11 files modified
1 files renamed
1 files deleted
1 files copied
| | |
| | | |
| | | INDICES("indices","指数数据"), |
| | | US_INDICES("us_home_indices_code","美国数据"), |
| | | HK_INDICES("hk_home_indices_code","香港数据"), |
| | | IN_INDICES("in_home_indices_code","印度数据"), |
| | | TW_INDICES("tw_home_indices_code","台湾数据"), |
| | | |
| | | JP_INDICES("jp_home_indices_code","日本数据"), |
| | | ; |
| | | |
| | | //根据货币获取类型 |
| | | public static EConfigKey getEConfigKeyByStockType(String stockType) { |
| | | if(EStockType.US.getCode().equals(stockType)){ |
| | | return US_INDICES; |
| | | }else if(EStockType.HK.getCode().equals(stockType)){ |
| | | return HK_INDICES; |
| | | }else if(EStockType.IN.getCode().equals(stockType)){ |
| | | return IN_INDICES; |
| | | }else if(EStockType.TW.getCode().equals(stockType)){ |
| | | return TW_INDICES; |
| | | } else { |
| | | }else if(EStockType.JP.getCode().equals(stockType)){ |
| | | return JP_INDICES; |
| | | }else { |
| | | return US_INDICES; |
| | | } |
| | | } |
| | |
| | | |
| | | 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$"), |
| | | |
| | | IN("IN","印度股票","14", PropertiesUtil.getProperty("JS_IN_HTTP_URL"),PropertiesUtil.getProperty("JS_IN_KEY"),"INR","₹"), |
| | | |
| | | //MX("MEX","墨西哥股票","7",PropertiesUtil.getProperty("MX_HTTP_API"),PropertiesUtil.getProperty("MX_KEY"),"MXN","MX$"), |
| | | |
| | | TW("TW","台湾股票","46",PropertiesUtil.getProperty("TW_HTTP_API"),PropertiesUtil.getProperty("TW_KEY"),"TWD","NT$"); |
| | | JP("JP","日本股票","35",PropertiesUtil.getProperty("JP_HTTP_API"),PropertiesUtil.getProperty("JP_KEY"),"JPY","¥"); |
| | | |
| | | |
| | | private String code; |
| | |
| | | public static EStockType getEStockTypeByCode(String code){ |
| | | if(EStockType.US.getCode().equals(code)){ |
| | | return US; |
| | | }else if(EStockType.HK.getCode().equals(code)){ |
| | | return HK; |
| | | }else if(EStockType.IN.getCode().equals(code)){ |
| | | return IN; |
| | | }else if(EStockType.TW.getCode().equals(code)){ |
| | | return TW; |
| | | }else if(EStockType.JP.getCode().equals(code)){ |
| | | return JP; |
| | | }else{ |
| | | return US; |
| | | } |
| | |
| | | public static boolean isExistByCode(String code){ |
| | | if(EStockType.US.getCode().equals(code)){ |
| | | return true; |
| | | }else if(EStockType.HK.getCode().equals(code)){ |
| | | return true; |
| | | }else if(EStockType.IN.getCode().equals(code)){ |
| | | return true; |
| | | }else if(EStockType.TW.getCode().equals(code)){ |
| | | }else if(EStockType.JP.getCode().equals(code)){ |
| | | return true; |
| | | }else{ |
| | | return false; |
| | |
| | | public static EStockType getEStockTypeBySymbol(String symbol){ |
| | | if(EStockType.US.getSymbol().equals(symbol)){ |
| | | return US; |
| | | }else if(EStockType.HK.getSymbol().equals(symbol)){ |
| | | return HK; |
| | | }else if(EStockType.IN.getSymbol().equals(symbol)){ |
| | | return IN; |
| | | }else if(EStockType.TW.getSymbol().equals(symbol)){ |
| | | return TW; |
| | | }else if(EStockType.JP.getSymbol().equals(symbol)){ |
| | | return JP; |
| | | }else{ |
| | | return null; |
| | | } |
| | |
| | | addNews(1, PropertiesUtil.getProperty("US_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("US_KEY") + "&type=1") |
| | | ); |
| | | executor.submit(() -> |
| | | addNews(1, PropertiesUtil.getProperty("HK_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("HK_KEY") + "&type=1") |
| | | ); |
| | | executor.submit(() -> |
| | | addNews(1, PropertiesUtil.getProperty("JS_IN_HTTP_URL") + "stock-markets?key=" + PropertiesUtil.getProperty("JS_IN_KEY") + "&type=1") |
| | | ); |
| | | executor.submit(() -> |
| | | addNews(1, PropertiesUtil.getProperty("TW_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("TW_KEY") + "&type=1") |
| | | addNews(1, PropertiesUtil.getProperty("JP_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("JP_KEY") + "&type=1") |
| | | ); |
| | | } finally { |
| | | // 关闭线程池 |
| | |
| | | .like(StockConfig::getCKey, EConfigKey.INDICES.getCode())); |
| | | |
| | | List<DataStockBean> usDataStockBeans = Lists.newArrayList(); |
| | | List<DataStockBean> hkDataStockBeans = Lists.newArrayList(); |
| | | List<DataStockBean> inDataStockBeans = Lists.newArrayList(); |
| | | List<DataStockBean> twDataStockBeans = Lists.newArrayList(); |
| | | List<DataStockBean> jpDataStockBeans = Lists.newArrayList(); |
| | | // 创建Gson对象(全局复用,避免重复创建) |
| | | Gson gson = new Gson(); |
| | | |
| | | // 统一处理各地区股票数据 |
| | | processStockData(stockConfigList, EStockType.US.getCode(), usDataStockBeans, gson); |
| | | //processStockData(stockConfigList, EStockType.HK.getCode(), hkDataStockBeans, gson); |
| | | processStockData(stockConfigList, EStockType.IN.getCode(), inDataStockBeans, gson); |
| | | //processStockData(stockConfigList, EStockType.TW.getCode(), twDataStockBeans, gson); |
| | | processStockData(stockConfigList, EStockType.JP.getCode(), jpDataStockBeans, gson); |
| | | |
| | | // 组装返回结果 |
| | | Map<String, Object> resultMap = new HashMap<>(); |
| | | resultMap.put("newsList", newsList); //新闻列表 |
| | | resultMap.put("usDataStockBeans", usDataStockBeans);//美国指数 |
| | | resultMap.put("hkDataStockBeans", hkDataStockBeans);//香港指数 |
| | | resultMap.put("inDataStockBeans", inDataStockBeans);//印度指数 |
| | | resultMap.put("twDataStockBeans", twDataStockBeans);//台湾指数 |
| | | resultMap.put("jpDataStockBeans", jpDataStockBeans);//日本指数 |
| | | return ServerResponse.createBySuccess(resultMap); |
| | | } catch (Exception e){ |
| | | e.printStackTrace(); |
| | |
| | | List<UserAssets> userAssetsList = userAssetsMapper.selectList(queryWrapper); |
| | | List<EStockType> stockTypes = Arrays.asList( |
| | | EStockType.US, |
| | | EStockType.HK, |
| | | EStockType.IN, |
| | | EStockType.TW |
| | | EStockType.JP |
| | | ); |
| | | for (EStockType stockType : stockTypes) { |
| | | //是否存在记录 |
| | |
| | | null, null, state, null); |
| | | |
| | | BigDecimal usMarketValue = BigDecimal.ZERO; //美股市值 |
| | | BigDecimal hkMarketValue = BigDecimal.ZERO; //港股市值 |
| | | BigDecimal inMarketValue = BigDecimal.ZERO; //印股市值 |
| | | BigDecimal twMarketValue = BigDecimal.ZERO; //台股市值 |
| | | BigDecimal jpMarketValue = BigDecimal.ZERO; //日股市值 |
| | | |
| | | BigDecimal usPositionEarnings = BigDecimal.ZERO; //美股持仓收益 |
| | | BigDecimal hkPositionEarnings = BigDecimal.ZERO; //港股持仓收益 |
| | | BigDecimal inPositionEarnings = BigDecimal.ZERO; //印股持仓收益 |
| | | BigDecimal twPositionEarnings = BigDecimal.ZERO; //台股持仓收益 |
| | | BigDecimal jpPositionEarnings = BigDecimal.ZERO; //日股持仓收益 |
| | | |
| | | BigDecimal usPositionEarningsParent = BigDecimal.ZERO; //美股持仓收益百分比 |
| | | BigDecimal hkPositionEarningsParent = BigDecimal.ZERO; //港股持仓收益百分比 |
| | | BigDecimal inPositionEarningsParent = BigDecimal.ZERO; //印股持仓收益百分比 |
| | | BigDecimal twPositionEarningsParent = BigDecimal.ZERO; //台股持仓收益百分比 |
| | | BigDecimal jpPositionEarningsParent = BigDecimal.ZERO; //日股持仓收益百分比 |
| | | |
| | | if (!userPositions.isEmpty()) { |
| | | for (UserPosition position : userPositions) { |
| | | BigDecimal nowPrice = priceServices.getNowPrice(position.getStockCode()); |
| | | /*if(state == 0){ |
| | | nowPrice = priceServices.getNowPrice(position.getStockCode()); |
| | | }else{ |
| | | nowPrice = position.getSellOrderPrice(); |
| | | }*/ |
| | | |
| | | UserPositionVO userPositionVO = UserPointUtil.assembleUserPositionVO(position,nowPrice); |
| | | userPositionVO.setOrderTotalPrice(userPositionVO.getOrderTotalPrice().multiply(new BigDecimal(userPositionVO.getOrderLever()))); |
| | | |
| | |
| | | usMarketValue = usMarketValue.add(nowPriceSUM); |
| | | usPositionEarnings = usPositionEarnings.add(userPositionVO.getProfitAndLose()); |
| | | usPositionEarningsParent = usPositionEarningsParent.add(userPositionVO.getProfitAndLoseParent2()); |
| | | } else if(position.getStockGid().equals(EStockType.HK.getCode())) { |
| | | hkMarketValue = hkMarketValue.add(nowPriceSUM); |
| | | hkPositionEarnings = hkPositionEarnings.add(userPositionVO.getProfitAndLose()); |
| | | hkPositionEarningsParent = hkPositionEarningsParent.add(userPositionVO.getProfitAndLoseParent2()); |
| | | } else if(position.getStockGid().equals(EStockType.IN.getCode())) { |
| | | inMarketValue = inMarketValue.add(nowPriceSUM); |
| | | inPositionEarnings = inPositionEarnings.add(userPositionVO.getProfitAndLose()); |
| | | inPositionEarningsParent = inPositionEarningsParent.add(userPositionVO.getProfitAndLoseParent2()); |
| | | } else if(position.getStockGid().equals(EStockType.TW.getCode())) { |
| | | twMarketValue = twMarketValue.add(nowPriceSUM); |
| | | twPositionEarnings = twPositionEarnings.add(userPositionVO.getProfitAndLose()); |
| | | twPositionEarningsParent = twPositionEarningsParent.add(userPositionVO.getProfitAndLoseParent2()); |
| | | } else if(position.getStockGid().equals(EStockType.JP.getCode())) { |
| | | jpMarketValue = jpMarketValue.add(nowPriceSUM); |
| | | jpPositionEarnings = jpPositionEarnings.add(userPositionVO.getProfitAndLose()); |
| | | jpPositionEarningsParent = jpPositionEarningsParent.add(userPositionVO.getProfitAndLoseParent2()); |
| | | } |
| | | |
| | | } |
| | | usPositionEarnings = usPositionEarnings.setScale(2, RoundingMode.DOWN); |
| | | hkPositionEarnings = hkPositionEarnings.setScale(2, RoundingMode.DOWN); |
| | | inPositionEarnings = inPositionEarnings.setScale(2, RoundingMode.DOWN); |
| | | twPositionEarnings = twPositionEarnings.setScale(2, RoundingMode.DOWN); |
| | | jpPositionEarnings = jpPositionEarnings.setScale(2, RoundingMode.DOWN); |
| | | } |
| | | |
| | | Map<String, String> map = new HashMap<>(); |
| | |
| | | map.put("usPositionEarnings", String.valueOf(usPositionEarnings)); //美股持仓收益 |
| | | map.put("usPositionEarningsParent", usPositionEarningsParent + "%");//美股持仓收益率 |
| | | |
| | | map.put("hkMarketValue", String.valueOf(hkMarketValue)); //港股市值 |
| | | map.put("hkPositionEarnings", String.valueOf(hkPositionEarnings)); //港股持仓收益 |
| | | map.put("hkPositionEarningsParent", hkPositionEarningsParent + "%");//港股持仓收益率 |
| | | |
| | | map.put("inMarketValue", String.valueOf(inMarketValue)); //印股市值 |
| | | map.put("inPositionEarnings", String.valueOf(inPositionEarnings)); //印股持仓收益 |
| | | map.put("inPositionEarningsParent", inPositionEarningsParent + "%");//印股持仓收益率 |
| | | |
| | | map.put("twMarketValue", String.valueOf(twMarketValue)); //台股市值 |
| | | map.put("twPositionEarnings", String.valueOf(twPositionEarnings)); //台股持仓收益 |
| | | map.put("twPositionEarningsParent", twPositionEarningsParent + "%");//台股持仓收益率 |
| | | map.put("jpMarketValue", String.valueOf(jpMarketValue)); //日股市值 |
| | | map.put("jpPositionEarnings", String.valueOf(jpPositionEarnings)); //日股持仓收益 |
| | | map.put("jpPositionEarningsParent", jpPositionEarningsParent + "%");//日股持仓收益率 |
| | | |
| | | return ServerResponse.createBySuccess(map); |
| | | } catch (Exception e) { |
| | |
| | | |
| | | |
| | | user.setAccountType(Integer.valueOf(0)); |
| | | user.setIsLock(Integer.valueOf(1)); |
| | | user.setIsLock(Integer.valueOf(0)); |
| | | user.setIsActive(Integer.valueOf(0)); |
| | | |
| | | user.setRegTime(new Date()); |
| | |
| | | // 1. 定义需要处理的所有股票类型(集中管理,新增类型只需添加到列表) |
| | | List<EStockType> stockTypes = Arrays.asList( |
| | | EStockType.US, |
| | | EStockType.HK, |
| | | EStockType.IN, |
| | | EStockType.TW |
| | | EStockType.JP |
| | | ); |
| | | |
| | | // 2. 批量创建所有异步任务 |
copy from src/main/java/com/nq/ws/TWWebsocketRunClient.java
copy to src/main/java/com/nq/ws/JPWebsocketRunClient.java
| File was copied from src/main/java/com/nq/ws/TWWebsocketRunClient.java |
| | |
| | | import java.util.*; |
| | | |
| | | @Slf4j |
| | | public class TWWebsocketRunClient extends WebSocketClient { |
| | | public class JPWebsocketRunClient extends WebSocketClient { |
| | | |
| | | private EStockType eStockType; |
| | | public TWWebsocketRunClient(URI serverUri, |
| | | public JPWebsocketRunClient(URI serverUri, |
| | | EStockType eStockType |
| | | ) { |
| | | super(serverUri); |
| | |
| | | //send(("key:"+ eStockType.getStockKey()+":"+eStockType.getContryId()).getBytes()); |
| | | send("heartbeat"); |
| | | } |
| | | |
| | | } |
| | | }, 0, 3000); // 每3秒发送一次心跳消息 |
| | | } |
| | |
| | | @Override |
| | | public void onMessage(String message) { |
| | | if (message.contains("身份验证成功") || message.contains("pong") || message.contains("身份验证失败") || message.contains("ws连接点只能有一个")) { |
| | | System.out.println("tw" + message); |
| | | System.out.println("JP:" + message); |
| | | return; |
| | | } |
| | | System.out.println("tw2" + message); |
| | | System.out.println("JP2" + message); |
| | | Map<String, String> stringObjectMap = jsonToMap(message); |
| | | StockRealTimeBean stockRealTimeBean = new StockRealTimeBean(); |
| | | stockRealTimeBean.setPid(stringObjectMap.get("Id").toString()); |
| | |
| | | stockRealTimeBean.setPc(stringObjectMap.get("Chg").toString()); |
| | | stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct").toString()+"%"); |
| | | stockRealTimeBean.setTime(stringObjectMap.get("Time").toString()); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.TW,stockRealTimeBean); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.JP,stockRealTimeBean); |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | try { |
| | | if(!stockRealTimeBean.getPcp().contains("-")){ |
| | |
| | | String json = objectMapper.writeValueAsString(stockRealTimeBean); |
| | | sendLoca(json); |
| | | StockRealTimeBean stockDetailBean = new Gson().fromJson(message, StockRealTimeBean.class); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.TW,stockDetailBean); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.JP,stockDetailBean); |
| | | } catch (JsonProcessingException e) { |
| | | log.error("websocket 台湾股票 消息错误:{}", e.getMessage()); |
| | | log.error("websocket 日本股票 消息错误:{}", e.getMessage()); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public void onClose(int i, String s, boolean b) { |
| | | log.info("websocket 台湾股票 关闭 {} ", i); |
| | | log.info("websocket 日本股票 关闭 {} ", i); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Exception e) { |
| | | log.info("websocket 台湾股票 错误{}", e.getMessage()); |
| | | log.info("websocket 日本股票 错误{}", e.getMessage()); |
| | | } |
| | | |
| | | public void sendLoca(String message) { |
| File was renamed from src/main/java/com/nq/ws/TWWebsocketRunClient.java |
| | |
| | | import java.util.*; |
| | | |
| | | @Slf4j |
| | | public class TWWebsocketRunClient extends WebSocketClient { |
| | | public class USWebsocketRunClient extends WebSocketClient { |
| | | |
| | | private EStockType eStockType; |
| | | public TWWebsocketRunClient(URI serverUri, |
| | | public USWebsocketRunClient(URI serverUri, |
| | | EStockType eStockType |
| | | ) { |
| | | super(serverUri); |
| | |
| | | @Override |
| | | public void onMessage(String message) { |
| | | if (message.contains("身份验证成功") || message.contains("pong") || message.contains("身份验证失败") || message.contains("ws连接点只能有一个")) { |
| | | System.out.println("tw" + message); |
| | | System.out.println("US" + message); |
| | | return; |
| | | } |
| | | System.out.println("tw2" + message); |
| | | System.out.println("US2" + message); |
| | | Map<String, String> stringObjectMap = jsonToMap(message); |
| | | StockRealTimeBean stockRealTimeBean = new StockRealTimeBean(); |
| | | stockRealTimeBean.setPid(stringObjectMap.get("Id").toString()); |
| | |
| | | stockRealTimeBean.setPc(stringObjectMap.get("Chg").toString()); |
| | | stockRealTimeBean.setPcp(stringObjectMap.get("ChgPct").toString()+"%"); |
| | | stockRealTimeBean.setTime(stringObjectMap.get("Time").toString()); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.TW,stockRealTimeBean); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.US,stockRealTimeBean); |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | try { |
| | | if(!stockRealTimeBean.getPcp().contains("-")){ |
| | |
| | | String json = objectMapper.writeValueAsString(stockRealTimeBean); |
| | | sendLoca(json); |
| | | StockRealTimeBean stockDetailBean = new Gson().fromJson(message, StockRealTimeBean.class); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.TW,stockDetailBean); |
| | | RedisKeyUtil.setCacheRealTimeStock(EStockType.US,stockDetailBean); |
| | | } catch (JsonProcessingException e) { |
| | | log.error("websocket 台湾股票 消息错误:{}", e.getMessage()); |
| | | log.error("websocket 美股股票 消息错误:{}", e.getMessage()); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public void onClose(int i, String s, boolean b) { |
| | | log.info("websocket 台湾股票 关闭 {} ", i); |
| | | log.info("websocket 美股股票 关闭 {} ", i); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(Exception e) { |
| | | log.info("websocket 台湾股票 错误{}", e.getMessage()); |
| | | log.info("websocket 美股股票 错误{}", e.getMessage()); |
| | | } |
| | | |
| | | public void sendLoca(String message) { |
| | |
| | | /* |
| | | package com.nq.ws; |
| | | |
| | | import com.nq.enums.EStockType; |
| | |
| | | |
| | | Map<String, WebSocketClient> retMap = new HashMap<>(2); |
| | | try { |
| | | WebsocketRunClient hkWebsocketRunClient = new WebsocketRunClient(new URI(PropertiesUtil.getProperty("HK_WS_URL")), EStockType.HK); |
| | | hkWebsocketRunClient.connect(); |
| | | hkWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(hkWebsocketRunClient); |
| | | retMap.put(EStockType.HK.getStockKey(), hkWebsocketRunClient); |
| | | JPWebsocketRunClient jpWebsocketRunClient = new JPWebsocketRunClient(new URI(PropertiesUtil.getProperty("JP_WS_URL")), EStockType.JP); |
| | | jpWebsocketRunClient.connect(); |
| | | jpWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(jpWebsocketRunClient); |
| | | retMap.put(EStockType.JP.getStockKey(), jpWebsocketRunClient); |
| | | } catch (Exception e) { |
| | | log.error("hkWebsocketRunClient 异常: {}", e.getMessage()); |
| | | log.error("jpWebsocketRunClient 异常: {}", e.getMessage()); |
| | | } |
| | | try { |
| | | TWWebsocketRunClient twWebsocketRunClient = new TWWebsocketRunClient(new URI(PropertiesUtil.getProperty("TW_WS_URL")), EStockType.TW); |
| | | twWebsocketRunClient.connect(); |
| | | twWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(twWebsocketRunClient); |
| | | retMap.put(EStockType.TW.getStockKey(), twWebsocketRunClient); |
| | | USWebsocketRunClient usWebsocketRunClient = new USWebsocketRunClient(new URI(PropertiesUtil.getProperty("US_WS_URL")), EStockType.US); |
| | | usWebsocketRunClient.connect(); |
| | | usWebsocketRunClient.setConnectionLostTimeout(0); |
| | | startHeartbeatThread(usWebsocketRunClient); |
| | | retMap.put(EStockType.US.getStockKey(), usWebsocketRunClient); |
| | | } catch (Exception e) { |
| | | log.error("twWebsocketRunClient 异常: {}", e.getMessage()); |
| | | log.error("usWebsocketRunClient 异常: {}", e.getMessage()); |
| | | } |
| | | return retMap; |
| | | } |
| | |
| | | |
| | | |
| | | } |
| | | */ |
| | | |
| | |
| | | ftp.user=ftp_stock |
| | | ftp.pass=Fxw16SK6s7QA |
| | | ftp.address =/www/wwwroot/ftp_stock/ |
| | | ftp.server.http.prefix=https://img.acapl.net/ |
| | | ftp.server.http.prefix=https://rgimg.shengliankeji.top/ |
| | | |
| | | redis1.ip=localhost |
| | | redis1.port=6379 |
| | |
| | | |
| | | #股票key的地址 |
| | | US_HTTP_API = http://api-us-v2.js-stock.top/ |
| | | #US_WS_URL = ws://api-us-v2-ws.js-stock.top |
| | | US_WS_URL = ws://api-us-v2-ws.js-stock.top |
| | | US_KEY = SIjHECiI3cIVfHXwsLsL |
| | | |
| | | HK_HTTP_API = http://api-hk.js-stock.top/ |
| | | HK_WS_URL = ws://api-hk-ws.js-stock.top |
| | | HK_KEY = rJqhNHGpoyYierlzTq39 |
| | | |
| | | JS_IN_HTTP_URL = http://api-in-pro.js-stock.top/ |
| | | #JS_IN_WS_URL = ws://api-in-pro-ws.js-stock.top |
| | | JS_IN_KEY = xKChgi47AP1NMwMeYI3c |
| | | |
| | | TW_HTTP_API = http://api-tw.js-stock.top/ |
| | | TW_WS_URL = ws://api-tw-ws.js-stock.top |
| | | TW_KEY = hhlobPKTugRVtWtHMxrf |
| | | |
| | | |
| | | JP_HTTP_API = http://api-jp.js-stock.top/ |
| | | JP_WS_URL = ws://api-jp-ws.js-stock.top |
| | | JP_KEY = rST7RRMPgvW4ogcAppCx |
| | | #默认首页显示指数code |
| | | #us_home_indices_code=15882,15881,16571 |
| | | #hk_home_indices_code=535606773,535606776,535606785 |
| | |
| | | # 端口,默认为6379 |
| | | port: 6379 |
| | | # 数据库索引 |
| | | database: 0 |
| | | database: 6 |
| | | # 密码 |
| | | password: |
| | | # 连接超时时间 |
| | |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | #url: jdbc:mysql://127.0.0.1:6306/stock_ci?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://127.0.0.1:3306/stock?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: stock |
| | | password: aGZyCy3YrBXwAxJs |
| | | url: jdbc:mysql://127.0.0.1:3306/stock-dg?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | username: stock-dg |
| | | password: 6eAcBiXTatc8L6hm |
| | | druid: |
| | | # 初始连接数 |
| | | initialSize: 5 |