项目简介
本文给大家推荐博主自己开源的电商项目 newbee-mall-pro。它在 newbee-mall 项目的基础上搭建而来,使用 MyBatis-Plus 作为 ORM 层框架,并添加了一系列高级功能以及代码优化,核心特性如下:
- 商城首页「为你推荐」栏目加入协同过滤算法:基于 UserCF(基于用户的协同过滤)和 ItemCF(基于物品的协同过滤),实现了两种不同的推荐逻辑。
- RedisSearch 全文搜索:支持中文分词搜索,支持以商品名称、简介、标签作为搜索项,同时支持新品、价格排序。
RediSearch 是一个源码可用的 Redis 模块,可以对 Redis 进行查询、二级索引和全文搜索。这些功能支持在文本查询之上进行多字段查询、聚合、精确短语匹配、数字过滤、地理过滤和矢量相似性语义搜索。
- 秒杀专区:支持功能完备、生产可用的高级秒杀功能。
- 优惠券专区:支持优惠券后台配置、用户注册赠券、下单页面优惠券使用等功能。
- 商城首页登录:支持滑块验证码登录。
- 支付集成:集成支付宝沙箱支付,可以在开发环境体验支付宝支付效果。
- 页面优化:集成 Pace 页面,添加网页进度条,优化页面跳转体验。
- 下单流程解耦:添加 Spring 事件监听机制,异步解耦下单流程。
- 分布式支持:集成 spring-session-redis,支持分布式部署。
- 开发效率:集成 mybatis-xmlreload,支持 xml 文件热加载。
newbee-mall-pro 项目地址:
一、开发部署
# 1. 克隆项目
git clone git@github.com:wayn111/newbee-mall-pro.git
# 2. 导入项目依赖
将newbee-mall-pro目录用idea打开,导入maven依赖
# 3. 安装Mysql8.0+、Redis3.0+(RediSearch2.0+)、Jdk8+、Maven3.5+
docker安装RediSearch
docker run -d --name redis-stack-server -p 6379:6379 redis/redis-stack-server:lates
# 4. 导入sql文件
在项目根目录下sql文件夹下,找到`newbee_mall_db_包含秒杀and优惠卷.sql`文件,新建mysql数据库newbee_mall_db,导入其中
# 5. 解压项目图片
将项目根目录下upload.zip文件加压缩到D盘upload文件夹中,eg:D:\\upload
# 6. 修改Mysql、Redis连接配置
修改`application-dev.yml`文件中数据连接配置相关信息
# 7. 启动项目
找到NewBeeMallApplication文件,右键`run AdminApplication`,启动项目
# 8. 访问
打开浏览器输入:http://localhost:84/newbeemall
二、更新日志
2023年4月08日更新日志
newbee-mall-pro V2.4.2 发布。
更新内容:
商城首页「为你推荐」栏目添加协同过滤算法,按照 UserCF 基于用户的协同过滤、ItemCF 基于物品的协同过滤,实现了两种不同的推荐逻辑。
- UserCF:基于用户的协同过滤。当一个用户 A 需要个性化推荐的时候,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户 A 没有听说过的物品推荐给 A。具体代码在
ltd.newbee.mall.recommend.core.UserCF 中。
- ItemCF:基于物品的协同过滤。预先根据所有用户的历史偏好数据计算物品之间的相似度,然后把与用户喜欢的物品相类似的物品推荐给用户。具体代码在
ltd.newbee.mall.recommend.core.ItemCF 中。
2023年3月27日更新日志
newbee-mall-pro V2.4.1 发布。
更新内容:
- 集成 mybatis-xmlreload,支持 xml 文件热加载
- 代码优化,通过阿里巴巴代码规范检测
- 升级部分依赖至最新
2023年1月2日更新日志
newbee-mall-pro V2.4.0 发布。
更新内容:
- Spring Boot 版本升级至 3.0.2
- MyBatis-Plus 升级至 3.5.3.1,支持 Spring Boot 3.0
2022年11月17日更新日志
newbee-mall-pro V2.3.0 发布。
更新内容:
- Spring Boot 版本升级至 2.7.5,JDK 升级至 17
- 使用 switch 表达式语法扩展,优化 switch 语句
- 使用 instanceof 类型匹配语法简化,直接给对象赋值
- 使用文本块优化现有 Lua 脚本显示
- 添加 @Serial 注解表示序列化字段和方法
- 代码优化,删除无用导入
- 升级项目依赖
Bug 修复:
- 修复优惠券使用 bug
2022年9月04日更新日志
newbee-mall-pro V2.2.0 发布。
更新内容:
- 后台添加商品标签集成
select2,支持商品标签 不存在即创建
- 添加 Spring 事件监听机制,解耦下单流程
- 集成 Pace,美化商城页面
- 集成 RedisSearch 中文分词搜索
- 集成
tianai-captcha 滑块验证码
- 优化商城搜索页面逻辑
- 升级项目依赖
- 添加 docker-compose 部署
Bug 修复:
- 修复商城搜索 bug
- 修复优惠券使用 bug
- 修复定时任务 bug
2022年5月08日更新日志
商城 RediSearch 支持商品上下架搜索。
2022年4月23日更新日志
商城登录页面添加滑块验证码登录,优化登录体验。
- 集成
tianai-captcha 滑块验证码,支持后端验证码校验

