上传源代码版本
This commit is contained in:
309
SystemFlowDocument.md
Normal file
309
SystemFlowDocument.md
Normal file
@@ -0,0 +1,309 @@
|
||||
# 标签替换服务系统流程文档
|
||||
|
||||
## 1. 流程概述
|
||||
|
||||
本文档描述了标签替换服务系统的核心业务流程,包括标签替换请求处理流程、Excel数据导入流程和物流消息解析流程。通过流程图和详细步骤说明,帮助开发人员和用户理解系统的工作原理。
|
||||
|
||||
## 2. 系统核心流程
|
||||
|
||||
### 2.1 标签替换请求处理流程
|
||||
|
||||
#### 2.1.1 流程概述
|
||||
此流程描述了系统处理标签替换请求的完整过程,从接收请求到返回结果的所有步骤。
|
||||
|
||||
#### 2.1.2 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[接收标签替换请求] --> B[验证请求参数]
|
||||
B -->|参数无效| C[返回错误响应]
|
||||
B -->|参数有效| D[验证API权限]
|
||||
D -->|权限验证失败| E[返回401错误]
|
||||
D -->|权限验证成功| F[执行标签替换操作]
|
||||
F --> G[保存操作记录]
|
||||
G --> H[返回成功响应]
|
||||
```
|
||||
|
||||
#### 2.1.3 详细步骤
|
||||
|
||||
1. **接收标签替换请求**
|
||||
- 客户端发送POST请求到`/api/Tag/label-replace`接口
|
||||
- 接口接收请求头中的`customer_code`和`api_key`进行身份验证
|
||||
- 请求体包含标签替换所需的各项参数
|
||||
|
||||
2. **验证请求参数**
|
||||
- 检查请求体是否为空
|
||||
- 验证必填字段`NeutralWaybillNumber`是否存在且有效
|
||||
- 检查其他字段的数据格式是否符合要求
|
||||
|
||||
3. **验证API权限**
|
||||
- 使用请求头中的`customer_code`和`api_key`查询数据库
|
||||
- 验证API密钥是否有效
|
||||
- 检查API密钥是否过期
|
||||
- 验证客户是否有权限执行标签替换操作
|
||||
|
||||
4. **执行标签替换操作**
|
||||
- 根据请求参数构建标签替换请求
|
||||
- 处理标签内容(如base64解码等)
|
||||
- 执行标签替换逻辑
|
||||
|
||||
5. **保存操作记录**
|
||||
- 将操作记录保存到数据库的`label_replace_requests`表
|
||||
- 记录操作时间、操作人员、操作结果等信息
|
||||
|
||||
6. **返回响应**
|
||||
- 根据操作结果返回相应的HTTP状态码
|
||||
- 返回操作结果的详细信息
|
||||
|
||||
### 2.2 Excel数据导入流程
|
||||
|
||||
#### 2.2.1 流程概述
|
||||
此流程描述了系统处理Excel数据导入的完整过程,包括文件上传、数据解析、验证和保存。
|
||||
|
||||
#### 2.2.2 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[接收Excel文件] --> B[验证文件格式]
|
||||
B -->|格式无效| C[返回错误响应]
|
||||
B -->|格式有效| D[解析文件内容]
|
||||
D --> E[验证数据格式]
|
||||
E -->|数据无效| F[返回错误信息]
|
||||
E -->|数据有效| G[处理数据逻辑]
|
||||
G --> H[保存到数据库]
|
||||
H --> I[返回导入结果]
|
||||
```
|
||||
|
||||
#### 2.2.3 详细步骤
|
||||
|
||||
1. **接收Excel文件**
|
||||
- 客户端通过API上传Excel文件
|
||||
- 系统接收文件并进行初步处理
|
||||
|
||||
2. **验证文件格式**
|
||||
- 检查文件是否为有效的Excel文件
|
||||
- 验证文件大小是否在限制范围内
|
||||
- 检查文件扩展名是否正确
|
||||
|
||||
3. **解析文件内容**
|
||||
- 使用EPPlus库解析Excel文件
|
||||
- 读取工作表数据
|
||||
- 转换为系统内部数据结构
|
||||
|
||||
4. **验证数据格式**
|
||||
- 检查数据是否符合预设的格式要求
|
||||
- 验证必填字段是否存在
|
||||
- 检查数据类型是否正确
|
||||
|
||||
5. **处理数据逻辑**
|
||||
- 根据业务规则处理数据
|
||||
- 执行必要的数据转换
|
||||
- 处理数据间的关联关系
|
||||
|
||||
6. **保存到数据库**
|
||||
- 将处理后的数据批量保存到数据库
|
||||
- 处理可能的数据库异常
|
||||
|
||||
7. **返回导入结果**
|
||||
- 返回导入成功或失败的信息
|
||||
- 如果失败,返回详细的错误信息
|
||||
- 如果成功,返回导入的数据量统计
|
||||
|
||||
### 2.3 物流消息解析流程
|
||||
|
||||
#### 2.3.1 流程概述
|
||||
此流程描述了系统解析物流接口消息的完整过程,包括消息接收、解析、验证和结果返回。
|
||||
|
||||
#### 2.3.2 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[接收物流消息] --> B[验证消息格式]
|
||||
B -->|格式无效| C[返回错误响应]
|
||||
B -->|格式有效| D[根据请求类型选择解析器]
|
||||
D --> E[解析消息内容]
|
||||
E --> F[验证解析结果]
|
||||
F -->|解析失败| G[返回错误信息]
|
||||
F -->|解析成功| H[保存解析结果]
|
||||
H --> I[返回解析结果]
|
||||
```
|
||||
|
||||
#### 2.3.3 详细步骤
|
||||
|
||||
1. **接收物流消息**
|
||||
- 客户端发送POST请求到`/api/Tag/logistics-parse`接口
|
||||
- 请求体包含物流接口消息内容和请求类型
|
||||
|
||||
2. **验证消息格式**
|
||||
- 检查请求体是否为空
|
||||
- 验证`LogisticsInterface`字段是否存在且有效
|
||||
- 检查`RequestType`字段是否有效
|
||||
|
||||
3. **根据请求类型选择解析器**
|
||||
- 根据`RequestType`字段选择对应的解析器
|
||||
- 初始化解析器实例
|
||||
|
||||
4. **解析消息内容**
|
||||
- 使用选定的解析器解析物流消息
|
||||
- 提取关键信息
|
||||
- 转换为统一的数据格式
|
||||
|
||||
5. **验证解析结果**
|
||||
- 检查解析结果是否符合预期格式
|
||||
- 验证必填字段是否存在
|
||||
- 检查数据的完整性
|
||||
|
||||
6. **保存解析结果**
|
||||
- 将解析结果保存到数据库
|
||||
- 记录解析时间、请求类型等信息
|
||||
|
||||
7. **返回解析结果**
|
||||
- 返回解析成功或失败的信息
|
||||
- 如果成功,返回解析后的结构化数据
|
||||
|
||||
## 3. 系统交互流程
|
||||
|
||||
### 3.1 客户端与服务器交互流程
|
||||
|
||||
#### 3.1.1 流程图
|
||||
|
||||
```mermaid
|
||||
sequenceDiagram
|
||||
participant Client as 客户端
|
||||
participant API as API层
|
||||
participant BLL as 业务逻辑层
|
||||
participant DAL as 数据访问层
|
||||
participant DB as 数据库
|
||||
|
||||
Client->>API: 发送API请求
|
||||
API->>API: 验证请求格式
|
||||
API->>BLL: 调用业务逻辑
|
||||
BLL->>DAL: 访问数据
|
||||
DAL->>DB: 执行数据库操作
|
||||
DB-->>DAL: 返回数据
|
||||
DAL-->>BLL: 返回结果
|
||||
BLL-->>API: 返回业务处理结果
|
||||
API-->>Client: 返回响应
|
||||
```
|
||||
|
||||
#### 3.1.2 详细步骤
|
||||
|
||||
1. **客户端发送请求**
|
||||
- 客户端根据接口文档构建请求
|
||||
- 设置请求头和请求体
|
||||
- 发送HTTP请求到服务器
|
||||
|
||||
2. **API层接收请求**
|
||||
- API层接收客户端请求
|
||||
- 验证请求格式和参数
|
||||
- 记录请求日志
|
||||
|
||||
3. **调用业务逻辑**
|
||||
- API层调用BLL层的相应服务
|
||||
- 传递处理所需的参数
|
||||
|
||||
4. **数据访问**
|
||||
- BLL层根据业务需求调用DAL层
|
||||
- DAL层执行数据库操作
|
||||
|
||||
5. **返回结果**
|
||||
- 数据库返回查询结果
|
||||
- DAL层将结果传递给BLL层
|
||||
- BLL层处理业务逻辑并返回结果
|
||||
- API层构建响应并返回给客户端
|
||||
|
||||
## 4. 异常处理流程
|
||||
|
||||
### 4.1 异常处理概述
|
||||
|
||||
系统采用统一的异常处理机制,对各类异常进行捕获、记录和处理,确保系统的稳定性和可靠性。
|
||||
|
||||
### 4.2 异常处理流程
|
||||
|
||||
#### 4.2.1 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[发生异常] --> B[捕获异常]
|
||||
B --> C[记录异常日志]
|
||||
C --> D[分析异常类型]
|
||||
D -->|业务异常| E[返回业务错误信息]
|
||||
D -->|系统异常| F[返回系统错误信息]
|
||||
D -->|权限异常| G[返回401错误]
|
||||
```
|
||||
|
||||
#### 4.2.2 详细步骤
|
||||
|
||||
1. **发生异常**
|
||||
- 系统在执行过程中遇到错误
|
||||
- 可能是业务逻辑错误、数据访问错误或系统级错误
|
||||
|
||||
2. **捕获异常**
|
||||
- 使用try-catch语句捕获异常
|
||||
- 确保异常不会导致系统崩溃
|
||||
|
||||
3. **记录异常日志**
|
||||
- 将异常信息记录到日志文件
|
||||
- 包括异常类型、错误消息、堆栈跟踪等
|
||||
- 记录异常发生的时间、位置和上下文信息
|
||||
|
||||
4. **分析异常类型**
|
||||
- 识别异常的类型和原因
|
||||
- 区分业务异常、系统异常和权限异常
|
||||
|
||||
5. **返回错误响应**
|
||||
- 根据异常类型返回相应的HTTP状态码
|
||||
- 返回详细的错误信息
|
||||
- 对于业务异常,返回具体的错误原因
|
||||
- 对于系统异常,返回通用的错误信息
|
||||
|
||||
## 5. 日志记录流程
|
||||
|
||||
### 5.1 日志记录概述
|
||||
|
||||
系统使用Serilog框架进行日志记录,记录系统运行过程中的各种事件和操作,便于问题排查和系统监控。
|
||||
|
||||
### 5.2 日志记录流程
|
||||
|
||||
#### 5.2.1 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[系统事件发生] --> B[生成日志信息]
|
||||
B --> C[确定日志级别]
|
||||
C --> D[格式化日志内容]
|
||||
D --> E[写入日志文件]
|
||||
E --> F[定期清理旧日志]
|
||||
```
|
||||
|
||||
#### 5.2.2 详细步骤
|
||||
|
||||
1. **系统事件发生**
|
||||
- 系统执行各类操作和处理
|
||||
- 产生需要记录的事件
|
||||
|
||||
2. **生成日志信息**
|
||||
- 收集事件相关的信息
|
||||
- 包括时间、位置、事件类型等
|
||||
|
||||
3. **确定日志级别**
|
||||
- 根据事件的严重程度确定日志级别
|
||||
- 包括Debug、Info、Warning、Error、Fatal等
|
||||
|
||||
4. **格式化日志内容**
|
||||
- 使用统一的格式格式化日志内容
|
||||
- 包括时间戳、日志级别、来源、消息内容等
|
||||
|
||||
5. **写入日志文件**
|
||||
- 将格式化后的日志写入日志文件
|
||||
- 日志文件按天滚动,确保日志文件不会过大
|
||||
|
||||
6. **定期清理旧日志**
|
||||
- 根据配置定期清理旧日志文件
|
||||
- 保留指定天数的日志记录
|
||||
|
||||
## 6. 文档版本控制
|
||||
|
||||
| 版本 | 更新日期 | 更新内容 | 更新人 |
|
||||
|------|----------|----------|--------|
|
||||
| 1.0 | 2026-01-16 | 初始版本 | 系统流程团队 |
|
||||
Reference in New Issue
Block a user