fujian_water_biz_doc/water_biz_system_architecture.md

382 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 福建水务营收系统架构概要设计
## 一、系统架构概述
福建水务营收系统采用现代化的分层架构设计基于RuoYi-Vue-Pro和yudao-ui-admin-vue3框架进行开发实现了前后端分离、模块化设计、微服务架构等技术特点提供了高性能、高可靠性、高安全性的水务营收管理解决方案。
## 二、总体架构设计
### 1. 系统架构图
```mermaid
graph TD
Client[客户端层] --> FrontEnd[前端应用层]
FrontEnd --> Gateway[网关层]
Gateway --> Application[应用服务层]
Application --> Infrastructure[基础设施层]
Application --> Database[(数据存储层)]
subgraph 客户端层
WebBrowser[Web浏览器]
MobileApp[移动应用]
WeChat[微信小程序]
end
subgraph 前端应用层
Vue3[Vue3前端框架]
ElementPlus[Element Plus组件库]
VueRouter[Vue Router]
Pinia[Pinia状态管理]
end
subgraph 网关层
SpringCloudGateway[Spring Cloud Gateway]
Auth[认证鉴权]
RateLimit[限流]
LoadBalance[负载均衡]
end
subgraph 应用服务层
UserModule[用户管理模块]
MeterModule[水表管理模块]
ReadingModule[抄表管理模块]
BillingModule[收费管理模块]
AccountModule[账务管理模块]
ReportModule[报表管理模块]
SystemModule[系统管理模块]
end
subgraph 基础设施层
Redis[(Redis缓存)]
MQ[消息队列]
Storage[文件存储]
Schedule[定时任务]
end
subgraph 数据存储层
MySQL[(MySQL数据库)]
MongoDB[(MongoDB)]
end
```
### 2. 技术架构描述
#### 2.1 前端技术架构
福建水务营收系统前端基于yudao-ui-admin-vue3框架开发主要技术组件包括
- **框架**Vue 3.x
- **UI组件库**Element Plus
- **路由管理**Vue Router 4.x
- **状态管理**Pinia
- **HTTP客户端**Axios
- **构建工具**Vite
- **代码规范**ESLint + Prettier
#### 2.2 后端技术架构
后端系统基于RuoYi-Vue-Pro框架开发主要技术组件包括
- **框架**Spring Boot 2.7.x
- **ORM框架**MyBatis Plus 3.5.x
- **权限框架**Spring Security
- **缓存**Redis
- **数据库**MySQL 8.0
- **消息队列**内置基于Redis的消息队列
- **文档**Swagger / Knife4j
- **工作流**Flowable
- **定时任务**基于XXLJOB的分布式任务调度
## 三、系统分层设计
### 1. 应用分层
```
+---------------------------+
| 表现层UI层 |
+---------------------------+
| 应用层API层 |
+---------------------------+
| 业务层Service层 |
+---------------------------+
| 数据访问层DAO层 |
+---------------------------+
| 数据持久层 |
+---------------------------+
```
- **表现层**:负责与用户的交互,包括页面展示、数据校验等
- **应用层**提供对外的API接口处理请求参数返回响应结果
- **业务层**:实现业务逻辑,处理业务规则和流程
- **数据访问层**提供数据访问接口进行数据CRUD操作
- **数据持久层**:负责数据的持久化存储
### 2. 模块划分
系统按照业务功能划分为以下核心模块:
```
+------------------------------------------+
| 系统共享模块 |
+------------------------------------------+
| 用户 | 水表 | 抄表 | 收费 | 账务 |
| 管理 | 管理 | 管理 | 管理 | 管理 |
+------------------------------------------+
| 票据 | 营业 | 报表 | 系统 | 集成 |
| 管理 | 网点 | 管理 | 管理 | 接口 |
+------------------------------------------+
| 基础设施模块 |
+------------------------------------------+
```
## 四、核心模块设计
### 1. 用户管理模块
负责系统用户的管理包括用户注册、认证、授权等功能。基于RBAC基于角色的访问控制模型设计支持细粒度的权限控制。
### 2. 水表管理模块
负责管理水表基础信息包括水表安装、更换、拆除、维修等生命周期管理支持普通水表、智能水表、IC卡水表等多种水表类型。
### 3. 抄表管理模块
负责水表读数的采集和管理,支持人工抄表、远传抄表、自报抄表等多种抄表方式,并提供异常数据处理、抄表任务分配等功能。
### 4. 收费管理模块
负责水费的计算、收取和管理,支持多种计费规则和阶梯水价,提供窗口收费、网上支付、银行代扣等多种缴费方式。
### 5. 账务管理模块
负责系统财务账务处理,包括收费入账、销账、退费、坏账处理等功能,与财务系统进行对接。
### 6. 票据管理模块
负责水费发票的开具、作废、查询等管理功能,支持电子发票和纸质发票。
### 7. 报表管理模块
提供系统各类统计报表,包括营收报表、抄表报表、用水分析报表等,支持多维度的数据分析和可视化展示。
### 8. 系统管理模块
提供系统基础管理功能,包括菜单管理、角色管理、权限管理、系统日志等。
## 五、数据库设计
### 1. 数据库架构
系统采用MySQL作为主要关系型数据库Redis作为缓存数据库。数据库设计遵循以下原则
- 采用分模块设计,各业务模块数据相对独立
- 合理使用索引,提高查询效率
- 使用存储过程处理复杂业务逻辑
- 采用适当的分表策略处理大数据量表
### 2. 主要数据实体
```mermaid
erDiagram
USER {
int id
string username
string password
int status
}
ROLE {
int id
string name
string code
}
CUSTOMER {
int id
string name
string address
string contact
int customer_type
}
METER {
int id
string meter_no
int meter_type
int status
float initial_reading
}
METER_READING {
int id
int meter_id
float reading
date reading_date
int reading_type
}
BILLING {
int id
int customer_id
int meter_id
float amount
date billing_date
int status
}
PAYMENT {
int id
int billing_id
float amount
date payment_date
int payment_method
}
USER ||--o{ ROLE : has
CUSTOMER ||--o{ METER : owns
METER ||--o{ METER_READING : generates
CUSTOMER ||--o{ BILLING : charged
BILLING ||--o{ PAYMENT : paid_by
```
## 六、接口设计
### 1. 外部接口
系统需要与以下外部系统进行集成:
- **银行支付系统**:提供水费代扣和支付功能
- **微信/支付宝支付**:提供移动端支付功能
- **税务发票系统**:对接电子发票开具功能
- **物联网平台**:对接智能水表数据采集功能
- **GIS地理信息系统**:提供地理位置服务
### 2. 内部接口
系统内部模块间通过RESTful API进行通信接口设计遵循以下原则
- 采用RESTful风格设计API
- 使用JWT进行接口认证
- 统一接口返回格式
- 接口版本控制
- 完善的接口文档
## 七、安全设计
### 1. 身份认证与授权
- 基于Spring Security实现身份认证
- 基于RBAC模型实现权限控制
- 支持OAuth2.0协议进行第三方授权
- 采用JWT实现无状态会话管理
### 2. 数据安全
- 敏感数据加密存储
- 数据库访问权限控制
- 数据备份与恢复策略
- 数据传输加密
### 3. 应用安全
- 防SQL注入
- 防XSS攻击
- 防CSRF攻击
- 接口防刷
## 八、高可用设计
### 1. 负载均衡
采用Nginx实现前端负载均衡提高系统的并发处理能力和可用性。
### 2. 缓存策略
- 采用多级缓存策略,包括本地缓存和分布式缓存
- 热点数据缓存
- 合理的缓存失效策略
### 3. 灾备设计
- 数据库主从复制
- 定期数据备份
- 服务器集群部署
## 九、扩展性设计
### 1. 水平扩展
- 应用服务无状态设计,支持水平扩展
- 数据库读写分离,支持多数据源
### 2. 垂直扩展
- 模块化设计,支持功能独立扩展
- 插件化架构,支持新功能便捷集成
## 十、部署架构
### 1. 部署拓扑图
```mermaid
graph TD
subgraph 生产环境
LB[负载均衡] --> WS1[Web服务器1]
LB --> WS2[Web服务器2]
WS1 --> AS1[应用服务器1]
WS2 --> AS2[应用服务器2]
AS1 --> DB[(主数据库)]
AS2 --> DB
DB --> SDB[(从数据库)]
end
subgraph 灾备环境
DLB[负载均衡] --> DWS[Web服务器]
DWS --> DAS[应用服务器]
DAS --> DDB[(灾备数据库)]
end
DB -.-> DDB
```
### 2. 服务器配置要求
| 服务器类型 | 配置要求 | 数量 |
|---------|---------|-----|
| Web服务器 | 8核16G内存100G SSD | 2 |
| 应用服务器 | 16核32G内存200G SSD | 2 |
| 数据库服务器 | 16核64G内存500G SSDRAID 10 | 2 |
| 文件服务器 | 8核16G内存2T存储 | 1 |
## 十一、开发与运维策略
### 1. 开发规范
- 统一的编码规范
- 代码审查机制
- 自动化测试
- 持续集成/持续部署(CI/CD)
### 2. 监控策略
- 系统性能监控
- 业务指标监控
- 异常监控与告警
- 用户行为分析
### 3. 运维工具
- 日志收集与分析工具
- 性能监控工具
- 部署自动化工具
- 数据库运维工具
## 十二、风险与应对策略
| 风险类型 | 风险描述 | 应对策略 |
|---------|---------|---------|
| 性能风险 | 高并发场景下系统性能下降 | 性能测试、缓存优化、数据库优化 |
| 安全风险 | 数据泄露、非授权访问 | 安全审计、加密措施、权限控制 |
| 可靠性风险 | 系统故障、数据丢失 | 高可用架构、数据备份、故障演练 |
| 兼容性风险 | 浏览器兼容性问题 | 兼容性测试、渐进增强设计 |
| 扩展性风险 | 业务增长导致系统扩展困难 | 模块化设计、松耦合架构 |