|
|
@@ -121,6 +121,78 @@ public class CoinServiceImpl implements CoinService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public String orderDetail(String trackingNo) {
|
|
|
+ Map<String, String> paramMap = new LinkedHashMap<>();
|
|
|
+ paramMap.put("traderId", "b1b5467f8bb73f53ac97");
|
|
|
+ paramMap.put("pageSize", "20");
|
|
|
+
|
|
|
+ StringBuffer sb = new StringBuffer();
|
|
|
+ for (int j = 1; j < 10; j++) {
|
|
|
+ try {
|
|
|
+ paramMap.put("pageNo", j + "");
|
|
|
+ JSONObject response = requestApi4Common("/api/mix/v1/trace/report/order/currentList", null, JSONObject.toJSONString(paramMap), JsoupUtil.HTTP_POST, paramMap);
|
|
|
+ JSONArray orderList = response.getJSONArray("data");
|
|
|
+ for (int i = 0; i < orderList.size(); i++) {
|
|
|
+ JSONObject order = orderList.getJSONObject(i);
|
|
|
+ String trackingNo1 = order.getString("trackingNo");
|
|
|
+ if (trackingNo.equals(trackingNo1)) {
|
|
|
+ sb.append("<table border=\"1\" cellspacing=\"0\"><tr><th>键</th><th>值</th></tr>");
|
|
|
+ sb.append("<tr><td>交易对</td><td>").append(order.getString("symbol")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>持仓方向</td><td>").append(InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>杠杆倍数</td><td>").append(order.getString("leverage")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>开仓均价</td><td>").append(order.getString("openPrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>开仓时间</td><td>").append(DateUtils.longToString(order.getLong("openTime"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>此笔订单跟单人数</td><td>").append(order.getString("followerNum")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>保证金</td><td>").append(order.getString("marginAmount")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>止盈价</td><td>").append(order.getString("takeProfitPrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>止损价</td><td>").append(order.getString("stopLossPrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>交易员</td><td>").append("hale").append("</td></tr>");
|
|
|
+
|
|
|
+ sb.append("</table>");
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (sb.length() == 0) {
|
|
|
+ for (int j = 1; j < 10; j++) {
|
|
|
+ try {
|
|
|
+ paramMap.put("pageNo", j + "");
|
|
|
+ JSONObject response = requestApi4Common("/api/mix/v1/trace/report/order/historyList", null, JSONObject.toJSONString(paramMap), JsoupUtil.HTTP_POST, paramMap);
|
|
|
+ JSONArray orderList = response.getJSONArray("data");
|
|
|
+ for (int i = 0; i < orderList.size(); i++) {
|
|
|
+ JSONObject order = orderList.getJSONObject(i);
|
|
|
+ String trackingNo1 = order.getString("trackingNo");
|
|
|
+ if (trackingNo.equals(trackingNo1)) {
|
|
|
+ sb.append("<table border=\"1\" cellspacing=\"0\"><tr><th>键</th><th>值</th></tr>");
|
|
|
+ sb.append("<tr><td>交易对</td><td>").append(order.getString("symbol")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>持仓方向</td><td>").append(InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>杠杆倍数</td><td>").append(order.getString("leverage")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>开仓均价</td><td>").append(order.getString("openPrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>开仓时间</td><td>").append(DateUtils.longToString(order.getLong("openTime"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>此笔订单跟单人数</td><td>").append(order.getString("followerNum")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>保证金</td><td>").append(order.getString("marginAmount")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>平仓均价</td><td>").append(order.getString("closePrice")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>平仓时间</td><td>").append(DateUtils.longToString(order.getLong("closeTime"))).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>平仓数量</td><td>").append(order.getString("closeAmount")).append("</td></tr>");
|
|
|
+ sb.append("<tr><td>交易员</td><td>").append("hale").append("</td></tr>");
|
|
|
+
|
|
|
+ sb.append("</table>");
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public String monitorJob() {
|
|
|
@@ -237,7 +309,7 @@ public class CoinServiceImpl implements CoinService {
|
|
|
if (Duration.between(openTime, endTime).getSeconds() < 50 && !orderMap.containsKey(trackingNo)) {
|
|
|
orderMap.put(trackingNo, "1");
|
|
|
|
|
|
- String content = "交易对:" + order.getString("symbol") + "\n" +
|
|
|
+ /*String content = "交易对:" + order.getString("symbol") + "\n" +
|
|
|
"持仓方向:" + InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide")) + "\n" +
|
|
|
"杠杆:" + order.getString("leverage") + "\n" +
|
|
|
"开仓均价:" + order.getString("openPrice") + "\n" +
|
|
|
@@ -246,9 +318,21 @@ public class CoinServiceImpl implements CoinService {
|
|
|
"保证金:" + order.getString("marginAmount") + "\n" +
|
|
|
"止盈价:" + order.getString("takeProfitPrice") + "\n" +
|
|
|
"止损价:" + order.getString("stopLossPrice") + "\n" +
|
|
|
- "交易员:" + "hale" + ",跟单号:" + order.getString("trackingNo");
|
|
|
-
|
|
|
- SpringUtils.getBean(CoinServiceImpl.class).monitorAlarm(content, JOB_ALARM_MODE_CHAT_BOT);
|
|
|
+ "交易员:" + "hale" + ",跟单号:" + order.getString("trackingNo");*/
|
|
|
+
|
|
|
+ String content = "<div class=\"highlight\">交易对:" + order.getString("symbol") + "</div>" +
|
|
|
+ "<div>持仓方向:" + InitRunner.publicParamsMap.get("holdSide").getString(order.getString("holdSide")) + "</div>" +
|
|
|
+ "<div>杠杆倍数:" + order.getString("leverage") + "</div>" +
|
|
|
+ "<div>开仓均价:" + order.getString("openPrice") + "</div>" +
|
|
|
+ "<div>开仓时间:" + DateUtils.longToString(order.getLong("openTime")) + "</div>" +
|
|
|
+ "<div>止盈价:" + order.getString("takeProfitPrice") + "</div>" +
|
|
|
+ "<div>止损价:" + order.getString("stopLossPrice") + "</div>" +
|
|
|
+ "<div class=\"gray\">交易员:" + "hale" + "</div>";
|
|
|
+ JSONObject params = new JSONObject();
|
|
|
+ params.put("title", "跟单员监控报警");
|
|
|
+ params.put("logUrl", "https://jav.lvzhiqiang.top/coin/orderDetail/" + order.getString("trackingNo"));
|
|
|
+ params.put("btnTxt", "跟单详情");
|
|
|
+ SpringUtils.getBean(CoinServiceImpl.class).monitorAlarm4APP_TEXT_CARD(content, params);
|
|
|
}
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
@@ -260,6 +344,57 @@ public class CoinServiceImpl implements CoinService {
|
|
|
|
|
|
@Override
|
|
|
@Async("coinTaskExecutor")
|
|
|
+ public void monitorAlarm4APP_TEXT_CARD(String content, JSONObject params) {
|
|
|
+ // 文本卡片模式发消息
|
|
|
+ String title = "监控告警明细";
|
|
|
+ if (params.containsKey("title")) {
|
|
|
+ title = params.getString("title");
|
|
|
+ }
|
|
|
+ String logUrl = "https://lvzhiqiang.top";
|
|
|
+ if (params.containsKey("logUrl")) {
|
|
|
+ logUrl = params.getString("logUrl");
|
|
|
+ }
|
|
|
+ String btnTxt = "日志详情";
|
|
|
+ if (params.containsKey("btnTxt")) {
|
|
|
+ btnTxt = params.getString("btnTxt");
|
|
|
+ }
|
|
|
+ String user = "LvZhiQiang";
|
|
|
+ if (params.containsKey("user")) {
|
|
|
+ user = params.getString("user");
|
|
|
+ }
|
|
|
+ String party = "";
|
|
|
+ if (params.containsKey("party")) {
|
|
|
+ party = params.getString("party");
|
|
|
+ }
|
|
|
+ String tag = "";
|
|
|
+ if (params.containsKey("tag")) {
|
|
|
+ tag = params.getString("tag");
|
|
|
+ }
|
|
|
+
|
|
|
+ WxCpMessage wxCpMessage = WxCpMessage.TEXTCARD().agentId(properties.getAgentId())
|
|
|
+ .toUser(user)
|
|
|
+ .toParty(party)
|
|
|
+ .toTag(tag)
|
|
|
+ .title(title).description(content)
|
|
|
+ .url(logUrl).btnTxt(btnTxt)
|
|
|
+ .build();
|
|
|
+ try {
|
|
|
+ log.info("企业微信推送消息,send message: {}", wxCpMessage);
|
|
|
+ WxCpMessageSendResult sendResult = wxCpService.getMessageService().send(wxCpMessage);
|
|
|
+ log.info("企业微信推送消息成功,send result: {}", sendResult);
|
|
|
+ } catch (WxErrorException e) {
|
|
|
+ log.error("企业微信推送消息失败!Detail: ", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Async("coinTaskExecutor")
|
|
|
+ public void monitorAlarm4CHAT_BOT(String content, JSONObject params) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Async("coinTaskExecutor")
|
|
|
public void monitorAlarm(String content, String jobAlarmMode) {
|
|
|
// 判断告警模式
|
|
|
if (StringUtils.isEmpty(JOB_ALARM_MODE)) {
|