i茅台自动预约三步走:campus-imaotai 部署教程与完整配置指南
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
每天早上 9 点整,i茅台申购准时开启,手动守在屏幕前抢按钮是最熬人的环节。开源项目 campus-imaotai 把 i茅台自动预约做成了全自动流程:集中管理多个 i茅台账号,每天按固定时刻批量预约、领取旅行奖励、拉取申购结果,整套服务一条 Docker 命令即可拉起。本文讲解如何从零部署这套 i茅台自动预约系统,以及每个账号的预约参数该怎么配。
📋 项目速览:定位、技术栈与适用人群
一句话定位:campus-imaotai 是一个「多账号 i茅台自动预约」系统,后端定时驱动,前端提供可视化管理界面,支持 Docker 一键部署。
| 维度 | 说明 |
|---|---|
| 后端 | Java + Spring Boot(含 MyBatis-Plus、Redis、JWT 鉴权) |
| 前端 | Vue 2 + Element UI 管理后台(RuoYi 风格) |
| 依赖服务 | MySQL 5.7、Redis 6、Nginx |
| 部署方式 | Docker Compose 编排,四个容器:mysql / redis / nginx-web / campus-server |
| 适用人群 | 想练手 Spring Boot 定时任务与多账号体系的开发者、对预约类自动化项目做二次开发的技术爱好者 |
需要预先说明一点:项目描述里明确写了「本项目不提供成品,使用的是已淘汰的算法」,所以它的定位更接近可运行的架构样例,而非开箱即用的抢购工具。下面先把它跑起来。
🚀 首次运行:Docker 最小化部署步骤
这一节只解决「怎么在最短时间里看到登录页」。前提只有一条:服务器已安装 Docker 和 Docker Compose。
第一步,克隆仓库:
git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai第二步,进入部署目录启动全部服务,doc/docker/docker-compose.yml 里定义了 MySQL(3306)、Redis(6379)、Nginx(80)和 campus-server(8160)四个容器:
cd campus-imaotai/doc/docker docker-compose up -d第三步,导入初始化脚本 doc/sql/campus_imaotai-1.0.5.sql(含表结构与默认管理员账号):
mysql -h 127.0.0.1 -u root -p123456789 campus_imaotai < ../sql/campus_imaotai-1.0.5.sql第四步,浏览器访问http://服务器IP(Nginx 的 80 端口),用 SQL 脚本内置的 admin 账号登录(初始密码为模板默认值 admin123,登录后建议立刻修改)。页面加载出用户管理列表,即表示链路打通:前端静态页由 Nginx 提供,/prod-api/路径反向代理到后端的 8160 端口。
部署跑通之后,看看这个系统日常到底替你干了什么。
🧩 功能解析:按使用场景拆解 campus-imaotai
场景一:把 i茅台账号批量接进来
解决的问题:手动预约只能操作一个手机、一个账号;这里要一次绑定多个账号。
在「i茅台 → 用户管理」页填写手机号,点「发送验证码」,把短信验证码回填到弹窗,系统调用 i茅台接口完成登录后,把返回的 token、cookie、deviceId 一并存库,此后所有操作都由服务端代做。
账号绑定后,列表页展示每个账号的预约项目 code、省市、经纬度、门店策略类型和 token 到期时间,token 失效前一眼就能看出来。
场景二:给每个账号配不同的预约策略
解决的问题:所有账号在同一秒发请求,既挤占网络又容易被识别。
策略在账号级别配置:minute表示相对 9 点整的偏移分钟,randomMinute设为随机后,系统每天凌晨 1:10 会为各账号重新抽取一个预约分钟(见 CampusIMTTask.java 中的updateUserMinuteBatch任务),请求自然错开;shopType则决定门店选法,两种策略的完整实现都在 IShopServiceImpl.java 的getShopId方法里。
场景三:申请前先看清门店盘面
解决的问题:盲选门店不如先看库存与位置。
「门店列表」页缓存了当天各门店的商品 ID、地址、经纬度和创建时间,支持按省市、区县、公司名筛选,也能手动点「刷新茅台商品列表」拉最新数据。选店逻辑分两支:shopType=1时取本市库存量(inventory)最大的门店,本市无货则回落到本省最近门店;shopType=2时直接按经纬度算最近门店,距离用的是 Haversine 公式。
场景四:复盘每天发生了什么
解决的问题:预约失败了不知道卡在哪一步。
「操作日志」记录每次 i茅台预约的时间、请求方式、执行状态和返回摘要,可按操作人、状态、日期区间筛选,点「详情」能看到完整报文。当天 18:05 系统还会统一拉取申购结果并写入日志,配合 PushPlus 推送,结果不用守在电脑前等。
场景理清楚了,下面把每个参数的推荐值讲透。
⚙️ 关键配置详解:参数名、推荐值与原因
| 参数 | 推荐值 | 为什么这样配 |
|---|---|---|
minute | 1–5 | 距 9 点整越近越好;超出 1–59 范围时代码会自动纠正为 5 |
randomMinute | 0(随机) | 每天凌晨重抽预约分钟,多账号请求自然错峰 |
shopType | 1 | 优先本市出货量最大门店,无货自动回落省内最近门店,双保险 |
lat/lng | 账号所在真实位置 | 最近门店策略依赖它算距离,填错城市会选到很远的店 |
pushPlusToken | 你的 PushPlus 令牌 | 18:05 拉取申购结果后推送到手机,免值守 |
TZ | Asia/Shanghai | compose 已为容器设置时区,cron 定时全部以此为基准 |
五个定时任务的时间线值得记一下:每天 7:10、7:55、8:10、8:55 刷新版本号、商品与门店数据;9 点期间每分钟执行一次批量预约;11 点期间每分钟领取旅行奖励;18:05 拉取申购结果。全部定义在CampusIMTTask里,改时间只需改 cron 表达式。
配置本身不难,难在部署环境的细节。下面四个问题最常被踩到。
⚠️ 避坑指南:部署与运行中的四个典型问题
问题一:预约请求批量失败或接口报错。原因:README 已声明本项目「使用的是已淘汰的算法」,i茅台的接口与鉴权机制已升级,旧请求自然被拒。 解法:把它当作架构样例学习——定时任务编排、多账号 token 管理、门店选择算法都值得读;若要实际使用,需对照新版接口自行改造,不要期待原样可用。
问题二:定时任务执行时间与预期差几个小时。原因:cron 表达式依赖系统时区,宿主机若是 UTC 就会整体偏移 8 小时。 解法:compose 已给 nginx 与 campus-server 设置了TZ: Asia/Shanghai;自行改部署方式时,先确认容器时区与北京时间一致。
问题三:宿主机 80 端口被占用,管理后台打不开。原因:Nginx 容器默认listen 80且使用 host 网络模式,与本机已有 Web 服务冲突。 解法:修改 doc/docker/nginx/conf/nginx.conf 中的监听端口。注意前端页面与接口是两套路径:页面走 Nginx,接口固定 8160,改端口时别把/prod-api/的反向代理目标一起改了。
问题四:容器重建后数据库记录全没了。原因:数据持久化依赖 compose 里写死的宿主机挂载目录(/docker/mysql/data、/docker/redis/data等)。 解法:首次启动前确认这些目录存在且可写;迁移机器时连同挂载目录一起搬迁,而不是只拷镜像。
部署问题处理完,最后回答几个高频疑问。
❓ 常见问题:快速问答
Q:i茅台账号是怎么绑定进系统的?A:管理页填手机号、点「发送验证码」,回填短信验证码完成登录后,系统把 i茅台返回的 token、cookie、deviceId 存入数据库,后续预约全部由服务端携带这些凭证发起。
Q:能同时管理多少个账号?A:代码层面没有硬性上限,每个账号的预约是独立的异步任务,互不阻塞;但账号越多,服务器出口带宽和请求并发压力越大,按自己的网络条件控制数量。
Q:预约结果怎么通知我?A:给账号配置pushPlusToken后,系统每天 18:05 批量拉取申购结果,通过 PushPlus 推送到你的手机,同时完整记录在操作日志里。
Q:这是可以直接拿来用的成品吗?A:不是。项目说明明确「不提供成品、使用已淘汰的算法」,它的价值在于完整展示了预约类自动化项目的骨架——定时调度、多账号管理、门店策略、日志追溯、Docker 部署,适合作为二开的起点。
📝 总结:campus-imaotai 适合谁
campus-imaotai 是一个结构完整、能真正跑起来的 i茅台自动预约系统样例,它的价值不在「保证抢到」,而在从账号接入、策略配置、定时驱动到日志复盘、容器化部署的全链路实现都摆在明面上。如果你想在实战中理解 Spring Boot 定时任务、多账号 token 管理这套体系,或者想以它为基座做二次开发,这个项目值得一份 star 和一次完整部署。
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考