电商项目很多人做过,但大多是“能跑就行”:订单写在 Controller 里,库存用一行 update 直接扣,支付回调没验签,超时订单靠手点。真到面试被追问“下单时库存怎么防超卖”“服务挂了订单怎么办”,答不上来。畅购商城项目实训针对的正是这类缺口——它不是带你从零写一个玩具,而是把一个 B2C 平台该有的环节摊开,让你补齐工程实现上的欠账。

这门课解决的是哪几个具体缺口

第一个缺口是架构分层。日常写的单体项目,业务逻辑、数据访问、接口暴露混在一起,改一处牵一片。课程把管理后台和网站前台拆成独立前端,后端按微服务拆分,用 SpringCloud 做服务注册与调用,SpringData JPA 承担持久层。你需要在脑子里建立一张图:一个下单请求从网关进来,经过哪些服务,各自负责什么,哪一步出错会影响什么。

第二个缺口是数据一致性。商品、库存、订单、支付分属不同服务时,本地事务管不住跨服务操作。课程里会反复碰到这类问题:下单成功但库存没扣、支付回调重复到达、订单超时未关闭。这不是背八股,而是要在具体业务流里想清楚补偿、幂等和定时任务该放在哪一层。

第三个缺口是前后端联调的工程习惯。接口文档怎么定、返回结构怎么统一、异常怎么传给前端、跨域和登录态怎么处理,这些在自学时容易被跳过,但在实际协作里天天遇到。

配套练习该怎么做

这类项目课最容易犯的错是“看一遍、跑起来、就过了”。建议按下面的顺序动手:

  • 先不看代码,自己画出商品详情到下单到支付的流程,标出每步涉及的服务和数据表,再对照课程实现找差异,差异点就是你真正要补的地方。
  • 把课程里的关键业务(库存扣减、订单状态流转、支付回调)自己重写一遍,写完再对照,重点看并发和异常分支是怎么处理的。
  • 故意制造故障:把某个服务停掉,看调用方是超时、熔断还是直接报错;把同一个支付回调发两次,看订单会不会重复变更状态。这类破坏性测试比顺跑一遍收获大得多。
  • 把接口文档和统一返回结构整理成自己的模板,后面做别的项目可以直接复用。

如果时间有限,优先保证订单和库存这条主线跑通,其余模块可以先理解设计意图,不必每行都敲。

看完应该能回答的问题

检验有没有真学进去,不看能不能复述技术栈,而看能不能答上这些:

  • 用户下单时,库存是在哪一步扣的?为什么放在这一步,而不是支付成功后扣?
  • 两个用户同时买最后一件商品,系统靠什么保证只有一个人下单成功?
  • 支付平台的回调可能重复发送,你的接口怎么保证订单状态只变更一次?
  • 订单创建成功但后续服务调用失败,这笔订单最终会变成什么状态,谁来兜底?
  • 管理后台和前台共用一套后端时,权限和返回字段怎么区分?

能把这些讲清楚,说明你掌握的是可迁移的设计思路,而不是某个项目的代码。答不上来的,回到对应模块再动手做一遍,比继续往后看更有效。

适合什么状态下打开它

如果你已经会写增删改查,但没完整跟过一个多模块的电商系统,这门课适合当作第一次系统性实战。如果你做过类似项目却说不清里面的取舍,它更适合拿来对照复盘——重点不是再抄一遍代码,而是把当初糊过去的地方重新想明白。学之前先确认自己 Java 基础、SpringBoot 基本用法和 SQL 没问题,否则会在环境搭建和依赖配置上耗掉大半精力,反而碰不到真正的业务难点。

畅购商城项目实训

课程详情

课程详情

课程名称:畅购商城项目实训

课程简介:本课程以畅购电商项目为背景,深入讲解B2C电商平台系统的开发与实现。课程涵盖管理后台和网站前台的构建,采用前后端分离的技术架构,后端微服务使用SpringBoot、SpringCloud、SpringData JPA等技术。

