Prechádzať zdrojové kódy

1.风控
2.数据存redis
———— by qlm

qlm 4 rokov pred
rodič
commit
3cfe0c3f26

+ 0 - 3
src/main/java/com/xc/config/JfinalActiveRecordConfig.java

@@ -3,8 +3,6 @@ package com.xc.config;
 import com.alibaba.druid.pool.DruidDataSource;
 import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
 import com.xc.utils.PropertiesUtil2;
-import com.xc.utils.websocket.WsClient;
-import org.java_websocket.WebSocket;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.context.annotation.Bean;
@@ -13,7 +11,6 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
 import org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy;
 
 import javax.annotation.PreDestroy;
-import java.net.URI;
 import java.sql.SQLException;
 
 /**

+ 1 - 1
src/main/java/com/xc/controller/RiskController.java

@@ -37,7 +37,7 @@ public class RiskController {
     @RequestMapping({"delete.do"})
     @ResponseBody
     public ServerResponse delete(String id) {
-        int data = Db.use("data").update("delete   risk_control_formula  where id = ? ", id);
+        int data = Db.use("data").update("delete  from  risk_control_formula  where id = ? ", id);
         return ServerResponse.createBySuccessMsg(data == 1 ? "true" : "false");
     }
 

Rozdielové dáta súboru neboli zobrazené, pretože súbor je príliš veľký
+ 59 - 8
src/main/java/com/xc/controller/WebSocketTestController.java


+ 18 - 0
src/main/java/com/xc/service/InitStockListService.java

@@ -0,0 +1,18 @@
+package com.xc.service;
+
+
+import com.xc.vo.stock.StockVO;
+
+import java.io.IOException;
+import java.util.List;
+
+public interface InitStockListService {
+
+    void initStockToRedis();
+
+
+    void updateListInfo(List<StockVO> stockVOList);
+
+    void updateInfo(StockVO stockVOList);
+
+}

+ 127 - 0
src/main/java/com/xc/service/impl/InitStockListRedisServiceImpl.java

@@ -0,0 +1,127 @@
+package com.xc.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.google.common.collect.Lists;
+import com.jfinal.plugin.activerecord.Record;
+import com.xc.dao.StockMapper;
+import com.xc.pojo.Stock;
+import com.xc.pub.redismessage.util.RedisUtil;
+import com.xc.service.DbStockService;
+import com.xc.service.IStockService;
+import com.xc.service.InitStockListService;
+import com.xc.vo.stock.StockListVO;
+import com.xc.vo.stock.StockVO;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class InitStockListRedisServiceImpl implements InitStockListService {
+
+    @Autowired
+    private StockMapper stockMapper;
+
+    @Autowired
+    private DbStockService dbStockService;
+
+    @Autowired
+    private IStockService stockService;
+
+    @Autowired
+    private RedisUtil redisUtil;
+
+    private static Set<String> stockSet = null;
+
+
+    /**
+     * 如果没有发现 data_stock 就 初始化
+     * 初始化列表
+     */
+    @Override
+    public void initStockToRedis() {
+        String redisKey = String.format("data_stock");
+        String redisData = redisUtil.getItem(redisKey);
+        if (StringUtils.isEmpty(redisData) || ("[]".equals(redisData))) {
+            List<StockVO> stockVOList = getStockList();
+            redisUtil.saveItem(redisKey, JSON.toJSONString(stockVOList), 1, TimeUnit.DAYS);
+        }
+    }
+
+    /**
+     * 更新列表
+     * @param stockVOList
+     */
+    @Override
+    public void updateListInfo(List<StockVO> stockVOList) {
+        if(CollectionUtils.isEmpty(stockVOList)){
+            return;
+        }
+        String redisKey = String.format("data_stock");
+        String redisData = redisUtil.getItem(redisKey);
+        List<StockVO> stockRedisList = new ArrayList<>();
+        if (StringUtils.isNotEmpty(redisData) && !("[]".equals(redisData))) {
+            stockRedisList = JSONArray.parseArray(redisData, StockVO.class);
+        }else {
+            initStockToRedis();
+            redisData = redisUtil.getItem(redisKey);
+            if (StringUtils.isNotEmpty(redisData) && !("[]".equals(redisData))) {
+                stockRedisList = JSONArray.parseArray(redisData, StockVO.class);
+            }
+        }
+        Iterator<StockVO> iterator = stockVOList.iterator();
+        while (iterator.hasNext()) {
+            StockVO stock = iterator.next();
+            Iterator<StockVO> iteratorRedis = stockRedisList.iterator();
+            while (iteratorRedis.hasNext()) {
+                StockVO stockRedis = iteratorRedis.next();
+                if(stock.getCode().equals(stockRedis.getCode())){
+                    stockRedis.setNowPrice(stock.getNowPrice());
+                    stockRedis.setHcrate(stock.getHcrate().multiply(new BigDecimal(100)));
+                    stockRedis.setChange(stock.getChange());
+                    break;
+                }
+            }
+        }
+        redisUtil.saveItem(redisKey, JSON.toJSONString(stockRedisList), 10, TimeUnit.MINUTES);
+    }
+
+    @Override
+    public void updateInfo(StockVO stockVOList) {
+        String redisKey = String.format(stockVOList.getCode());
+        redisUtil.saveItem(redisKey, JSON.toJSONString(stockVOList), 10, TimeUnit.MINUTES);
+
+    }
+
+    private List<StockVO> getStockList() {
+        List<Stock> stockList = this.stockMapper.findStockListByKeyWords(null, null, null, 0);
+        List<StockVO> stockListVOS = Lists.newArrayList();
+        Record record = new Record();
+        record.getColumns();
+        int isTransState = 0;
+        if (stockList.size() > 0) {
+            for (Stock stock : stockList) {
+                StockVO stockListVO = dbStockService.getStock(stock.getStockGid());
+                stockListVO.setName(stock.getStockName());
+                stockListVO.setId(stock.getId());
+                stockListVO.setCode(stock.getStockCode());
+                stockListVO.setSpell(stock.getStockSpell());
+                stockListVO.setGid(stock.getStockGid());
+                stockListVOS.add(stockListVO);
+            }
+        }
+        return stockListVOS;
+    }
+
+
+
+
+}

