上传源代码版本

This commit is contained in:
Im-Jenisson
2026-06-01 16:30:29 +08:00
commit b2a9b7d3c2
462 changed files with 104365 additions and 0 deletions

View File

@@ -0,0 +1,257 @@
# 标签替换服务系统设计文档
## 1. 系统概述
### 1.1 系统简介
标签替换服务系统是一个基于.NET Core的后台服务主要用于处理物流标签的替换请求。系统支持多种数据格式的导入和处理提供API接口供外部系统调用并具备完善的日志记录和错误处理机制。
### 1.2 系统功能
- 标签替换请求处理
- Excel数据导入
- 物流数据解析
- 标签验证与处理
- API接口服务
- 日志记录与监控
- 标签扫描记录管理
## 2. 架构设计
### 2.1 分层架构
系统采用经典的分层架构设计,各层之间通过接口进行通信,实现了高内聚、低耦合的设计目标。
```
+---------------------+
| CONTROLLER层 |
| (API接口层) |
+---------------------+
|
+---------------------+
| BLL层 |
| (业务逻辑层) |
+---------------------+
|
+---------------------+
| DAL层 |
| (数据访问层) |
+---------------------+
|
+---------------------+
| DB层 |
| (数据库操作层) |
+---------------------+
|
+---------------------+
| MDL层 |
| (数据模型层) |
+---------------------+
```
### 2.2 模块划分
| 模块 | 主要职责 | 文件位置 |
|------|----------|----------|
| 标签替换模块 | 处理标签替换请求 | src/BLL/Services/LabelReplaceService.cs |
| Excel导入模块 | 处理Excel数据导入 | src/BLL/Services/ExcelImportService.cs |
| 物流解析模块 | 解析物流数据 | src/BLL/Services/LogisticsParserService.cs |
| 标签验证模块 | 验证标签有效性 | src/BLL/Services/TagValidationService.cs |
| 标签扫描记录模块 | 管理标签扫描记录 | src/BLL/Services/LabelScanService.cs |
| API接口模块 | 提供RESTful API | src/CONTROLLER/Controllers/ |
## 3. 数据库设计
### 3.1 数据模型
#### 3.1.1 标签替换请求表 (label_replace_requests)
| 字段名 | 数据类型 | 约束 | 描述 |
|--------|----------|------|------|
| Id | INT UNSIGNED | PRIMARY KEY, AUTO_INCREMENT | 主键ID自增 |
| BillOfLadingNumber | VARCHAR(100) | NULL | 提单号 |
| MasterPackageNumber | VARCHAR(100) | NULL | 大包号 |
| ReferenceNumber | VARCHAR(100) | NULL | 参考号(一般表示订单号) |
| NeutralWaybillNumber | VARCHAR(100) | NOT NULL | 中性面单单号(必填) |
| FinalMileTrackingNumber | VARCHAR(100) | NULL | 尾程跟踪单号 |
| Label | LONGTEXT | NULL | 标签内容一般为PDF可能是base64或其他格式 |
| ReplaceStatus | CHAR(1) | NOT NULL DEFAULT 'Y' | 换单状态Y表示正常换单N表示冻结换单 |
| CreatedAt | DATETIME | NOT NULL | 创建时间 |
| UpdatedAt | DATETIME | NOT NULL | 更新时间 |
#### 3.1.2 客户API表 (customer_apis)
| 字段名 | 数据类型 | 约束 | 描述 |
|--------|----------|------|------|
| id | INT UNSIGNED | PRIMARY KEY, AUTO_INCREMENT | 主键ID自增 |
| customer_id | INT UNSIGNED | NOT NULL | 客户ID |
| customer_code | VARCHAR(50) | NOT NULL | 客户代码 |
| api_key | VARCHAR(100) | NOT NULL | API密钥 |
| status | CHAR(1) | NOT NULL DEFAULT 'Y' | API状态Y启用N禁用 |
| expire_date | DATETIME | NULL | 密钥过期时间 |
| created_at | DATETIME | NOT NULL | 创建时间 |
| updated_at | DATETIME | NOT NULL | 更新时间 |
#### 3.1.3 标签历史扫描记录表 (label_scan_history)
| 字段名 | 数据类型 | 约束 | 描述 |
|--------|----------|------|------|
| Id | INT UNSIGNED | PRIMARY KEY, AUTO_INCREMENT | 主键ID自增 |
| CustomerId | INT UNSIGNED | NOT NULL | 客户ID |
| ReferenceNumber | VARCHAR(100) | NULL | 参考号(一般表示订单号) |
| NeutralWaybillNumber | VARCHAR(100) | NOT NULL | 中性面单单号 |
| FinalMileTrackingNumber | VARCHAR(100) | NULL | 尾程跟踪单号 |
| Result | TINYINT UNSIGNED | NOT NULL | 扫描结果0=已返回面单, 1=无面单数据, 2=无下单数据, 3=订单被冻结, 4=其他 |
| Description | VARCHAR(500) | NULL | 描述 |
| CreatedBy | VARCHAR(100) | NOT NULL | 创建人 |
| CreatedAt | DATETIME | NOT NULL | 创建时间 |
| UpdatedAt | DATETIME | NOT NULL | 更新时间 |
## 4. 技术栈
| 技术/框架 | 版本 | 用途 |
|-----------|------|------|
| .NET Core | 7.0+ | 开发框架 |
| SqlSugar | 5.1.4.207 | ORM框架 |
| EPPlus | - | Excel处理 |
| Serilog | - | 日志框架 |
| Swagger | - | API文档 |
| MySQL | - | 数据库 |
## 5. 系统架构图
```
┌─────────────────────────────────────────────────────────────────┐
│ 客户端应用/外部系统 │
└─────────────────────────────┬───────────────────────────────────┘
┌─────────────────────────────▼───────────────────────────────────┐
│ API网关 │
└─────────────────────────────┬───────────────────────────────────┘
┌─────────────────────────────▼───────────────────────────────────┐
│ CONTROLLER层 │
│ ┌──────────────────────┐ ┌──────────────────────┐ ┌───────────┐
│ │ TagController │ │ ExcelImportController │ │LabelController│
│ └──────────────────────┘ └──────────────────────┘ └───────────┘
└─────────────────────────────┬───────────────────────────────────┘
┌─────────────────────────────▼───────────────────────────────────┐
│ BLL层 │
│ ┌──────────────────────┐ ┌──────────────────────┐ ┌───────────┐
│ │ LabelReplaceService │ │ ExcelImportService │ │LabelScanService│
│ └──────────────────────┘ └──────────────────────┘ └───────────┘
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ TagValidationService │ │ LogisticsParserService│ │
│ └──────────────────────┘ └──────────────────────┘ │
└─────────────────────────────┬───────────────────────────────────┘
┌─────────────────────────────▼───────────────────────────────────┐
│ DAL层 │
│ ┌──────────────────────┐ ┌──────────────────────┐ ┌───────────┐
│ │ LabelReplaceRepo │ │ CustomerRepo │ │LabelScanRepo│
│ └──────────────────────┘ └──────────────────────┘ └───────────┘
└─────────────────────────────┬───────────────────────────────────┘
┌─────────────────────────────▼───────────────────────────────────┐
│ DB层 │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ 数据库连接管理 │ │ SQL语句执行 │ │
│ └──────────────────────┘ └──────────────────────┘ │
└─────────────────────────────┬───────────────────────────────────┘
┌─────────────────────────────▼───────────────────────────────────┐
│ 数据库 │
└─────────────────────────────────────────────────────────────────┘
```
## 6. 关键模块设计
### 6.1 标签替换模块
#### 6.1.1 功能描述
处理客户的标签替换请求,验证请求参数,执行标签替换操作,并返回结果。
#### 6.1.2 核心流程
1. 接收标签替换请求
2. 验证客户API权限
3. 验证请求参数
4. 执行标签替换操作
5. 保存操作记录
6. 返回操作结果
### 6.2 Excel导入模块
#### 6.2.1 功能描述
处理Excel文件的导入解析文件内容验证数据有效性将数据保存到数据库。
#### 6.2.2 核心流程
1. 接收Excel文件
2. 解析文件内容
3. 验证数据格式
4. 处理数据逻辑
5. 保存到数据库
6. 返回导入结果
## 7. 安全设计
### 7.1 API认证
- 使用API密钥进行认证
- 支持密钥过期机制
- 记录API调用日志
### 7.2 数据安全
- 敏感数据加密存储
- 数据库访问权限控制
- 数据传输加密
## 8. 日志与监控
### 8.1 日志记录
- 使用Serilog进行日志记录
- 支持多级别日志Info、Warning、Error
- 日志文件按天滚动
- 记录API调用、错误信息、系统事件
### 8.2 监控指标
- API调用次数
- 响应时间
- 错误率
- 系统资源使用情况
## 9. 部署与维护
### 9.1 部署方式
- 支持Docker容器化部署
- 支持Windows/Linux环境
- 配置文件分离管理
### 9.2 维护策略
- 定期备份数据库
- 监控系统运行状态
- 及时更新依赖包
- 定期清理日志文件
## 10. 扩展设计
### 10.1 功能扩展
- 支持更多数据格式导入
- 增加报表统计功能
- 支持批量操作
- 增加用户管理系统
### 10.2 性能扩展
- 数据库读写分离
- 增加缓存机制
- 支持分布式部署
- 优化查询性能
## 11. 文档版本控制
| 版本 | 更新日期 | 更新内容 | 更新人 |
|------|----------|----------|--------|
| 1.0 | 2026-01-16 | 初始版本 | System Design Team |
| 1.1 | 2026-01-19 | 1. 添加标签扫描记录管理功能<br>2. 新增标签扫描记录表<br>3. 更新系统架构图添加LabelController、LabelScanService和LabelScanRepo<br>4. 新增标签扫描记录模块 | System Design Team |
| 1.2 | 2026-01-22 | 1. 重构标签扫描记录模块为标签历史扫描记录<br>2. 更新数据库表结构为label_scan_history<br>3. 新增扫描结果枚举、客户ID、创建人等字段<br>4. 支持按客户和订单分组排序与统计功能 | System Design Team |
| 1.3 | 2026-01-23 | 1. 优化标签扫描记录逻辑,确保每个标签下载请求只记录一次扫描<br>2. 完善扫描结果处理逻辑,包括正常、订单冻结、无标签数据、异常等情况<br>3. 更新LabelController的DownloadLabelByWaybillNumber方法确保扫描记录在finally块中执行 | System Design Team |