系统架构图.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