From 13045c3ab6ce144182b25a4dafac18ec59e3cf80 Mon Sep 17 00:00:00 2001 From: tangweijie <877588133@qq.com> Date: Fri, 9 May 2025 14:44:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=8A=80=E6=9C=AF=E6=9E=B6=E6=9E=84=E3=80=81?= =?UTF-8?q?=E4=B8=BB=E8=A6=81=E7=89=B9=E6=80=A7=E5=8F=8A=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=8E=9F=E5=88=99=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=AE=BE=E8=AE=A1=E4=B8=BA=E6=94=AF?= =?UTF-8?q?=E6=8C=81MySQL/MariaDB=EF=BC=8C=E5=A2=9E=E5=BC=BA=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=9E=B6=E6=9E=84=E5=92=8C=E6=A8=A1=E5=9D=97=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E7=9A=84=E8=AF=A6=E7=BB=86=E6=8F=8F=E8=BF=B0=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E5=8D=87=E6=96=87=E6=A1=A3=E7=9A=84=E5=AE=8C=E6=95=B4?= =?UTF-8?q?=E6=80=A7=E5=92=8C=E5=8F=AF=E8=AF=BB=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 ++++++++ water_biz_database_design.md | 42 +++++++++++++++--- water_biz_deployment_design.md | 27 +++++++++--- water_biz_design_plan.md | 14 +++--- water_biz_integrated_doc.md | 35 ++++++++++++++- water_biz_interface_design.md | 75 +++++++++++++++++++++++++++++++- water_biz_module_design.md | 64 ++++++++++++++++++++++----- water_biz_summary.md | 6 +++ water_biz_system_architecture.md | 55 ++++++++++++++++++----- 9 files changed, 292 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 736e280..3ffbe2d 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,13 @@ 本仓库包含福建水务业务系统的初步设计文档,包括系统架构、模块设计、接口设计、数据库设计、部署设计等内容。 +## 技术架构 + +本系统基于以下主流开源框架构建: + +- 后端框架:[RuoYi-Vue-Pro](https://github.com/YunaiV/ruoyi-vue-pro),一个开源的企业级Java应用脚手架,基于Spring Boot + MyBatis Plus + Vue实现,支持RBAC动态权限、数据权限、SaaS多租户、Flowable工作流、三方登录等功能。 +- 前端框架:[yudao-ui-admin-vue3](https://github.com/yudaocode/yudao-ui-admin-vue3),基于Vue 3 + Element Plus实现的管理后台前端框架。 + ## 文档目录 - [设计计划](./water_biz_design_plan.md) - [文档目录](./water_biz_integrated_doc.md) @@ -12,6 +19,16 @@ - [数据库设计](./water_biz_database_design.md) - [部署设计](./water_biz_deployment_design.md) +## 主要特性 + +- 基于SaaS多租户架构,支持集团、分公司、营业站点的多层级管理 +- 使用Spring Boot 3.x + Vue 3.x开发,支持JDK 17/21 +- 集成Flowable工作流,支持报装、表务等业务流程灵活配置 +- 提供丰富的统计图表和业务大屏,支持自定义报表设计 +- 支持移动端应用,包含微信/支付宝小程序和公众号服务 +- 完善的权限管理,支持RBAC动态权限和数据权限控制 +- 支持多种支付方式和第三方系统集成 + ## 版本信息 初始版本:1.0.0 diff --git a/water_biz_database_design.md b/water_biz_database_design.md index 152176b..101c2c7 100644 --- a/water_biz_database_design.md +++ b/water_biz_database_design.md @@ -10,7 +10,7 @@ ## 1. 数据库设计概述 -福建水务业务系统的数据库设计基于 OpenGauss 数据库管理系统,采用关系型数据库模型,以支持业务系统的高并发、高可靠性需求。数据库设计遵循标准化、安全性、扩展性和性能优化的原则,为业务系统提供稳定、高效的数据存储和访问支持。 +福建水务业务系统的数据库设计基于MySQL/MariaDB数据库管理系统(同时支持国产OpenGauss数据库),采用关系型数据库模型,以支持业务系统的高并发、高可靠性需求。数据库设计遵循标准化、安全性、扩展性和性能优化的原则,为业务系统提供稳定、高效的数据存储和访问支持。 ### 1.1 设计目标 @@ -27,6 +27,7 @@ - **模块化**:按业务模块划分表组,便于维护和扩展 - **安全性**:设计完善的权限控制和数据加密方案 - **可扩展性**:预留扩展字段,支持业务功能的扩展 +- **通用字段**:遵循RuoYi-Vue-Pro框架规范,统一基础字段定义 ## 2. 数据库架构 @@ -34,19 +35,46 @@ 系统采用集中式数据库架构,主要包含以下组件: -- **主数据库**:存储核心业务数据,支持事务处理 +- **主数据库**:MySQL/MariaDB主从架构,存储核心业务数据,支持事务处理 - **报表数据库**:存储统计分析数据,支持复杂查询和报表生成 - **历史数据库**:存储历史业务数据,减轻主数据库负担 -- **缓存系统**:使用内存数据库缓存热点数据,提高访问效率 +- **缓存系统**:使用Redis作为缓存数据库,缓存热点数据,提高访问效率 ### 2.2 多租户设计 -系统采用数据分区方式实现多租户架构,主要包括: +系统采用基于字段的方式实现多租户架构,主要包括: - **共享数据库,共享模式**:所有租户共享同一数据库实例和表结构 -- **租户标识列**:在每个表中增加租户标识列,实现数据隔离 -- **视图隔离**:为不同租户创建视图,限制数据访问范围 -- **权限控制**:通过数据库权限控制租户对数据的访问 +- **租户标识列**:在每个表中增加tenant_id租户标识列,实现数据隔离 +- **多租户拦截器**:基于MyBatis Plus的多租户拦截器,自动为SQL添加租户条件 +- **权限控制**:通过数据权限控制租户对数据的访问 + +### 2.3 数据访问层设计 + +系统基于MyBatis Plus框架实现数据访问层,主要特点包括: + +- **通用CRUD**:利用MyBatis Plus提供的BaseMapper,简化基础CRUD操作 +- **分页查询**:使用MyBatis Plus的分页插件,实现高性能分页 +- **条件构造器**:使用LambdaQueryWrapper/LambdaUpdateWrapper构建动态SQL +- **自动填充**:通过MetaObjectHandler自动填充创建时间、更新时间等字段 +- **乐观锁**:支持通过版本号实现乐观锁控制 +- **数据权限**:通过自定义拦截器实现数据权限过滤 +- **多租户**:基于TenantLineInnerInterceptor实现多租户数据隔离 + +### 2.4 通用字段设计 + +系统中所有业务表都包含以下通用字段: + +| 字段名 | 数据类型 | 长度 | 是否为空 | 描述 | +|-------|---------|------|---------|-----| +| id | BIGINT | - | 否 | 主键ID | +| creator | VARCHAR | 64 | 是 | 创建者 | +| create_time | DATETIME | - | 否 | 创建时间 | +| updater | VARCHAR | 64 | 是 | 更新者 | +| update_time | DATETIME | - | 是 | 更新时间 | +| deleted | TINYINT | 1 | 否 | 是否删除(0正常,1删除) | +| tenant_id | BIGINT | - | 否 | 租户ID | +| version | INT | - | 是 | 乐观锁版本号 | ## 3. 主要数据实体 diff --git a/water_biz_deployment_design.md b/water_biz_deployment_design.md index 0986de5..68d89e4 100644 --- a/water_biz_deployment_design.md +++ b/water_biz_deployment_design.md @@ -133,24 +133,37 @@ #### 3.2.1 操作系统 -- Windows Server 2012 R2 64位或更高版本 +- 服务端:CentOS 7+、Ubuntu 18.04+或其他国产Linux发行版 +- 客户端:支持Windows、macOS、Linux等现代操作系统 #### 3.2.2 数据库 -- SQL Server 2012 Enterprise 64位或更高版本 +- MySQL 5.7+ 或 MariaDB 10.2+(推荐) +- 国产数据库可选:OpenGauss、达梦等 #### 3.2.3 应用服务器 -- IIS 8.0或更高版本 -- .NET Framework 4.5或更高版本 +- JDK 17或JDK 21(兼容支持JDK 8) +- Apache Tomcat 9.0+或内嵌Tomcat +- Nginx 1.18+(作为前端静态资源服务器和反向代理) #### 3.2.4 缓存服务器 -- Redis 3.0或更高版本 +- Redis 5.0+或Redis集群 -#### 3.2.5 负载均衡 +#### 3.2.5 中间件 -- Nginx或Microsoft NLB +- 消息队列:基于Redis的轻量级队列(可选) +- 分布式任务调度:Quartz集群 +- 工作流引擎:Flowable 6.x +- 文件存储:支持本地存储、MinIO、阿里云OSS等 + +#### 3.2.6 前端环境 + +- Node.js 16+ +- NPM 8+或Yarn 1.22+ +- Vue 3.x +- Element Plus ## 4. 网络架构 diff --git a/water_biz_design_plan.md b/water_biz_design_plan.md index 52c76db..4ffbe83 100644 --- a/water_biz_design_plan.md +++ b/water_biz_design_plan.md @@ -39,15 +39,15 @@ ### 第二阶段:系统架构设计(2周) 1. **技术架构设计** - - 前端技术架构设计 - - 后端技术架构设计 - - 数据库架构设计 - - 集成方案设计 + - 前端技术架构设计:基于yudao-ui-admin-vue3框架,使用Vue 3.x + TypeScript + Element Plus + - 后端技术架构设计:基于RuoYi-Vue-Pro框架,使用Spring Boot 3.x + MyBatis Plus + Spring Security + - 数据库架构设计:基于MySQL/MariaDB,配合MyBatis Plus实现高效数据访问 + - 集成方案设计:与支付系统、短信系统、工作流引擎等第三方服务集成 2. **系统功能模块划分** - - 功能模块划分 - - 模块间关系设计 - - 接口设计原则 + - 基于RuoYi-Vue-Pro的模块化设计:yudao-module-xxx形式组织代码 + - 采用前后端分离架构,定义清晰的API接口 + - 复用框架基础功能,包括权限管理、租户管理、系统管理等 ### 第三阶段:详细设计(3周) diff --git a/water_biz_integrated_doc.md b/water_biz_integrated_doc.md index 5a60459..b11e20c 100644 --- a/water_biz_integrated_doc.md +++ b/water_biz_integrated_doc.md @@ -288,4 +288,37 @@ | 后端负责人 | [姓名] | 后端技术选型与设计 | | 数据库设计师 | [姓名] | 数据库设计与优化 | | 测试负责人 | [姓名] | 测试策略与测试用例设计 | -| 运维负责人 | [姓名] | 部署方案与运维设计 | \ No newline at end of file +| 运维负责人 | [姓名] | 部署方案与运维设计 | + +# 福建水务业务系统技术文档目录 + +## 1. 系统概述 +1.1 系统背景 +1.2 系统目标 +1.3 系统范围 +1.4 系统用户 +1.5 系统特点 +1.6 系统价值 + +## 2. 系统架构 +2.1 架构概述 +2.2 技术架构 +2.3 应用架构 +2.4 数据架构 +2.5 部署架构 +2.6 安全架构 + +## 3. 技术框架 +3.1 框架概述 +3.2 RuoYi-Vue-Pro框架 + 3.2.1 框架介绍 + 3.2.2 核心功能 + 3.2.3 技术特点 + 3.2.4 框架模块结构 + 3.2.5 扩展机制 +3.3 yudao-ui-admin-vue3框架 + 3.3.1 框架介绍 + 3.3.2 组件体系 + 3.3.3 技术特点 + 3.3.4 页面开发模式 + 3.3.5 主题定制 \ No newline at end of file diff --git a/water_biz_interface_design.md b/water_biz_interface_design.md index df8d5f2..92f7649 100644 --- a/water_biz_interface_design.md +++ b/water_biz_interface_design.md @@ -8,7 +8,80 @@ ## 1. 接口概述 -福建水务业务系统提供丰富的接口,用于与外部系统集成以及系统内部各模块间的数据交换。接口设计遵循标准化、安全性、可扩展性的原则,采用REST风格设计,支持JSON数据格式。 +福建水务业务系统提供丰富的接口,用于与外部系统集成以及系统内部各模块间的数据交换。接口设计遵循标准化、安全性、可扩展性的原则,基于RuoYi-Vue-Pro框架采用RESTful风格设计,支持JSON数据格式。 + +### 1.1 接口设计原则 + +- **统一性**:所有接口遵循统一的设计规范和数据格式 +- **安全性**:接口通过认证授权、参数校验等机制保障安全 +- **可维护性**:接口文档完善,便于维护和升级 +- **兼容性**:接口设计考虑版本兼容,支持平滑升级 +- **性能优化**:接口设计考虑性能,支持缓存、分页等机制 + +### 1.2 RESTful API规范 + +系统API接口采用RESTful风格设计,主要规范如下: + +#### 1.2.1 资源命名 + +- 使用名词复数表示资源集合,如`/users`、`/meters` +- 使用资源ID标识特定资源,如`/users/1`、`/meters/123` +- 资源层级关系通过路径嵌套表示,如`/users/1/meters` + +#### 1.2.2 HTTP方法 + +- GET:获取资源 +- POST:创建资源 +- PUT:更新资源(全量更新) +- PATCH:部分更新资源 +- DELETE:删除资源 + +#### 1.2.3 状态码 + +- 200 OK:请求成功 +- 201 Created:资源创建成功 +- 400 Bad Request:请求参数错误 +- 401 Unauthorized:未授权 +- 403 Forbidden:权限不足 +- 404 Not Found:资源不存在 +- 500 Internal Server Error:服务器内部错误 + +#### 1.2.4 响应格式 + +系统统一采用以下JSON格式响应: + +```json +{ + "code": 0, // 业务状态码,0表示成功,非0表示失败 + "data": {}, // 响应数据 + "msg": "success" // 响应消息 +} +``` + +分页查询响应格式: + +```json +{ + "code": 0, + "data": { + "list": [], // 数据列表 + "total": 100, // 总记录数 + "pageNum": 1, // 当前页码 + "pageSize": 10 // 每页记录数 + }, + "msg": "success" +} +``` + +### 1.3 接口文档 + +系统使用Knife4j(基于Swagger)自动生成API文档,文档地址为:`http://{系统地址}/doc.html`。 + +主要特点: +- 在线接口文档:支持在线查看接口定义 +- 接口调试:支持在线调试接口 +- 文档导出:支持导出OpenAPI规范文档 +- 权限控制:支持对接口文档的访问控制 ## 2. 外部接口 diff --git a/water_biz_module_design.md b/water_biz_module_design.md index e17d668..0d2b500 100644 --- a/water_biz_module_design.md +++ b/water_biz_module_design.md @@ -55,27 +55,71 @@ ## 1. 统一平台 -统一平台是客户服务平台的综合展示平台,包含日常工作功能和客户全部的信息,是系统的基础功能模块。 +统一平台是客户服务平台的综合展示平台,基于RuoYi-Vue-Pro和yudao-ui-admin-vue3框架构建,包含日常工作功能和客户全部的信息,是系统的基础功能模块。 ### 1.1 单点登录 -单点登录模块实现用户一次登录即可访问系统中所有应用的功能,主要特点包括: +单点登录模块基于Spring Security和JWT实现用户一次登录即可访问系统中所有应用的功能,主要特点包括: - 支持通过用户名、密码进行身份认证 +- 支持OAuth2.0授权码+PKCE模式的第三方登录 +- 支持手机号+短信验证码登录方式 +- 支持多因素认证(MFA)增强安全性 - 根据登录人员所在公司的不同,显示不同的系统名称和界面风格 - 提供流程节点到期提醒功能 -- 支持多种安全认证方式 +- Token自动刷新机制,提升用户体验 ### 1.2 系统管理 -系统管理模块提供对系统基础参数的配置管理功能,主要包括: +系统管理模块基于RuoYi-Vue-Pro框架的现成功能,提供对系统基础参数的配置管理功能,主要包括: -- 组织机构管理:支持多级组织结构的管理 -- 员工管理:系统操作人员的基本信息管理 -- 角色权限管理:基于RBAC模型的权限控制 -- 系统菜单配置:支持自定义系统菜单和功能模块 -- 数据字典管理:维护系统使用的各类基础代码数据 -- 系统日志管理:记录系统操作日志 +- 组织机构管理: + - 支持多级组织结构的管理 + - 支持组织机构导入导出 + - 组织关系树形展示 + - 组织数据权限控制 +- 员工管理: + - 系统操作人员的基本信息管理 + - 用户分配角色与权限 + - 用户状态管理(启用/禁用) + - 用户密码安全策略 + - 用户操作日志记录 +- 角色权限管理: + - 基于RBAC模型的权限控制 + - 支持数据权限精细化控制 + - 支持多租户的权限隔离 + - 基于菜单、按钮级别的权限管理 +- 系统菜单配置: + - 支持自定义系统菜单和功能模块 + - 菜单多级分类管理 + - 动态路由生成 + - 菜单权限配置 +- 数据字典管理: + - 维护系统使用的各类基础代码数据 + - 支持字典项多级管理 + - 支持字典缓存,提高访问性能 +- 系统监控: + - 在线用户监控与管理 + - 服务器性能监控 + - 定时任务执行状态监控 + - 系统缓存监控与管理 +- 系统日志管理: + - 记录用户登录日志 + - 记录操作日志,支持操作回溯 + - 记录系统异常日志,便于问题排查 +- 短信管理: + - 支持阿里云、腾讯云等多家短信渠道 + - 短信模板配置管理 + - 短信发送日志记录 +- 租户管理: + - 支持SaaS多租户 + - 租户套餐配置 + - 租户数据隔离 + - 租户资源管理 +- 配置管理: + - 系统参数配置 + - 通知公告管理 + - 定时任务配置 ## 2. 营收系统 diff --git a/water_biz_summary.md b/water_biz_summary.md index ceb4f52..4b6db86 100644 --- a/water_biz_summary.md +++ b/water_biz_summary.md @@ -100,6 +100,12 @@ - **充分理解原系统**:详细阅读原有系统的需求和设计文档,理解系统功能和业务流程 - **熟悉技术框架**:深入了解RuoYi-Vue-Pro和yudao-ui-admin-vue3框架的功能和架构 + - 学习RuoYi-Vue-Pro的核心模块结构与扩展机制 + - 掌握基于MyBatis Plus的数据访问层设计 + - 理解Spring Security的认证授权体系 + - 熟悉多租户的实现原理 + - 学习Vue 3和Element Plus组件库的使用 + - 了解前端路由和状态管理机制 - **明确编写范围**:根据项目实际需求,确定概要设计文档的详细程度和范围 - **收集参考资料**:收集相关技术资料、业界最佳实践和类似系统的设计文档作为参考 diff --git a/water_biz_system_architecture.md b/water_biz_system_architecture.md index 121909c..bd094ed 100644 --- a/water_biz_system_architecture.md +++ b/water_biz_system_architecture.md @@ -125,22 +125,57 @@ graph TD ### 2.1 服务端 - 操作系统:国产 Linux 操作系统 -- 数据库:国产 OpenGauss 数据库 -- 应用服务器:基于J2EE架构的应用服务器 -- 中间件:ESB企业服务总线,实现系统间的数据交换与共享 +- 数据库:MySQL/MariaDB数据库,支持国产OpenGauss数据库 +- 应用框架:基于RuoYi-Vue-Pro框架定制开发 + - 核心框架:Spring Boot 3.x,支持JDK 17/21 + - ORM框架:MyBatis Plus,增强的MyBatis + - 权限框架:Spring Security,基于RBAC的权限管理 + - 数据缓存:Redis + Redisson,高性能缓存和分布式锁 + - 工作流引擎:Flowable,灵活的工作流处理 + - 任务调度:基于Quartz的CRON任务调度 + - 服务监控:Spring Boot Admin、SkyWalking APM + - 消息队列:基于Redis的轻量级消息队列 + - 文档生成:Knife4j,基于Swagger的API文档生成 + - 代码生成:自动化CRUD和表单代码生成器 + - 多租户:基于字段隔离的SaaS多租户设计 ### 2.2 客户端 -- 操作系统:国产 Linux 操作系统、Windows 10 操作系统 -- 浏览器:兼容Chrome等主流浏览器 -- 移动端:支持Android系统 +- 前端框架:基于yudao-ui-admin-vue3框架定制开发 + - 核心框架:Vue 3.x + TypeScript + - 组件库:Element Plus,现代化UI组件 + - 状态管理:Pinia,新一代的Vue状态管理库 + - 路由管理:Vue Router + - HTTP工具:Axios,请求拦截与统一处理 + - CSS框架:Tailwind CSS / UnoCSS,原子化CSS + - 图表组件:ECharts,强大的可视化图表库 + - 富文本编辑器:WangEditor + - 文件上传:基于Element Plus的上传组件 + - 权限控制:细粒度的按钮级权限控制 + - 动态表格:支持拖拽、排序、筛选 + - 代码规范:ESLint + Prettier,标准化代码风格 +- 移动端: + - 核心框架:uni-app(跨平台) + - 组件库:uview-ui + - 小程序支持:微信小程序、支付宝小程序等 ### 2.3 技术特性 -- 单点登录:实现统一平台的单点登录功能 -- 数据交换:基于ESB的系统内部数据交换与共享 -- 统一报表平台:支持自定义报表设计与生成 +- 单点登录:OAuth2 + JWT实现统一认证 +- 数据交换:基于RESTful API的系统内部数据交换与共享 +- 统一报表平台:集成JimuReport,支持自定义报表设计与生成 +- 大屏设计:集成GoView,支持可视化大屏设计 - 安全保障:满足安全等保三级要求 -- 性能规格:支持200并发用户,50并发移动设备,系统响应时间不超过5秒 + - 密码加密:BCrypt加密算法 + - 防XSS攻击:表单数据过滤 + - 防SQL注入:参数化查询 + - 防CSRF攻击:Token验证 +- 性能规格:支持200并发用户,50并发移动设备,系统响应时间不超过3秒 - 扩展容量:支持100万客户的业务量,满足企业3-5年的业务发展需求 +- 支持功能: + - 支付管理:微信支付、支付宝支付等 + - 短信服务:阿里云、腾讯云等多家短信服务商 + - CRM功能:客户管理、销售管理、商机管理 + - ERP功能:采购管理、销售管理、库存管理 + - AI模块:集成AI大模型能力 ## 3. 应用架构