简介

本文给大家推荐博主自己开源的电商项目newbee-mall-pro。在newbee-mall项目的基础上搭建而来, 使用 mybatis-plus 作为 orm 层框架,并添加了一系列高级功能以及代码优化,特性如下:

  1. 商城首页 【为你推荐】 栏目添加协同过滤算法。按照 UserCF 基于用户的协同过滤、ItemCF 基于物品的协同过滤,实现了两种不同的推荐逻辑。
  2. RedisSearch:支持中文分词搜索,支持商品名称、简介、标签作为搜索项,以及新品、价格排序。

RediSearch 是一个源码可用的 Redis 模块,可以对 Redis 进行查询、二级索引和全文搜索。这些功能支持在文本查询之上进行多字段查询、聚合、精确短语匹配、数字过滤、地理过滤和矢量相似性语义搜索。

  1. 秒杀专区:支持功能完备,生产可用的高级秒杀功能。
  2. 优惠卷专区:支持优惠卷后台配置、用户注册赠卷、下单页面优惠卷使用等功能。
  3. 商城首页支持使用滑块验证码登录。
  4. 支付时集成了支付宝沙箱支付,可以在开发环境体验支付宝支付效果。
  5. 集成 Pace 页面,添加网页进度条,页面跳转美化。
  6. 添加 Spring 事件监听机制,异步解耦下单流程。
  7. 集成spring-session-redis,支持分布式部署。
  8. 集成mybatis-xmlreload,支持xml文件热加载。

newbee-mall-pro 项目地址:

  • 源码地址:https://github.com/wayn111/newbee-mall-pro
  • 在线地址:http://121.4.124.33/newbeemall

一、开发部署

# 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发布

更新内容:

  1. 商城首页为你推荐栏目添加协同过滤算法。按照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发布

更新内容:

  1. 集成mybatis-xmlreload,支持xml文件热加载
  2. 代码优化,通过阿里巴巴代码规范检测
  3. 升级部分依赖至最新

2023年1月2日更新日志

newbee-mall-pro V2.4.0发布

更新内容:

  1. Springboot版本升级至3.0.2
  2. Mybatis plus升级至3.5.3.1支持Springboot3.0

2022年11月17日更新日志

newbee-mall-pro V2.3.0发布

更新内容:

  1. Springboot版本升级至2.7.5,jdk升级至17
  2. 使用switch表达式语法扩展,优化switch语句
  3. 使用instanceof类型匹配语法简化,直接给对象赋值
  4. 使用文本块优化现有lua脚本显示
  5. 添加@Serial注解表示序列化字段和方法
  6. 代码优化,删除无用导入
  7. 升级项目依赖

bug修复:

  1. 修复优惠券使用bug

2022年9月04日更新日志

newbee-mall-pro V2.2.0发布

更新内容:

  1. 后台添加商品标签集成select2,支持商品标签不存在即创建
  2. 添加Spring事件监听机制,解耦下单流程
  3. 集成Pace,美化商城页面
  4. 集成RedisSearch中文分词搜索
  5. 集成tianai-captcha滑块验证码
  6. 优化商城搜索页面逻辑
  7. 升级项目依赖
  8. 添加docker-compose部署

bug修复:

  1. 修复商城搜索bug
  2. 修复优惠券使用bug
  3. 修复定时任务bug

2022年5月08日更新日志

商城RediSearch支持商品上下架搜索

2022年4月23日更新日志

商城登录页面添加滑块验证码登录,优化登录体验

  1. 集成tianai-captcha滑块验证码,支持后端验证码校验

2022年4月12日更新日志

使用Spring事件监听机制,解耦下单流程,集成Pace美化商城进度条

  1. 添加Spring事件监听机制,解耦下单流程,将下单流程拆解为订单校验、生成订单号、发送事件异步保存订单流程
  2. 集成Pace页面,添加网页进度条,美化商城页面

2022年3月27日更新日志

商城添加RedisSearch搜索,支持中文分词搜索,推荐、新品、价格排序搜索

  1. 添加RedisSearch测试用例
  2. 后台添加RedisSearch同步按钮
  3. 商城支持RedisSearch中文分词搜索

2022年3月21日更新日志

升级版本号至2.1.3,是一个功能完善版本

  1. 支持分布式部署
  2. 升级spring版本至2.6.4
  3. 升级mybatis-plus至3.5.1
  4. 添加Dockerfile文件支持容器部署

2021年5月30日更新日志

升级版本号至2.1.2,是一个代码优化版本

  1. 秒杀专区购物车数量显示错误bug修复

  2. 支付宝沙箱支付bug修复,显示沙箱账号

  3. 将默认编辑器替换为froala editor

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

  5. 升级pom文件部分依赖

2021年1月14日秒杀接口升级

本次升级主要在原有秒杀功能的基础上进行了完善,秒杀优化如下:

  1. 秒杀页面静态化
  2. 添加了秒杀接口限流,基于springAOP实现
  3. 添加了秒杀接口防止重复提交,基于spring拦截器实现
  4. 使用令牌桶算法过滤用户请求
  5. 使用redis-set数据结构判断用户是否买过秒杀商品
  6. 使用redis配合lua脚本进行原子自减,判断商品缓存库存是否大于0
  7. 获取商品缓存,判断秒杀商品是否再有效期内
  8. 执行存储过程(减库存 + 记录购买行为)
  9. 使用redis-set数据结构记录购买过的用户
  10. 返回用户秒杀成功VO
  11. 下单后启用秒杀订单5分钟未支付超期任务
  12. 订单5分钟内未支付则自动取消订单并回退库存

三、秒杀专区

秒杀专区为用户展示了后台设置的秒杀商品,在秒杀有效期内可以进行商品秒杀操作. 秒杀接口使用了接口限流、Redis以及储存过程提高秒杀操作的tps




四、优惠劵领取

优惠劵页面为用户展示了后台设置的可用优惠劵,在下单时可以使用优惠卷减少下单金额

五、在线截图

商城首页 index商品搜索 search
购物车 cart订单结算 settle
订单列表 orders支付页面 settle
分类管理 分类管理会员管理 会员管理
优惠劵管理 优惠劵管理商品管理 商品管理
秒杀管理 秒杀管理订单管理 订单管理

总结

欢迎大家参与使用newbee-mall-pro项目,使用中遇到问题欢迎大家提出。我都会一一查看并回复。再附newbee-mall-pro项目地址:

  • 源码地址:https://github.com/wayn111/newbee-mall-pro
  • 在线地址:http://121.4.124.33/newbeemall

最后再说一句,感兴趣的朋友可以点赞加关注,你的支持将是我更新动力😘。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