382 lines
10 KiB
Markdown
382 lines
10 KiB
Markdown
# 福建水务营收系统架构概要设计
|
||
|
||
## 一、系统架构概述
|
||
|
||
福建水务营收系统采用现代化的分层架构设计,基于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 SSD,RAID 10 | 2 |
|
||
| 文件服务器 | 8核16G内存,2T存储 | 1 |
|
||
|
||
## 十一、开发与运维策略
|
||
|
||
### 1. 开发规范
|
||
|
||
- 统一的编码规范
|
||
- 代码审查机制
|
||
- 自动化测试
|
||
- 持续集成/持续部署(CI/CD)
|
||
|
||
### 2. 监控策略
|
||
|
||
- 系统性能监控
|
||
- 业务指标监控
|
||
- 异常监控与告警
|
||
- 用户行为分析
|
||
|
||
### 3. 运维工具
|
||
|
||
- 日志收集与分析工具
|
||
- 性能监控工具
|
||
- 部署自动化工具
|
||
- 数据库运维工具
|
||
|
||
## 十二、风险与应对策略
|
||
|
||
| 风险类型 | 风险描述 | 应对策略 |
|
||
|---------|---------|---------|
|
||
| 性能风险 | 高并发场景下系统性能下降 | 性能测试、缓存优化、数据库优化 |
|
||
| 安全风险 | 数据泄露、非授权访问 | 安全审计、加密措施、权限控制 |
|
||
| 可靠性风险 | 系统故障、数据丢失 | 高可用架构、数据备份、故障演练 |
|
||
| 兼容性风险 | 浏览器兼容性问题 | 兼容性测试、渐进增强设计 |
|
||
| 扩展性风险 | 业务增长导致系统扩展困难 | 模块化设计、松耦合架构 | |