i茅台自动预约系统完整部署指南
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
Campus-iMaoTai 是一个基于 Java 的 i茅台自动预约系统,支持 Docker 部署,适合不想每天守在手机前抢号的用户。绑定 i茅台账号后,登录状态维护、选店、提交预约会按设定的分钟自动完成,申购结果在晚间批量查询。本教程面向会基本命令、装过 Docker 的用户,覆盖环境搭建、账号绑定、门店策略到日常运维的完整过程。
项目速览
- 后端基于 Spring Boot + MyBatis-Plus + Redis,前端为 Vue + Element UI 管理后台,页面由 Nginx 托管。
- Docker Compose 一次性拉起 4 个服务:MySQL(3306)、Redis(6379)、Nginx(80)、预约服务(8160)。
- 预约、数据刷新、结果查询全部由 Spring cron 定时任务驱动,启动后无需人工触发。
- 项目采用 Apache 2.0 许可开源,doc/docker/ 内提供全套部署配置与 SQL 文件。
- README 声明所使用的算法已经淘汰、项目定位是学习和研究,实际投入使用前请先评估。
部署:三步跑通环境
环境检查
先确认机器已安装 Docker 与 Docker Compose:
docker version docker compose versioncompose 文件中所有服务使用 host 网络模式,端口直接绑定到宿主机,因此 3306、6379、80、8160 需要空闲;数据与配置通过宿主机 /docker/ 目录下的 mysql、redis、nginx、server 四个子目录挂载,目录不存在时由 Docker 自动创建。
一键启动
git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai/doc/docker docker-compose up -d| 服务 | 端口 | 职责 |
|---|---|---|
| mysql | 3306 | 存储账号、门店、商品、日志数据 |
| redis | 6379 | 缓存商品版本、会话等运行数据 |
| nginx-web | 80 | 托管管理后台页面,把 /prod-api 请求转发给后端 |
| campus-imaotai | 8160 | 承担预约调度与业务接口 |
如需调整数据库或 Redis 连接地址,修改 /docker/server/conf/ 目录下的 application-prod.yml(仓库 doc/docker/server/conf/ 有说明),该文件挂载到容器 /home/campus/conf/ 后生效;Nginx 配置见 doc/docker/nginx/conf/nginx.conf,无需在文内展开完整 YAML。
数据库初始化与验证
compose 启动时已建好空库 campus_imaotai,接下来从 doc/sql/ 导入表结构:
cd campus-imaotai/doc/sql mysql -h localhost -u root -p campus_imaotai < campus_imaotai-1.0.5.sql mysql -h localhost -u root -p -e "USE campus_imaotai; SHOW TABLES;"验证命令输出中出现 i_user、i_shop、i_item、i_log、sys_config 等表名,即表示初始化完成。
首次使用:从绑定账号到拿到预约结果
绑定第一个账号
用浏览器打开服务器 IP(80 端口)进入管理后台,进入「i茅台 → 用户管理」,点击「添加账号」:输入 i茅台手机号,点击「发送验证码」,填入收到的验证码完成登录。登录成功后,系统会自动保存该账号的 token、设备 ID 与到期时间,这些是后续每次预约的身份凭证。
图:添加账号弹窗,只需依次填写手机号与验证码,登录动作由后台代为完成。
选择门店策略
在用户编辑表单中填写预约项目 code(多个项目用 @ 分隔)、省份、城市、经纬度,再选择门店类型,系统支持三种方式:
| 策略 | 工作方式 | 适用场景 |
|---|---|---|
| 本市出货量最大门店 | 取本市当天该商品出货量最大的门店,本市无货时自动改用省内距离最近门店 | 希望押注投放量大的门店 |
| 位置附近门店 | 按填写的经纬度计算距离,选择最近的门店 | 图方便就近提货 |
| 自定义门店 | 手动填写门店商品 ID,可在门店列表页查询获得 | 有明确指定的目标门店 |
图:门店列表页可按商品 ID、省份、城市等条件筛选,也支持一键刷新最新茅台商品门店数据。
设置预约时间与结果推送
预约动作由定时任务按固定节奏执行,你在界面上只需填好「预约分钟」:
- 每天 07:10、07:55 刷新商品版本、门店列表与预约项目;
- 每天 01:10 为选择随机预约的账号批量生成当天随机分钟;
- 9 点期间每分钟执行一次,系统挑出「预约分钟」等于当前分钟号的账号提交预约,同一账号多个项目之间随机间隔 3~5 秒;
- 11 点期间每分钟执行一次「小茅运旅行」活动奖励领取批次;
- 18:05 批量查询申购结果并写入操作日志。
用户表单中还可以填 PushPlus token,预约结果会通过消息推送发到你的手机。
在操作日志中确认预约结果
预约结束后到操作日志页核对:按系统模块「i茅台预约」筛选,结合操作状态、操作时间查看每一条请求与返回内容,页面支持批量删除、清空与导出。预约成功的记录会在 18:05 结果查询后出现。
图:操作日志页记录每次预约请求的返回状态,可按状态与时间快速定位失败条目。
进阶:多账号管理与调优
图:用户管理列表集中展示各账号的 token、预约项目 code、门店类型与到期时间,支持按手机号、用户 ID、省份、城市筛选和批量操作。
- 给不同账号设置不同的预约分钟与门店,把提交时间分散开,避免多账号集中在同一分钟。
- 定期检查列表中的到期时间,token 过期后及时重新绑定,否则 9 点批次会失败。
- 服务器时钟保持准确(开启 NTP 同步),预约批次依赖分钟级计时,时钟漂移会漏批次。
- 用 PushPlus 推送结果,减少每天手动翻日志的动作。
- 资源建议:内存不低于 4GB、磁盘不低于 10GB,网络稳定且延迟较低。
- 定期备份 /docker/mysql/data 数据目录,账号数据都在里面。
避坑手册
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 容器启动失败或端口被占 | 3306、6379、80、8160 已被占用(host 网络模式) | 释放被占端口或调整部署 |
| 数据库连接失败 | mysql 容器未运行或 root 密码不一致 | 检查容器状态,确认密码与 compose 默认值 123456789 一致 |
| Redis 连接异常 | redis 容器未运行或配置文件挂载错误 | 核对 /docker/redis/conf/redis.conf 与容器日志 |
| 前端页面打不开 | nginx-web 未运行或页面未放入 /docker/nginx/html | 检查 nginx-web 容器状态与 html 挂载目录 |
| 页面能打开但接口报错 | campus-server 未启动或缺少 application-prod.yml | 核对 /docker/server/conf/application-prod.yml 与容器日志 |
| 9 点没有预约记录 | token 过期或未填写预约项目 code | 查看用户列表到期时间,重新绑定并补填项目 |
日常运维
- 每天检查 docker logs campus-imaotai 与操作日志页,确认预约批次没有报错。
- 定期备份 /docker/mysql/data,并按需导出 i_user、i_shop 等重要表。
- 版本更新按「备份数据 → 拉取新镜像 → 重启容器 → 验证一次预约流程」的顺序执行。
- 修改数据库 root 密码,管理后台与 8160 端口不要无防护地暴露到公网。
- 关注 token 到期时间及时重绑,并定期归档过期的操作日志。
这套部署流程适合想体验完整自动预约链路、或需要集中管理多个 i茅台账号的用户,注意 README 中已说明所用算法淘汰、项目定位为学习和研究。使用时请保管好数据库与 Redis 凭证,及时更新依赖,并限制后台与服务端口的公开访问。按本教程完成账号绑定后,系统就会按设定好的节奏自动完成每天的预约提交与结果确认。
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考