适合人群

  • 对电商系统开发感兴趣的学习者
  • 希望掌握前后端分离技术架构的开发人员
  • 有志于从事Java后端开发的技术人员

学习收获

  • 掌握B2C电商平台系统的开发流程
  • 熟悉前后端分离技术架构的应用
  • 精通SpringBoot、SpringCloud、SpringData JPA等技术的使用
  • 提升项目实战能力和团队协作能力

课程亮点

  • 真实项目案例,贴近实际工作场景
  • 系统化讲解,从需求分析到项目部署
  • 注重实战,提供丰富的代码示例和项目文档
  • 互动式教学,答疑解惑,确保学习效果

课程目录

第一章 畅购商城01章-框架搭建
  走进电商
    01_项目知识点介绍_cgsc_day01
    02_本日学习目标
    03_电商行业分析
    04_电商行业技术特点
    05_主要电商模式
  需求分析与系统设计
    06_项目原型介绍
    07_前后端分离介绍
    08_技术架构&系统架构介绍
  框架搭建
    09_虚拟机导入
    10_项目结构介绍
    11_父工程创建
    12_二级父工程创建
    13_eureka注册中心服务搭建
    14_公共模块搭建
    15_商品微服务搭建
    16_商品微服务测试
  品牌增删改查
    17_品牌表分析
    18_品牌列表查询实现
    19_根据id查询品牌信息
    20_品牌添加
    21_品牌修改
    22_品牌删除
    23_品牌列表条件查询实现
    24_品牌列表条件查询测试
    25_品牌列表分页查询实现
    26_品牌列表分页+条件查询实现
    27_统一异常处理类
第二章 畅购商城02章-分布式文件存储解决方案-fastDFS
  跨域解决方案CORS
    01_课程目标_cgsc_day02
    02_跨域介绍
    03_CROS介绍
  规格参数与分类管理
    04_畅购基础工程导入
    05_规格参数模板分类表关系介绍
    06_根据商品分类名称查询品牌列表实现
    07_根据商品分类名称查询规格列表
    08_根据商品分类名称查询规格列表-测试
  FastDFS
    09_fastDFS简介
    10_fastDFS文件上传流程
    11_fastDFS安装
    12_文件存储服务-工程搭建
    13_文件存储服务-文件上传代码实现
    14_文件存储服务-文件上传测试
第三章 畅购商城03章-微服务网关鉴权&限流解决方案-JWT&nginx
  微服务网关Gateway
    01_课程目标_cgsc_day03
    02_网关介绍
    03_后端网关系统搭建
    04_网关访问路由转发测试
    05_网关跨域处理
    06_网关过滤器实现
  网关限流
    07_限流介绍
    08_令牌桶算法介绍
    09_网关限流实现
  BCrypt密码加密
    10_Bcrypt介绍&演示
    11_新增管理员密码加密实现
    12_管理员登录实现
    13_可逆加密算法
    14_不可逆加密算法&Base64编码
  JWT 实现微服务鉴权
    15_什么是微服务鉴权
    16_jwt简介
    17_jwt令牌生成
    18_jwt令牌解析
    19_设置jwt令牌过期时间
    20_自定义jwt令牌内容
    21_微服务鉴权-实现思路分析
    22_微服务鉴权-系统服务发放令牌实现
    23_微服务鉴权-网关认证过滤器实现
    24_微服务鉴权-效果演示
第四章 畅购商城04章-商品管理
  分布式ID生成解决方案
    01_课程目标_cgsc_day04
    02_为什么需要分布式id
    03_分布式id解决方案介绍
    04_snowflake快速入门
  新增和修改商品
    05_spu&sku介绍
    06_spu添加实现
    07_sku列表添加实现
    08_spu&sku列表添加-controller
    09_spu&sku列表添加测试
    10_品牌与分类关联实现
    11_根据id查询商品
    12_商品修改保存
  商品审核与上下架
    13_商品审核&上下架功能分析
    14_商品审核
    15_商品下架
    16_商品上架
  删除与还原商品
    17_删除&还原商品需求分析
    18_商品逻辑删除
    19_商品还原
    20_商品物理删除
