lvzhiqiang il y a 2 ans
Parent
commit
74a13d3e40

+ 51 - 0
src/main/java/top/lvzhiqiang/entity/CoinMonitorCurrency.java

@@ -0,0 +1,51 @@
+package top.lvzhiqiang.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * coin监控币种类
+ *
+ * @author lvzhiqiang
+ * @since 19:07 2023/9/16
+ */
+@Data
+public class CoinMonitorCurrency implements Serializable {
+
+    /**
+     * 主键
+     */
+    private Integer id;
+
+    /**
+     * 产品ID
+     */
+    private String symbol;
+
+    /**
+     * 类型1{1:现货,2:合约}
+     */
+    private String type;
+
+    /**
+     * 分类
+     */
+    private String category;
+
+    /**
+     * 排序
+     */
+    private Integer sort;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 更新时间
+     */
+    private LocalDateTime updateTime;
+}

+ 4 - 3
src/main/java/top/lvzhiqiang/mapper/CoinMapper.java

@@ -4,8 +4,9 @@ import org.apache.ibatis.annotations.Insert;
 import org.apache.ibatis.annotations.MapKey;
 import org.apache.ibatis.annotations.Select;
 import top.lvzhiqiang.entity.CoinHistoryOrder;
-import top.lvzhiqiang.entity.CoinTrader;
+import top.lvzhiqiang.entity.CoinMonitorCurrency;
 import top.lvzhiqiang.entity.CoinPubilcParams;
+import top.lvzhiqiang.entity.CoinTrader;
 
 import java.util.List;
 import java.util.Map;
@@ -43,8 +44,8 @@ public interface CoinMapper {
             "</script>"})
     List<CoinHistoryOrder> findHistoryOrderList(Map<String, Object> params);
 
-    @Select("select symbol from coin_monitor_currency where delete_flag = 1 order by sort")
-    List<String> findMonitorCurrencyList();
+    @Select("select symbol,type,category,sort from coin_monitor_currency where delete_flag = 1 order by sort")
+    List<CoinMonitorCurrency> findMonitorCurrencyList();
 
     @Select("select * from coin_public_params where 1=1")
     @MapKey("codeKey")

+ 13 - 6
src/main/java/top/lvzhiqiang/service/impl/CoinServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.util.StopWatch;
 import top.lvzhiqiang.config.InitRunner;
 import top.lvzhiqiang.config.WorkWeixinProperties;
 import top.lvzhiqiang.entity.CoinHistoryOrder;
+import top.lvzhiqiang.entity.CoinMonitorCurrency;
 import top.lvzhiqiang.entity.CoinTrader;
 import top.lvzhiqiang.mapper.CoinMapper;
 import top.lvzhiqiang.service.CoinService;
@@ -35,6 +36,7 @@ import java.time.Duration;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.*;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -183,9 +185,9 @@ public class CoinServiceImpl implements CoinService {
                             }
                     ));
             e.setRoi(columnMap.get("ROI"));
-            e.setTotalProfit(columnMap.get("Total PnL"));
-            e.setTotalFollowersProfit(columnMap.get("Total followers PnL"));
-            e.setAum(columnMap.get("AUM"));
+            e.setTotalProfit(columnMap.get("Total PnL").replace("$", "").replace(",", ""));
+            e.setTotalFollowersProfit(columnMap.get("Total followers PnL").replace("$", "").replace(",", ""));
+            e.setAum(columnMap.get("AUM").replace("$", "").replace(",", ""));
             e.setMaxCallbackRate(columnMap.get("Max drawdown"));
             e.setLast3wWinRate(columnMap.get("Last 3W win rate"));
             e.setAverageWinRate(StringUtils.isNotEmpty(e.getAverageWinRate()) ? new BigDecimal(e.getAverageWinRate()).setScale(2, RoundingMode.HALF_UP).toPlainString() : "0.00");
@@ -672,7 +674,7 @@ public class CoinServiceImpl implements CoinService {
             //result = (JSONArray) JSON.toJSON(mixTraderList);
             return coinTraderPageInfo;
         } else if (params.getString("nameEn").equals("monitorCurrency")) {
-            List<String> monitorCurrencyList = coinMapper.findMonitorCurrencyList();
+            List<CoinMonitorCurrency> monitorCurrencyList = coinMapper.findMonitorCurrencyList();
 
             String requestUrl = mainUrl + params.getString("url");
             Connection.Response response = JsoupUtil.requestBody(requestUrl, JsoupUtil.HTTP_GET, InitRunner.proxy, null, null);
@@ -770,9 +772,12 @@ public class CoinServiceImpl implements CoinService {
      *
      * @param monitorCurrencyList
      */
-    private JSONArray renderMainSearch4MonitorCurrency(JSONArray result, List<String> monitorCurrencyList, Integer changeUtcSort) {
+    private JSONArray renderMainSearch4MonitorCurrency(JSONArray result, List<CoinMonitorCurrency> monitorCurrencyList, Integer changeUtcSort) {
+        Map<String, CoinMonitorCurrency> monitorCurrencyMap = monitorCurrencyList.stream().collect(Collectors.toMap(CoinMonitorCurrency::getSymbol, Function.identity(), (key1, key2) -> key1));
+        Set<String> symbolSet = monitorCurrencyMap.keySet();
+
         JSONArray array = result.stream()
-                .filter(iter -> monitorCurrencyList.contains(((JSONObject) iter).getString("symbol")))
+                .filter(iter -> symbolSet.contains(((JSONObject) iter).getString("symbol")))
                 .collect(Collectors.toCollection(JSONArray::new));
 
         forkJoinPool.submit(() -> array.parallelStream().forEach(e -> {
@@ -781,6 +786,8 @@ public class CoinServiceImpl implements CoinService {
             jsonObject.put("change", jsonObject.getBigDecimal("change").multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP));
             jsonObject.put("ts", DateUtils.longToString(jsonObject.getLong("ts")));
 
+            jsonObject.put("category", monitorCurrencyMap.get(jsonObject.getString("symbol")).getCategory());
+
             // UTC0时涨跌幅
             if (jsonObject.getBigDecimal("changeUtc").compareTo(BigDecimal.ZERO) < 0) {
                 jsonObject.put("changeUtcStyle", " style=\"color:#FFFFFF;background-color:#F1493F;\"");