☰
i茅台自动预约完全指南:campus-imaotai 用 5 个定时任务加 Docker 一键部署跑通每日申购
2026/10/18 1:23:56 网站建设 项目流程

i茅台自动预约完全指南:campus-imaotai 用 5 个定时任务加 Docker 一键部署跑通每日申购

【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai

campus-imaotai 是一个开源的 i茅台自动预约项目:部署后它会替你注册管理账号、每天在指定分钟自动提交预约申购、智能挑选目标门店,并在出结果时推送通知到手机,全程无需人工值守。

自动预约的价值:不用每天早上九点手动点

i茅台 的申购窗口每天上午 9 点开启,门店库存有限,手动点击既费时间又拼手速。你真正需要的,是一个能替你"排队"的程序:管理多个账号、挑对门店、挑对时间、打完请求立刻告诉你结果。

campus-imaotai 做的就是这件事,并且顺带处理了 i茅台 app 里的两个"支线任务":小茅运旅行活动(攒耐力值、领旅行奖励)和首次分享。项目基于作者自研的 Campus 框架搭建(Spring Boot + MyBatis-Plus + Redis + Vue 管理端),业务代码集中在 campus-modular/ 模块里。

程序的一天:5 个定时任务串起全流程 ⏰

所有"什么时候动手"的逻辑都挂在一张 cron 表上,见 CampusIMTTask.java:

时间任务做什么
凌晨 1:10updateUserMinuteBatch给开启随机模式的用户批量抽取预约分钟
7:10 / 7:55 / 8:10 / 8:55refresh刷新 app 版本号、商品列表、门店列表
9 点整点起每分钟reservationBatch对"预约分钟"命中的用户批量提交申购
11 点整点起每分钟getTravelRewardBatch批量领取旅行奖励
18:05appointmentResults查询申购结果并写入日志
@Scheduled(cron = "0 0/1 9 ? * *") public void reservationBatchTask() { imtService.reservationBatch(); // 9点期间每分钟批量申购 }

有个细节值得注意:每个用户的预约分钟可以是 1-59 之间的任意值,开启随机模式后,程序会在凌晨统一抽签,把请求摊到整个小时的不同分钟上,而不是所有人挤在同一秒。

门店挑选与接口细节:比"点一下"硬核的部分

申购请求发出去之前,程序得先找到"值得约"的门店:

  • 类型 1:本市投放该商品的门店里,挑剩余库存(inventory)最大的;本市没有则退回本省最近的门店;
  • 类型 2:直接按坐标选最近门店,距离用 Haversine 公式算球面距离(代码在 IShopServiceImpl.java)。

门店列表和当日库存都会缓存进 Redis,并靠凌晨的定时任务刷新。请求侧则复刻了官方 app 的接口特征:请求参数经 AES 加密后放入actParam,签名用"密钥 + 手机号 + 时间戳"算 MD5,请求头带MT-Device-ID、MT-APP-Version(版本号实时从 App Store 页面抓取并缓存)。每个用户还能用@分隔配置多个商品 code 同时申购。加密与签名逻辑在 IMTServiceImpl.java 里。

部署:docker-compose 拉起来就能跑 🐳

官方部署给了一份 docker-compose.yml,共 4 个容器:mysql:5.7(建库建表用 doc/sql/campus_imaotai-1.0.5.sql)、redis:6.2.12(缓存门店、session、版本号)、nginx:1.23.4(托管前端页面)、campus-server(后端服务,默认端口 8160)。

git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai/doc/docker docker-compose up -d

配置与挂载方式都写在 docker-compose.yml 里;Vue 管理端源码在 vue_campus_admin/,后端分 admin / common / framework / modular 四个 Maven 模块。

部署之后:加账号、盯日志、收推送

管理端采用 RuoYi 风格布局,"i茅台"菜单下有用户管理、预约项目、门店列表、源码地址四项。添加账号时填入 i茅台手机号,点"发送验证码",填好收到的验证码点登录,token 与设备信息就会自动落库。

每次预约、旅行、领奖都会记一条操作日志,成功或失败一目了然;用户配置里填好 pushplus token 后,结果还会通过 PushPlus 推送到手机。

适合谁、以及几句提醒

  • 想直接跑通的人:作者明确写了"本项目不提供成品,使用的是已淘汰的算法",请把它当学习参考,实际使用大概率要跟着 app 现版本接口改;
  • 学 Spring Boot 的人:这是一个很完整的实战样本——cron 调度、Redis 缓存策略、接口加密签名复刻、异步消息推送,整条链路都在这一个仓库里;
  • 使用之前:务必读完 README 末尾的声明,数据与后果自负,项目仅限学习研究用途。

如果打算深入读代码,建议按这个顺序:先看 CampusIMTTask.java 理时间线,再看 IMTServiceImpl.java 理接口,最后看 IShopServiceImpl.java 理门店选择算法。

【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询