| | |
| | | |
| | | |
| | | import com.nq.utils.PropertiesUtil; |
| | | import com.sun.org.apache.bcel.internal.generic.RETURN; |
| | | |
| | | /** |
| | | * 股票类型 |
| | |
| | | |
| | | |
| | | 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"), |
| | | // 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("JS_IN_KEY"),"INR","₹"); |
| | | JP("JP","日本股票","35", PropertiesUtil.getProperty("JP_HTTP_API"),PropertiesUtil.getProperty("JP_KEY"),"JPY","¥"); |
| | | // 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")); |
| | |
| | | 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.MAS.getCode().equals(code)){ |
| | | return MAS; |
| | | }else if(EStockType.IN.getCode().equals(code)){ |
| | | return IN; |
| | | }else{ |
| | | return MAS; |
| | | return JP; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | @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("JP_HTTP_API") + "stock-markets?key=" + PropertiesUtil.getProperty("JP_KEY") + "&type=6"); |
| | | } |
| | | |
| | | private void addNews(Integer type, String url) { |
| | |
| | | @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.IN.getCode())){ |
| | | if(stockType.equals(EStockType.JP.getCode())){ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockByType(orderBy,stockType,keyWords)); |
| | | }else{ |
| | | PageHelper.startPage(pageNum, pageSize); |
| | | stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.IN.getCode(), keyWords)); |
| | | stockList.addAll(stockMapper.findStockTypeDz(orderBy,EStockType.JP.getCode(), keyWords)); |
| | | } |
| | | |
| | | List<StockListVO> stockListVOS = Lists.newArrayList(); |
| | |
| | | @Override |
| | | public Object getKData(String pid, String interval, String stockType) { |
| | | EStockType eStockType = EStockType.getEStockTypeByCode(stockType); |
| | | if(eStockType == EStockType.IN){ |
| | | if(eStockType == EStockType.JP){ |
| | | Object object = HttpUtil.get(eStockType.stockUrl + "api/all/getKData.do?pid=" + pid + "&interval=" + interval + "&stockType=in"); |
| | | Gson gson = new Gson(); |
| | | List<kData> dataList = gson.fromJson(object.toString(), new TypeToken<List<kData>>(){}.getType()); |
| | |
| | | |
| | | userPosition.setOrderSpread(BigDecimal.ZERO); |
| | | userPositionMapper.insert(userPosition); |
| | | userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | userAssetsServices.availablebalanceChange(EStockType.JP.getCode(), user.getId(), EUserAssets.BUY, buyAmt.negate(),"",""); |
| | | return ServerResponse.createBySuccess("购买成功", request); |
| | | } |
| | | |
| | |
| | | |
| | | for (int i = 0; i <userRecharges.size() ; i++) { |
| | | SitePay s = sitePayMapper.selectById(userRecharges.get(i).getPayId()); |
| | | userRecharges.get(i).setAssetsType(EStockType.IN.getSymbol1()); |
| | | userRecharges.get(i).setChannelName(EStockType.IN.getSymbol()); |
| | | userRecharges.get(i).setAssetsType(EStockType.JP.getSymbol1()); |
| | | userRecharges.get(i).setChannelName(EStockType.JP.getSymbol()); |
| | | } |
| | | |
| | | return ServerResponse.createBySuccess(pageInfo); |
| | |
| | | userRecharge.setPayTime(new Date()); |
| | | userRecharge.setOrderStatus(Integer.valueOf(1)); |
| | | userRecharge.setPayId(1); |
| | | userAssetsServices.availablebalanceChange(EStockType.IN.getCode(), |
| | | userAssetsServices.availablebalanceChange(EStockType.JP.getCode(), |
| | | userId,EUserAssets.TOP_UP,new BigDecimal(amt),"",""); |
| | | int insertCount = this.userRechargeMapper.insert(userRecharge); |
| | | if (insertCount > 0) { |
| | |
| | | if (user.getIsLogin().intValue() == 1) { |
| | | return ServerResponse.createByErrorMsg("登录失败。账户锁定",request); |
| | | } |
| | | userAssetsServices.assetsByTypeAndUserId(EStockType.IN.getCode(),user.getId()); |
| | | userAssetsServices.assetsByTypeAndUserId(EStockType.JP.getCode(),user.getId()); |
| | | this.iSiteLoginLogService.saveLog(user, request); |
| | | return ServerResponse.createBySuccess(user); |
| | | } |
| | |
| | | |
| | | int insertCount = this.userMapper.insert(user); |
| | | dbUser = userMapper.selectOne(queryWrapper); |
| | | userAssetsServices.getAvailableBalance(EStockType.IN.getCode(),dbUser.getId() ); |
| | | userAssetsServices.availablebalanceChange(EStockType.IN.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"",""); |
| | | userAssetsServices.getAvailableBalance(EStockType.JP.getCode(),dbUser.getId() ); |
| | | userAssetsServices.availablebalanceChange(EStockType.JP.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"",""); |
| | | if (insertCount > 0) { |
| | | return ServerResponse.createBySuccessMsg("Success"); |
| | | } |
| | |
| | | } |
| | | }else{ |
| | | BigDecimal bound = new BigDecimal(model.getApplyNums()).multiply(stockSubscribe.getPrice()); |
| | | BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.IN.getCode(), user.getId()); |
| | | BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.JP.getCode(), user.getId()); |
| | | if(useEnaAmount.compareTo(bound)<0){ |
| | | return ServerResponse.createByErrorMsg("余额不足,配售失败",request); |
| | | } |
| | |
| | | model.setType(stockSubscribe.getType()); |
| | | model.setDbMoney(BigDecimal.ZERO); |
| | | ret = userStockSubscribeMapper.insert(model); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"",""); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.JP.getCode(), user.getId(),EUserAssets.BUY,bound.negate(),"",""); |
| | | if (ret > 0) { |
| | | return ServerResponse.createBySuccessMsg("配售成功",request); |
| | | } else { |
| | |
| | | } |
| | | BigDecimal cCount = new BigDecimal(model.getApplyNums()-model.getApplyNumber()); |
| | | BigDecimal tMoney = stockSubscribe.getPrice().multiply(cCount); |
| | | iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(), |
| | | iUserAssetsServices.availablebalanceChange(EStockType.JP.getCode(),userStockSubscribe.getUserId(), |
| | | EUserAssets.TOP_UP,tMoney,"",""); |
| | | model.setBond(stockSubscribe.getPrice().multiply(BigDecimal.valueOf(model.getApplyNumber()))); |
| | | model.setDbMoney(BigDecimal.ZERO); |
| | |
| | | userStockSubscribe.setSubmitTime(DateTimeUtil.getCurrentDate()); |
| | | userStockSubscribe.setStatus(4); |
| | | BigDecimal bigDecimal = iUserAssetsServices. |
| | | getAvailableBalance(EStockType.IN.getCode(), |
| | | getAvailableBalance(EStockType.JP.getCode(), |
| | | userStockSubscribe.getUserId()); |
| | | |
| | | BigDecimal multiply = userStockSubscribe.getBuyPrice().multiply(new BigDecimal(userStockSubscribe.getApplyNumber())); |
| | | if(bigDecimal.compareTo(multiply) <= 0){ |
| | | return ServerResponse.createByErrorMsg("余额不足",request); |
| | | } |
| | | iUserAssetsServices.availablebalanceChange(EStockType.IN.getCode(),userStockSubscribe.getUserId(), |
| | | iUserAssetsServices.availablebalanceChange(EStockType.JP.getCode(),userStockSubscribe.getUserId(), |
| | | EUserAssets.BUY,multiply.negate(),"",""); |
| | | userStockSubscribe.setDbMoney(BigDecimal.ZERO); |
| | | userStockSubscribeMapper.update1(userStockSubscribe); |
| | |
| | | if (syncINStockDataLock.tryLock()) { |
| | | try { |
| | | syncINStockData.set(true); // 设置处理中标识为true |
| | | loadAllStock(EStockType.IN); |
| | | loadAllStock(EStockType.JP); |
| | | } finally { |
| | | syncINStockDataLock.unlock(); |
| | | syncINStockData.set(false); // 设置处理中标识为false |
| | |
| | | @Configuration |
| | | public class WsClientConfig { |
| | | |
| | | private static final String SERVER_URL = PropertiesUtil.getProperty("JS_IN_HTTP_API"); |
| | | private static final String AUTH_KEY = PropertiesUtil.getProperty("JS_IN_KEY"); |
| | | private static final String SERVER_URL = PropertiesUtil.getProperty("JP_HTTP_API"); |
| | | private static final String AUTH_KEY = PropertiesUtil.getProperty("JP_KEY"); |
| | | private static final String ROOM_ID = "14"; |
| | | private static Socket socket; |
| | | |
| | |
| | | ApplicationContext act = ApplicationContextRegisterUtil.getApplicationContext(); |
| | | MandatoryLiquidationService liquidationService = (MandatoryLiquidationService) act.getBean(IMandatoryLiquidationService.class); |
| | | StockRealTimeBean stockDetailBean = new Gson().fromJson(args[0].toString(), StockRealTimeBean.class); |
| | | liquidationService.RealTimeDataProcess(EStockType.IN,stockDetailBean); |
| | | liquidationService.RealTimeDataProcess(EStockType.JP,stockDetailBean); |
| | | }catch (Exception e){ |
| | | log.error("socket数据存入缓存错误:", e.getMessage()); |
| | | } |
| | |
| | | |
| | | # ????? 61001/62000 ?? |
| | | #??vsftpd |
| | | #1. service vsftpd restart |
| | | #2. ??ifconfig????vsftpd????? |
| | | #3. ???? ftp://?? |
| | | |
| | | #ftp.server.ip=23.224.235.226 |
| | | #ftp.user=ftp_stock |
| | | #ftp.pass=123456 |
| | | #ftp.address =/www/wwwroot/ftp_stock/ |
| | | #ftp.server.http.prefix=https://img.essencefunds.com/ |
| | | |
| | | |
| | | |
| | | ftp.server.ip=127.0.0.1 |
| | |
| | | |
| | | |
| | | #股票key的地址 |
| | | IN_HTTP_API = https://data.is4vc.com/ |
| | | IN_WS_URL =ws://ws.is4vc.com:8001/websocket-server |
| | | IN_KEY = r3ZAgtcYzuBizmqge2hK |
| | | IN_NEW_HTTP_API = http://api-in-2.js-stock.top/ |
| | | IN_NEW_KEY = eVKtHt7aG4m6ozwWL9qG |
| | | |
| | | JS_IN_HTTP_API = http://api-in-2-socket.js-stock.top |
| | | JS_IN_WS_URL =ws://api-in-2-ws.js-stock.top |
| | | JS_IN_KEY = eVKtHt7aG4m6ozwWL9qG |
| | | |
| | | US_HTTP_API = http://api-us.js-stock.top/ |
| | | US_WS_URL = ws://ws-us.js-stock.top |
| | | US_KEY = jZFrku4RGQjP87Hmq5tm |
| | | |
| | | HK_HTTP_API = http://test.js-stock.top/ |
| | | HK_WS_URL = ws://test-ws.js-stock.top |
| | | HK_KEY = mG8QQDdjGuLjLnrryd0B |
| | | JP_HTTP_API = http://api-jp.js-stock.top/ |
| | | JP_WS_URL = ws://api-jp-ws.js-stock.top |
| | | JP_KEY = glcd4SAiD6oXExIDOtUJ |
| | | #IN_HTTP_API = https://data.is4vc.com/ |
| | | #IN_WS_URL =ws://ws.is4vc.com:8001/websocket-server |
| | | #IN_KEY = r3ZAgtcYzuBizmqge2hK |
| | | #IN_NEW_HTTP_API = http://api-in-2.js-stock.top/ |
| | | #IN_NEW_KEY = eVKtHt7aG4m6ozwWL9qG |
| | | # |
| | | #JS_IN_HTTP_API = http://api-in-2-socket.js-stock.top |
| | | #JS_IN_WS_URL =ws://api-in-2-ws.js-stock.top |
| | | #JS_IN_KEY = eVKtHt7aG4m6ozwWL9qG |
| | | # |
| | | #US_HTTP_API = http://api-us.js-stock.top/ |
| | | #US_WS_URL = ws://ws-us.js-stock.top |
| | | #US_KEY = jZFrku4RGQjP87Hmq5tm |
| | | # |
| | | #HK_HTTP_API = http://test.js-stock.top/ |
| | | #HK_WS_URL = ws://test-ws.js-stock.top |
| | | #HK_KEY = mG8QQDdjGuLjLnrryd0B |
| | | |
| | | |
| | | #HK_HTTP_API = http://api-v1.js-stock.top/ |
| | | #HK_WS_URL = ws://api-v1-ws.js-stock.top |
| | | #HK_KEY = QgiqrYYZem1WWXWbHeT7 |
| | | |
| | | |
| | | HG_HTTP_API = http://test.js-stock.top/ |
| | | HG_WS_URL = ws://test-ws.js-stock.top |
| | | HG_KEY = mG8QQDdjGuLjLnrryd0B |
| | | |
| | | |
| | | |
| | | TH_HTTP_API = http://test.js-stock.top/ |
| | | TH_WS_URL = ws://api-in-ws.js-stock.top |
| | | TH_KEY = GBZAcUPLKZzDMDjvV9Ea |
| | | |
| | | MAS_HTTP_API = http://api-ms.js-stock.top/ |
| | | MAS_WS_URL = ws://api-ms-ws.js-stock.top |
| | | MAS_KEY = PQWyZGrw7wRqdoWrvnY9 |
| | | |
| | | SZHB_HTTP_API = https://api.huobi.pro/ |
| | | SZHB_WS_URL = ws://api-in-ws.js-stock.top |
| | | SZHB_KEY = GBZAcUPLKZzDMDjvV9Ea |
| | | # |
| | | # |
| | | #HG_HTTP_API = http://test.js-stock.top/ |
| | | #HG_WS_URL = ws://test-ws.js-stock.top |
| | | #HG_KEY = mG8QQDdjGuLjLnrryd0B |
| | | # |
| | | # |
| | | # |
| | | #TH_HTTP_API = http://test.js-stock.top/ |
| | | #TH_WS_URL = ws://api-in-ws.js-stock.top |
| | | #TH_KEY = GBZAcUPLKZzDMDjvV9Ea |
| | | # |
| | | #MAS_HTTP_API = http://api-ms.js-stock.top/ |
| | | #MAS_WS_URL = ws://api-ms-ws.js-stock.top |
| | | #MAS_KEY = PQWyZGrw7wRqdoWrvnY9 |
| | | # |
| | | #SZHB_HTTP_API = https://api.huobi.pro/ |
| | | #SZHB_WS_URL = ws://api-in-ws.js-stock.top |
| | | #SZHB_KEY = GBZAcUPLKZzDMDjvV9Ea |
| | | |
| | | |
| | | |
| | |
| | | datasource: |
| | | type: com.alibaba.druid.pool.DruidDataSource |
| | | driverClassName: com.mysql.cj.jdbc.Driver |
| | | url: jdbc:mysql://127.0.0.1:3306/zyqsstock?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 |
| | | url: jdbc:mysql://127.0.0.1:3306/rb?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 |