资讯动态

Campus-imaotai:用 Docker 十分钟跑通 i茅台自动预约

发布时间:2026/10/18 4:28:38 来源:尧图企业网站定制
Campus-imaotai用 Docker 十分钟跑通 i茅台自动预约【免费下载链接】campus-imaotaii茅台app自动预约每日自动预约支持docker一键部署本项目不提供成品使用的是已淘汰的算法项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotaiCampus-imaotai 是一套 i茅台自动预约系统把每天固定时点在 i茅台 APP 上的手动申购操作替换为服务器定时任务。系统基于 Spring Boot 多模块后端与 Vue.js 管理页在后台维护账号、商品、门店三类数据按配置的分钟偏移与门店策略批量提交预约请求并用 Docker Compose 编排 MySQL、Redis、Nginx 与服务容器完成部署。项目概览仓库由 Maven 多模块后端campus-admin、campus-common、campus-framework、campus-modular与 vue_campus_admin 前端组成业务代码集中在 campus-modular 的 business 包下调度入口是 CampusIMTTask.java。部署入口为 doc/docker/docker-compose.yml四个服务全部采用 host 网络模式端口直接映射到宿主机服务职责端口镜像版本mysql账号、商品、门店、日志数据3306mysql:5.7redissession、门店列表、商品版本缓存6379redis:6.2.12nginx-web托管管理页面代理 /prod-api 接口80nginx:1.23.4campus-server预约服务与管理 API8160campus/campus-imaotai:1.0.13compose 中同时把各服务的数据、配置、日志目录挂载到宿主机 /docker/ 下数据库 root 密码与库名campus_imaotai在文件内直接写死时区统一设为 Asia/Shanghai。 部署与运行环境准备宿主机需要已安装的 Docker 与 Docker Compose2GB 以上可用内存且 3306、6379、80、8160 四个端口未被占用。提前创建挂载目录mkdir -p /docker/mysql/{data,conf,logs} /docker/redis/{conf,data} \ /docker/nginx/{html,cert,conf,log} /docker/server/conf这些目录分别承接四个容器的数据卷与配置卷缺失时容器挂载会出现空目录。获取代码与启动服务git clone https://gitcode.com/GitHub_Trending/ca/campus-imaotai cd campus-imaotai/doc/docker docker-compose up -d一条命令拉起四个容器mysql 首次启动会依据 MYSQL_DATABASE 自动创建空的 campus_imaotai 库供下一步导入表结构。初始化数据库mysql -h127.0.0.1 -uroot -p123456789 campus_imaotai \ ../sql/campus_imaotai-1.0.5.sql脚本包含 i_user、i_item、i_shop、i_log 四张业务表与 sys_* 管理表并写入菜单、角色等初始数据后台登录账号即来自其中的 sys_user 记录。访问验证docker ps curl -I http://127.0.0.1:8160容器全部 Up 且 8160 返回 HTTP 状态即代表后端就绪。管理页面需将 vue_campus_admin 构建产物放入 /docker/nginx/html随后通过 80 端口访问前端接口前缀为 /prod-api见 .env.production由 nginx.conf 反向代理到 127.0.0.1:8160。 功能模块拆解多账号管理账号存于 i_user 表以手机号为主键。入口 IUserController.java 暴露 /imt/user 前缀的接口sendCode 发送验证码、login 登录并落库 token/cookie、reservation 手动触发预约、travelReward 领取旅行奖励另含常规的分页查询与增删改。登录成功后 IUser.java 的构造方法会把到期时间记为当前加 30 天作为凭证有效期的参考。用户管理弹窗填写手机号后发送验证码登录即写入 token 与 cookie用户列表中的每一行还承载预约配置预约项目 code、省份城市、经纬度、类型门店策略与到期时间。账号列表字段直接对应 i_user 表的配置列可用于核对每个账号的策略门店选择策略预约时按账号的 shop_type 选取门店逻辑集中在 IShopServiceImpl.java 的 getShopId 方法shop_type1在本省投放列表中筛出本市门店取出货量inventory最大者本市无货时降级为本省距离最近门店shop_type2直接按距离取最近门店距离用经纬度做 Haversine 公式计算getDisdance 方法投放列表通过省份 商品维度查询并缓存到 Redis 60 分钟门店全量数据由 refreshShop 从 static.moutai519.com.cn 拉取先清表重灌再写入 Redis缓存 2 小时。门店列表页可按商品ID、省份、城市筛选并手动刷新茅台商品列表定时任务调度CampusIMTTask.java 用 Scheduled Async 编排全部节奏任务cron作用refresh0 10,55 7,8 ? * *刷新版本号、预约 item、门店 shop 列表reservationBatchTask0 0/1 9 ? * *9 点档每分钟执行一次批量预约getTravelRewardBatch0 0/1 11 ? * *11 点档每分钟批量领取旅行奖励updateUserMinuteBatch0 10 1 ? * *每月 1 日 01:10 批量重算随机分钟appointmentResults0 5 18 ? * *18:05 获取申购结果reservationBatch 以系统当前分钟匹配 i_user.minute只触发偏移量相符的账号账号之间固定间隔 3 秒串行执行避免同一秒内并发打满接口。日志监控与推送每次预约的完整过程项目、shopId、接口返回、异常信息由 IMTLogFactory.java 异步入 i_log 表状态列按内容中是否含报错区分成功与失败同时调用 PushPlusApi 依据账号的 push_plus_token 把结果推送到手机。操作日志可按系统模块、状态、时间范围检索 i茅台预约 记录关键配置与调优对预约行为影响最大的参数都在 i_user 表管理页的添加/修改弹窗可直接设置参数取值说明minute1~59越界回退为 5预约分钟偏移仅当前分钟minute的账号被触发random_minute0 随机 / 1 不随机是否让每月的批量任务重算偏移量shop_type1 / 21 本市出货量最大门店2 经纬度最近门店item_code多值用 分隔一个账号可挂多个预约项目串行执行push_plus_token可选配置后预约结果会经 PushPlus 推送到手机提示多账号运行时把 minute 分散到不同分钟可把峰值请求摊平账号间 3 秒间隔与项间 3~5 秒随机延迟由 IMTServiceImpl.java 内置无需额外配置。提示shop_type1 在本市无门店投放时会自动降级为本省最近门店若只想按距离选店直接使用 2 更可控。提示random_minute0 的账号每月 1 日 01:10 由定时任务统一重算偏移量重算后各账号才会进入新一轮错峰分布。⚠️ 常见问题排查现象发送验证码或登录返回发送验证码错误、登录失败。原因请求未通过 code2000 校验通常是 i茅台 接口签名或参数变更。处理查看仓库最新提交跟随社区对 sendCode/login 的适配修复。现象docker-compose up 报端口占用。原因四个容器均为 host 网络模式直接占用宿主机 3306、6379、80、8160。处理停掉占用方或同步修改 compose 与 application.yml 中的 server.port。现象9 点档没有触发预约。原因宿主机时钟不准或时区非 Asia/Shanghaicron 表达式按本地时间匹配。处理校准宿主机时间确认容器 TZ 环境变量生效再观察 campus-server 日志中的开始预约用户记录。现象预约时报 token 失效。原因token 在验证码登录时写入有效期以登录时间加 30 天为参考。处理在用户管理页对相应账号重新走发送验证码、登录流程刷新凭证。现象预约失败且提示申购时根据类型获取的门店商品id为空。原因门店或商品数据未刷新session 缓存过期后拉取失败。处理等待 7:10 / 7:55 / 8:10 / 8:55 的自动刷新或在门店列表页手动点击刷新茅台商品列表。现象多个账号连续失败。原因网络波动或上游限流失败细节分散在各次返回中。处理把服务放在网络稳定的服务器逐条核对 i_log 的返回内容定位是发送、登录还是申购环节出错。Campus-imaotai 适合两类读者需要在个人服务器上批量跑 i茅台每日预约的运营者以及想参考 Spring Boot Vue 管理后台、定时任务与 Redis 缓存写法的开发者。仓库地址为 https://gitcode.com/GitHub_Trending/ca/campus-imaotai README 中同时附了文档与演示视频入口。由于系统依赖 i茅台 的线上接口上游一旦调整就需要跟进代码变更建议定期查看仓库更新遇到接口失效或部署问题直接提交 Issue 反馈。【免费下载链接】campus-imaotaii茅台app自动预约每日自动预约支持docker一键部署本项目不提供成品使用的是已淘汰的算法项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