2022年4月12日更新日志
使用 Spring 事件监听机制,解耦下单流程,集成 Pace 美化商城进度条。
- 添加 Spring 事件监听机制,解耦下单流程,将下单流程拆解为订单校验、生成订单号、发送事件异步保存订单流程
- 集成 Pace 页面,添加网页进度条,美化商城页面
2022年3月27日更新日志
商城添加 RedisSearch 搜索,支持中文分词搜索,推荐、新品、价格排序搜索。
- 添加 RedisSearch 测试用例
- 后台添加 RedisSearch 同步按钮
- 商城支持 RedisSearch 中文分词搜索
2022年3月21日更新日志
升级版本号至 2.1.3,是一个功能完善版本。
- 支持分布式部署
- 升级 Spring 版本至 2.6.4
- 升级 MyBatis-Plus 至 3.5.1
- 添加 Dockerfile 文件支持容器部署
2021年5月30日更新日志
升级版本号至 2.1.2,是一个代码优化版本。
- 秒杀专区购物车数量显示错误 bug 修复
- 支付宝沙箱支付 bug 修复,显示沙箱账号
- 将默认编辑器替换为 Froala Editor

- 添加站点演示模式,通过拦截器对不允许操作的后台路径进行错误提示处理

- 升级 pom 文件部分依赖
2021年1月14日秒杀接口升级
本次升级主要在原有秒杀功能的基础上进行了完善,秒杀优化如下:
- 秒杀页面静态化
- 添加了秒杀接口限流,基于 Spring AOP 实现
- 添加了秒杀接口防止重复提交,基于 Spring 拦截器实现
- 使用令牌桶算法过滤用户请求
- 使用 Redis Set 数据结构判断用户是否买过秒杀商品
- 使用 Redis 配合 Lua 脚本进行原子自减,判断商品缓存库存是否大于 0
- 获取商品缓存,判断秒杀商品是否在有效期内
- 执行存储过程(减库存 + 记录购买行为)
- 使用 Redis Set 数据结构记录购买过的用户
- 返回用户秒杀成功 VO
- 下单后启用秒杀订单 5 分钟未支付超期任务
- 订单 5 分钟内未支付则自动取消订单并回退库存
三、秒杀专区
秒杀专区为用户展示了后台设置的秒杀商品,在秒杀有效期内可以进行商品秒杀操作。秒杀接口使用了接口限流、Redis 以及存储过程来提高秒杀操作的 TPS。




四、优惠券领取
优惠券页面为用户展示了后台设置的可用优惠券,在下单时可以使用优惠券减少下单金额。


五、在线截图
| 商城首页 1 |
商品搜索 |
 |
 |
| 购物车 |
订单结算 |
 |
 |
| 订单列表 |
支付页面 |
 |
 |
| 分类管理 |
会员管理 |
 |
 |
| 优惠券管理 |
商品管理 |
 |
 |
| 秒杀管理 |
订单管理 |
 |
 |
总结
欢迎大家参与使用 newbee-mall-pro 项目,使用中遇到问题欢迎提出,我都会一一查看并回复。再附 newbee-mall-pro 项目地址:
如果你正在寻找一个功能完整的 Spring Boot 电商实战项目,这个项目无论是用来学习 Redis 高级特性、秒杀架构设计,还是作为二次开发的基础,都值得一试。
|