一、项目简介
团队成员
@https://gitee.com/gitJYS 负责项目前期的数据库设计、需求分析。
@https://gitee.com/wulipabu 负责NoSQL核心模块推荐算法的设计。
@https://gitee.com/ccuni 课设项目负责人,负责推动项目进展、测试与维护。
项目地址:Gitee :https://gitee.com/ccuni/nosql-shop-analysis-recommend-system
该项目是我们作为大三学生的一次课程设计作品,总体来说比较简单,没有部署上线,适合初学者入门。
项目所用技术栈:
-
语言:Java
-
版本:JDK8
-
前端:JQuery.js 、Bootstrap5 、Echarts
-
后端:SpringBoot、MyBatis-Plus
-
数据存储:MySQL、Redis、MongoDB、Neo4J、阿里云 OSS
-
数据来源:部分京东购物商城 + Java代码随机生成
-
工具:Navicat、IDEA
随着计算机网络广泛的普及,网上支付系统的逐步完善,越来越多的人慢慢的习惯了在网上购买自己想要的商品,渐渐的就习惯了点击鼠标来下订单,通过物流公司来送货上门的便捷购物方式。传统的购物方式逐渐的被这个网上便捷的购物方式所冲击。 网上超市具有强大的功能,可以在线展示商品,在线购买商品,在线网店的管理等等。现
在的网络是可以跨地域的,网上超市借助这一特点突破了传统超市空间的局限性,全国各地的顾客都可以在自己的家里面通过网上在同一个网上超市来购买自己想要的商品,从而增加了超市的客户数量。 网上超市是一个在线商场,它的核心是提供商品展示及订购的网络购物服务来宣传自己的商店的商品并将商品展示给客户,让客户通过互联网就能自由的选购自己想要的商品。
本文正是顺应时代的潮流,设计了一个基于WEB的网上超市管理系统,以满足网络购物的需要。 本系统运用面向对象化技术,需求分析与设计。利用Spring Boot框架整合MongoDB,Redis,Neo4j这三种No SQL数据库以及关系数据库MySQL,实现商品评论,商品推荐等功能,以及对数据进行可视化。
系统结构图
项目技术栈
系统访问示意图
二、项目效果
2.1 本地部署运行项目
2.2 Redis应用之系统的注册与登录 有效的邮箱验证
2.3 MySQL应用之商品的分页以及模糊查询
2.4 Neo4j应用之查看商品详情,推荐商品的跳转
2.5 MongoDB应用之分页显示商品评论以及删除评论
2.6 个人中心查看评论
2.7 综合运用之后台大屏数据展示
三、系统设计
3.1 商品推荐
商品推荐的逻辑如下:首先根据该商品,去获取购买过该商品的用户,再通过再获取这些用户所购买过的商品的数量,从而获取一系列推荐商品以及这些商品的购买量,并对结果进行排序,获取前三个推荐给用户。
3.2 评价商品
用户评论一件商品后,向MongoDB中插入评论信息,并在Neo4j中创建评论节点,以及建立用户与商品,商品与评论的关系。
3.3 删除评论
用户只能删除自己的评论,删除评论的时候,需要先删除Neo4j中的与该评论有关的关系,然后在删除该评论节点以及删除MongoDB中该评论的信息。(在本次课设中,我们忽略了Neo4j的删除,为了保证数据的一致性,关于评论的操作,我们只有在插入的时候才将节点插入到Neo4j)
3.4 查看评论
这里的评论指的是当前用户发表过的评论,用户查看评论,即从MongoDB或者neo4j中读取该用户id所对应的评论信息,因为MongoDB以及neo4j均有相关的数据。不过由于读取MongoDB的数据更为方便且详细,因此我们选择从MongoDB中获取数据。
3.5 数据可视化
通过Ajax,Controller层与数据库数据进行交互,并用Echarts在Dash Board展示
四、业务逻辑数据库命令行实现
4.1 商品推荐
4.2 评价商品
4.3 删除评论
4.4 查看评论
4.5 Dashboard后台大屏显示相关的MongoBD语句
1. 商品评价星级占比
2.不同商品的2022年评论数统计
3.2022评论量统计
4. 最受欢迎商品Top3
五、关键代码实现
由于代码量较大,通过Spring Boot整合数据库实现功能,在controller层,DAO层,service层的实现相似,这里以Dashboard为主,Dashboard主要展示的统计图形有:
1)评价不同星级的占比饼图;
2)用户注册地的全国分布图;
3)2022年评论量统计折线图;
4)不同商品类型的评论数统计条形图;
5)最近评论的滚动显示;
6)2022年最受欢迎的商品 Top3。
以下代码来自不同的文件(带有标注),都是与对应需求相关的具体实现。
Controller 控制层主要负责前端发送过来的AJAX请求,基于MVC架构,我们在Controller层需要根据前端的请求的地址,参数(可能没有)来调用Service业务层进行处理,返回一个RestResponse对象,该对象是我们自定义的Java对象,用于前后端交互,在返回给前端后,它会被解析为 [ code : { … } , msg: { … } , data: { …} ] 的 JSON 格式,分别表示返回的状态、消息和数据。
Service 业务逻辑层是最复杂的一层,因为要处理核心的业务逻辑,它需要根据Controller层的需求返回相应的数据,同时要调用DAO层的方法来进行数据库和Java对象数据之间的转换。
在DAO层,我们直接通过JAVA代码实现对 MySQL、MongoDB、Neo4J 和 Redis的CURD的操作,这里其实运用了市面上比较常用的Jar包,我们是通过Maven引入的Jar包,所以在DAO层只需要根据对应数据库Jar包提供的一些接口、接口实现类,通过调用里面的方法来实现CRUD,从而实现我们的需求。
前端View页面的渲染主要是采用ecahrts.js库官方提供的示例,如下图:
我们选择几张官方的示例,然后通过 JQuery 提交 AJAX请求到后端的controller层,返回 JSON格式的数据到前端,通过JS代码调用官方提供的方法完成页面的渲染,再根据数据动态渲染另一部分HTML页面,比如滚动显示最近商品,最火商品TOP3等,各个模块的关键代码如下:
5.1 评价不同星级的占比饼图
相关的前端代码:
页面内容会通过 echarts.js 渲染成一张图:
5.2 用户注册地的全国分布图
前端相关代码:
5.3 2022年评论量统计折线图
前端相关页面的代码
5.4 不同商品类型的评论数统计条形图
前端相关代码:
5.5 最近评论的滚动显示
前端相关的页面:
5.6 2022年最受欢迎的商品 TOP3
前端相关代码: