• SAAS-HEM


    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报表

     

  • 相关阅读:
    算法图解——求Int整型数二进制中1的个数
    图解算法——句子逆序
    图解算法——反转字符串
    图解算法——整数倒置
    《图解算法》之狄克斯特拉算法
    图解算法——合并两个有序链表
    图解算法——括号匹配
    图解算法——两数之和
    #热烈庆祝我党成立100周年#
    jQuery全选反选
  • 原文地址:https://www.cnblogs.com/baldprogrammer/p/14105992.html
Copyright © 2020-2023  润新知