diff --git a/src/main/java/com/yutou/qqbot/models/Animal/TurnipProphet.java b/src/main/java/com/yutou/qqbot/models/Animal/TurnipProphet.java index 78098e7..9fa3ebc 100644 --- a/src/main/java/com/yutou/qqbot/models/Animal/TurnipProphet.java +++ b/src/main/java/com/yutou/qqbot/models/Animal/TurnipProphet.java @@ -57,11 +57,49 @@ public class TurnipProphet extends Model { try { money = Integer.parseInt(msg.trim()); } catch (Exception e) { + if (msg.equals(QQFromCommands.TURNIP_PROPHET)) { + showData(event.getSource().getFromId()); + } return; } setData(money, event.getSource().getFromId()); } + private void showData(long qq) { + String redisKey = qq + "_turnip"; + String data = RedisTools.get(redisKey); + if (StringUtils.isEmpty(data)) { + QQBotManager.getInstance().sendMessage(qq, "没有本周数据,无法预测"); + return; + } + JSONObject json = JSONObject.parseObject(data); + String prices = json.getString("prices"); + String pattern = null; + if (json.containsKey("old_pattern")) { + try { + pattern = json.getString("old_pattern"); + } catch (Exception ignored) { + } + } + if (pattern != null) { + switch (pattern) { + case "波动型" -> pattern = "0"; + case "大幅上涨(三期型)" -> pattern = "1"; + case "递减型" -> pattern = "2"; + case "小幅上涨(四期型)" -> pattern = "3"; + } + } + Map map = null; + try { + map = WebClient.getInstance().openTurnip(prices, pattern); + sendQQ(map, prices, pattern, qq); + } catch (Exception e) { + e.printStackTrace(); + showData(qq); + } + + } + private void setData(int money, long qq) { String redisKey = qq + "_turnip"; String data = RedisTools.get(redisKey); @@ -139,62 +177,73 @@ public class TurnipProphet extends Model { } } QQBotManager.getInstance().sendMessage(qq, "已记录,正在预测本周走势..."); + Map map = WebClient.getInstance().openTurnip(prices, pattern); - if (map == null) { - String url = String.format("https://turnipprophet.io?prices=%s%s", - prices, - pattern == null ? "" : "&pattern=" + pattern - ); - QQBotManager.getInstance().sendMessage(qq, "没有结果,请检查数据是否有误。 \n网页预览:" + url); - return; + String tmp_pattern = sendQQ(map, prices, pattern, qq); + if (!StringUtils.isEmpty(tmp_pattern)) { + json.put("pattern", tmp_pattern); + RedisTools.set(redisKey, json.toJSONString()); } - JSONObject pr = JSONObject.parseObject(map.get(TurnipData.MODEL)); - JSONArray prArray = pr.getJSONArray(TurnipData.MODEL); - StringBuilder out = new StringBuilder(); - out.append("预测结果如下:\n"); - out.append(TurnipData.MODEL).append(prArray.getJSONObject(0).getString(TurnipData.MODEL)).append("\n"); - out.append(TurnipData.PR).append(prArray.getJSONObject(0).getString(TurnipData.PR)).append("\n"); - - out.append(TurnipData.MIX).append(map.get(TurnipData.MIX)).append("\n") - .append(TurnipData.MAX).append(map.get(TurnipData.MAX)).append("\n") - .append(TurnipData.DAY).append(map.get(TurnipData.DAY)).append("\n") - .append("-------------").append("\n") - .append(TurnipData.MONDAY_UP).append(map.get(TurnipData.MONDAY_UP)).append(" | ") - .append(TurnipData.MONDAY_DOWN).append(map.get(TurnipData.MONDAY_DOWN)).append("\n") - .append(TurnipData.TUESDAY_UP).append(map.get(TurnipData.TUESDAY_UP)).append(" | ") - .append(TurnipData.TUESDAY_DOWN).append(map.get(TurnipData.TUESDAY_DOWN)).append("\n") - .append(TurnipData.WEDNESDAY_UP).append(map.get(TurnipData.WEDNESDAY_UP)).append(" | ") - .append(TurnipData.WEDNESDAY_DOWN).append(map.get(TurnipData.WEDNESDAY_DOWN)).append("\n") - .append(TurnipData.THURSDAY_UP).append(map.get(TurnipData.THURSDAY_UP)).append(" | ") - .append(TurnipData.THURSDAY_DOWN).append(map.get(TurnipData.THURSDAY_DOWN)).append("\n") - .append(TurnipData.FRIDAY_UP).append(map.get(TurnipData.FRIDAY_UP)).append(" | ") - .append(TurnipData.FRIDAY_DOWN).append(map.get(TurnipData.FRIDAY_DOWN)).append("\n") - .append(TurnipData.SATURDAY_UP).append(map.get(TurnipData.SATURDAY_UP)).append(" | ") - .append(TurnipData.SATURDAY_DOWN).append(map.get(TurnipData.SATURDAY_DOWN)).append("\n") - ; - out.append("------------").append("\n"); - out.append("总概率:").append("\n"); - - for (Object o : prArray) { - JSONObject tmp = (JSONObject) o; - out.append(tmp.getString(TurnipData.MODEL)).append(":").append(tmp.getString(TurnipData.PR)).append("\n"); - } - out.append("------------").append("\n"); - out.append("祝好运 :)"); - json.put("pattern", prArray.getJSONObject(0).getString(TurnipData.MODEL)); - RedisTools.set(redisKey, json.toJSONString()); - Log.i("TurnipProphet", out.toString()); - QQBotManager.getInstance().sendMessage(qq, out.toString()); } catch (Exception e) { - setData(money, qq); + setData(money, qq); e.printStackTrace(); } } + private String sendQQ(Map map, String prices, String pattern, long qq) { + + if (map == null) { + String url = String.format("https://turnipprophet.io?prices=%s%s", + prices, + pattern == null ? "" : "&pattern=" + pattern + ); + QQBotManager.getInstance().sendMessage(qq, "没有结果,请检查数据是否有误。 \n网页预览:" + url); + return null; + } + + JSONObject pr = JSONObject.parseObject(map.get(TurnipData.MODEL)); + JSONArray prArray = pr.getJSONArray(TurnipData.MODEL); + StringBuilder out = new StringBuilder(); + out.append("预测结果如下:\n"); + out.append(TurnipData.MODEL).append(prArray.getJSONObject(0).getString(TurnipData.MODEL)).append("\n"); + out.append(TurnipData.PR).append(prArray.getJSONObject(0).getString(TurnipData.PR)).append("\n"); + + out.append(TurnipData.MIX).append(map.get(TurnipData.MIX)).append("\n") + .append(TurnipData.MAX).append(map.get(TurnipData.MAX)).append("\n") + .append(TurnipData.DAY).append(map.get(TurnipData.DAY)).append("\n") + .append("-------------").append("\n") + .append(TurnipData.MONDAY_UP).append(map.get(TurnipData.MONDAY_UP)).append(" | ") + .append(TurnipData.MONDAY_DOWN).append(map.get(TurnipData.MONDAY_DOWN)).append("\n") + .append(TurnipData.TUESDAY_UP).append(map.get(TurnipData.TUESDAY_UP)).append(" | ") + .append(TurnipData.TUESDAY_DOWN).append(map.get(TurnipData.TUESDAY_DOWN)).append("\n") + .append(TurnipData.WEDNESDAY_UP).append(map.get(TurnipData.WEDNESDAY_UP)).append(" | ") + .append(TurnipData.WEDNESDAY_DOWN).append(map.get(TurnipData.WEDNESDAY_DOWN)).append("\n") + .append(TurnipData.THURSDAY_UP).append(map.get(TurnipData.THURSDAY_UP)).append(" | ") + .append(TurnipData.THURSDAY_DOWN).append(map.get(TurnipData.THURSDAY_DOWN)).append("\n") + .append(TurnipData.FRIDAY_UP).append(map.get(TurnipData.FRIDAY_UP)).append(" | ") + .append(TurnipData.FRIDAY_DOWN).append(map.get(TurnipData.FRIDAY_DOWN)).append("\n") + .append(TurnipData.SATURDAY_UP).append(map.get(TurnipData.SATURDAY_UP)).append(" | ") + .append(TurnipData.SATURDAY_DOWN).append(map.get(TurnipData.SATURDAY_DOWN)).append("\n") + ; + out.append("------------").append("\n"); + out.append("总概率:").append("\n"); + + for (Object o : prArray) { + JSONObject tmp = (JSONObject) o; + out.append(tmp.getString(TurnipData.MODEL)).append(":").append(tmp.getString(TurnipData.PR)).append("\n"); + } + out.append("------------").append("\n"); + out.append("祝好运 :)"); + + Log.i("TurnipProphet", out.toString()); + QQBotManager.getInstance().sendMessage(qq, out.toString()); + return prArray.getJSONObject(0).getString(TurnipData.MODEL); + } + @Override public void onTime(String time) { super.onTime(time); diff --git a/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java b/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java index 2cc5d95..48cdedc 100644 --- a/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java +++ b/src/main/java/com/yutou/qqbot/utlis/ApplicationInit.java @@ -23,6 +23,7 @@ public class ApplicationInit implements ApplicationRunner { if (time.equals(oldTime)) { return; } + oldTime=time; for (Class model : Model.classList) { try { Model useModel= (Model) model.getDeclaredConstructor().newInstance();