skyfffire 3 лет назад
Родитель
Сommit
ffe1e76f1f
2 измененных файлов с 148 добавлено и 134 удалено
  1. 4 134
      src/main/java/controller/EthMevController.java
  2. 144 0
      src/main/java/service/EthMevService.java

+ 4 - 134
src/main/java/controller/EthMevController.java

@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.jfinal.kit.StrKit;
 import interceptor.AuthInterceptor;
 import model.EthMev;
+import service.EthMevService;
 import util.MyRet;
 
 import java.math.BigDecimal;
@@ -14,6 +15,8 @@ import java.util.ArrayList;
 import java.util.List;
 
 public class EthMevController extends Controller {
+    EthMevService service = new EthMevService();
+
     @Before(AuthInterceptor.class)
     public void appendOrUpdate() {
         if (StrKit.isBlank(getPara("block"))
@@ -156,140 +159,7 @@ public class EthMevController extends Controller {
             ethMevList = EthMev.dao.find(sql, block, hash, dataVague, limit1, limit2);
         }
 
-        //        dexArray/toArray = (EthMevModel.find_by_block(2))
-        //        tokenArray = (EthMevModel.find_by_block(1))
-        //        lpArray = (EthMevModel.find_by_block(0))
-        /*
-         * 为什么要在服务器进行数据处理:
-         * 服务器内存大,CPU好,而且网站客户少,当然要充分压榨服务器性能了
-         */
-        String findHashSql = "select * from t_ethereum_mev_v1 where hash=?";
-
-        // 处理对象中的各类地址
-        for (EthMev ethMev : ethMevList) {
-            // dataObj容错
-            JSONObject dataObj = null;
-            try {
-                dataObj = JSONObject.parseObject(ethMev.getStr("data"));
-
-                // 处理dataObj
-                ethMev.put("dataObj", dataObj);
-                ethMev.remove("data");
-            } catch (Exception e) {
-                e.printStackTrace();
-
-                dataObj = JSONObject.parseObject("{}");
-                // 处理dataObj
-                ethMev.put("dataObj", dataObj);
-                ethMev.remove("data");
-            }
-
-            // 查询lpHash
-            // lpObj容错
-            try {
-                EthMev toObj = EthMev.dao.findFirst(findHashSql, dataObj.getString("toAdd"));
-                JSONObject toObjDataObj = JSONObject.parseObject(toObj.getStr("data"));
-                ethMev.put("toName", toObjDataObj.getString("name"));
-            } catch (Exception ignored) {}
-            // 处理tokenHash和lpHash
-            String fromToSql = "select * from t_ethereum_mev_v1 where hash=?";
-            JSONArray tradeInfoList = dataObj.getJSONArray("tradeInfo");
-            if (tradeInfoList == null) {
-                tradeInfoList = JSONArray.parseArray("[]");
-            }
-            for (JSONObject tradeInfo : tradeInfoList.toJavaList(JSONObject.class)) {
-                // tokenObj信息处理
-                EthMev tokenObj = null;
-                try {
-                    tokenObj = EthMev.dao.findFirst(findHashSql, tradeInfo.getString("token"));
-
-                    if (tokenObj != null) {
-                        JSONObject tokenObjDataObj = JSONObject.parseObject(tokenObj.getStr("data"));
-
-                        if (tokenObjDataObj.getString("LP") == null) {
-                            tradeInfo.put("tokenSymbol", tokenObjDataObj.getString("symbol"));
-
-                            BigDecimal amount = tradeInfo.getBigDecimal("amount");
-                            BigDecimal ten = new BigDecimal("10");
-                            int decimals = tokenObjDataObj.getInteger("decimals");
-
-                            BigDecimal realAmount = amount.divide(ten.pow(decimals));
-                            tradeInfo.put("amount", realAmount.doubleValue());
-                        } else {
-                            tradeInfo.put("tokenSymbol", tokenObjDataObj.getString("name"));
-                            tradeInfo.put("amount", 1);
-                        }
-                    } else if (tradeInfo.getString("token").equals("0xeth")) {
-                        tradeInfo.put("tokenSymbol", "Ethereum");
-
-                        BigDecimal amount = tradeInfo.getBigDecimal("amount");
-                        BigDecimal ten = new BigDecimal("10");
-                        int decimals = 18;
-
-                        BigDecimal realAmount = amount.divide(ten.pow(decimals));
-                        tradeInfo.put("amount", realAmount.doubleValue());
-                    }
-                } catch (Exception e) {
-                    System.err.println(tokenObj);
-//                    e.printStackTrace();
-                }
-
-                // fromOrToObj信息处理
-                try {
-                    EthMev fromLpObj = EthMev.dao.findFirst(fromToSql, tradeInfo.getString("from"));
-                    EthMev toLpObj = EthMev.dao.findFirst(fromToSql, tradeInfo.getString("to"));
-
-                    EthMev[] fromToArray = new EthMev[]{fromLpObj, toLpObj};
-                    for (int index = 0; index < 2; index++) {
-                        EthMev fromOrToObj = fromToArray[index];
-
-                        JSONObject dataObjOfFromOrToObj = null;
-                        // 第一种情况,屁都不是的情况
-                        if (fromOrToObj == null) {
-                            continue;
-                        }
-                        try {
-                            dataObjOfFromOrToObj = JSONObject.parseObject(fromOrToObj.getStr("data"));
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-
-                        // 第二种情况,有symbol的情况
-                        if (dataObjOfFromOrToObj.getString("symbol") != null) {
-                            if (index == 0) {
-                                tradeInfo.put("fromName", dataObjOfFromOrToObj.getString("symbol"));
-                            } else {
-                                tradeInfo.put("toName", dataObjOfFromOrToObj.getString("symbol"));
-                            }
-                        }
-                        // 第三种情况,只有name的情况
-                        else if (dataObjOfFromOrToObj.getString("name") != null) {
-                            if (index == 0) {
-                                tradeInfo.put("fromName", dataObjOfFromOrToObj.getString("name"));
-                            } else {
-                                tradeInfo.put("toName", dataObjOfFromOrToObj.getString("name"));
-                            }
-                        }
-                        // 第四种情况,有Symbol0和Symbol1的情况,也就是LP
-                        else if (dataObjOfFromOrToObj.getString("symbol0") != null
-                                && dataObjOfFromOrToObj.getString("symbol1") != null) {
-                            String symbol0 = dataObjOfFromOrToObj.getString("symbol0");
-                            String symbol1 = dataObjOfFromOrToObj.getString("symbol1");
-                            String router = dataObjOfFromOrToObj.getString("router");
-                            String viewName = String.format("%s-%s-%s-LP", router.substring(0, 4), symbol0, symbol1);
-                            if (index == 0) {
-                                tradeInfo.put("fromName", viewName);
-                            } else {
-                                tradeInfo.put("toName", viewName);
-                            }
-                        }
-                    }
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-            dataObj.put("tradeInfo", tradeInfoList);
-        }
+        service.buildDataObjByEthMevList(ethMevList);
 
         renderJson(MyRet.create().setOk().setMsg("查询成功").setData(ethMevList));
     }

+ 144 - 0
src/main/java/service/EthMevService.java

@@ -0,0 +1,144 @@
+package service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import model.EthMev;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class EthMevService {
+    public void buildDataObjByEthMevList(List<EthMev> ethMevList) {
+        /*
+         * 为什么要在服务器进行数据处理:
+         * 服务器内存大,CPU好,而且网站客户少,当然要充分压榨服务器性能了
+         */
+        String findHashSql = "select * from t_ethereum_mev_v1 where hash=?";
+
+        // 处理对象中的各类地址
+        for (EthMev ethMev : ethMevList) {
+            // dataObj容错
+            JSONObject dataObj = null;
+            try {
+                dataObj = JSONObject.parseObject(ethMev.getStr("data"));
+
+                // 处理dataObj
+                ethMev.put("dataObj", dataObj);
+                ethMev.remove("data");
+            } catch (Exception e) {
+                e.printStackTrace();
+
+                dataObj = JSONObject.parseObject("{}");
+                // 处理dataObj
+                ethMev.put("dataObj", dataObj);
+                ethMev.remove("data");
+            }
+
+            // 查询lpHash
+            // lpObj容错
+            try {
+                EthMev toObj = EthMev.dao.findFirst(findHashSql, dataObj.getString("toAdd"));
+                JSONObject toObjDataObj = JSONObject.parseObject(toObj.getStr("data"));
+                ethMev.put("toName", toObjDataObj.getString("name"));
+            } catch (Exception ignored) {}
+            // 处理tokenHash和lpHash
+            String fromToSql = "select * from t_ethereum_mev_v1 where hash=?";
+            JSONArray tradeInfoList = dataObj.getJSONArray("tradeInfo");
+            if (tradeInfoList == null) {
+                tradeInfoList = JSONArray.parseArray("[]");
+            }
+            for (JSONObject tradeInfo : tradeInfoList.toJavaList(JSONObject.class)) {
+                // tokenObj信息处理
+                EthMev tokenObj = null;
+                try {
+                    tokenObj = EthMev.dao.findFirst(findHashSql, tradeInfo.getString("token"));
+
+                    if (tokenObj != null) {
+                        JSONObject tokenObjDataObj = JSONObject.parseObject(tokenObj.getStr("data"));
+
+                        if (tokenObjDataObj.getString("LP") == null) {
+                            tradeInfo.put("tokenSymbol", tokenObjDataObj.getString("symbol"));
+
+                            BigDecimal amount = tradeInfo.getBigDecimal("amount");
+                            BigDecimal ten = new BigDecimal("10");
+                            int decimals = tokenObjDataObj.getInteger("decimals");
+
+                            BigDecimal realAmount = amount.divide(ten.pow(decimals));
+                            tradeInfo.put("amount", realAmount.doubleValue());
+                        } else {
+                            tradeInfo.put("tokenSymbol", tokenObjDataObj.getString("name"));
+                            tradeInfo.put("amount", 1);
+                        }
+                    } else if (tradeInfo.getString("token").equals("0xeth")) {
+                        tradeInfo.put("tokenSymbol", "Ethereum");
+
+                        BigDecimal amount = tradeInfo.getBigDecimal("amount");
+                        BigDecimal ten = new BigDecimal("10");
+                        int decimals = 18;
+
+                        BigDecimal realAmount = amount.divide(ten.pow(decimals));
+                        tradeInfo.put("amount", realAmount.doubleValue());
+                    }
+                } catch (Exception e) {
+                    System.err.println(tokenObj);
+//                    e.printStackTrace();
+                }
+
+                // fromOrToObj信息处理
+                try {
+                    EthMev fromLpObj = EthMev.dao.findFirst(fromToSql, tradeInfo.getString("from"));
+                    EthMev toLpObj = EthMev.dao.findFirst(fromToSql, tradeInfo.getString("to"));
+
+                    EthMev[] fromToArray = new EthMev[]{fromLpObj, toLpObj};
+                    for (int index = 0; index < 2; index++) {
+                        EthMev fromOrToObj = fromToArray[index];
+
+                        JSONObject dataObjOfFromOrToObj = null;
+                        // 第一种情况,屁都不是的情况
+                        if (fromOrToObj == null) {
+                            continue;
+                        }
+                        try {
+                            dataObjOfFromOrToObj = JSONObject.parseObject(fromOrToObj.getStr("data"));
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+
+                        // 第二种情况,有symbol的情况
+                        if (dataObjOfFromOrToObj.getString("symbol") != null) {
+                            if (index == 0) {
+                                tradeInfo.put("fromName", dataObjOfFromOrToObj.getString("symbol"));
+                            } else {
+                                tradeInfo.put("toName", dataObjOfFromOrToObj.getString("symbol"));
+                            }
+                        }
+                        // 第三种情况,只有name的情况
+                        else if (dataObjOfFromOrToObj.getString("name") != null) {
+                            if (index == 0) {
+                                tradeInfo.put("fromName", dataObjOfFromOrToObj.getString("name"));
+                            } else {
+                                tradeInfo.put("toName", dataObjOfFromOrToObj.getString("name"));
+                            }
+                        }
+                        // 第四种情况,有Symbol0和Symbol1的情况,也就是LP
+                        else if (dataObjOfFromOrToObj.getString("symbol0") != null
+                                && dataObjOfFromOrToObj.getString("symbol1") != null) {
+                            String symbol0 = dataObjOfFromOrToObj.getString("symbol0");
+                            String symbol1 = dataObjOfFromOrToObj.getString("symbol1");
+                            String router = dataObjOfFromOrToObj.getString("router");
+                            String viewName = String.format("%s-%s-%s-LP", router.substring(0, 4), symbol0, symbol1);
+                            if (index == 0) {
+                                tradeInfo.put("fromName", viewName);
+                            } else {
+                                tradeInfo.put("toName", viewName);
+                            }
+                        }
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+            dataObj.put("tradeInfo", tradeInfoList);
+        }
+    }
+}