1、云服务
云服务三种模式
区别:
IaaS:提供基础的硬件设施,包括cpu,内存等,我们需要关心使用什么数据库,什么存储空间等。
PaaS:提供平台,不需要关心操作系统,存储等。
SaaS: 用户不需要关心基础设施,直接根据需求使用,不需要开发人员了。
2、SaaS
优点
3、SaaS-Hrm
原型分析法:
UML:
我们使用UML来进行原型的搭建。
用例图:
需求分析软件:
开发方式:
前后端分离:
技术架构:
系统架构图:
4、工程搭建
1、创建父工程
父工程只包含pom.xml,其中定义了简单的依赖。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ihrm</groupId> <artifactId>SaaS_HRM</artifactId> <version>1.0-SNAPSHOT</version> <!--打包及工程名描述等--> <packaging>pom</packaging> <name>ihrm_parent</name> <description>IHRM父工程</description> <!--加入springboot依赖--> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.3.5.RELEASE</version> </parent> <!--配置管理--> <properties> <java.version>1.8</java.version> <fastjson.version>1.2.71</fastjson.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <!--直接加入了依赖--> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.16</version> </dependency> </dependencies> <!--用于创建远程仓库--> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> </project>
2、构建公共子模块
公共子模块包含:
返回结果实体类,返回码定义类型,分布式id生成器。
id生成:
- 数据库主键自增: 可能会合并数据库,表,导致重复
- UUID : 比较长,可能重复
- 借助全局redis
- 雪花算法:
雪花算法就是判断当前的毫秒数与上一时刻是否一致,不一致直接生成,一致将序号加1,超过最大序号推迟到下一毫秒。
3、微服务模块Crud搭建。
使用postman测试。
5、数据库设计
1、数据库的范式
第三范式就是不存在冗余信息,能推导出来的列都不满足。
反三范式:可根据需求适当添加冗余信息,这可能会违反三范式。
2、多租户Saas解决方案
3、数据库设计
采用共享数据库,独立schema的结构。(mysql是指独立的database)
采用共享的方式
6、前端脚手架
VUE基本工具类整合,主要是CSS。
目录结构:
执行过程
7、系统用户权限设计
1、组织机构管理
RBAC
3、表结构设计
权限设计
权限设计
实际使用
8、权限认证
Token验证
JWT
权限管理与shiro入门
1、前端对菜单与按钮动态加载
菜单加载是登录时通过扫描配置的路由,检查其与返回的菜单名是否匹配,匹配的代表有权限,进行显示,
按钮是在页面中通过v-if判断当前按钮名字是否在返回的points数组中,存在表明有权限,进行显示。实现按钮级别的控制。
2、后端Api控制
有状态及无状态服务。
典型的无状态与有状态:
无状态:JWT
有状态: session
3、shiro
shiro与spring security
Shiro结构
shiro的拦截器
shiro与jwt:
POI报表