一、简介
本文给咱们引荐博主自己开源的电商项目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 项目地址:
- 源码地址:github.com/wayn111/new…
- 在线地址:http://121.4.124.33/newbeemall
二、特性简介
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项目地址:
- 源码地址:github.com/wayn111/new…
- 在线地址:http://121.4.124.33/newbeemall
最后再说一句,感爱好的朋友能够点赞加关注,你的支撑将是我更新动力。
本文正在参加「金石方案」