本文档详细描述了房地产专家评估系统的整体架构设计,包括技术架构、模块架构、部署架构等,为系统的开发、维护和扩展提供指导。
房地产专家评估系统是一个基于Spring Boot的建筑工程安全风险评估平台,采用微服务架构设计,支持综合体系评估和设备体系评估两种评估模式。
系统采用分层架构模式,结合领域驱动设计(DDD)思想,确保代码的可维护性和可扩展性。
graph TB
subgraph "表现层 (Presentation Layer)"
A[Controller Layer]
B[API Gateway]
C[Web Security]
end
subgraph "业务层 (Business Layer)"
D[Service Layer]
E[Domain Logic]
F[Business Rules]
end
subgraph "数据层 (Data Layer)"
G[Repository Layer]
H[Entity Layer]
I[Database Layer]
end
A --> D
B --> D
C --> D
D --> G
E --> G
F --> G
G --> H
H --> I
graph TD
A[estate-expert-backend] --> B[common-lib]
A --> C[admin-server]
subgraph "common-lib - 公共库模块"
B1[auth - 认证授权]
B2[config - 配置管理]
B3[context - 上下文管理]
B4[domain - 领域对象]
B5[enums - 枚举定义]
end
subgraph "admin-server - 管理服务模块"
C1[component - 组件层]
C2[config - 配置类]
C3[controller - 控制器层]
C4[domain - 领域模型]
C5[service - 服务层]
C6[MainApplication.java - 启动类]
end
B --> B1
B --> B2
B --> B3
B --> B4
B --> B5
C --> C1
C --> C2
C --> C3
C --> C4
C --> C5
C --> C6
graph TD
A[admin-server] --> B[domain - 领域模型]
A --> C[service - 服务层]
A --> D[controller - 控制器层]
subgraph "domain - 领域模型"
B1[business - 业务实体]
B2[exam - 考试评估]
B3[plan - 计划管理]
B4[project - 项目管理]
B5[standard - 标准体系]
B6[user - 用户管理]
end
subgraph "business - 业务实体"
B11[client - 委托方]
B12[device - 设备管理]
B13[car - 车辆管理]
B14[sign - 签名记录]
end
subgraph "exam - 考试评估"
B21[eval - 评估结果]
B22[record - 记录管理]
B23[task - 任务管理]
end
subgraph "standard - 标准体系"
B51[expert - 专家管理]
B52[hierarchy - 层级管理]
B53[model - 模型管理]
B54[problem - 问题管理]
end
subgraph "service - 服务层"
C1[eval - 评估服务]
C2[expert - 专家服务]
C3[impl - 服务实现]
end
subgraph "controller - 控制器层"
D1[admin - 管理接口]
D2[api - API接口]
end
B --> B1
B --> B2
B --> B3
B --> B4
B --> B5
B --> B6
B1 --> B11
B1 --> B12
B1 --> B13
B1 --> B14
B2 --> B21
B2 --> B22
B2 --> B23
B5 --> B51
B5 --> B52
B5 --> B53
B5 --> B54
C --> C1
C --> C2
C --> C3
D --> D1
D --> D2
graph TB
subgraph "前端层"
A[Web Browser]
B[Vue.js/React]
end
subgraph "网关层"
C[Nginx]
D[Load Balancer]
end
subgraph "应用层"
E[Spring Boot]
F[Tomcat Embedded]
end
subgraph "业务层"
G[Service Layer]
H[Domain Layer]
I[Repository Layer]
end
subgraph "数据层"
J[MySQL 8.0]
K[JPA/Hibernate]
end
subgraph "外部服务"
L[高德地图API]
M[模糊评估API]
end
A --> C
B --> C
C --> D
D --> E
E --> F
F --> G
G --> H
H --> I
I --> K
K --> J
G --> L
G --> M
sequenceDiagram
participant U as 用户
participant N as Nginx
participant A as Spring Boot
participant S as Service
participant R as Repository
participant D as Database
participant E as 外部API
U->>N: HTTP请求
N->>A: 转发请求
A->>S: 业务处理
S->>R: 数据访问
R->>D: SQL查询
D-->>R: 返回数据
R-->>S: 实体对象
S->>E: 调用外部API
E-->>S: API响应
S-->>A: 业务结果
A-->>N: JSON响应
N-->>U: HTTP响应
graph TB
subgraph "负载均衡层"
LB[Load Balancer]
end
subgraph "Web服务器层"
N1[Nginx Server 1]
N2[Nginx Server 2]
end
subgraph "应用服务器层"
A1[Spring Boot App 1<br/>Port: 8181]
A2[Spring Boot App 2<br/>Port: 8182]
end
subgraph "数据库层"
DB[(MySQL 8.0<br/>Port: 3306)]
end
subgraph "外部服务"
MAP[高德地图API]
FUZZY[模糊评估API<br/>Port: 5000]
end
LB --> N1
LB --> N2
N1 --> A1
N2 --> A2
A1 --> DB
A2 --> DB
A1 --> MAP
A1 --> FUZZY
A2 --> MAP
A2 --> FUZZY
sequenceDiagram
participant C as 客户端
participant G as Gateway
participant A as Auth Service
participant U as User Service
participant D as Database
C->>G: 登录请求
G->>A: 验证用户
A->>U: 查询用户信息
U->>D: 用户数据查询
D-->>U: 用户信息
U-->>A: 用户详情
A->>A: 生成JWT Token
A-->>G: 返回Token
G-->>C: 登录成功
Note over C,D: 后续请求携带Token
C->>G: API请求 + Token
G->>A: 验证Token
A-->>G: Token有效
G->>G: 转发请求
G-->>C: API响应
graph TD
A[系统启动] --> B[读取License配置]
B --> C[解密License]
C --> D[验证签名]
D --> E{签名有效?}
E -->|否| F[系统停止]
E -->|是| G[检查过期时间]
G --> H{是否过期?}
H -->|是| I[系统停止]
H -->|否| J[系统正常运行]
J --> K[定期检查License]
K --> G