10 KiB
10 KiB
福建水务营收系统架构概要设计
一、系统架构概述
福建水务营收系统采用现代化的分层架构设计,基于RuoYi-Vue-Pro和yudao-ui-admin-vue3框架进行开发,实现了前后端分离、模块化设计、微服务架构等技术特点,提供了高性能、高可靠性、高安全性的水务营收管理解决方案。
二、总体架构设计
1. 系统架构图
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. 主要数据实体
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. 部署拓扑图
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. 运维工具
- 日志收集与分析工具
- 性能监控工具
- 部署自动化工具
- 数据库运维工具
十二、风险与应对策略
| 风险类型 | 风险描述 | 应对策略 |
|---|---|---|
| 性能风险 | 高并发场景下系统性能下降 | 性能测试、缓存优化、数据库优化 |
| 安全风险 | 数据泄露、非授权访问 | 安全审计、加密措施、权限控制 |
| 可靠性风险 | 系统故障、数据丢失 | 高可用架构、数据备份、故障演练 |
| 兼容性风险 | 浏览器兼容性问题 | 兼容性测试、渐进增强设计 |
| 扩展性风险 | 业务增长导致系统扩展困难 | 模块化设计、松耦合架构 |