|
|
@@ -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));
|
|
|
}
|