第五章 畅购商城05章-网站首页高可用解决方案-openRestry&nginx&lua
  Lua介绍
    01_课程目标_cgsc_day05
    02_什么是lua
    03_lua安装
    04_lua基本语法-1
    05_lua基本语法-流程控制
    06_lua基础语法-函数&require函数
  nginx+lua+redis实现广告缓存
    07_nginx功能介绍
    08_openrestry介绍
    09_广告数据加载-实现思路
    10_缓存预热
    11_缓存数据查询
    12_多级缓存设置
    13_前端首页加载
  nginx限流
    14_nginx限流控制
    15_突发流量控制
第六章 畅购商城06章-数据同步解决方案-canal&RabbitMQ
  canal
    01_课程目标_cgsc_day06
    02_什么是canal
    02_1_canal源码包编译安装
    03_数据监控微服务搭建&演示
  首页广告缓存更新
    04_首页广告缓存更新-实现思路
    05_首页广告缓存更新-发送消息到MQ
    06_首页广告缓存更新-获取消息并执行更新
  商品上架同步索引库
    07_商品上架同步索引库-实现思路
    08_商品上架同步索引库-队列&交换机声明
    09_商品上架同步索引库-数据监控服务实现
    10_商品上架同步索引库-搜索服务搭建
    11_商品上架同步索引库-商品服务查询功能接口实现
    12_商品上架同步索引库-搜索服务导入功能实现
    13_商品上架同步索引库-创建索引结构&导入全部商品测试
    14_商品上架同步索引库-接收消息并执行导入
    15_商品上架同步索引库-功能演示
    16_商品下架同步索引库-队列&交换机声明
    17_商品下架同步索引库-获取最新下架商品
    18_商品下架同步索引库-搜索服务实现
    19_商品下架同步索引库-功能演示
第七章 畅购商城07章-商品搜索-elastaicSearch
  根据关键字查询
    01_课程目标_cgsc_day07
    02_按照关键字查询-查询条件构建
    03_按照关键字查询-查询结果封装
    04_按照关键字查询-表现层定义
    05_按照关键查询-测试
  条件筛选
    06_条件查询介绍
    07_按照品牌过滤查询
    08_按照品牌进行聚合查询
    09_按照规格进行过滤查询
    10_按照规格进行聚合查询
    11_按照价格进行区间查询
  分页,排序,高亮
    12_分页查询
    13_排序查询
    14_什么是高亮
    15_高亮查询实现
第八章 畅购商城08章-商品详情页面-thymeleaf
  Thymeleaf
    01_课程目标_cgsc_day08
    02_什么是页面静态化
    03_thymeleaf介绍
    04_springboot整合thymeleaf
  基础语法
    05_基础语法-表单提交
    06_基础语法-对象遍历
    07_基础语法-map取值
    08_基础语法-数组遍历
    09_基础语法-日期显示
    10_基础语法-条件判断
    11_基础语法-模块声明与页面包含
  搜索页面渲染
    12_搜索页面渲染-实现思路
    13_搜索页面渲染-准备工作
    14_搜索页面渲染-controller跳转方法定义
    15_搜索页面渲染-用户条件信息显示
    16_搜索页面渲染-品牌信息显示
    17_搜索页面渲染-规格数据格式转换
    18_搜索页面渲染-规格与价格显示
    19_搜索页面渲染-数据列表展示
    20_搜索页面渲染-关键字查询
    21_搜索页面渲染-后端url拼接
    22_搜索页面渲染-前端url拼接&效果演示
    23_搜索页面渲染-去除搜索条件
    24_搜索页面渲染-价格排序
    25_搜索页面渲染-分页查询后端实现
    26_搜索页面渲染-分页前端实现&演示
  商品详情页生成
    27_商品详情页生成-实现思路
    28_商品详情页生成-静态页生成服务创建
    29_商品详情页生成-feign接口定义
    30_商品详情页生成-业务层实现
    31_商品详情页生成-静态页服务消息队列监听类
    32_商品详情页生成-数据监控服务
    33_商品详情页生成-测试
    34_商品详情页面-基于nginx访问