+ 0 - 4
src/main/java/com/xc/utils/BigDecimalUtil.java

@@ -1,11 +1,7 @@
 package com.xc.utils;
 
-import com.xc.utils.websocket.WsClient;
-import org.java_websocket.WebSocket;
-
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.net.URI;
 
 public class BigDecimalUtil {
 

+ 12 - 0
src/main/java/com/xc/utils/task/index/DemurrageIndexTask.java

@@ -1,6 +1,7 @@
 package com.xc.utils.task.index;
 
 import com.xc.service.IUserPositionService;
+import com.xc.service.InitStockListService;
 import com.xc.utils.DateTimeUtil;
 import com.xc.utils.thread.ThreadUtil;
 import org.slf4j.Logger;
@@ -18,6 +19,9 @@ public class DemurrageIndexTask {
     @Autowired
     IUserPositionService iUserPositionService;
 
+    @Autowired
+    InitStockListService initStockListService;
+
     // 星期一到星期五的0点触发
 //    @Scheduled(cron = "0 0 0 ? * MON-FRI")
     // 每天0点触发
@@ -28,10 +32,18 @@ public class DemurrageIndexTask {
         log.info("=====定时任务===计算延期费,当前时间 {} =====", DateTimeUtil.dateToStr(new Date()));
     }
 
+    @Scheduled(cron = "1 0 0 * * ?")
+    public void initStockToRedis() {
+        initStockListService.initStockToRedis();
+    }
+
 
     private void doTask() {
         ThreadUtil.executeInThread(obj -> {
             iUserPositionService.calcDemurrage();
         });
     }
+
+
+
 }

+ 44 - 7
src/main/java/com/xc/utils/websocket/WsClient.java

@@ -1,18 +1,32 @@
 package com.xc.utils.websocket;
 
-//import com.alibaba.fastjson.JSONObject;
-//import com.jfinal.plugin.activerecord.Db;
-//import com.jfinal.plugin.activerecord.Record;
+import com.alibaba.fastjson.JSONObject;
 import com.xc.controller.websocket.WebSocketController;
+import com.xc.service.InitStockListService;
+import com.xc.vo.stock.StockVO;
 import org.apache.commons.lang3.StringUtils;
 import org.java_websocket.client.WebSocketClient;
 import org.java_websocket.handshake.ServerHandshake;
 
+import java.math.BigDecimal;
 import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
 
 public class WsClient extends WebSocketClient {
 
-    public WsClient(URI serverUri) {
+    private static WsClient instance ;
+
+    static InitStockListService initStockListServiceBiz;
+    /**
+     * 单例
+     */
+    public static WsClient getInstance(InitStockListService initStockListService) {
+        initStockListServiceBiz=initStockListService;
+        return instance;
+    }
+
+    public  WsClient(URI serverUri) {
         super(serverUri);
     }
 
@@ -44,9 +58,32 @@ public class WsClient extends WebSocketClient {
         try {
             if(StringUtils.isNotBlank(arg0)){
                 // 存储信息至redis
-                //?
-
-              //  System.out.println(arg0);
+                JSONObject parse = (JSONObject) JSONObject.parse(arg0);
+                StockVO stockVO = new StockVO();
+                stockVO.setId(parse.getInteger("id"));
+                stockVO.setName(parse.getString("name"));
+                stockVO.setCode(parse.getString("code"));
+                stockVO.setSpell(parse.getString("spell"));
+                stockVO.setGid(parse.getString("gid"));
+                stockVO.setNowPrice(parse.get("nowPrice")+"");
+                stockVO.setHcrate(new BigDecimal(parse.get("hcrate")+""));
+                stockVO.setToday_max(parse.get("today_max")+"");
+                stockVO.setToday_min(parse.get("today_min")+"");
+                stockVO.setBusiness_balance(parse.get("business_balance")+"");
+                stockVO.setBusiness_amount(parse.get("business_amount")+"");
+                stockVO.setPreclose_px(parse.get("preclose")+"");
+                stockVO.setOpen_px(parse.get("open")+"");
+                stockVO.setTransState(parse.getInteger("transState"));
+                stockVO.setDepositAmt(parse.getInteger("depositAmt"));
+                stockVO.setMinImg(parse.getString("minImg"));
+                stockVO.setDayImg(parse.getString("dayImg"));
+                stockVO.setWeekImg(parse.getString("weekImg"));
+                stockVO.setMonthImg(parse.getString("monthImg"));
+                stockVO.setChange(parse.get("change")+"");
+                List<StockVO> stockVOList = new ArrayList<>();
+                stockVOList.add(stockVO);
+                initStockListServiceBiz.updateListInfo(stockVOList);
+                initStockListServiceBiz.updateInfo(stockVO);
                 // 处理数据 并 推送给 客户
                 new WebSocketController().sendSysMsg("all",arg0);
             }

+ 1 - 145
src/main/java/com/xc/vo/stock/StockVO.java

@@ -39,9 +39,6 @@ public class StockVO {
 
     private Integer depositAmt;
 
-    public void setId(int id) {
-        this.id = id;
-    }
 
     private String sell1;
     private String sell2;
@@ -63,149 +60,8 @@ public class StockVO {
     private String weekImg;
     private String monthImg;
 
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public void setSpell(String spell) {
-        this.spell = spell;
-    }
-
-    public void setGid(String gid) {
-        this.gid = gid;
-    }
-
-    public void setNowPrice(String nowPrice) {
-        this.nowPrice = nowPrice;
-    }
-
-    public void setHcrate(BigDecimal hcrate) {
-        this.hcrate = hcrate;
-    }
-
-    public void setToday_max(String today_max) {
-        this.today_max = today_max;
-    }
-
-    public void setToday_min(String today_min) {
-        this.today_min = today_min;
-    }
-
-    public void setBusiness_balance(String business_balance) {
-        this.business_balance = business_balance;
-    }
-
-    public void setBusiness_amount(String business_amount) {
-        this.business_amount = business_amount;
-    }
-
-    public void setPreclose_px(String preclose_px) {
-        this.preclose_px = preclose_px;
-    }
-
-    public void setOpen_px(String open_px) {
-        this.open_px = open_px;
-    }
-
-    public void setBuy1(String buy1) {
-        this.buy1 = buy1;
-    }
-
-    public void setBuy2(String buy2) {
-        this.buy2 = buy2;
-    }
-
-    public void setBuy3(String buy3) {
-        this.buy3 = buy3;
-    }
-
-    public void setBuy4(String buy4) {
-        this.buy4 = buy4;
-    }
-
-    public void setBuy5(String buy5) {
-        this.buy5 = buy5;
-    }
-
-    public void setSell1(String sell1) {
-        this.sell1 = sell1;
-    }
+    private String change;
 
-    public void setSell2(String sell2) {
-        this.sell2 = sell2;
-    }
-
-    public void setSell3(String sell3) {
-        this.sell3 = sell3;
-    }
-
-    public void setSell4(String sell4) {
-        this.sell4 = sell4;
-    }
-
-    public void setSell5(String sell5) {
-        this.sell5 = sell5;
-    }
-
-    public void setBuy1_num(String buy1_num) {
-        this.buy1_num = buy1_num;
-    }
-
-    public void setBuy2_num(String buy2_num) {
-        this.buy2_num = buy2_num;
-    }
-
-    public void setBuy3_num(String buy3_num) {
-        this.buy3_num = buy3_num;
-    }
-
-    public void setBuy4_num(String buy4_num) {
-        this.buy4_num = buy4_num;
-    }
-
-    public void setBuy5_num(String buy5_num) {
-        this.buy5_num = buy5_num;
-    }
-
-    public void setSell1_num(String sell1_num) {
-        this.sell1_num = sell1_num;
-    }
-
-    public void setSell2_num(String sell2_num) {
-        this.sell2_num = sell2_num;
-    }
-
-    public void setSell3_num(String sell3_num) {
-        this.sell3_num = sell3_num;
-    }
-
-    public void setSell4_num(String sell4_num) {
-        this.sell4_num = sell4_num;
-    }
-
-    public void setSell5_num(String sell5_num) {
-        this.sell5_num = sell5_num;
-    }
-
-    public void setMinImg(String minImg) {
-        this.minImg = minImg;
-    }
-
-    public void setDayImg(String dayImg) {
-        this.dayImg = dayImg;
-    }
-
-    public void setWeekImg(String weekImg) {
-        this.weekImg = weekImg;
-    }
-
-    public void setMonthImg(String monthImg) {
-        this.monthImg = monthImg;
-    }
 
     public boolean equals(Object o) {
         if (o == this) return true;