fujian_water_biz_doc/water_biz_system_architecture.md

10 KiB
Raw Blame History

福建水务营收系统架构概要设计

一、系统架构概述

福建水务营收系统采用现代化的分层架构设计基于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 SSDRAID 10 2
文件服务器 8核16G内存2T存储 1

十一、开发与运维策略

1. 开发规范

  • 统一的编码规范
  • 代码审查机制
  • 自动化测试
  • 持续集成/持续部署(CI/CD)

2. 监控策略

  • 系统性能监控
  • 业务指标监控
  • 异常监控与告警
  • 用户行为分析

3. 运维工具

  • 日志收集与分析工具
  • 性能监控工具
  • 部署自动化工具
  • 数据库运维工具

十二、风险与应对策略

风险类型 风险描述 应对策略
性能风险 高并发场景下系统性能下降 性能测试、缓存优化、数据库优化
安全风险 数据泄露、非授权访问 安全审计、加密措施、权限控制
可靠性风险 系统故障、数据丢失 高可用架构、数据备份、故障演练
兼容性风险 浏览器兼容性问题 兼容性测试、渐进增强设计
扩展性风险 业务增长导致系统扩展困难 模块化设计、松耦合架构