Parcourir la source

add:现货合约 CEX 筛选支持v1

lvzhiqiang il y a 1 an
Parent
commit
5457e771dc

+ 31 - 0
src/main/java/top/lvzhiqiang/mapper/CoinMapper.java

@@ -105,6 +105,37 @@ public interface CoinMapper {
             "</script>"})
     List<CoinWatchlist> findWatchlistList(Map<String, Object> params);
 
+    @Select({"<script>" +
+            "select cw.* from coin_watchlist cw left join coin_watchlist_other cwo on cw.symbol=cwo.symbol WHERE cw.delete_flag = 1" +
+            "<if test=\"keyword != null and keyword != ''\">" +
+            "   and cw.symbol like concat('%',#{keyword},'%')" +
+            "</if>" +
+            "<if test=\"symbol != null and symbol != ''\">" +
+            "   and cw.symbol = #{symbol}" +
+            "</if>" +
+            "<if test=\"filterField != null and filterField != ''\">" +
+            "   and cw.filter_flag = #{filterField}" +
+            "</if>" +
+            "<if test=\"trackCategoryField != null and trackCategoryField != ''\">" +
+            "   and cw.track_category like concat('%',#{trackCategoryField},'%')" +
+            "</if>" +
+            "<if test=\"cexFilterField != null and cexFilterField != ''\">" +
+            "   <choose>" +
+            "       <when test=\" cexFilterName == 'cwo.cex_spot' \">" +
+            "           and substring(cwo.cex_spot,#{cexFilterIndex},1) = '1'" +
+            "       </when>" +
+            "       <otherwise>" +
+            "           and substring(cwo.cex_perpetual,#{cexFilterIndex},1) = '1'" +
+            "       </otherwise>" +
+            "   </choose>" +
+            "</if>" +
+            " order by " +
+            "<foreach collection='sortField' item='sf' index=\"index\" separator=\",\">" +
+            "   ${sf} ${sort}" +
+            " </foreach>" +
+            "</script>"})
+    List<CoinWatchlist> findWatchlistList2(Map<String, Object> params);
+
     @Update("update coin_watchlist set cmc_id=#{cmcId},total_market_ranking=#{totalMarketRanking},total_market_value=#{totalMarketValue}," +
             "mark_price=#{markPrice},price_change_percentage_24h=#{priceChangePercentage24h},highest_historical_price=#{highestHistoricalPrice},ath_change_percentage=#{athChangePercentage},atl_change_percentage=#{atlChangePercentage},lowest_historical_price=#{lowestHistoricalPrice}," +
             "highest_historical_date=#{highestHistoricalDate},lowest_historical_date=#{lowestHistoricalDate},increase_multiple=#{increaseMultiple}," +

+ 7 - 1
src/main/java/top/lvzhiqiang/service/impl/CoinServiceImpl.java

@@ -1521,7 +1521,13 @@ public class CoinServiceImpl implements CoinService {
                 params.put("sortField", Arrays.asList(params.getString("sortField").split(",")));
             }
 
-            List<CoinWatchlist> watchlistList = coinMapper.findWatchlistList(params.toJavaObject(Map.class));
+            if (params.containsKey("cexFilterField") && StringUtils.isNotEmpty(params.getString("cexFilterField"))) {
+                String[] cexFilterFieldArr = params.getString("cexFilterField").split(",");
+                params.put("cexFilterName", cexFilterFieldArr[0]);
+                params.put("cexFilterIndex", cexFilterFieldArr[1]);
+            }
+
+            List<CoinWatchlist> watchlistList = coinMapper.findWatchlistList2(params.toJavaObject(Map.class));
 
             PageInfo<CoinWatchlist> watchlistPageInfo = new PageInfo<>(watchlistList);
 

+ 21 - 6
src/main/resources/static/coin.html

@@ -280,16 +280,31 @@
                 <option value="3">哈哈哈</option>
                 <option value="">--</option>
             </select>
+            <select id="apis-quiet-div-watchlist-cexFilterField" style="height: 24px;">
+                <option value="">全部</option>
+                <option value="cwo.cex_spot,1">Binance现货</option>
+                <option value="cwo.cex_spot,2">OKX现货</option>
+                <option value="cwo.cex_spot,3">HTX现货</option>
+                <option value="cwo.cex_spot,4">Bitget现货</option>
+                <option value="cwo.cex_spot,5">Gate.io现货</option>
+                <option value="cwo.cex_spot,6">MEXC现货</option>
+                <option value="cwo.cex_perpetual,1">Binance合约</option>
+                <option value="cwo.cex_perpetual,2">OKX合约</option>
+                <option value="cwo.cex_perpetual,3">HTX合约</option>
+                <option value="cwo.cex_perpetual,4">Bitget合约</option>
+                <option value="cwo.cex_perpetual,5">Gate.io合约</option>
+                <option value="cwo.cex_perpetual,6">MEXC合约</option>
+            </select>
             <select id="apis-quiet-div-watchlist-trackCategoryField" style="height: 24px;">
                 <option value="">--</option>
             </select>
             <select id="apis-quiet-div-watchlist-sortField" style="height: 24px;">
-                <option value="price_change_percentage_24h">24H涨跌幅</option>
-                <option value="score,price_change_percentage_24h">优先级</option>
-                <option value="total_market_value">流通市值</option>
-                <option value="total_market_ranking">市值排名</option>
-                <option value="increase_multiple">涨幅倍数</option>
-                <option value="issuing_days">发行天数</option>
+                <option value="cw.price_change_percentage_24h">24H涨跌幅</option>
+                <option value="cw.score,cw.price_change_percentage_24h">优先级</option>
+                <option value="cw.total_market_value">流通市值</option>
+                <option value="cw.total_market_ranking">市值排名</option>
+                <option value="cw.increase_multiple">涨幅倍数</option>
+                <option value="cw.issuing_days">发行天数</option>
             </select>
             <select id="apis-quiet-div-watchlist-sort" style="height: 24px;">
                 <option value="desc">desc</option>

+ 1 - 0
src/main/resources/static/js/my-coin.js

@@ -337,6 +337,7 @@ function mainSearch(url, nameEn, slideDiv, typetype, needCustomFlag) {
         jsonData.sort = $("#apis-quiet-div-watchlist-sort").val();
         jsonData.filterField = $("#apis-quiet-div-watchlist-filterField").val();
         jsonData.trackCategoryField = $("#apis-quiet-div-watchlist-trackCategoryField").val();
+        jsonData.cexFilterField = $("#apis-quiet-div-watchlist-cexFilterField").val();
     } else if (nameEn === 'image') {
         jsonData.pageNo = $("#apis-quiet-div-image-pageNo").val();
         jsonData.pageSize = $("#apis-quiet-div-image-pageSize").val();