Ver Fonte

update:非实时查询增加页面筛选v2

tujidelv há 2 anos atrás
pai
commit
0759caa7b6

+ 19 - 6
src/main/java/top/lvzhiqiang/mapper/CoinMapper.java

@@ -8,6 +8,7 @@ import top.lvzhiqiang.entity.CoinMixTrader;
 import top.lvzhiqiang.entity.CoinPubilcParams;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * coin-Mapper
@@ -32,15 +33,15 @@ public interface CoinMapper {
 
     @Select({"<script>" +
             "select *  from coin_order_history WHERE  1 = 1" +
-            "<if test=\"nameCn != null and nameCn != ''\">" +
-            "   and name_cn like concat('%',#{nameCn},'%')" +
+            "<if test=\"keyword != null and keyword != ''\">" +
+            "   and symbol like concat('%',#{keyword},'%')" +
             "</if>" +
-            "<if test=\"type != null \">" +
-            "   and type = #{type}" +
+            "<if test=\"side != null and side != ''\">" +
+            "   and side = #{side}" +
             "</if>" +
-            " order by cTime desc" +
+            " order by ${sortField} ${sort}" +
             "</script>"})
-    List<CoinHistoryOrder> findByParams();
+    List<CoinHistoryOrder> findHistoryOrderList(Map<String, Object> params);
 
     @Select("select symbol from coin_monitor_currency where delete_flag = 1 order by sort")
     List<String> findMonitorCurrencyList();
@@ -66,4 +67,16 @@ public interface CoinMapper {
             "canTrace=values(canTrace),tradingPairsAvailable=values(tradingPairsAvailable),profile=values(profile),lastTradeTime=values(lastTradeTime),modify_time=now()" +
             "</script>"})
     void insertMixTradeList(List<CoinMixTrader> parseMixTradeList);
+
+    @Select({"<script>" +
+            "select *  from coin_mix_trader WHERE  1 = 1" +
+            "<if test=\"keyword != null and keyword != ''\">" +
+            "   and traderNickName like concat('%',#{keyword},'%')" +
+            "</if>" +
+            "<if test=\"canTrace != null and canTrace != ''\">" +
+            "   and canTrace = #{canTrace}" +
+            "</if>" +
+            " order by ${sortField} ${sort}" +
+            "</script>"})
+    List<CoinMixTrader> findMixTraderList(Map<String, Object> params);
 }

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

@@ -3,6 +3,7 @@ package top.lvzhiqiang.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
 import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.common.error.WxErrorException;
 import me.chanjar.weixin.cp.api.WxCpGroupRobotService;
