推荐一款优秀电商开源项目
一、简介
本文给大家推荐博主自己开源的电商项目newbee-mall-pro。在newbee-mall项目的基础上搭建而来, 使用 mybatis-plus 作为 orm 层框架,并添加了一系列高级功能以及代码优化并且已经升级至 Spring Boot3.0
,项目功能特性如下:
- 商城首页 【为你推荐】 栏目添加协同过滤算法。按照 UserCF 基于用户的协同过滤、ItemCF 基于物品的协同过滤,实现了两种不同的推荐逻辑。
- RedisSearch:支持中文分词搜索,支持商品名称、简介、标签作为搜索项,以及新品、价格排序。
RediSearch 是一个源码可用的 Redis 模块,可以对 Redis 进行查询、二级索引和全文搜索。这些功能支持在文本查询之上进行多字段查询、聚合、精确短语匹配、数字过滤、地理过滤和矢量相似性语义搜索。
- 秒杀专区:支持功能完备,生产可用的高级秒杀功能。
- 优惠卷专区:支持优惠卷后台配置、用户注册赠卷、下单页面优惠卷使用等功能。
- 商城首页支持使用滑块验证码登录。
- 支付时集成了支付宝沙箱支付,可以在开发环境体验支付宝支付效果。
- 集成 Pace 页面,添加网页进度条,页面跳转美化。
- 添加 Spring 事件监听机制,异步解耦下单流程。
- 集成spring-session-redis,支持分布式部署。
- 集成mybatis-xmlreload,支持xml文件热加载。
newbee-mall-pro 项目地址:
二、特性简介
2.1 推荐算法
商城首页 【为你推荐】 栏目添加协同过滤算法。按照UserCF基于用户的协同过滤、ItemCF基于物品的协同过滤。 实现了两种不同的推荐逻辑。
-
UserCF:基于用户的协同过滤。当一个用户A需要个性化推荐的时候,我们可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的,而用户A没有听说过的物品推荐给A。
假设用户 A 喜欢物品 A、物品 C,用户 B 喜欢物品 B,用户 C 喜欢物品 A 、物品 C 和物品 D;从这些用户的历史喜好信息中,我们可以发现用户 A 和用户 C 的口味和偏好是比较类似的,同时用户 C 还喜欢物品 D,那么我们可以推断用户 A 可能也喜欢物品 D,因此可以将物品 D 推荐给用户 A。 具体代码在ltd.newbee.mall.recommend.core.UserCF
中。 -
itemCF:基于物品的协同过滤。预先根据所以用户的历史偏好数据计算物品之间的相似度,然后把与用户喜欢的物品相类似的物品推荐给用户。
假如用户A喜欢物品A和物品C,用户B喜欢物品A、物品B和物品C,用户C喜欢物品A,从这些用户的历史喜好中可以认为物品A与物品C比较类似,喜欢物品A的都喜欢物品C,基于这个判断用户C可能也喜欢物品C,所以推荐系统将物品C推荐给用户C。 具体代码在ltd.newbee.mall.recommend.core.ItemCF
中。
2.2 中文分词
商城添加RedisSearch搜索,支持中文分词搜索,推荐、新品、价格排序搜索
- 添加RedisSearch测试用例
- 后台添加RedisSearch同步按钮
- 商城支持RedisSearch中文分词搜索
2.3 依赖集成、升级
- 集成
tianai-captcha
滑块验证码,支持后端验证码校验
- 添加 Spring 事件监听机制,解耦下单流程,将下单流程拆解为订单校验、生成订单号、发送事件异步保存订单流程
- 集成spring-session-redis,支持分布式部署
2.3 秒杀专区
秒杀功能如下:
- 秒杀页面静态化
- 添加了秒杀接口限流,基于springAOP实现
- 添加了秒杀接口防止重复提交,基于spring拦截器实现
- 使用令牌桶算法过滤用户请求
- 使用redis-set数据结构判断用户是否买过秒杀商品
- 使用redis配合lua脚本进行原子自减,判断商品缓存库存是否大于0
- 获取商品缓存,判断秒杀商品是否再有效期内
- 执行存储过程(减库存 + 记录购买行为)
- 使用redis-set数据结构记录购买过的用户
- 返回用户秒杀成功VO
- 下单后启用秒杀订单5分钟未支付超期任务
- 订单5分钟内未支付则自动取消订单并回退库存
秒杀专区为用户展示了后台设置的秒杀商品,在秒杀有效期内可以进行商品秒杀操作。
三、在线截图
商城首页 | 商品搜索 |
---|---|
购物车 | 订单结算 |
订单列表 | 支付页面 |
分类管理 | 会员管理 |
优惠劵管理 | 商品管理 |
秒杀管理 | 订单管理 |
总结
欢迎大家参与使用newbee-mall-pro项目,使用中遇到问题欢迎大家提出。我都会一一查看并回复。再附newbee-mall-pro项目地址:
最后再说一句,感兴趣的朋友可以点赞加关注,你的支持将是我更新动力😘。