HRM项目总结(Day01-Day11)
一、HRM_Day01_搭建微服务
1.项目原型
前端:elementui+div+css
后端:使用微服务(springCloud)+SSM,mybatis-plus
2.项目架构分析(重点)
使用技术分析:
MySQL:用于存储数据
redis:用于存放缓存
FastDFS:分布式文件系统
elasticsearch:全文检索
Feign/Hystrix:用于服务之间的调用和熔断操作
SpringCloudCofig:存放所有服务的配置文件
Erueka:注册中心,存放所有的服务
Gitee:远端仓库,配置中心到仓库拉取文件
Zuul网关:配置路由,通过路由访问
nginx:反向代理,通过虚拟ip调用不同的主机(虚拟)
3.系统中心后台微服务搭建(重点)
3.1.集成ssm
使用mybatis-plus+spring+springmvc集成
主要项目结构:
parent=>interface(domain、query、clien、clienImpl)、service(Mapper.java、service、controller、mapper.xml)
3.2.配置网关
网关配置文件设置路由:
zuul:
prefix: /services
ignored-services: '*'
routes:
system:
path: /system/**
service-id: system-service
3.3.集成swagger
导入swagger的相关依赖,直接copy项目需要使用的Swagger2Configuration类
**测试:**localhost:端口/swagger-ui.html
**注意:**Swagger2Configuration类需要注解@Configuration、@EnableSwagger2
4.mybatis-plus入门(重点)
4.1入门
https://mp.baomidou.com/ 参考官网
4.2核心
1.提供crud基本接口,只能对单表操作,多表需要自己写sql
2.分页提供一个bean,分页插件
3.在mapper中进行分页,方法第一个参数必须是Page
4.提供条件构造器,使用QueryWrapper
5.代码生成器,cv自己会改就ok
二、HRM_Day02_搭建课程服务
1.gitee仓库搭建(重点)
创建gitee仓库,idea与仓库创建连接,pull后再拉取
**常见错误:**Push to origin/master was rejected
**解决方法:**打开项目的根目录,右击选择Git Bash here,依次输入以下命令
git pull
git pull origin master
git pull origin master --allow-unrelated-histories
2.配置中心搭建(重点)
2.1.单机版
1.创建gitee仓库
2.创建配置中心服务端
3.编写配置中心配置文件,配置远程拉取的地址
4.启动类添加配置中心的注解@EnableConfigServer
4.上传服务配置文件到Gitee仓库
2.2.集群版
复制单机版的配置中心,改个端口,注册到同一个服务下,其他客户端可以直接任意拉取二者之一
3.抽取swagger
1.设置配置文件META-INF/spring.factories
2.添加自动配置类EnableAutoConfiguration=XXXAutoConfiguration
3.编写XXXProperties配置文件
4.其他服务使用可以直接导入swagger抽取后的场景启动器依赖后使用
4.代码生成器
copy自己能看懂一点点即可
5.搭建前端项目(重点)
1.禁用mock
2.安装axios
3.解决跨域问题
4.设置统一跨域处理(copy)
5.设置仓库,提交到gitee
6.搭建课程中心后台(重点)
1.搭建课程中心客户端
2.集成ssm+mybatis-plus
3.bootstrap.yml设置配置文件,通过配置中心拉取配置文件
4.引入swagger
5.配置网关路由
三、HRM_Day03_租户实现
1.数据隔离
1.给每个租户提供一套数据库
2.不同租户存放到不同的表中
3.通过租户id在一张表进行区分(推荐)
2.权限分配
基于RBAC实现权限的控制,主要表为用户、角色、权限、套餐、租户,权限跟套餐绑定,租户购买套餐,租户下的用户只能分配套餐中对应的权限
3.建库建表
copy即可
4.后端注册租户实现
略,参考代码
5.前端实现
copy即可
6.分布式文件系统(重要)
6.1.为什么使用分布式文件系统
微服务中,集群环境下,文件上传到服务器中,后面客户端访问不一定能拿到数据,所有需要分布式文件系统来存放文件,方便每个客户端都能拿到想要的数据
6.2.技术选型
FastDFS
6.3.fastdfs的概述
Tracker Server:调度服务器,负责均衡,调度可用的Storage Server(存储服务器)
Storage Server:存储服务器,专们用来存储文件的
7.使用fastdfs完成logo上传
1.创建文件系统的服务端
2.导入相关依赖
3.配置bootstrap.yml,从配置中心拉配置
4.网关配置文件系统的路由
5.配置swagger
6.提供文件上传接口
四、HRM_Day04_课程类型维护
1.修改前端页面
1.修改展示后台的基本信息,如标题
2.修改菜单的选项
3.添加课程类型的路由
2.课程类型维护
2.1.布局
略,参考代码与界面
2.2.后端实现(查询)
实现方式:
1.使用递归
2.使用嵌套循环
3.使用循环+map(推荐,效率高于前者)
3.课程类型优化
3.1.为何要优化
由于课程类型需要长期被查询,用的是微服务,为了避免数据库高并发,所以使用redis存储缓存,解决高并发导致数据库奔溃,从而也减少了数据库的压力
3.2.优化方案
使用redis服务器,将缓存集中进行存放,并且redis本身也可以集群
4.项目使用redis
1.搭建缓存服务
2.导入相关依赖
3.提供缓存实现接口
4.编写缓存的controller
5.提供Feign接口,便于课程类型服务来使用
五、HRM_Day05_课程维护
1.课程前台
copy即可
2.后台维护属性
基本属性:后台管理员对课程基本信息进行查看与修改
市场属性:后台管理员对市场的基本信息进行查看与修改
媒体属性:后台管理员对媒体的基本信息进行查看与修改,如查看产品图片等
页面设计:提供高级查询、上线与下线、对课程的添加
3.建库建表
copy即可
4.代码生成
略,稍微搞一下生成的表与生成的路径即可
5.课程信息维护
5.1.分页高级查询
使用mybatis-plus,在mapper中使用高级查询,只需要把第一个参数设置为Page即可
5.2.富文本编辑
使用vue-quill-editor实现富文本编辑器,参考网址安装与使用https://www.npmjs.c