调整脚本

This commit is contained in:
2026-01-23 18:04:11 +08:00
parent 5eac38c0c1
commit c3597e57f6
4 changed files with 56990 additions and 77 deletions

View File

@@ -33,6 +33,11 @@ public class BetSchedule {
@Autowired
private CompletedTodayRepository completedTodayRepository;
public static void main(String[] args) {
BetSchedule betSchedule = new BetSchedule();
betSchedule.placeBet();
}
// 每天早上7.07分开始每5分钟执行一次到第二天早上6点结束7:07, 7:12, 7:17...23:57, 0:02, 0:07...5:57
// @Scheduled(cron = "0 7/5 7-23,0-6 * * ?")
public void placeBet() {
@@ -55,51 +60,51 @@ public class BetSchedule {
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
);
LoginInfoResult loginInfo = loginInfoRepository.findFirstByOrderByCreateTimeDesc().orElse(null);
if (loginInfo == null) {
System.out.println(currentTime + " - 未找到登录信息,跳过执行");
return;
}
// 检查onOff字段是否为1开启状态
if (loginInfo.getOnOff() != 1) {
System.out.println(currentTime + " - 投注功能未开启,跳过执行");
return;
}
// 检查winNum和loseNum字段是否合理
Integer winNum = loginInfo.getWinNum();
Integer loseNum = loginInfo.getLoseNum();
if (winNum != null || loseNum != null) {
// 根据LoginInfo的startTime 查询CompletedToday的resultAmount总和 判断是否达到 winNum 和 loseNum的值
Date startTime = loginInfo.getStartTime();
if (startTime != null) {
Double totalResultAmount = completedTodayRepository.sumResultAmountByCreateTimeAfter(startTime);
if (totalResultAmount != null) {
System.out.println(" - 今日盈亏总和: " + totalResultAmount);
// 判断是否达到止盈点
if (totalResultAmount >= winNum) {
System.out.println(currentTime + " - 已达到止盈点 " + winNum + ",跳过执行");
return;
}
// 判断是否达到止亏点
if (totalResultAmount <= -loseNum) {
System.out.println(currentTime + " - 已达到止亏点 " + loseNum + ",跳过执行");
return;
}
}
}
}
// LoginInfoResult loginInfo = loginInfoRepository.findFirstByOrderByCreateTimeDesc().orElse(null);
// if (loginInfo == null) {
// System.out.println(currentTime + " - 未找到登录信息,跳过执行");
// return;
// }
//
// // 检查onOff字段是否为1开启状态
// if (loginInfo.getOnOff() != 1) {
// System.out.println(currentTime + " - 投注功能未开启,跳过执行");
// return;
// }
//
// // 检查winNum和loseNum字段是否合理
// Integer winNum = loginInfo.getWinNum();
// Integer loseNum = loginInfo.getLoseNum();
//
// if (winNum != null || loseNum != null) {
// // 根据LoginInfo的startTime 查询CompletedToday的resultAmount总和 判断是否达到 winNum 和 loseNum的值
// Date startTime = loginInfo.getStartTime();
// if (startTime != null) {
// Double totalResultAmount = completedTodayRepository.sumResultAmountByCreateTimeAfter(startTime);
// if (totalResultAmount != null) {
// System.out.println(" - 今日盈亏总和: " + totalResultAmount);
//
// // 判断是否达到止盈点
// if (totalResultAmount >= winNum) {
// System.out.println(currentTime + " - 已达到止盈点 " + winNum + ",跳过执行");
// return;
// }
//
// // 判断是否达到止亏点
// if (totalResultAmount <= -loseNum) {
// System.out.println(currentTime + " - 已达到止亏点 " + loseNum + ",跳过执行");
// return;
// }
// }
// }
// }
System.out.println(currentTime + " - 开始执行投注...");
System.out.println(" - 投注设置: 止盈点=" + winNum + ", 止亏点=" + loseNum + ", 状态=" + (loginInfo.getOnOff() == 1 ? "开启" : "关闭"));
// System.out.println(" - 投注设置: 止盈点=" + winNum + ", 止亏点=" + loseNum + ", 状态=" + (loginInfo.getOnOff() == 1 ? "开启" : "关闭"));
try {
// 执行投注逻辑
executeBet(loginInfo);
executeBet(null);
System.out.println(currentTime + " - 投注执行完成");
@@ -120,32 +125,42 @@ public class BetSchedule {
// 4. 记录投注结果
try {
// 1. 从json文件中获取投注号码
System.out.println(" - 从json文件中获取投注号码...");
JSONObject betData = readBetDataFromJson();
JSONArray betNumbers = betData.getJSONArray("betNumbers");
// 1. 从json文件中获取投注数据
System.out.println(" - 从json文件中获取投注数据...");
JSONArray betDataArray = readBetDataFromJson();
JSONObject bet = betData.getJSONObject("bet");
bet.put("game", betNumbers);
bet.put("contents", betNumbers);
bet.put("amount", betNumbers);
bet.put("odds", 9.599);
bet.put("title", betNumbers);
System.out.println(" - 投注号码: " + betNumbers.toString());
// 2. 遍历投注数据并执行投注
for (int i = 0; i < betDataArray.length(); i++) {
JSONObject betData = betDataArray.getJSONObject(i);
String time = betData.getString("time");
System.out.println(" - 处理投注时间: " + time);
// 2. 计算投注金额
System.out.println(" - 计算投注金额...");
double betAmount = betData.getDouble("betAmount");
System.out.println(" - 投注金额: " + betAmount);
// 获取投注号码
JSONObject result = betData.getJSONObject("result");
JSONArray betNumbers = new JSONArray();
for (int j = 0; j < 10; j++) {
JSONObject posData = result.getJSONObject(String.valueOf(j));
for (String num : posData.keySet()) {
if (posData.get(num) != null) {
betNumbers.put(num);
}
}
}
System.out.println(" - 投注号码: " + betNumbers.toString());
// 3. 调用投注接口
System.out.println(" - 提交投注...");
String betResult = callBetApi(betNumbers, betAmount, loginInfo);
System.out.println(" - 投注结果: " + betResult);
// 计算投注金额
double betAmount = loginInfo.getAmount(); // 固定投注金额
System.out.println(" - 投注金额: " + betAmount);
// 4. 记录投注结果
System.out.println(" - 记录投注结果...");
recordBetResult(betNumbers, betAmount, betResult);
// 调用投注接口
System.out.println(" - 提交投注...");
String betResult = callBetApi(betNumbers, betAmount, loginInfo);
System.out.println(" - 投注结果: " + betResult);
// 记录投注结果
System.out.println(" - 记录投注结果...");
recordBetResult(betNumbers, betAmount, betResult);
}
} catch (Exception e) {
System.err.println(" - 投注执行失败:");
@@ -156,13 +171,17 @@ public class BetSchedule {
/**
* 从json文件中读取投注数据
*/
private JSONObject readBetDataFromJson() throws IOException {
// 假设json文件位于项目根目录的bet-data.json
String filePath = "bet-data.json";
private JSONArray readBetDataFromJson() throws IOException {
// 使用绝对路径读取文件
String projectRoot = System.getProperty("user.dir");
String filePath = projectRoot + "/PyModel/data_test_predict/betting_predictions_final_1_20.json";
System.out.println(" - 读取投注数据文件: " + filePath);
FileReader reader = new FileReader(filePath);
JSONTokener tokener = new JSONTokener(reader);
JSONObject betData = new JSONObject(tokener);
JSONArray betData = new JSONArray(tokener);
reader.close();
System.out.println(" - 成功读取投注数据,共" + betData.length() + "条记录");
return betData;
}