面向鞋类全栈 ERP 系统,覆盖从客户接单、模具管理、BOM 拆解、生产排程、出入库管理到标签打印、报表分析的全链路业务流程。系统采用前后端分离架构,后端基于 Spring Boot 3 提供 RESTful API,前端为 Vue 3 + Vite SPA,支持本地开发与 Docker 生产部署两套环境。
作为项目独立开发者(全栈),完成从需求分析、数据库设计、后端服务开发、前端页面开发到 API 联调部署的全链路实现:
数据库与领域建模:设计 13 张业务表,覆盖订单、客户、模具、产品、物料、部件、工序、设备、包装、区域等核心实体,采用逻辑删除 + 审计字段统一纳入基类
后端服务层开发:基于泛型基类 BaseService / BaseServiceImpl 抽取通用 CRUD,减少 70% 重复代码;实现 JWT 无状态认证、统一异常处理、密码加密工具链
前端 SPA 构建:基于 Vue 3 Composition API + Axios 封装统一 API 服务层,实现 10+ 业务页面的数据交互、状态管理、分页、Excel 导入导出、标签打印预览
双环境部署:设计 H2/MySQL 双数据源配置,开发环境直连本地 MySQL,生产环境通过 Docker Compose 一键启动,前端构建产物内嵌到后端 static/ 目录实现单端口部署
架构设计与实现要点
(1)泛型 CRUD 抽象层
定义了 BaseService 接口和 BaseServiceImpl 抽象实现,封装 save/update/delete/findAll 标准操作。子类只需继承基类并添加特殊查询方法,单个业务模块的 Service 代码量控制在 20-40 行以内。
(2)逻辑删除 + 自动审计
所有实体继承 BaseEntity(含 delFlag、createBy、createTime、updateBy、updateTime)。BaseServiceImpl.findAll() 通过 Criteria API 自动过滤已删除记录;AuditEntityListener 利用 JPA 生命周期回调 + UserContext(ThreadLocal)自动填充审计字段。
(3)JWT 无状态认证链路
请求经 JwtAuthenticationFilter 拦截 → 从 Authorization Header 提取 Bearer Token → 校验签名与有效期 → 将用户名写入 UserContext → Controller/Service 层无感读取 → 请求结束自动清理 ThreadLocal。登录接口和静态资源路径放行。
(4)前端单页路由的轻量实现
考虑到系统为内部管理工具,未引入 vue-router。所有页面在 App.vue 中通过 activePage 变量 + v-if 条件渲染实现切换,用 beforeunload 事件做登录态守卫。优点是组件每次挂载都会重新拉取数据保证 freshness,缺点是丢失 URL 定位和浏览器前进/后退——对工厂内部应用而言可接受。
(5)Excel 导入导出的双端分工
导出由前端 Sheet