从“苍穹外卖”到“敕勒食驿”:一次不再“烂大街”的项目升级实战
相信很多学 Java 的同学都听说过黑马程序员在哔站推出的经典项目——“苍穹外卖”。 作为一个单体架构项目,它对 Java 后端技术栈的讲解确实非常详细: 但问题也来了—— 如果你把它原封不动写进简历,面试官大概率已经见过几十遍。 所以我做了一件事: 我没有推翻重做,而是在它的基础上进行了系统性改造升级。 “敕勒食驿”,是我结合学校和地区特色,对“苍穹外卖”的一次完整升级改造。 升级范围包括: 可以说,这个项目也是一次 AI 辅助开发实践。 我使用 ClaudeCode 对整个项目进行了批量重命名: 统一升级为 chile 系列命名规范。 👉 这一步虽然简单,但非常重要: 原项目基于较早版本的 SpringBoot。 我将其升级到: 升级过程中需要特别注意: SpringBoot3 全面迁移到 Jakarta 命名空间: 需要替换为: 否则项目无法启动。 SpringBoot3 下 Swagger 注解发生变动。 图中断点处: 如果你使用 Apifox 管理接口,其实可以考虑: 接口文档统一外置管理,代码更干净。 学习过程中,我发现原项目存在几个隐藏问题。 在修改地址时,小程序端的省市区数据一直不更新。 原因是: 需要补充: 👉 这类问题如果你只是照着敲代码,是不会发现的。 这也是“二次开发”和“抄项目”的本质区别。 小程序端删除地址时一直报错。 原因是路径不匹配: 默认只匹配 导致 404。 同时匹配两种路径。 我重新设计了管理端视觉风格: 我先让 ClaudeCode 给出设计思路,再用 Figma 设计图片资源,然后逐步修改样式。 如果你使用非 80 端口运行 nginx: 登录后右上角会一直出现 WebSocket 报错。 原因是: 编译后的 JS 文件里写死了: 解决方案: 改为动态获取端口: 原项目的小程序 UI 已经做得非常成熟。 所以我没有大改结构,只做了: 小提示:大家可能会碰到菜品不显示报错的问题,大家可以将 Redis 中的菜品缓存删除,一般就可以解决了。 很多人问我: 我的答案是: 如果你只是为了交作业,那没必要。 因为: 面试官会明显感受到: 目前项目还没有结束。 下一步我打算: 在管理端集成大模型能力,例如: 让系统真正具备 AI 辅助运营能力。 从“苍穹外卖”到“敕勒食驿”, 如果你也不想让自己的项目“烂大街”, 如果这篇文章对你有帮助: 👍 点个赞 我们一起把项目做出“自己的味道”。 —— 程序员小崔日记 本文由mdnice多平台发布前言
SpringBoot、MyBatis、Redis、JWT、Nginx、微信小程序……
对于新手来说,它几乎是一套完整的实战练习模板。学的人太多,它已经变成了“烂大街”项目。
🌾 “敕勒食驿”——基于地区特色的二次开发版本
这不是简单换皮,而是一次完整的工程实践。

🛠 使用工具栈
一、后端改造
命名体系重构
它意味着这个项目已经真正属于你,而不是“套壳项目”。
技术栈升级
⚠ javax → jakarta 迁移
javax.*jakarta.*Swagger 变化

直接删除 Swagger 相关代码
二、源码问题修复(非常关键)
🐛 地址修改数据不更新
MyBatis 的 update 语句中缺少对应字段。<if test="provinceCode != null">
province_code = #{provinceCode},
</if>
<if test="provinceName != null">
province_name = #{provinceName},
</if>
<if test="cityCode != null">
city_code = #{cityCode},
</if>
<if test="cityName != null">
city_name = #{cityName},
</if>
<if test="districtCode != null">
district_code = #{districtCode},
</if>
<if test="districtName != null">
district_name = #{districtName},
</if>
只有真正调试、排查,才会意识到问题。🐛 删除地址 404
/user/addressBook/@DeleteMapping/user/addressBook修复方式:
@DeleteMapping({"", "/"})三、管理端重设计
主题定位
AI 给结构,人来做审美,这才是效率最大化。


源码问题:WebSocket 报错
ws://localhost:80/ws/...window.location.host四、小程序端改造

五、这次改造带来的思考
有必要在这个项目上花这么多时间吗?
如果你是为了找实习,那非常有必要。你不是“学过”,而是“做过”。
六、下一步计划:集成大模型
结尾
我完成的不是一个项目,而是一次真正的工程改造。
不妨试着做一次属于自己的升级。
⭐ 关注一下
💬 评论区交流你的改造思路