mall_study/README.md

227 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

![](https://img-blog.csdnimg.cn/5c520381e11b4f39a59cbb8781f7a150.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
>jieyue捷阅网是基于springboot开发的轻量级单体架构购物商城网站并分为用户、商户、后台三大模块。用户模块能够进行商品搜索浏览、在线下单、微信支付等功能商户模块则可以对收益情况以及订单成交情况进行查看、并且可对商品进行上下架和增加删除等操作后台模块可进行群发消息通知、RBAC权限管理、商户的停用启用以及商城的广告海报设置等功能。
---
# 前言
截至目前2022.3.3此项目在gitee中累计得到了`45`颗star在这里**感谢各位读者对笔者的支持和厚爱**。恰逢最近毕业生的毕业“时节”,对于毕业设计的需求也随之增加,许多有能力的在校生也会借此机会赚赚“外快”,凭借自己的专业技能来获取应有的报酬,但也就会有人耍些小聪明,作为一个搬运工,搬取他人成果。
**近期有一位读者购买了一份毕业设计后发现自己“重金”购买的项目却是笔者在去年开源到gitee上的项目并且对方卷完钱后就拉黑走人。**
特此曝光此人,希望读者朋友们不要再上当受骗了~
![](https://img-blog.csdnimg.cn/f5887f7bb3034964a9665987d9e01292.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
---
# 快速体验
**用户模块:**[http://119.91.222.184/user/login](http://119.91.222.184)(账号-密码guest@qq.com-123456
**商户模块:**[http://119.91.222.184/merchant/login](http://119.91.222.184/merchant/login)(账号-密码guest@qq.com-123456
**后台模块:**[http://119.91.222.184/admin/login](http://119.91.222.184/admin/login)(账号-密码guest@qq.com-123456
<br/>
**网站制作者为大二在读学生,若网站在设计中存在不足之处,还请各位大牛指正!!!**
- 网站单体架构地址:[https://gitee.com/bosen-once/jieyue](https://gitee.com/bosen-once/jieyue)
- 微服务架构地址:[https://gitee.com/bosen-once/jieyue-spring-cloud](https://gitee.com/bosen-once/jieyue-spring-cloud)
---
# 技术选型
| 技术 | 版本 | 端口 | 说明 |
| ---- | ---- | ---- | ---- |
| Tomcat | 8.5.0 | 80 | Web服务器 |
| MySQL| 5.7.16 | 3306 | 关系型数据库 |
| Redis | 2.8.21 | 6379 | 缓存框架框架、主要用于主页页面缓存 |
| RabbitMQ | 3.7.8 | 5672、15672 | 消息中间件、用于群发消息的队列处理 |
| Elasticsearch | 7.7.0 | 9200、9300 | 搜索引擎、用于搜索商品的关键字查找 |
| SpringBoot | 2.3.5 | - | MVC核心框架 |
| Mybatis | 3.5.0 | - | ORM框架 |
| Maven | 3.3.9 | - | 用于构建springboot项目 |
| wxpay-sdk | - | - | 微信支付工具包 |
---
# 架构图
![](https://img-blog.csdnimg.cn/a8b5180113ac4f6eb42bbce6064cb004.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70#pic_center)
---
# 各模块的功能
### 用户模块
| 页面 | 主要功能 |
| ---- | ---- |
| 登录页面 | 登录、注册账号、发送邮箱验证码 。|
| 商城主页 | 登录、退出登录、随机推送商品、随机推送商家、推送热卖商品、推送新出的商品、展示商城广告海报;并且以上**商品信息在请求过一次MySQL后将会保存在Redis缓存中十分钟**刷新页面时会从Redis中获取不会再次访问MySQL以达到减轻MySQL压力的目的。 |
| 我的账户 | 显示登录用户的头像、昵称等信息;用户可通过该页面对自己的头像、昵称、密码进行修改。 |
| 系统消息 | 显示网站后台管理员发送的群消息、用户可对消息进行删除操作。|
| 购买记录 | 显示用户购买商品后的详细订单记录;若存在未支付的订单,点击后可跳转至支付页面。 |
| 购物车 | 显示用户的购物车信息、用户可以移出商品、添加商品、批量购买商品。 |
| 商品详情 | 显示商品的名称、价格、介绍、库存、上下架情况、图片;显示商品的用户评价,若存在评价是该登录用户本人所发表的,用户还可对其进行删除评论的操作;若商品已经下架或用户购买数量超过库存数量,将无法进行购买操作。|
| 店铺页面 | 显示商户下的商品、随即推送该商户下的商品;若商户被停用,商户页面将会有停用的字样,并且属于该商户的商品都将会被下架。 |
| 搜索结果 | 当用户通过关键词搜索时将会通过Elasticsearch搜索引擎进行模糊搜索将符合条件的商品作为搜索结果返回给商户商户通过点击即可跳转至相应的商品详情页面。 |
| 下单页面 | 当用户在该页面下填好必填和选填的订单信息后,选择微信支付或支付宝支付(暂时只支持微信支付)后,即可生成订单,并且跳转至支付页面。 |
| 支付页面 | 支付页面会显示支付二维码供用户扫码支付页面每500ms异步检查订单是否已经完成支付当用户支付成功后将会提示用户支付成功并跳转至用户的购买记录页面。 |
### 商户模块
| 页面 | 主要功能 |
| ---- | ---- |
| 登录页面 | 登录、注册账号、发送邮箱验证码 。|
| 商户主页 | 退出登录、显示商户盈利、商品评论总数、会员总数、订单成交量(不包含未支付订单)、曲线图动态展示(暂未实现)。 |
| 店铺相关 | 设置商户头像、店铺广告海报(供商城主页随机向用户推送)。 |
| 商品相关 | 商品的添加、删除、修改、上下架。 |
| 优惠相关 | 优惠卷功能(暂未实现) |
| 会员相关 | 查看会员相关信息。 |
| 订单相关 | 查看有关店铺的订单信息,可以筛选已支付或未支付的订单,并且支持通过订单号为关键字搜索订单。 |
### 后台模块
| 页面 | 主要功能 |
| ---- | ---- |
| 登录页面 | 登录、注册账号、发送邮箱验证码 。|
| 后台主页 | 退出登录、显示网站盈利、商品的总数、会员总数、订单成交量(不包含未支付订单)、曲线图动态展示(暂未实现)。 |
| 广告设置 | 设置商城主页需要向用户推送的广告海报。 |
| 订单列表 | 显示网站的所有订单,可以筛选已支付或未支付的订单,并且支持通过订单号为关键字搜索订单。 |
| 商户相关 | 显示商户的基本信息、头像、名称、邮箱、状态等;并且可以对其状态和费率进行修改,或删除该商户(停用商户时,商户的所有商品都将会被下架,并且其账号无法在商户模块登录;启用商户时,系统将会发送通知邮件告知该商户,账号已启用;删除商户时,属于商户的所有商品也将会被删除!)。 |
| 会员相关 | 查看会员相关信息。 |
| 权限管理 | 后台权限管理使用RBAC思想即权限管理分为用户、角色、权限三大块每一个管理员都是一个用户并且都需要赋予一个角色这个角色拥有什么权限由最高权限的管理员进行设置其中**最高权限的管理员默认为id为1 的root该管理员不受RBAC权限的控制**,且其他管理员也无权对其进行任何的操作)。 |
| 群发消息 | 群发消息给网站用户时考虑到项目正式运行后用户量会激增若群发消息采用同步发送机制后台管理员会在发送群消息时非常头疼因此本网站采用RabbitMQ作为消息队列对群发消息进行异步处理提高后台管理效率。 |
<br/>
# 相关截图
---
### 用户模块
![](https://img-blog.csdnimg.cn/6c7f1b9a258240a8b05aa4b40ca74bae.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/5f9ef3b9f62b43538e85acb66a618d08.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/c75626e3022e46488de8e535c95c12e2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/b512ac173ddd495d8173995a6c40ee32.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQm9zZW7nmoTmioDmnK_liIbkuqvmoIg=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/a22f2fb9721d457980a2d0bbbaec1e1c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQm9zZW7nmoTmioDmnK_liIbkuqvmoIg=,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/c55768361ac44befa81bef0df1ebeabd.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/d17e1a1ccdca4cc789344a4f935fada1.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/221242677c5b4617b5803b363a8c0d20.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAQm9zZW7nmoTmioDmnK_liIbkuqvmoIg=,size_20,color_FFFFFF,t_70,g_se,x_16)
---
### 商户模块
![](https://img-blog.csdnimg.cn/e5135da2d0e14220ad4e246bb943e864.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/c03ef945cc0646558d36a577e9e8500c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/57e7fff63939477ea3e994f1009422f8.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/4583c3fbc03a4fdb99882d58ebef0610.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
---
### 后台模块
![](https://img-blog.csdnimg.cn/b2988d237f2a448e93c37c0fa8bbd757.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/8b13321784554869ae08b82a7e6c79c2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/7e1bcaec6ede4d8c82f612088c175d09.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/1d1b943375074dfc853ee0c6c15f060e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzYwMDg4MA==,size_16,color_FFFFFF,t_70)
<br/>
# 如何部署?
---
### 1.下载源码
将源码下载下来使用Idea选择open的方式打开项目第一次打开需要下载项目对应的第三方依赖需要等待2~3分钟
![](https://img-blog.csdnimg.cn/e5e5f9f23bb24fc286caa56564df7857.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
### 2.配置文件
修改项目配置文件application.yml主要将服务器ip地址、MySQL、Redis连接信息按照自己的需求进行修改即可。
![](https://img-blog.csdnimg.cn/1281208680ff4461a48202f71629a285.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/0c0547bf787c4877b62557cd2d17e729.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
### 3.打包项目
填写好项目配置信息后,就可以开始打包项目了:按照下图所示的步骤依次执行,最后打包好的 **`jieyue.jar`** 将会存放在 **`target`** 目录中。
![](https://img-blog.csdnimg.cn/11e170bd1863418d99b38caebcb12c10.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
### 4.安装Docker
docker的安装流程可参考下面这篇文章笔者在这里就不再赘述了**[https://www.runoob.com/docker/centos-docker-install.html](https://www.runoob.com/docker/centos-docker-install.html)**
<br/>
### 5.安装MySQL
5.1执行如下命令拉取MySQL的Docker镜像
```bash
docker pull hub.c.163.com/library/mysql:latest
```
5.2镜像拉取后执行如下命令运行MySQL注意MYSQL_ROOT_PASSWORD中的密码需要与项目配置文件中的MySQL密码保持一致
```bash
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d hub.c.163.com/library/mysql:latest
```
5.3MySQL运行成功后需要对MySQL的数据进行初始化这里笔者推荐使用可视化工具Navicat填入对应的信息即可成功连接
![](https://img-blog.csdnimg.cn/3bc392ebdbf249dd93a765bcf8d41733.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
5.4新建一个名为jieyue的数据库创建成功后双击该数据库创立连接接着右击选择**运行SQL文件**,运行项目根目录下的 **`jieyue.sql`** 文件即可。
![](https://img-blog.csdnimg.cn/be8eccc8a0084db8a087d8287034cfc3.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_19,color_FFFFFF,t_70,g_se,x_16)
### 6.安装Redis
6.1执行如下命令拉取Redis的Docker镜像
```bash
docker pull hub.c.163.com/library/redis:latest
```
6.2执行如下命令运行Redis
```bash
docker run -d -p 6379:6379 --name redis hub.c.163.com/library/redis:latest
```
<br/>
### 7.安装OpenJDK
7.1执行如下命令拉取OpenJDK的Docker镜像
```bash
docker pull hub.c.163.com/cloudndp/library/openjdk:8-jessie
```
7.2:在 **`jieyue.jar`** 包同一目录下创建 **`Dockerfile`** 文件,具体内容如下
```bash
FROM hub.c.163.com/cloudndp/library/openjdk:8-jessie
COPY jieyue.jar /jieyue.jar
CMD java -jar /jieyue.jar
EXPOSE 80
```
7.3:在 **`jieyue.jar`** 包同一目录下执行如下命令,创建镜像
```bash
docker build -t jieyue-image .
```
7.4:最后运行容器即可
```bash
docker run -d -p 80:80 -e LANG=C.UTF-8 -e TZ="Asia/Shanghai" --name jieyue jieyue-image
```
7.5:使用如下命令可查看项目运行日志(若有如下字眼出现,则表明容器运行成功)
```bash
docker logs jieyue
```
![](https://img-blog.csdnimg.cn/1be4eb72a24a449d893a9d973310b073.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_20,color_FFFFFF,t_70,g_se,x_16)
7.6成功运行后访问配置文件中填写的服务器ip地址即可笔者这里填写的是199.91.222.184,访问[http://119.91.222.184/](http://119.91.222.184/),就可以看到网站的主页)至此,捷阅网已成功部署~~
<br/>
# 有关网站制作者
---
**个 人 主 页: [云丶言](https://bosen-once.gitee.io/)**
![](https://img-blog.csdnimg.cn/c3f49c6533dc401b9d00bb3655f7e5fb.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)
---
**CSDN博客[云丶言](https://blog.csdn.net/weixin_47600880)**
![](https://img-blog.csdnimg.cn/45557a1b39054cc6ae793079c8e4f178.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)
---
**微信公众号:云丶言**
![](https://img-blog.csdnimg.cn/37712c950812411fb261377b4cf1345d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqR5Li26KiA,size_15,color_FFFFFF,t_70,g_se,x_16#pic_center)
---