• saas模式人力资源管理系统


    项目亮点:

    1.权限开发:jwt,shiro

    2.企业报表的解决方法:poi(xls) ,jasper(pdf)

    3.代码生成工具的制作与解析

    4.企业工作流定制:activiti7

    5.人工智能:人脸登录

    1 初识SaaS

    1.1 云服务的三种模式

    1.1.1 IaaS(Infrastructure as a Service(基础设施即服务)

    只提供基础设备,例如服务器(cpu、内存、网络)

    1.1.2 PaaSPlatform-as-a-Service(平台即服务)

    包含服务器、操作系统、数据库、运行环境库

    1.1.3 SaaSSoftware-as-a-Service(软件即服务)

    包含服务器、操作系统、数据库、运行环境库、应用

    4 工程搭建

    4.1 前置知识点的说明

    Saas-HRM 系统后端采用
    SpringBoot+SpringCloud+SpringMVC+SpringData
    Saas-HRM 系统前端采用
    基于 nodejs vue 框架完成编写使用 element-ui 组件库快速开发前端界面

    4.2 开发环境要求

    4.2.1 lombok 插件

    1 idea 中安装插件

    2 )在 pom 文件中添加插件的依赖
    1. <dependency>
    2.    <groupId>org.projectlombokgroupId>
    3.    <artifactId>lombokartifactId>
    4.    <version>1.16.16version>
    5. dependency>
    3 )常见注解
    • @Data 注解在类上;提供类所有属性的 getting setting 方法,此外还提供了equalscanEqual、hashCodetoString 方法
    • @Setter :注解在属性上;为属性提供 setting 方法
    • @Setter :注解在属性上;为属性提供 getting 方法
    • @NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
    • @AllArgsConstructor :注解在类上;为类提供一个全参的构造方法

    4.3 构建父工程

    1.选择maven,因为父工程不需要什么骨架,直接next创建

    2.应为父工程没有代码,所有把src目录删掉

    IDEA 中创建父工程 ihrm_parent 并导入相应的坐标如下:
    1. <packaging>pompackaging>
    2. <name>ihrm_parentname>
    3. <description>IHRM-黑马程序员description>
    4. <parent>
    5. <groupId>org.springframework.bootgroupId>
    6. <artifactId>spring-boot-starter-parentartifactId>
    7. <version>2.0.5.RELEASEversion>
    8. <relativePath/>
    9. parent>
    10. <properties>
    11. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    12. <project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
    13. <java.version>1.8java.version>
    14. <fastjson.version>1.2.47fastjson.version>
    15. properties>
    16. <dependencies>
    17. <dependency>
    18. <groupId>org.springframework.bootgroupId>
    19. <artifactId>spring-boot-starter-webartifactId>
    20. dependency>
    21. <dependency>
    22. <groupId>org.springframework.bootgroupId>
    23. <artifactId>spring-boot-starter-loggingartifactId>
    24. dependency>
    25. <dependency>
    26. <groupId>org.springframework.bootgroupId>
    27. <artifactId>spring-boot-starter-testartifactId>
    28. <scope>testscope>
    29. dependency>
    30. <dependency>
    31. <groupId>com.alibabagroupId>
    32. <artifactId>fastjsonartifactId>
    33. <version>${fastjson.version}version>
    34. dependency>
    35. <dependency>
    36. <groupId>org.projectlombokgroupId>
    37. <artifactId>lombokartifactId>
    38. <version>1.16.16version>
    39. dependency>
    40. dependencies>
    41. <repositories>
    42. <repository>
    43. <id>spring-snapshotsid>
    44. <name>Spring Snapshotsname>
    45. <url>https://repo.spring.io/snapshoturl>
    46. <snapshots>
    47. <enabled>trueenabled>
    48. snapshots>
    49. repository>
    50. <repository>
    51. <id>spring-milestonesid>
    52. <name>Spring Milestonesname>
    53. <url>https://repo.spring.io/milestoneurl>
    54. <snapshots>
    55. <enabled>falseenabled>
    56. snapshots>
    57. repository>
    58. repositories>
    59. <pluginRepositories>
    60. <pluginRepository>
    61. <id>spring-snapshotsid>
    62. <name>Spring Snapshotsname>
    63. <url>https://repo.spring.io/snapshoturl>
    64. <snapshots>
    65. <enabled>trueenabled>
    66. snapshots>
    67. pluginRepository>
    68. <pluginRepository>
    69. <id>spring-milestonesid>
    70. <name>Spring Milestonesname>
    71. <url>https://repo.spring.io/milestoneurl>
    72. <snapshots>
    73. <enabled>falseenabled>
    74. snapshots>
    75. pluginRepository>
    76. pluginRepositories>
    77. <build>
    78. <plugins>
    79. <plugin>
    80. <groupId>org.apache.maven.pluginsgroupId>
    81. <artifactId>maven-compiler-pluginartifactId>
    82. <version>3.1version>
    83. <configuration>
    84. <source>${java.version}source>
    85. <target>${java.version}target>
    86. configuration>
    87. plugin>
    88. <plugin>
    89. <groupId>org.apache.maven.pluginsgroupId>
    90. <artifactId>maven-surefire-pluginartifactId>
    91. <version>2.12.4version>
    92. <configuration>
    93. <skipTests>trueskipTests>
    94. configuration>
    95. plugin>
    96. plugins>
    97. build>

    4.4 构建公共子模块

    1.放回结果的实体类

    2.分布式id生成器

    疑问:问什么有了Result还要ResultCode枚举类呢?

    其实只要Result也行,不过我们对于多条信息要不断的去get和set值,比较麻烦,所有定义ResultCode枚举类封装信息会比较方便

    4.4.1 构建公共子模块ihrm-common

    4.4.2 创建返回结果实体类

     1)新建com.ihrm.common.entity包,包下创建类Result,用于控制器类返回结果

    1. package com.ihrm.common.entity;
    2. import com.fasterxml.jackson.annotation.JsonInclude;
    3. import com.fasterxml.jackson.databind.annotation.JsonSerialize;
    4. import lombok.AllArgsConstructor;
    5. import lombok.Data;
    6. import lombok.NoArgsConstructor;
    7. @Data
    8. @NoArgsConstructor
    9. public class Result {
    10. private boolean success;//是否成功
    11. private Integer code;// 返回码
    12. private String message;//返回信息
    13. private Object data;// 返回数据
    14. public Result(ResultCode code) {
    15. this.success = code.success;
    16. this.code = code.code;
    17. this.message = code.message;
    18. }
    19. public Result(ResultCode code,Object data) {
    20. this.success = code.success;
    21. this.code = code.code;
    22. this.message = code.message;
    23. this.data = data;
    24. }
    25. public Result(Integer code,String message,boolean success) {
    26. this.code = code;
    27. this.message = message;
    28. this.success = success;
    29. }
    30. public static Result SUCCESS(){
    31. return new Result(ResultCode.SUCCESS);
    32. }
    33. public static Result ERROR(){
    34. return new Result(ResultCode.SERVER_ERROR);
    35. }
    36. public static Result FAIL(){
    37. return new Result(ResultCode.FAIL);
    38. }
    39. }

    2)创建类PageResult ,用于返回分页结果

    1. package com.ihrm.common.entity;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. import java.util.List;
    6. @Data
    7. @AllArgsConstructor
    8. @NoArgsConstructor
    9. public class PageResult {
    10. private Long total;
    11. private List rows;
    12. }

    4.4.3 返回码定义类 (是枚举类型)

    1. package com.ihrm.common.entity;
    2. public enum ResultCode {
    3. SUCCESS(true,10000,"操作成功!"),
    4. //---系统错误返回码-----
    5. FAIL(false,10001,"操作失败"),
    6. UNAUTHENTICATED(false,10002,"您还未登录"),
    7. UNAUTHORISE(false,10003,"权限不足"),
    8. SERVER_ERROR(false,99999,"抱歉,系统繁忙,请稍后重试!");
    9. //---用户操作返回码----
    10. //---企业操作返回码----
    11. //---权限操作返回码----
    12. //---其他操作返回码----
    13. //操作是否成功
    14. boolean success;
    15. //操作代码
    16. int code;
    17. //提示信息
    18. String message;
    19. ResultCode(boolean success,int code, String message){
    20. this.success = success;
    21. this.code = code;
    22. this.message = message;
    23. }
    24. public boolean success() {
    25. return success;
    26. }
    27. public int code() {
    28. return code;
    29. }
    30. public String message() {
    31. return message;
    32. }
    33. }

    4.4.4 分布式ID生成器

    主键id生成

            方案一:数据库自增(如果对user表合并就会产生冲突,不推荐)

            方案二:uuid全球唯一(缺点:太长,数据量太大)

            方案三:借助全局redis(缺点:网络开销太大)

            方案四:雪花算法

    snowflflake (雪花)算法。

     4.5 搭建公共的实体类模块

    1 )构建公共子模块 ihrm_common_model

     2)引入坐标

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.bootgroupId>
    4. <artifactId>spring-boot-starter-data-jpaartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>org.examplegroupId>
    8. <artifactId>ihrm_commonartifactId>
    9. <version>1.0-SNAPSHOTversion>
    10. dependency>
    11. dependencies>

    5 企业微服务-企业CRUD

    5.1 模块搭建

    1 )搭建企业微服务模块 ihrm_company, pom.xml 引入依赖
    1. <dependencies>
    2. <dependency>
    3. <groupId>org.springframework.bootgroupId>
    4. <artifactId>spring-boot-starter-data-jpaartifactId>
    5. dependency>
    6. <dependency>
    7. <groupId>mysqlgroupId>
    8. <artifactId>mysql-connector-javaartifactId>
    9. dependency>
    10. <dependency>
    11. <groupId>org.examplegroupId>
    12. <artifactId>ihrm_commonartifactId>
    13. <version>1.0-SNAPSHOTversion>
    14. dependency>
    15. dependencies>
    2 )添加配置文件 application.yml
            #服务配置
            #spring配置
                    #应用配置
                    # 数据库连接池
                    # jpa配置
    1. server:
    2. port: 9001
    3. spring:
    4. application:
    5.   name: ihrm-company #指定服务名
    6. datasource:
    7.   driver-class-name: com.mysql.jdbc.Driver
    8.   url: jdbc:mysql://localhost:3306/ihrm?useUnicode=true&characterEncoding=utf8
    9.   username: root
    10.   password: 111111
    11. jpa:
    12.   database: MySQL
    13.   show-sql: true
    14.   open-in-view: true

  • 相关阅读:
    百数新应用——生产制造信息化管理实用工具
    【AI应用探讨】— Gemma2模型应用场景
    PG学习笔记(PostgreSQL)
    不是跨域访问权限_而是后台代码错误_错误一点点排
    用.NET代码生成JSON Schema 验证器
    【JVM】java的jvm类加载器和类加载子系统
    编译器的作用和构成 (基础知识版)
    优雅地处理Python中的条件分支:字典映射、函数组合与match-case语句
    DBCO-PEG-OPSS/OPSS-PEG-DBCO/二苯并环辛炔聚乙二醇修饰邻吡啶二硫
    Oracle(6) Control File
  • 原文地址:https://blog.csdn.net/m0_45209551/article/details/126209969