系统架构图.md
26.1 KB
HC小区管理系统 - 系统架构图
一、系统概述
HC小区管理系统是一套SaaS物业管理平台,包含房产管理、业主管理、费用收缴(支持线上缴费)、报修管理、投诉建议、采购、巡检、停车、门禁、道闸、监控、工作流、问卷、公告等功能。
技术栈:Spring Boot 2.0.4 + Spring Cloud + MyBatis + MySQL + Redis + Feign
核心设计理念:命令驱动架构(Command-Driven Architecture)
二、系统整体架构图
┌─────────────────────────────────────────────────────────────────────────────┐
│ 客户端层 (Client Layer) │
├──────────────┬──────────────┬──────────────┬──────────────┬──────────────────┤
│ PC物业后台 │ 业主手机端 │ 物业手机端 │ 第三方系统 │ IoT设备 │
│ (Vue/React) │ (微信小程序) │ (App) │ (API调用) │ (门禁/道闸/充电桩) │
└──────┬───────┴──────┬───────┴──────┬───────┴──────┬───────┴──────┬───────────┘
│ │ │ │ │
└──────────────┴──────────────┴──────────────┴──────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 网关层 (Gateway Layer) │
│ service-api (统一入口) │
│ ┌──────────────┬──────────────┬──────────────┬──────────────┬─────────────┐ │
│ │ JWT认证过滤 │ 请求路由分发 │ Swagger文档 │ WebSocket │ 负载均衡 │ │
│ │ JwtFilter │ RestApi │ API文档自动生成│ 实时消息推送 │ Ribbon │ │
│ └──────────────┴──────────────┴──────────────┴──────────────┴─────────────┘ │
└────────────────────────────────┬────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 服务注册中心 (Registry) │
│ service-eureka │
│ ┌──────────────────────────────┐ │
│ │ 服务注册 / 服务发现 / 健康检查 │ │
│ └──────────────────────────────┘ │
└────────────────────────────────┬────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 核心业务服务层 (Business Service Layer) │
├────────┬─────────┬─────────┬─────────┬──────────┬─────────┬────────┬────────┤
│用户服务 │社区服务 │费用服务 │订单服务 │ 账户服务 │商户服务 │通用服务 │OA服务 │
│service- │service- │service- │service- │service- │service- │service-│service-│
│user │community│fee │order │acct │store │common │oa │
│26个模块 │651文件 │23个模块 │事件驱动 │20个模块 │186命令 │35命令 │工作流 │
├─────────┼─────────┼─────────┼─────────┼──────────┼─────────┼────────┼────────┤
│报表服务 │任务调度 │开发服务 │供应链 │ │ │ │ │
│service- │service- │service- │service- │ │ │ │ │
│report │job │dev │scm │ │ │ │ │
│86命令 │34命令 │ │ │ │ │ │ │
└─────────┴─────────┴─────────┴─────────┴──────────┴─────────┴────────┴────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 核心基础框架层 (Core Framework Layer) │
├──────────────┬──────────────┬──────────────┬──────────────┬──────────────────┤
│ java110-core │ java110-bean │java110- │ java110-db │ java110-utils │
│ 核心框架 │ 数据实体(DTO │interface │ 数据库操作层 │ 工具类库 │
│ • 注解系统 │ /PO/VO) │ Feign接口定义 │ MyBatis映射 │ 通用工具函数 │
│ • AOP切面 │ │ (584个接口) │ │ │
│ • 缓存管理 │ │ │ │ │
│ • 事件机制 │ │ │ │ │
│ • 代理模式 │ │ │ │ │
└──────────────┴──────────────┴──────────────┴──────────────┴──────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 基础设施层 (Infrastructure Layer) │
├────────────────┬────────────────┬────────────────┬───────────────────────────┤
│ MySQL 8.0 │ Redis 缓存 │ FTP文件存储 │ 阿里云/腾讯云 OSS │
│ 主数据库 │ 会话/数据缓存 │ 图片/文件 │ 云端存储 │
└────────────────┴────────────────┴────────────────┴───────────────────────────┘
三、命令驱动架构流程
┌──────────────────────────────┐
│ 客户端发起请求 │
│ POST /app/{serviceCode} │
│ {reqData: ...} │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ 请求接收阶段 │
│ AppController (service-api) │
│ - 解析 serviceCode │
│ - 参数校验 │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ 权限验证阶段 │
│ IPrivilegeSMO │
│ - JWT Token校验 │
│ - 白名单放行 │
│ - 权限检查 │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ 服务分发阶段 │
│ IApiSMO → ApiSMOImpl │
│ - serviceCode路由到目标服务 │
│ - Feign远程调用 │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ 业务处理阶段 │
│ @Java110Cmd 命令类 │
│ validate() → 参数验证 │
│ doCmd() → 业务逻辑 │
│ @Java110Transactional 事务 │
└──────────────┬───────────────┘
│
▼
┌──────────────────────────────┐
│ 响应返回阶段 │
│ ResultVo 统一响应封装 │
│ {code, msg, data} │
└──────────────────────────────┘
四、模块分层架构
┌──────────────────────────────────────────────────────────┐
│ api/ (API接口层) │
│ 对外提供 RESTful 接口,接收HTTP请求 │
├──────────────────────────────────────────────────────────┤
│ cmd/ (命令处理层) ★核心★ │
│ 每个 @Java110Cmd 注解的命令类对应一个业务操作 │
│ - validate(): 参数校验 │
│ - doCmd(): 业务逻辑执行 │
├──────────────────────────────────────────────────────────┤
│ bmo/ (业务模型对象层) │
│ 封装复杂业务逻辑,可跨模块复用 │
├──────────────────────────────────────────────────────────┤
│ smo/ (服务管理对象层) │
│ 服务编排、调度管理、第三方服务集成 │
├──────────────────────────────────────────────────────────┤
│ dao/ (数据访问层) │
│ MyBatis Mapper,数据库CRUD操作 │
├──────────────────────────────────────────────────────────┤
│ MySQL / Redis / FTP / OSS │
│ 数据存储层 │
└──────────────────────────────────────────────────────────┘
五、服务间通信架构
┌─────────────────────┐
│ service-eureka │
│ 服务注册中心 │
└─────┬───────┬───────┘
│ │
┌───────────────┘ └───────────────┐
▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ 服务消费者 │ Feign调用 │ 服务提供者 │
│ @EnableFeignClients │◄─────────────►│ @RestController │
│ │ │ │
│ IUserInnerServiceSMO│ HTTP/REST │ UserApi.java │
│ IFeeInnerServiceSMO │ │ FeeApi.java │
│ ... (584 interfaces)│ │ ... │
└──────────────────────┘ └──────────────────────┘
接口定义模块: java110-interface (独立jar包)
- 所有微服务共享的 Feign 客户端接口定义
- FeignConfiguration: 统一配置(编解码、日志级别)
- UserErrorDecoder: 统一异常处理
六、双模式部署架构
┌─────────────────────────────────────────────┐
│ Spring Boot 单体模式 │
│ │
│ springboot 模块统一启动所有业务服务 │
│ ┌─────────────────────────────────────┐ │
│ │ BootApplicationStart │ │
│ │ @SpringBootApplication │ │
│ │ scanBasePackages = { │ │
│ │ service-user, service-community, │ │
│ │ service-fee, service-order, │ │
│ │ service-acct, service-store, │ │
│ │ service-common, service-report, │ │
│ │ service-oa, service-job, │ │
│ │ service-dev, service-scm │ │
│ │ } │ │
│ └─────────────────────────────────────┘ │
│ 适用: 开发环境 / 小型部署 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Spring Cloud 微服务模式 │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │service- │ │service- │ │service- │ │
│ │user:8001 │ │fee:8002 │ │community:│ │
│ │ │ │ │ │8003 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │service- │ │service- │ │ ... │ │
│ │order:8004│ │acct:8005 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ↑ 服务注册 ↑ 服务发现 ↑ │
│ └─────────┬─────────┘ │
│ service-eureka │
│ │
│ 适用: 生产环境 / 大规模部署 │
└─────────────────────────────────────────────┘
七、数据流转架构(DTO/PO/VO)
┌────────────────────────────────────────────────────────────────┐
│ 数据流转示意图 │
│ │
│ 数据库 ◄──► PO对象 ◄──► DAO层 ◄──► BMO/SMO层 ◄──► DTO对象 │
│ (MySQL) (持久化) (MyBatis) (业务逻辑) (数据传输) │
│ │
│ ┌──────────────┐ │
│ DTO对象 ──转换──► │ VO对象 │ │
│ │ (视图对象) │ │
│ │ ResultVo │ │
│ └──────┬───────┘ │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ 前端展示 │ │
│ │ (过滤敏感字段) │ │
│ └──────────────┘ │
│ │
│ 数据对象职责: │
│ • PO (Persistent Object) - 与数据库表字段一一对应, 用于增删改 │
│ • DTO (Data Transfer Object) - 数据传输对象, 用于复杂查询 │
│ • VO (View Object) - 视图对象, 用于前端返回, 控制数据安全 │
└────────────────────────────────────────────────────────────────┘
八、核心模块依赖关系
┌─────────────┐
│ pom.xml │
│ (父POM) │
│ Spring Boot │
│ 2.0.4 │
└──────┬──────┘
│
┌────────────────────┼────────────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ java110-bean│ │ java110- │ │ java110- │
│ 数据实体模块 │ │ utils │ │ core │
└──────┬──────┘ │ 工具模块 │ │ 核心框架模块 │
│ └──────┬──────┘ └──────┬──────┘
│ │ │
└────────────────────┼────────────────────┘
│
┌─────────────────┼─────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ java110- │ │ java110- │ │ java110-db │
│ service │ │ interface │ │ 数据库模块 │
│ 服务基类模块 │ │ Feign接口模块 │ └──────┬───────┘
└──────┬───────┘ └──────┬───────┘ │
│ │ │
└─────────┬───────┘ │
│ │
▼ ▼
┌────────────────────────────────────────────────┐
│ 12个业务微服务模块 │
│ service-user / service-community / service-fee │
│ service-order / service-acct / service-store │
│ service-common / service-report / service-oa │
│ service-job / service-dev / service-scm │
└────────────────────┬───────────────────────────┘
│
▼
┌─────────────────────┐
│ springboot │
│ 统一启动模块(可选) │
└─────────────────────┘
九、技术组件一览
| 分类 | 技术组件 | 用途 |
|---|---|---|
| 核心框架 | Spring Boot 2.0.4 | 应用基础框架 |
| 微服务 | Spring Cloud, Eureka, Feign | 服务治理、远程调用 |
| 数据持久化 | MyBatis 3.5.6, Druid 1.1.10 | ORM、连接池 |
| 数据库 | MySQL 8.0.16 | 主数据存储 |
| 缓存 | Redis (Spring Cache) | 数据缓存、Session |
| API文档 | Swagger 2.5.0 | 在线API文档 |
| 工作流 | Activiti 6.0.0 | 流程引擎 |
| 任务调度 | Quartz | 定时任务 |
| 支付 | 微信支付、支付宝、银联 | 线上缴费 |
| 云服务 | 阿里云OSS、腾讯云SDK | 文件存储、云服务 |
| 物联网 | 自研IoT协议 | 门禁、道闸、充电桩 |
| 日志 | SLF4J + Logback 1.2.9 | 日志框架 |
| 序列化 | FastJSON (Alibaba) | JSON处理 |
| 安全 | JWT Token | 认证授权 |
| 构建工具 | Maven 3.6+ | 项目构建 |
文档版本: v1.0
生成日期: 2026年
项目地址: https://gitee.com/wuxw7/MicroCommunity