@@ -609,10 +610,17 @@ public class CoinServiceImpl implements CoinService {
 
             renderMainSearch4OrderMarginCoinCurrent(result, params.getInteger("chaRateSort"));
         } else if (params.getString("nameEn").equals("orderHistoryProductType")) {
-            List<CoinHistoryOrder> historyOrderList = coinMapper.findByParams();
+            PageHelper.startPage(params.getInteger("pageNo"), params.getInteger("pageSize"), true);
+            List<CoinHistoryOrder> historyOrderList = coinMapper.findHistoryOrderList(params.toJavaObject(Map.class));
 
             renderMainSearch4OrderHistoryProductType(historyOrderList);
             result = (JSONArray) JSON.toJSON(historyOrderList);
+        } else if (params.getString("nameEn").equals("traderList")) {
+            PageHelper.startPage(params.getInteger("pageNo"), params.getInteger("pageSize"), true);
+            List<CoinMixTrader> mixTraderList = coinMapper.findMixTraderList(params.toJavaObject(Map.class));
+
+            renderMainSearch4TraderList(mixTraderList);
+            result = (JSONArray) JSON.toJSON(mixTraderList);
         } else if (params.getString("nameEn").equals("monitorCurrency")) {
             List<String> monitorCurrencyList = coinMapper.findMonitorCurrencyList();
 
@@ -639,6 +647,13 @@ public class CoinServiceImpl implements CoinService {
         return result;
     }
 
+    private void renderMainSearch4TraderList(List<CoinMixTrader> mixTraderList) {
+        for (CoinMixTrader mixTrader : mixTraderList) {
+
+            mixTrader.setLastTradeTime(DateUtils.longToString(Long.valueOf(mixTrader.getLastTradeTime())));
+        }
+    }
+
     /**
      * 渲染获取当前计划委托(止盈止损)列表
      *

+ 62 - 5
src/main/resources/static/coin.html

@@ -46,18 +46,18 @@
             <button class="apis-move-div-button3">实时停止</button>
 
             <select id="chaRateSort" style="height: 24px;">
-                <option value="0">chaRate</option>
                 <option value="-1">desc</option>
+                <option value="0">chaRate</option>
                 <option value="1">asc</option>
             </select>
             <select id="changeUtcSort" style="height: 24px;">
-                <option value="0">changeUtc</option>
                 <option value="-1">desc</option>
+                <option value="0">changeUtc</option>
                 <option value="1">asc</option>
             </select>
             <select id="unrealizedPLSort" style="height: 24px;">
-                <option value="0">unrealizedPL</option>
                 <option value="-1">desc</option>
+                <option value="0">unrealizedPL</option>
                 <option value="1">asc</option>
             </select>
 
@@ -127,12 +127,69 @@
     </div>
     <hr/>
     <div style="display: flex;">
-        <select id="apis-quiet-select"  style="height: 24px;margin-right: 10px;" class="font aaa">
+        <select id="apis-quiet-select" style="height: 24px;margin-right: 10px;" class="font aaa">
         </select>
-        <div id="apis-quiet-div">
+        <div id="apis-quiet-div" style="height: 24px;margin-right: 10px;">
             <button class="apis-quiet-div-button1" slideDiv="apis-quiet-content">展开</button>
             <button class="apis-quiet-div-button2" slideDiv="apis-quiet-content">查询</button>
         </div>
+        <div id="apis-quiet-div-traderList" style="display: none;">
+            <button class="apis-quiet-div-button3" slideDiv="apis-quiet-content" pageO="prev">上一页</button>
+            <button class="apis-quiet-div-button3" slideDiv="apis-quiet-content" pageO="next">下一页</button>
+            <input type="text" style="width: 100px;padding-top: 3px;" id="apis-quiet-div-traderList-pageNo" disabled="disabled" value="1">
+            <input type="text" style="width: 100px;padding-top: 3px;" id="apis-quiet-div-traderList-pageSize" disabled="disabled" value="30">
+            <input type="text" style="width: 100px;padding-top: 3px;" id="apis-quiet-div-traderList-keyword" placeholder="昵称关键词">
+            <select id="apis-quiet-div-traderList-sortField" style="height: 24px;">
+                <option value="lastTradeTime">最近交易时间</option>
+                <option value="maxFollowCount">最大可跟人数</option>
+                <option value="followCount">目前跟单人数</option>
+                <option value="totalFollowers">累计跟单人数</option>
+                <option value="profitOrderCount">盈利次数</option>
+                <option value="lossOrderCount">亏损次数</option>
+                <option value="totalTradeCount">交易次数</option>
+                <option value="copyTradeDays">带单天数</option>
+                <option value="roi">收益率</option>
+                <option value="totalProfit">总收益</option>
+                <option value="totalFollowersProfit">跟单者总收益</option>
+                <option value="aum">资产管理规模</option>
+                <option value="maxCallbackRate">最大回撤率</option>
+                <option value="last3wWinRate">近3周胜率</option>
+                <option value="averageWinRate">平均胜率</option>
+            </select>
+            <select id="apis-quiet-div-traderList-sort" style="height: 24px;">
+                <option value="desc">desc</option>
+                <option value="asc">asc</option>
+            </select>
+            <select id="apis-quiet-div-traderList-canTrace" style="height: 24px;">
+                <option value="">是否可跟</option>
+                <option value="true">true</option>
+                <option value="false">false</option>
+            </select>
+        </div>
+        <div id="apis-quiet-div-orderHistoryProductType" style="display: none;">
+            <button class="apis-quiet-div-button3" slideDiv="apis-quiet-content" pageO="prev">上一页</button>
+            <button class="apis-quiet-div-button3" slideDiv="apis-quiet-content" pageO="next">下一页</button>
+            <input type="text" style="width: 100px;padding-top: 3px;" id="apis-quiet-div-orderHistoryProductType-pageNo" disabled="disabled" value="1">
+            <input type="text" style="width: 100px;padding-top: 3px;" id="apis-quiet-div-orderHistoryProductType-pageSize" disabled="disabled" value="30">
+            <input type="text" style="width: 100px;padding-top: 3px;" id="apis-quiet-div-orderHistoryProductType-keyword" placeholder="币对关键词">
+            <select id="apis-quiet-div-orderHistoryProductType-sortField" style="height: 24px;">
+                <option value="cTime">创建时间</option>
+                <option value="totalProfits">总盈亏</option>
+                <option value="fee">手续费</option>
+                <option value="leverage">订单杠杆</option>
+            </select>
+            <select id="apis-quiet-div-orderHistoryProductType-sort" style="height: 24px;">
+                <option value="desc">desc</option>
+                <option value="asc">asc</option>
+            </select>
+            <select id="apis-quiet-div-orderHistoryProductType-side" style="height: 24px;">
+                <option value="">开单方向</option>
+                <option value="open_long">开多</option>
+                <option value="open_short">开空</option>
+                <option value="close_long">平多</option>
+                <option value="close_short">平空</option>
+            </select>
+        </div>
     </div>
     <div id="apis-quiet-content" style="display: none;">
         total:<span class="contentSPAN">0</span>

+ 51 - 7
src/main/resources/static/js/my-coin.js

@@ -202,6 +202,30 @@ function handleSelectChange(objj) {
             $(obj).parent("div").next("div").find("span.contentSPAN").html('0');
             $(obj).parent("div").next("div").find("tr.contentTH").html(theadStr);
             $(obj).parent("div").next("div").find("tbody.contentTD").html('');
+
+            $("div[id^=apis-quiet-div-]").css("display", "none");
+            $("#apis-quiet-div-" + nameEn).css("display", "block");
+            $("#apis-quiet-div-" + nameEn).find("input[id$=pageNo]").val(1);
+            $("div[id^=apis-quiet-div-]").find($("button.apis-quiet-div-button3")).unbind("click");
+            $("div[id^=apis-quiet-div-]").find($("button.apis-quiet-div-button3")).click(function () {
+                stopFlag = false;
+
+                var url = selectedOption.attr("url");
+                var slideDiv = $(this).attr("slideDiv");
+
+                var pageNoVar = $("#" + $(this).parent().attr("id") + "-pageNo");
+                var pageO = $(this).attr("pageO");
+                var beforePageNo = $(pageNoVar).val();
+                if (pageO === 'prev') {
+                    if (beforePageNo > 1) {
+                        $(pageNoVar).val(Number(beforePageNo) - 1);
+                    }
+                } else if (pageO === 'next') {
+                    $(pageNoVar).val(Number(beforePageNo) + 1);
+                }
+
+                mainSearch(url, nameEn, slideDiv, "2");
+            });
         }
     });
 
@@ -215,16 +239,36 @@ function handleSelectChange(objj) {
  * @param pageNo
  */
 function mainSearch(url, nameEn, slideDiv, needCustomFlag) {
+    var jsonData = {};
+    jsonData.url = url;
+    jsonData.nameEn = nameEn;
+
+    if (nameEn === 'currentPlan' || nameEn === 'orderMarginCoinCurrent') {
+        jsonData.chaRateSort = $("#chaRateSort").val();
+    } else if (nameEn === 'monitorCurrency') {
+        jsonData.changeUtcSort = $("#changeUtcSort").val();
+    } else if (nameEn === 'allPositionv2') {
+        jsonData.unrealizedPLSort = $("#unrealizedPLSort").val();
+    } else if (nameEn === 'orderHistoryProductType') {
+        jsonData.pageNo = $("#apis-quiet-div-orderHistoryProductType-pageNo").val();
+        jsonData.pageSize = $("#apis-quiet-div-orderHistoryProductType-pageSize").val();
+        jsonData.keyword = $("#apis-quiet-div-orderHistoryProductType-keyword").val();
+        jsonData.sortField = $("#apis-quiet-div-orderHistoryProductType-sortField").val();
+        jsonData.sort = $("#apis-quiet-div-orderHistoryProductType-sort").val();
+        jsonData.side = $("#apis-quiet-div-orderHistoryProductType-side").val();
+    } else if (nameEn === 'traderList') {
+        jsonData.pageNo = $("#apis-quiet-div-traderList-pageNo").val();
+        jsonData.pageSize = $("#apis-quiet-div-traderList-pageSize").val();
+        jsonData.keyword = $("#apis-quiet-div-traderList-keyword").val();
+        jsonData.sortField = $("#apis-quiet-div-traderList-sortField").val();
+        jsonData.sort = $("#apis-quiet-div-traderList-sort").val();
+        jsonData.canTrace = $("#apis-quiet-div-traderList-canTrace").val();
+    }
+
     $.ajax({
         url: "coin/mainSearch", //请求的url地址
         dataType: "json", //返回格式为json
-        data: JSON.stringify({
-            "url": url,
-            "nameEn": nameEn,
-            "chaRateSort": $("#chaRateSort").val(),
-            "changeUtcSort": $("#changeUtcSort").val(),
-            "unrealizedPLSort": $("#unrealizedPLSort").val()
-        }), //参数值
+        data: JSON.stringify(jsonData), //参数值
         type: "post", //请求方式
         contentType: "application/json;charset=utf-8",
         async: true, //请求是否异步,默认为异步,这也是ajax重要特性