package com.yutou.qqbot.models.Animal; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yutou.qqbot.QQBotManager; import com.yutou.qqbot.models.Model; import com.yutou.qqbot.utlis.*; import net.mamoe.mirai.event.events.MessageEvent; import javax.net.ssl.HttpsURLConnection; import java.net.URL; import java.util.Calendar; import java.util.Map; public class TurnipProphet extends Model { public static class TurnipData { public static final String MODEL = "趋势:"; public static final String PR = "概率:"; public static final String MIX = "保底价:"; public static final String MAX = "最高价:"; public static final String DAY = "最高日:"; public static final String MONDAY_UP = "周一上"; public static final String MONDAY_DOWN = "周一下"; public static final String TUESDAY_UP = "周二上"; public static final String TUESDAY_DOWN = "周二下"; public static final String WEDNESDAY_UP = "周三上"; public static final String WEDNESDAY_DOWN = "周三下"; public static final String THURSDAY_UP = "周四上"; public static final String THURSDAY_DOWN = "周四下"; public static final String FRIDAY_UP = "周五上"; public static final String FRIDAY_DOWN = "周五下"; public static final String SATURDAY_UP = "周六上"; public static final String SATURDAY_DOWN = "周六下"; } int nowTime; @Override public boolean isUserPublic() { return true; } @Override public String[] getUsePowers() { return new String[]{ QQFromCommands.TURNIP_PROPHET }; } @Override public void onMessage(Long qq, MessageEvent event, boolean isGroup) { super.onMessage(qq, event, isGroup); int money = -1; try { money = Integer.parseInt(msg.trim()); } catch (Exception e) { return; } setData(money, event.getSource().getFromId()); } private void setData(int money, long qq) { String redisKey = qq + "_turnip"; String data = RedisTools.get(redisKey); String pattern = null; JSONObject json; JSONArray array; if (StringUtils.isEmpty(data)) { array = new JSONArray(); json = new JSONObject(); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); array.add(-1); } else { json = JSONObject.parseObject(data); array = json.getJSONArray("turnip"); } System.err.println(getDay()); if(array.getInteger(0)==-1&&getDay()!=0){ QQBotManager.getInstance().sendMessage(qq,"没有周日买入信息,本周不收录 :("); return; } if (json.containsKey("old_pattern")) { try { pattern = json.getString("old_pattern"); } catch (Exception ignored) { } } if (getDay() == 0) { if (json.containsKey("pattern")) { json.put("old_pattern", json.getString("pattern")); pattern = json.getString("pattern"); } if (money >= 90 && money <= 110) { array.set(0, money); } } else { if (money >= 9 && money <= 660) { System.out.println("array = " + array); System.out.println("array.size() = " + array.size()); if (nowTime < 12) { array.set(getDay() * 2 - 1, money); } else { array.set(getDay() * 2, money); } } } json.put("turnip", array); StringBuilder builder = new StringBuilder(); for (Object o : array) { builder.append(o).append("."); } builder.append(".".repeat(Math.max(0, (12 - array.size())))); String prices = builder.toString(); if (prices.split("\\.").length == 13) { prices = prices.substring(0, prices.length() - 1); } prices = prices.replace("-1", ""); json.put("prices", prices); try { if(pattern!=null) { switch (pattern){ case "波动型" -> pattern="0"; case "大幅上涨(三期型)"-> pattern="1"; case "递减型" -> pattern="2"; case "小幅上涨(四期型)" -> pattern="3"; } } QQBotManager.getInstance().sendMessage(qq,"已记录,正在预测本周走势..."); Map map = WebClient.getInstance().openTurnip(prices, pattern); 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); } } @Override public void onTime(String time) { super.onTime(time); nowTime = Integer.parseInt(time.split(":")[0]); } private int getDay() { return Calendar.getInstance().get(Calendar.DAY_OF_WEEK)-1; } public static void main(String[] args) throws Exception { TurnipProphet prophet = new TurnipProphet(); prophet.setData(88, 583819556); } } /* null.90........... null.97........... null.1!.1@.2!.2@.3!.3@.4!.4@.5!.5@.90. null.1!.1@.2!.2@.3!.3@.4!.4@.5!.5@.6!.90. */