第九章 畅购商城09章-网关鉴权-Oauth2
  认证解决方案
    01_课程内容_cgsc_day09
    02_用户认证分析
    03_单点登录技术解决方案
    04_第三方登录技术解决方案
    05_本项目认证实现&资源访问流程
  Jwt令牌回顾
    06_jwt令牌基础回顾
    07_生成私钥与公钥
    08_认证服务导入
    09_基于私钥生成jwt
    10_基于公钥解析jwt
  Oauth2.0入门
    11_oauth2入门-准备工作
    12_授权码模式-获取授权码
    13_授权码模式-获取令牌
    14_授权码模式-校验&刷新令牌
    15_密码模式-获取令牌
    16_用户服务对接oauth2
  认证开发
    17_用户认证-准备工作
    18_用户认证-申请令牌测试
    19_用户认证-业务层
    20_用户认证-表现层
    21_用户认证-测试
    22_用户认证-动态获取用户信息
    23_认证服务对接网关-客户端网关创建
    24_认证服务对接网关-全局过滤器实现
    25_认证服务对接网关-全局过滤器测试
    26_自定义登录页面-功能实现
    27_自定义登录页面-测试
    28_自定义路径过滤器
第十章 畅购商城10章-购物车
  SpringSecurity权限控制
    01_课程目标_cgsc_day10
    02_什么是用户授权
    03_验证jwt包含角色权限信息
    04_用户授权演示
  购物车
    05_购物车实现思路
    06_添加购物车-skufeign声明&定义
    07_添加购物车-业务层实现
    08_添加购物车-表现层实现&测试
    09_查询购物车列表实现
  购物车渲染
    10_购物车渲染-购物车渲染服务搭建
    11_购物车渲染-feign接口定义
    12_购物车渲染-渲染服务表现层实现
    13_购物车渲染-页面渲染
    14_订单服务对接oauth
    15_微服务之间认证
    16_动态获取当前登录人
    17_页面跳转设置
第十一章 畅购商城11章-订单
  订单结算页
    01_课程内容_cgsc_day11
    02_登录人收件地址查询
    03_页面模板渲染-准备工作
    04_页面末班渲染-后端代码实现
    05_页面模板渲染-页面基础数据渲染
    06_页面模板渲染-页面收件人与支付方式数据封装
  下单
    07_下单实现-后端功能实现
    08_下单实现-前端功能实现
    09_库存变更-商品服务扣减库存实现
    10_库存变更-订单服务实现&测试
    11_增加积分业务介绍
第十二章 畅购商城12章-分布式事务解决方案-seata&消息队列
  分布式事务解决方案
    01_课程目标_cgsc_day12
    02_事务回顾&本地事务介绍
    03_分布式事务介绍
    04_CAP定定理介绍
    05_BASE理论介绍
    06_两阶段提交2PC介绍
    07_TCC事务补偿机制介绍
    08_基于消息队列方式介绍
  基于Seata实现分布式事务
    09_seata介绍
    10_fescar实现原理
    11_AT模式介绍
    12_MT模式&混合模式介绍
    13_fescar代码实现-准备工作
    14_fescar代码实现-分布式事务错误效果演示
    15_fescar代码实现-分布式事务正确效果演示
  基于消息队列实现分布式事务
    16_消息队列实现分布式事务-流程分析
    17_消息队列实现分布式事务-实体类&rabbitmq配置类创建
    18_消息队列实现分布式事务-订单服务添加任务表数据
    19_消息队列实现分布式事务-定时任务发送最新任务数据
    20_消息队列实现分布式事务-用户服务监听类接收消息
    21_消息队列实现分布式事务-用户服务监听类更新积分
    22_消息队列实现分布式事务-订单服务删除任务数据
    23_消息队列实现分布式事务-测试&效果演示
