tujidelv 2 年之前
父节点
当前提交
f98068ec67
共有 1 个文件被更改,包括 33 次插入14 次删除
  1. 33 14
      src/main/java/top/lvzhiqiang/service/impl/CoinServiceImpl.java

+ 33 - 14
src/main/java/top/lvzhiqiang/service/impl/CoinServiceImpl.java

@@ -725,20 +725,21 @@ public class CoinServiceImpl implements CoinService {
             jsonObject.put("cTime", DateUtils.longToString(jsonObject.getLong("cTime")));
             jsonObject.put("uTime", StringUtils.isEmpty(jsonObject.getString("uTime")) ? "--" : DateUtils.longToString(jsonObject.getLong("uTime")));
 
-            String requestUrl = mainUrl + "/api/mix/v1/market/ticker?symbol=" + symbol;
+            // 获取合约标记价格
+            String requestUrl = mainUrl + "/api/mix/v1/market/mark-price?symbol=" + symbol;
             try {
                 Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
-                String last = JSONObject.parseObject(response.body()).getJSONObject("data").getString("last");
+                String markPrice = JSONObject.parseObject(response.body()).getJSONObject("data").getString("markPrice");
 
                 BigDecimal chaRate = BigDecimal.ZERO;
                 if ("open_long".equals(side)) {
-                    chaRate = new BigDecimal(last).divide(new BigDecimal(jsonObject.getString("triggerPrice")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
+                    chaRate = new BigDecimal(markPrice).divide(new BigDecimal(jsonObject.getString("triggerPrice")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
                 } else if ("open_short".equals(side)) {
-                    chaRate = new BigDecimal(jsonObject.getString("triggerPrice")).divide(new BigDecimal(last), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
+                    chaRate = new BigDecimal(jsonObject.getString("triggerPrice")).divide(new BigDecimal(markPrice), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
                 }
 
-                jsonObject.put("last", last);
-                jsonObject.put("lastStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
+                jsonObject.put("markPrice", markPrice);
+                jsonObject.put("markPriceStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
                 jsonObject.put("chaRate", chaRate);
                 jsonObject.put("chaRateStyle", " style=\"color:#FFFFFF;background-color:#5EA294;\"");
             } catch (Exception ex) {
@@ -878,20 +879,21 @@ public class CoinServiceImpl implements CoinService {
             jsonObject.put("cTime", DateUtils.longToString(jsonObject.getLong("cTime")));
             jsonObject.put("uTime", DateUtils.longToString(jsonObject.getLong("uTime")));
 
-            String requestUrl = mainUrl + "/api/mix/v1/market/ticker?symbol=" + symbol;
+            // 获取合约标记价格
+            String requestUrl = mainUrl + "/api/mix/v1/market/mark-price?symbol=" + symbol;
             try {
                 Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
-                String last = JSONObject.parseObject(response.body()).getJSONObject("data").getString("last");
+                String markPrice = JSONObject.parseObject(response.body()).getJSONObject("data").getString("markPrice");
 
                 BigDecimal chaRate = BigDecimal.ZERO;
                 if ("open_short".equals(side)) {
-                    chaRate = new BigDecimal(last).divide(new BigDecimal(jsonObject.getString("price")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
+                    chaRate = new BigDecimal(markPrice).divide(new BigDecimal(jsonObject.getString("price")), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
                 } else if ("open_long".equals(side)) {
-                    chaRate = new BigDecimal(jsonObject.getString("price")).divide(new BigDecimal(last), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
+                    chaRate = new BigDecimal(jsonObject.getString("price")).divide(new BigDecimal(markPrice), 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
                 }
 
-                jsonObject.put("last", last);
-                jsonObject.put("lastStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
+                jsonObject.put("markPrice", markPrice);
+                jsonObject.put("markPriceStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");
                 jsonObject.put("chaRate", chaRate);
                 jsonObject.put("chaRateStyle", " style=\"color:#FFFFFF;background-color:#5EA294;\"");
             } catch (Exception ex) {
@@ -914,8 +916,9 @@ public class CoinServiceImpl implements CoinService {
             JSONObject jsonObject = (JSONObject) e;
 
             // 币对名称
-            String symbol = jsonObject.getString("symbol").replace("USDT_UMCBL", "");
-            jsonObject.put("symbol", "<strong style=\"background-color:#F1B90d;\"><font color=\"#242A30\">" + symbol + "</font></strong>USDT_UMCBL");
+            String symbol = jsonObject.getString("symbol");
+            jsonObject.put("symbol", "<strong style=\"background-color:#F1B90d;\"><font color=\"#242A30\">" + symbol.replace("USDT_UMCBL", "") + "</font></strong>USDT_UMCBL");
+
             // 持仓方向
             String holdSide = jsonObject.getString("holdSide");
             jsonObject.put("holdSide", InitRunner.publicParamsMap.get("holdSide").getString(holdSide));
@@ -954,6 +957,22 @@ public class CoinServiceImpl implements CoinService {
                 jsonObject.put("returnRateStyle", " style=\"color:#FFFFFF;background-color:#1DA2B4;\"");
             }
 
+            // 获取当前资金费率
+            String requestUrl = mainUrl + "/api/mix/v1/market/current-fundRate?symbol=" + symbol;
+            try {
+                Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
+                String fundingRate = JSONObject.parseObject(response.body()).getJSONObject("data").getString("fundingRate");
+
+                if (new BigDecimal(fundingRate).compareTo(BigDecimal.ZERO) < 0) {
+                    jsonObject.put("fundingRateStyle", " style=\"color:#FFFFFF;background-color:#F1493F;\"");
+                } else {
+                    jsonObject.put("fundingRateStyle", " style=\"color:#FFFFFF;background-color:#1DA2B4;\"");
+                }
+                jsonObject.put("fundingRate", new BigDecimal(fundingRate).multiply(BigDecimal.valueOf(100)).setScale(4, RoundingMode.HALF_UP).toPlainString() + "%");
+            } catch (Exception ex) {
+                throw new RuntimeException(ex);
+            }
+
             // 标记价格
             jsonObject.put("marketPriceStyle", " style=\"color:#252B31;background-color:#C4ADE9;font-weight:bold;\"");