Skip to main content

架构设计

本文档描述了 open-admin 系统的架构设计和核心模块。

系统架构

open-admin 采用前后端分离的架构设计,主要分为前端、后端和数据库三个部分。

架构图

┌────────────────────────────────────────────────────────────┐
│ 前端 │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ React UI │ │ Ant Design │ │
│ └─────────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ API 调用 │ │
│ └─────────────┘ │
└───────────────────┬─────────────┬────────────────────────────┘
│ │
▼ ▼
┌────────────────────────────────────────────────────────────┐
│ 后端 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Spring Boot│ │ JPA │ │ Quartz │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 权限管理 │ │ 数据规范 │ │ 作业调度 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ 数据库操作 │ │
│ └─────────────┘ │
└───────────────────┬─────────────┬────────────────────────────┘
│ │
▼ ▼
┌────────────────────────────────────────────────────────────┐
│ 数据库 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ MySQL │ │ 数据字典 │ │ 系统配置 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└────────────────────────────────────────────────────────────┘

核心模块

1. 前端模块

1.1 组件库

  • ProTable:数据表格组件,提供分页、筛选、工具栏等功能
  • ProModal:弹窗组件,用于展示对话框内容
  • Ellipsis:文本省略组件,用于文本过长时以省略号显示
  • LinkButton:链接按钮组件,用于跳转到指定页面
  • DownloadFileButton:下载文件按钮组件
  • PageLoading:页面加载组件
  • NamedIcon:命名图标组件
  • Page:页面组件

1.2 字段组件

  • FieldRemoteSelect:远程搜索选择框组件
  • FieldRemoteSelectMultiple:远程搜索多选框组件
  • FieldRemoteTree:远程树形选择组件
  • FieldDictSelect:字典选择组件
  • FieldEditor:富文本编辑器组件
  • FieldRemoteTreeCascader:远程树形级联选择组件
  • FieldRemoteTreeSelect:远程树形选择器组件
  • FieldBoolean:布尔值选择组件
  • FieldDate:日期选择组件
  • FieldDateRange:日期范围选择组件
  • FieldTable:表格字段组件
  • FieldTableSelect:表格选择组件
  • FieldSysOrgTree:系统组织树选择组件
  • FieldPercent:百分比输入组件
  • FieldUploadFile:文件上传组件

1.3 工具类

  • HttpUtils:HTTP请求工具类
  • MessageUtils:消息提示工具类
  • DateUtils:日期工具类
  • ArrUtils:数组工具类
  • UrlUtils:URL工具类
  • StringUtils:字符串工具类
  • ColorsUtils:颜色工具类
  • DomUtils:DOM工具类
  • UuidUtils:UUID工具类
  • TreeUtils:树结构工具类
  • StorageUtils:本地存储工具类
  • DeviceUtils:设备工具类
  • ObjectUtils:对象工具类
  • ValidateUtils:验证工具类

2. 后端模块

2.1 数据规范

  • Spec:简洁、动态、支持关联字段查询的JPA Specification构建器

2.2 工具类

  • TreeUtils:将列表转换为树结构的工具类
  • ExcelUtils:Excel导入导出工具类
  • JdbcUtils:Spring Boot环境下的原生SQL工具类
  • LoginUtils:登录用户信息获取工具类

2.3 注解

  • GeneratePrefixedSequence:使用前缀的序列ID生成器注解
  • GenerateUuidV7:UUID V7 ID生成器注解

2.4 数据类型转换器

  • BaseCodeEnumConverter:枚举值与数据库存储值之间的转换器
  • BaseConverter:基础转换器,用于将Java对象与数据库字符串字段之间进行转换
  • ToListConverter:通用列表转换器
  • ToMapConverter:Map类型转换器

2.5 验证器

  • ValidateMobile:验证手机号码格式
  • ValidateIdCard:验证身份证号码格式
  • ValidateEmail:验证邮箱格式
  • ValidateCreditCode:验证统一社会信用代码格式

核心功能模块

3.1 用户权限管理

  • 用户管理:用户信息的增删改查
  • 角色管理:角色的增删改查和权限分配
  • 权限管理:权限的定义和管理

3.2 数据字典管理

  • 字典类型管理:字典类型的增删改查
  • 字典项管理:字典项的增删改查

3.3 作业调度

  • 任务管理:定时任务的增删改查
  • 任务执行:基于Quartz的定时任务执行

3.4 文件管理

  • 文件上传:支持多文件上传
  • 文件存储:统一的文件存储管理
  • 文件预览:支持图片、文档等文件的预览

3.5 系统配置

  • 系统参数:系统全局参数的配置
  • 环境变量:不同环境的配置管理

3.6 操作日志

  • 日志记录:完整的操作日志记录
  • 日志查询:支持按条件查询操作日志

设计理念

1. 模块化设计

open-admin 采用模块化的设计理念,将系统划分为多个独立的模块,每个模块负责特定的功能。这种设计使得系统结构清晰,易于维护和扩展。

2. 前后端分离

采用前后端分离的架构,前端负责页面展示和用户交互,后端负责业务逻辑和数据处理。这种架构使得前后端可以独立开发和部署,提高了开发效率和系统的可维护性。

3. 可扩展性

系统设计考虑了可扩展性,支持通过插件和扩展点来增强系统功能。例如,作业调度系统支持自定义任务,文件管理系统支持不同的存储策略。

4. 安全性

系统设计注重安全性,采用了多种安全措施来保护系统和数据。例如,权限管理系统确保只有授权用户才能访问特定资源,数据加密确保敏感数据的安全。

5. 性能优化

系统设计考虑了性能优化,采用了多种技术来提高系统性能。例如,缓存机制减少数据库访问,异步处理提高系统响应速度。

技术选型

前端技术

  • React:用于构建用户界面的JavaScript库
  • Ant Design:企业级UI组件库

后端技术

  • Spring Boot:Java后端开发框架
  • JPA:Java持久化API
  • Quartz:开源的作业调度库
  • MySQL:关系型数据库

总结

open-admin 采用了现代化的前后端分离架构,结合了多种优秀的开源技术,为企业级管理系统开发提供了完整的解决方案。系统设计注重模块化、可扩展性、安全性和性能优化,使得系统易于维护和扩展。