一、电子档网址
https://www.wolai.com/atguigu/m4z5zhigfZdUSvfTUJvYZM
二、项目介绍
(一)技术栈
微服务入门项目练习! 本次课程技术全面【springboot、mybatis-plus、微服务全家桶、缓存、异步消息、搜索等技术栈】,功能齐全【销售前端和后台管理功能】
(二)项目简介
B2C模式电商项目,包含完整的销售前台和电商管理后台!
- 前台部分主要通过浏览器访问,用户可以登录,浏览商品,以及添加购物车和订单生成等功能,完成购物车!
- 后台部分主要管理员登录,对前台用户,类别,商品以及订单等数据维护!
(三)内置功能详解
-
商城前台
-
用户模块: 登录、注册、 账号检查
-
轮播模块: 轮播图展示
-
商品模块: 热门商品、类别商品、全部商品、单类别商品、商品详情、商品图片详情、商品搜索功能
-
类别模块: 类别展示
-
地址模块: 地址添加、地址删除、地址展示
-
收藏模块: 收藏添加、收藏展示、收藏删除
-
购物模块: 购物车添加、购物车修改、购物车展示、购物车删除
-
订单模块: 订单生成、订单展示
-
性能模块: 缓存实现、搜索实现、搜索同步、搜索添加、搜索删除
-
-
商城后台
-
用户模块: 用户展示、用户添加、用户编辑、用户删除
-
类别模块: 类别展示、类别添加、类别修改、类别删除
-
商品模块: 商品添加、商品展示、商品搜索、商品修改、商品删除
-
订单模块: 订单展示
-
-
总体统计
服务 :12 个
模块 :13个
功能点: 42个
数据表: 8 个
(四)数据库E-R图
(五)项目代码结构
b2c-cloud-store
├──store-admin //后台管理服务
├──store-common-feign //通用工具模块
├──store-front-carousel //轮播图服务
├──store-front-cart //购物车服务
├──store-front-category //类别服务
├──store-front-collect //收藏服务
├──store-front-order //订单服务
├──store-front-product //商品服务
├──store-front-user //前台用户服务
├──store-gateway //网关服务
├──store-search //搜索服务
├──store-static-oss //静态资源服务
├──pom.xml //maven依赖配置文件位置
├──target //maven构建后产生文件
注意启动顺序:store-search 不能早于gateway和product服务
(六)项目服务架构图
三、微服务环境搭建
- 云服务购买和使用
- finalshell安装和使用:finalshell是远程服务连接工具
- docker使用:docker可以理解成是手机中的应用市场,有了应用市场,就不用自己一个一个百度搜索软件并下载了,直接在应用市场中可以一键下载!
docker帮助我们安装微服务开发需要的中间件,使用简单的命令控制docker安装即可,不需要自己手动安装! - mysql安装
- rabbitmq安装:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
- redis安装:Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了MySQL这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便
- elasticsearch安装
四、项目快速部署
(一) 数据库脚本导入
# 将数据库脚本复制到某盘符下,方便导入!
# 执行数据库脚本导入命令!注意乱码问题!
# 步骤1:使用cmd命令窗口登录mysql,防止导入乱码问题
mysql -u账号 -p密码 --default-character-set=utf8 回车
# 步骤2:导入数据文件 注意,要写你自己的文件地址
source d:\store.sql 回车
# 步骤3: 查看数据库
show databases;
(二)注册中心搭建:nacos
本项目搭建单机注册中心,非集群搭建!
我选择了 基于docker搭建:
- 拉取镜像
docker pull nacos/nacos-server
- 启动容器
docker run --name nacos-quick -e MODE=standalone -p 8848:8848 -d nacos/nacos-server:latest
-
访问即可
http://ip地址:8848/nacos
输入账号: nacos 密码 nacos
(三)准备后端项目环境
商城后台访问地址:
http://localhost:3000/admin
账号:admin123 密码:admin123
(四)准备前端项目环境
- 安装Node
需要安装node,启动前端代码!
安装node,安装成功以后:可以使用 cmd node -v 测试!(看有没有版本号,有就是安装成功了) - 下载依赖包
打开cmd黑窗口: win+r 或者 🔍 cmd
#安装vue-cli 全局安装
npm install vue-cli -g
#安装webpack 全局安装
npm install webpack -g
#因为没有配置国内镜像,安装会慢一点,耐心等待!
#如果安装失败, ctrl+c 重新安装即可
- 编译和运行
# 注意 注意 注意 必须到前端根路径下执行!
# 在线安装前端项目运行所需依赖包
# 编译命令只需要输入一次即可!
npm install
# 运行命令每次都需要打开前端程序都需要!别忘了!
# 运行前端项目命令, 执行这个命令必须在admin-ui文件夹内执行.
npm run serve
- 商城前端访问地址:
http://localhost:8080
五、项目搭建
(一)命名规范
- 三层架构
- 控制层 服务简称Controller
- 业务层 服务简称 Service | 服务简称ServiceImpl
- 映射层 服务简称 Mapper
- 服务名称命名规范
- 前台程序 store-front-功能名
- 后台程序 store-admin
- 通用程序 store-自定义
- 服务名称 模块名-service
(二)搭建父工程、网关
创建工程:创建父工程->依赖配置
创建模块:创建网关服务->导入依赖->配置文件(bootstrap.yml、application.yml)->创建启动类
六、商城前台服务开发
(一)通用服务
1.介绍
创建一个通用服务,用于存放pojo,vo,param,utils,feign的接口,以及通用配置类和配置文件!主要是避免重复声明和互相依赖!但是可能会造成少量的冗余!
2.搭建
创建通用服务->导入依赖->创建包结构->导入工具类(两个工具类,导入到utils包下!)->maven仓库 (install打包)
(二)用户服务
1.介绍
商城用户模块! 主要涉及用户登录,注册和账号检查功能!包含用户地址管理功能实现!
2.搭建
导入数据库->创建用户服务模块->导入依赖->配置文件->启动类
3.功能实现
(1)账号检查接口
a、做好非空校验(注解):检查账号是否为null,如果为null,直接返回失败
b、不为null,进行数据库查询是否存在
c、存在,返回账号不可用
d、不存在,返回账号可用
(2)账号注册接口
a、做好非空校验(注解)、(username)账号检查是否存在
b、注意需要做好密码加密,此处需要加盐处理
c、在数据库中插入数据
d、返回封装结果
(3)账号登录接口
a、账号和密码做好非空校验(注解) 、密码加密 加盐处理
b、根据账号密码 查数据库有没有这条账号
c、返回封装结果,注意:为了安全,不返回密码
(3)地址查看接口
注意:查出的是集合list
a、参数非空校验、根据user_id去查数据库
b、封装返回即可
(4)地址添加接口
注意:是一条一条地址的插入
返回的不是封装的数据,而是地址查看功能查出的数据
a、非空参数校验、将address插入数据库
b、复用地址查看功能
(5)地址删除接口
a、非空参数校验、根据id删除数据库数据
b、返回结果
(三)静态资源服务
1.介绍
静态资源存储和静态资源外部访问服务
2.搭建
创建模块->导入依赖->配置文件->启动类->修改网关配置
(四)轮播图服务
1.介绍
首页轮播图广告图片展示,点击图片可以跳转到商品展示详情!
2.搭建
导入数据库->创建模块->依赖->配置文件->启动类->修改网关配置
3.功能实现
(1)轮播图展示接口
需求:查询轮播图数据,只要优先级最高的6条数据
步骤:
a、按照优先级查询数据库
b、用stream流,进行内存数据切割,保留6条数据
(五)商品服务
2.搭建
导入数据库->创建模块->导入依赖->配置文件->启动类->网关配置
3.功能实现
(1)首页 单类别查热门商品 接口
根据传入的单类别名称,进行商品名称查询
最多查询销售量最多7条数据商品信息
(2)首页 多类别查热门商品 接口
传入的类别名称数量不确定
最多查询7条
需要调用类别服务,将类别名称转成ID
(3)类别信息接口
需要调用商品服务调用类别服务
(4)/(5)类别商品接口、查询全部商品接口
通用型业务:类别商品接口
如果传入了类别ID,根据ID去查 并分页
如果没有传入类别ID,就查看全部 并分页
(6)查询商品详情接口
(7)查询商品图片接口
(六)类别服务
2.搭建
导入数据库->创建模块->导入依赖->配置文件->启动类->网关配置
(七)商品搜索接口
1.介绍
技术:使用elasticsearch技术实现商品搜索功能,相对mysql,效率更高,分词查找更合理!
注意:启动类排除自动导入数据库配置,否者出现为配置连接池信息异常
2.搭建
创建模块->导入依赖->配置文件->启动类->网关配置
3.功能实现
(1)数据同步
(启动时候做一次)搜索服务 远程调用 商品服务,商品服务查全部数据 放到es库里。
步骤:
商品服务有一套提供全部数据的功能
定义productClient
dsl语句
更新搜索服务的数据
(2)
1.数据搜索:用户传关键字给商品服务,商品服务不直接对数据库访问,它调用搜索服务,搜索服务到es库里查。
3.数据更新:当商品服务新增或修改,发数据更新rabbitMQ ,更新es库。
删除时,