i茅台自动预约系统部署指南:campus-imaotai 从搭建到日常使用
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
每天早上9点,i茅台的预约窗口只开放几分钟。如果只守着一个账号手动操作,遇到网络波动或操作失误就可能错过;如果想同时为家人朋友管理几个账号,手动切换登录又很容易出错。campus-imaotai 就是为这种场景做的开源工具:把 i茅台账号、门店、预约动作都搬进一个 Web 管理界面,按预设时间自动执行预约,并记录每一步的执行日志。
📦 项目速览
campus-imaotai 是一个 i茅台自动预约系统,后端基于 Spring Boot 构建,前端是 Vue(使用 Element UI 组件库的 RuoYi 管理模板),数据库使用 MySQL,缓存使用 Redis,整体支持 Docker Compose 一键部署。
它的核心能力包括:管理多个 i茅台账号(手机号 + token 登录态)、按"城市出货量最大的门店"或"位置附近门店"自动选择门店提交预约、预约结果查询与 PushPlus 消息推送、操作日志留痕,以及小茅运旅行、耐力值领取等配套任务的自动化。需要说明的是:项目作者声明本项目使用的方法已被 i茅台 官方淘汰,仅供学习与研究,部署前请先阅读仓库 README 中的声明。
🖥️ 环境与准备
开始之前,先确认运行环境满足以下条件。
| 项目 | 要求 |
|---|---|
| 服务器系统 | Linux(容器内 MySQL/Redis/Nginx/Java 应用各占一部分内存,建议 4GB 以上) |
| 软件 | Docker、Docker Compose |
| 目录 | 提前创建/docker/mysql、/docker/redis、/docker/nginx、/docker/server四个目录(容器数据挂载位置,详见 Docker 部署配置) |
获取源码(仓库地址以 gitcode 为准):
git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai🔧 部署实操
导入初始化数据库
MySQL 容器首次启动时会自动创建名为campus_imaotai的空库,需要把建表脚本导入其中。项目提供的初始化脚本位于 doc/sql/campus_imaotai-1.0.5.sql,包含i_user、i_shop、i_item、i_log等业务表以及系统管理相关表。
先启动 MySQL 容器,再导入脚本:
cd doc/docker docker-compose up -d mysql docker exec -i mysql mysql -uroot -p123456789 campus_imaotai < ../../sql/campus_imaotai-1.0.5.sql导入成功后可以用docker exec mysql mysql -uroot -p123456789 -e "use campus_imaotai; show tables;"验证,此时应看到i_user等业务表。
启动全部服务
确认数据库无误后,启动其余服务:
docker-compose up -d这个动作会依次拉起四个容器:MySQL 5.7、Redis 6.2.12、Nginx 1.23.4,以及核心业务服务 campus-server(监听 8160 端口)。稍等一两分钟执行:
docker-compose ps四个服务状态均为 Up 即启动成功。容器配置要点(见 doc/docker/docker-compose.yml):MySQL 的 root 密码为123456789;Nginx 监听 80 端口,负责静态页面和把/prod-api/前缀的请求转发到 8160 端口;campus-server 通过环境变量加载/docker/server/conf/application-prod.yml外部配置。
准备前端页面
Nginx 的页面目录映射自/docker/nginx/html(当前为空时访问首页会是 404)。前端源码在 vue_campus_admin/,执行npm install && npm run build生成dist目录后,把内容复制到/docker/nginx/html即可。
验证系统可用
浏览器访问http://服务器IP(Nginx 80 端口),能看到登录页即部署完成。若页面正常但登录报错,检查 campus-server 容器日志:
docker logs campus-imaotai --tail 100重点看数据源连接是否失败——这是最常见的部署问题,通常就是上面 SQL 没有导入或密码不一致。
⚙️ 核心功能与典型用法
登录管理后台后,左侧菜单的"i茅台"分组下有用户管理、预约项目、门店列表三个主要页面。
多账号管理
能做什么:集中管理多个 i茅台账号,每个账号保存手机号、userId、token、cookie、设备 ID 和预约参数,支持"验证码登录"和"直接新增"两种方式。
怎么操作:进入 i茅台 → 用户管理,点"添加账号",输入手机号后点"发送验证码",填入收到的验证码,点"登录"。系统会自动从 i茅台 接口换取并保存 token 与 userId。如果账号已经登录过、手头有现成的 token,也可以用"直接新增"手动填写。
看到什么结果:列表中出现该账号,"预约项目code"列显示目标商品编码(多个编码用 @ 分隔),"类型"列显示门店选择策略,"到期时间"是 token 的预计失效时间(登录后按 30 天计)。每行操作列提供"预约""修改""删除",其中"预约"用于立即手动触发一次预约,适合测试配置是否正确。
门店选择与执行日志
能做什么:系统每日凌晨自动从 i茅台 同步全量门店数据(约早上 7:10、8:55 各刷新一次),每个账号按自己配置的策略选择门店:类型 1 选本市出货量最大的门店,类型 2 选离账号经纬度最近的门店。预约、领取耐力值、查询申购结果等所有动作都会写入操作日志。
怎么操作:进入 i茅台 → 门店列表,可按省份、城市、地区、公司名称筛选,核对目标门店是否已同步;进入系统管理 → 操作日志,可按系统模块(如 i茅台预约)、操作状态、日期区间筛选。
看到什么结果:预约窗口期(每天 9 点)任务执行后,操作日志中会按账号逐条出现"i茅台预约 / 预约成功"或异常记录,日志内容里包含预约项目、shopId 和接口返回;18:05 系统还会自动查询申购结果,中签记录会以日志形式推送,也可通过账号配置的 pushPlusToken 收到 PushPlus 消息提醒。
🔩 关键配置说明
影响运行效果的配置主要有两处。
账号字段(i茅台 → 用户管理中填写):
| 字段 | 作用 | 建议 |
|---|---|---|
| 预约项目code | 要预约的商品编码,多个用 @ 分隔 | 与"预约项目"页面中的编码保持一致 |
| 类型 | 1=本市出货量最大门店,2=位置附近门店 | 按所在城市门店情况二选一 |
| 分钟 / 随机分钟 | 9 点整后的预约触发分钟数,是否随机 | 默认 5 分;多人账号建议开启随机打散时间 |
| pushPlusToken | 预约结果消息推送 | 不填则只在本系统日志中查看 |
外部配置文件application-prod.yml(挂载于/docker/server/conf/,说明见 doc/docker/server/conf/README.md):核心是数据库与 Redis 连接信息,需与 MySQL 容器的密码、库名一致;Nginx 中/prod-api/的转发规则见 doc/docker/nginx/conf/nginx.conf,修改端口后前端vue.config.js里的代理前缀也要同步。
❓ 常见问题与排查
现象:登录管理后台提示数据库连接失败。可能原因:初始化 SQL 未导入,或
application-prod.yml中密码与 MySQL 容器不一致。处理方式:确认campus_imaotai库中已有i_user等表;对照 doc/docker/docker-compose.yml 中的MYSQL_ROOT_PASSWORD核对配置,改完执行docker restart campus-imaotai。现象:能打开登录页,但登录、添加账号等请求 404 或报错。可能原因:
/docker/nginx/html为空(未部署前端),或 Nginx 未把/prod-api/转发到 8160。处理方式:补建前端 dist 目录;确认 nginx.conf 中proxy_pass http://127.0.0.1:8160/配置后重载 Nginx。现象:发送验证码或登录提示"登录失败,本地错误日志已记录"。可能原因:验证码填错、接口返回非 2000,或 i茅台 接口规则已变化。处理方式:查看容器日志中"登录请求-失败"对应的完整返回;若所有账号都失败,多半是接口侧变化,需要更新 IMTServiceImpl.java 中的请求逻辑。
现象:列表显示账号"到期时间"已过,预约无响应。可能原因:token 失效(按登录起 30 天计算)。处理方式:对该账号重新走"发送验证码 → 登录"流程刷新 token。
现象:门店列表为空。可能原因:启动时的门店同步失败(依赖 i茅台 的静态资源接口)。处理方式:手动点击门店列表页的"刷新茅台商品列表"按钮,再查看容器日志中的同步报错。
📏 适用边界与注意事项
先明确几点合理预期。项目作者已声明:本项目不提供成品,使用的算法已被 i茅台 淘汰,内容仅用于学习和研究——也就是说,把它当作一套"自动预约系统怎么设计、怎么部署"的完整范例来学习,比指望它真的抢到货更现实。
规模上,它适合个人在单台服务器上管理少量账号(个位数到几十个),账号间共用一个 Java 进程和数据库,并发能力有限,不适合大规模分布式抢购场景。账号数据、token、手机号都明文存于你部署的 MySQL 中,若服务暴露在公网,务必修改默认密码、限制访问来源,且不要部署在不可信的网络环境里。
🏁 写在最后
如果你熟悉 Spring Boot 和 Docker,按上面的顺序操作,半天内可以完成一次完整的部署和体验:从导入 SQL、启动容器,到添加第一个账号、跑通一次手动预约。项目以 MIT 风格的开源协议共享,遇到 BUG 或有改进想法,欢迎提交 Pull Request 参与贡献。
【免费下载链接】campus-imaotaii茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法)项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考