文章目录
- 一、概述
- 二、四层开发规范与架构设计
- 2.1 项目分层结构
- 2.2 Entity 层开发规范
- 2.3 Mapper 层开发
- 2.4 Service 层开发
- 2.5 Controller 层开发规范
- 三、三端 API 隔离设计
- 3.1 店铺端 Controller 分布(54 个)
- 3.2 移动端 Controller 分布(24 个)
- 3.3 管理端(admin)概览
- 四、商品管理模块详解
- 4.1 商品数据模型
- 4.2 单规格 vs 多规格设计
- 4.3 商品发布流程
- 4.4 商品分类缓存
- 4.5 商品查询 API
- 五、订单管理模块详解
- 5.1 订单数据模型
- 5.2 订单生命周期
- 5.3 订单状态编码
- 5.4 下单流程
- 5.5 订单金额计算体系
- 5.6 店铺端订单管理
- 5.7 移动端订单接口
- 5.8 售后退款
- 5.9 支付成功工厂模式
- 六、用户体系
- 6.1 用户注册与登录
- 6.2 用户等级体系
- 6.3 购物车管理
- 6.4 收藏与地址管理
- 6.5 会员数据模型整体视图
- 七、优惠券系统
- 7.1 优惠券类型
- 7.2 优惠券生命周期
- 7.3 优惠券使用校验
- 八、门店管理与订单核销
- 8.1 门店实体
- 8.2 订单核销流程
- 九、页面装修(DIY)与文章管理
- 9.1 页面装修数据模型
- 9.2 文章管理
- 9.3 店铺端权限管理(RBAC 模型)
- 9.4 数据统计
- 十、定时任务与分布式锁
- 10.1 ShedLock 分布式锁机制
- 10.2 ShedLock 配置
- 10.3 订单定时任务详解
- 10.4 优惠券定时任务
- 10.5 ShedLock 参数详解
- 十一、微信生态集成
- 11.1 SDK 选型
- 11.2 微信支付配置
- 11.3 微信小程序登录流程
- 11.4 微信支付回调处理
- 11.5 前端支付调用
- 十二、多云存储集成
- 12.1 工厂模式设计
- 12.2 各云存储 SDK 依赖
- 12.3 存储配置与上传接口
- 12.4 文件上传配置
- 十三、快递查询集成
- 13.1 快递100 SDK
- 13.2 物流查询接口
- 13.3 预置物流公司
- 十四、小票打印集成
- 14.1 打印机工厂
- 14.2 飞鹅打印机实现
- 14.3 打印机管理接口
- 十五、短信服务集成
- 十六、Knife4j API 文档
- 16.1 配置
- 16.2 访问与使用
- 16.3 接口注解示例
- 十七、Excel 导出与二维码生成
- 17.1 Excel 导出(Apache POI)
- 17.2 二维码生成(ZXing)
- 十八、代码生成器(Generator)
- 十九、完整购物流程 API 调用链
- 二十、常见问题与解答
- Q1:下单减库存 vs 付款减库存有什么区别?
- Q2:订单号是怎么生成的?
- Q3:如何处理并发下单的库存超卖问题?
- Q4:多规格商品如何管理 SKU?
- Q5:软删除如何过滤?
- Q6:ShedLock 锁失效怎么办?
- Q7:微信支付回调签名验证失败?
- Q8:微信支付回调如何保证不丢失?
- Q9:文件上传后无法访问?
- Q10:如何在本地测试微信支付回调?
- 二十一、实践练习
- 练习1:追踪下单流程
- 练习2:实现商品搜索接口
- 练习3:新增定时任务
- 练习4:使用代码生成器
- 练习5:为订单添加权限控制
- 二十二、总结
一、概述
在 Java 企业级电商系统开发中,如何设计清晰的分层架构、实现灵活可扩展的核心业务模块、并高效集成第三方服务,是衡量系统工程质量的核心标准。本文基于WindShop(JJJ Shop)单商户电商系统的真实源码,系统地拆解其后端开发全流程,涵盖:四层开发架构规范、三端 API 隔离设计、商品/订单/用户/优惠券等核心业务模块的完整实现,以及微信支付、多云存储、ShedLock 分布式定时任务、快递查询、小票打印、Knife4j API 文档等进阶功能的集成方案。
本文面向具备 Spring Boot 和 MyBatis-Plus 基础知识的开发者,适合正在搭建或深入学习电商后端系统的技术同学阅读。
二、四层开发规范与架构设计
2.1 项目分层结构
WindShop 后端严格遵循四层架构:Entity → Mapper → Service → Controller,并通过多模块设计实现三端 API 隔离。
wind-common(公共模块) ├── common/entity/ # 实体类(数据库表映射) ├── common/mapper/ # Mapper 接口(数据访问层) ├── common/service/ # Service 接口定义 ├── common/service/impl/ # Service 实现 ├── common/vo/ # 视图对象