From b0ee27bcbfad6b59c70520fd6dc9d8ec2f6ae7f9 Mon Sep 17 00:00:00 2001 From: liwq <122639653@qq.com> Date: Wed, 28 Jan 2026 14:49:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4py=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bocai.db | Bin 122880 -> 122880 bytes .../com/tem/bocai/schedules/BetSchedule.java | 11 +++++------ .../tem/bocai/schedules/CrawlerSchedule.java | 6 ++++-- .../bocai/schedules/ExBetScriptSchedule.java | 17 +++++++++++++++-- .../bocai/util/LotteryWebMagicCrawler.java | 2 +- 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/bocai.db b/bocai.db index 20ea21bd92d59ba2a0166de78e26c9a939625278..4d49ec25e08dca9498080b3b9ef61d2fc5d9dcca 100644 GIT binary patch delta 19280 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 diff --git a/src/main/java/com/tem/bocai/schedules/BetSchedule.java b/src/main/java/com/tem/bocai/schedules/BetSchedule.java index 8e87902..8bf8a10 100644 --- a/src/main/java/com/tem/bocai/schedules/BetSchedule.java +++ b/src/main/java/com/tem/bocai/schedules/BetSchedule.java @@ -39,16 +39,16 @@ public class BetSchedule { @Autowired private BetRecordRepository betRecordRepository; - // 每天早上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 * * ?") + // 从7:02分钟起每5分钟执行一次 + @Scheduled(cron = "30 2/5 * * * ?") public void placeBet() { LocalDateTime now = LocalDateTime.now(); int hour = now.getHour(); int minute = now.getMinute(); - // 检查是否在7:07到第二天6:00之间 - // 如果时间在6:00到7:06之间,则跳过执行 - if ((hour == 6) || (hour == 7 && minute < 7)) { + // 检查是否在7:02到第二天6:00之间 + // 如果时间在6:00到7:01之间,则跳过执行 + if ((hour == 6) || (hour == 7 && minute < 2)) { String currentTime = now.format( DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") ); @@ -127,7 +127,6 @@ public class BetSchedule { try { // 1. 获取当前时间,格式化为与betTime相同的格式(假设betTime格式为yyyy-MM-dd HH:mm:ss) LocalDateTime now = LocalDateTime.now(); - String currentTime = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // 2. 从BetRecord中获取第一条记录(根据betTime排序) System.out.println(" - 从BetRecord中获取第一条记录..."); diff --git a/src/main/java/com/tem/bocai/schedules/CrawlerSchedule.java b/src/main/java/com/tem/bocai/schedules/CrawlerSchedule.java index 17f572b..bfe5d80 100644 --- a/src/main/java/com/tem/bocai/schedules/CrawlerSchedule.java +++ b/src/main/java/com/tem/bocai/schedules/CrawlerSchedule.java @@ -29,6 +29,8 @@ public class CrawlerSchedule { // @Scheduled(cron = "*/9 * * * * ?") /*@Scheduled(cron = "0 6-59/5 7-23 * * ?") @Scheduled(cron = "0 0-55/5 0-6 * * ?")*/ + // 从7:00分30秒起每5分钟执行一次 + @Scheduled(cron = "30 0/5 * * * ?") public void executeLotteryDraw() { System.out.println("开始爬取开奖结果..."); int retryCount = 0; @@ -112,8 +114,8 @@ public class CrawlerSchedule { }*/ - // 每7秒执行一次爬取今日已经结算 - //@Scheduled(cron = "*/7 * * * * ?") + // 从7:00分30秒起每5分钟执行一次爬取今日已经结算 + @Scheduled(cron = "30 0/5 * * * ?") public void executeSettlement() { System.out.println("开始爬取今日已经结算..."); int retryCount = 0; diff --git a/src/main/java/com/tem/bocai/schedules/ExBetScriptSchedule.java b/src/main/java/com/tem/bocai/schedules/ExBetScriptSchedule.java index 6b193f9..29a21f1 100644 --- a/src/main/java/com/tem/bocai/schedules/ExBetScriptSchedule.java +++ b/src/main/java/com/tem/bocai/schedules/ExBetScriptSchedule.java @@ -49,9 +49,22 @@ public class ExBetScriptSchedule { schedule.executePythonScript(); } - // 每分钟执行一次 - @Scheduled(cron = "0 * * * * ?") + // 从7:01分钟起每5分钟执行一次 + @Scheduled(cron = "30 1/5 * * * ?") public void executePythonScript() { + LocalDateTime now = LocalDateTime.now(); + int hour = now.getHour(); + int minute = now.getMinute(); + // 检查是否在7:02到第二天6:00之间 + // 如果时间在6:00到7:01之间,则跳过执行 + if ((hour == 6) || (hour == 7 && minute < 1)) { + String currentTime = now.format( + DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") + ); + System.out.println(currentTime + " - 不在投注时间范围内,跳过执行"); + return; + } + System.out.println("开始执行Python脚本..."); // 获取当前时间,格式化为yyyy-MM-dd HH:mm:ss diff --git a/src/main/java/com/tem/bocai/util/LotteryWebMagicCrawler.java b/src/main/java/com/tem/bocai/util/LotteryWebMagicCrawler.java index 02e7b4b..c31e0d5 100644 --- a/src/main/java/com/tem/bocai/util/LotteryWebMagicCrawler.java +++ b/src/main/java/com/tem/bocai/util/LotteryWebMagicCrawler.java @@ -248,7 +248,7 @@ public class LotteryWebMagicCrawler implements PageProcessor { objectMapper.enable(SerializationFeature.INDENT_OUTPUT); // 定义输出目录 - String directoryPath = "PyModel/data_test_dir"; // 项目根目录下的 output/json 文件夹 + String directoryPath = "PyModel/current_data"; // 项目根目录下的 output/json 文件夹 // 使用年月日作为文件名(格式:result_yyyyMMdd.json) SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");