第十三章 畅购商城13章-微信扫码支付
  微信支付快速入门
    01_课程内容_cgsc_day13
    02_微信支付介绍
    03_微信支付入门案例
    04_QRCode演示
  微信支付二维码
    05_购物支付整体流程介绍
    06_订单结算页跳转支付方式页
    07_支付服务创建
    08_支付服务-统一下单实现
    09_页面对接支付服务实现
  支付回调逻辑处理
    10_支付回调业务分析&Echosite介绍
    11_echosite效果演示
    12_接收回调消息效果演示
    13_回调消息接收并返回成功通知
    14_支付服务-查询订单消息并发送到队列
    15_订单服务-接收消息并修改订单状态
    16_支付回调测试&效果演示
  推送支付通知
    17_推送通知业务分析&websocket介绍
    18_web stomp插件安装
    19_web stomp效果演示
    20_消息队列用户创建&权限配置
    21_代码实现&效果演示
第十四章 畅购商城14章-超时订单处理-死信队列
  超时未支付订单处理
    01_课程内容_cgsc_day14
    02_超时未支付订单处理-需求&实现思路分析
    03_延迟消息队列-消息TTL介绍&演示
    04_延迟消息队列-死信交换机介绍&演示
    05_超时未支付订单处理-功能实现流程介绍
    06_超时未支付订单处理-feign接口定义
    07_超时未支付订单处理-发送延迟消息并接收
    08_超时未支付订单处理-关闭订单业务实现
    09_超时未支付订单处理-测试
  订单批量发货
    10_批量发货实现
    11_了解对接第三方物流
  确认收货与自动收货
    12_手动确认收货实现
    13_自动收货-需求介绍&springtask回顾
    14_自动收货-消息发送实现
    15_自动收货-接收消息
    16_自动收货-业务层实现
第十五章 畅购商城15章-秒杀前端
  秒杀业务分析
    01_课程内容_cgsc_day15
    02_秒杀简介
  秒杀商品存入缓存
    03_秒杀服务搭建
    04_秒杀时间段计算
    05_秒杀商品添加到缓存实现
    06_秒杀商品添加缓存测试
  秒杀商品-首页
    07_秒杀首页渲染-实现思路
    08_秒杀渲染服务搭建
    09_秒杀首页加载时间段菜单
    10_秒杀时间段格式化
    11_秒杀时间段选中实现
    12_倒计时时间显示-实现思路&静态值显示
    13_倒计时时间显示-倒计时效果实现&格式化
    14_倒计时时间实现-正确倒计时时间显示
    15_秒杀商品列表-秒杀服务查询列表实现
    16_秒杀商品列表-秒杀渲染服务显示数据
    17_抢购按钮js方法实现
第十六章 畅购商城16章-秒杀后端
  秒杀异步下单
    01_课程内容_cgsc_day16
    02_秒杀异步下单-获取当前登录人&预加载秒杀商品库存到redis
    03_秒杀异步下单-业务层预扣减库存实现
    04_秒杀异步下单-生产者消息不丢失解决方案介绍
    05_秒杀异步下单-生产者消息不丢失实现
    06_秒杀异步下单-生产者消息不丢失测试
    07_秒杀异步下单-消费者服务创建
    08_秒杀异步下单-消费者消息不丢失介绍
    09_秒杀异步下单-消费者服务实现手动应答模式
    10_秒杀异步下单-消费者服务业务层实现
    11_秒杀异步下单-流量削峰
    12_秒杀异步下单-秒杀服务&秒杀渲染服务对接
    13_秒杀异步下单-测试
  防止恶意刷单解决
    14_防止用户恶意访问实现
  防止相同商品重复秒杀
    15_防止同一个用户相同商品重复购买实现
  秒杀下单接口隐藏
    16_秒杀下单接口隐藏实现
  秒杀下单接口限流
    17_秒杀下单接口限流实现