1
zj
2024-07-10 c0750bad4e7ab9acdef951d50f67cb488639b4de
1
11 files modified
146 ■■■■ changed files
src/main/java/com/nq/enums/EStockType.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/StockServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserRechargeServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserServiceImpl.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/service/impl/UserStockSubscribeServiceImpl.java 10 ●●●● patch | view | raw | blame | history
src/main/java/com/nq/utils/task/stock/StockTask.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/ws/WsClientConfig.java 6 ●●●● patch | view | raw | blame | history
src/main/resources/application.properties 87 ●●●●● patch | view | raw | blame | history
src/main/resources/application.yml 2 ●●● patch | view | raw | blame | history
src/main/java/com/nq/enums/EStockType.java
@@ -2,6 +2,7 @@
import com.nq.utils.PropertiesUtil;
import com.sun.org.apache.bcel.internal.generic.RETURN;
/**
 * 股票类型
@@ -12,10 +13,11 @@
    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"));
@@ -44,15 +46,8 @@
    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;
        }
    }
src/main/java/com/nq/service/impl/SiteNewsServiceImpl.java
@@ -132,7 +132,7 @@
    @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) {
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.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();
@@ -459,7 +459,7 @@
    @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());
src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -1621,7 +1621,7 @@
        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);
    }
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.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);
@@ -342,7 +342,7 @@
        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) {
src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -199,7 +199,7 @@
            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);
        }
@@ -789,8 +789,8 @@
        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");
        }
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.IN.getCode(), user.getId());
               BigDecimal useEnaAmount = iUserAssetsServices.getAvailableBalance(EStockType.JP.getCode(), 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.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 {
@@ -217,7 +217,7 @@
                    }
                    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);
@@ -419,14 +419,14 @@
                    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);
src/main/java/com/nq/utils/task/stock/StockTask.java
@@ -69,7 +69,7 @@
        if (syncINStockDataLock.tryLock()) {
            try {
                syncINStockData.set(true); // 设置处理中标识为true
                loadAllStock(EStockType.IN);
                loadAllStock(EStockType.JP);
            } finally {
                syncINStockDataLock.unlock();
                syncINStockData.set(false); // 设置处理中标识为false
src/main/java/com/nq/ws/WsClientConfig.java
@@ -39,8 +39,8 @@
@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;
@@ -79,7 +79,7 @@
                    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());
                }
src/main/resources/application.properties
@@ -1,16 +1,4 @@
#   ????? 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
@@ -41,47 +29,50 @@
#股票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
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/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