87 lines
3.2 KiB
Markdown
87 lines
3.2 KiB
Markdown
# USPS 运单号校验规则规范
|
||
|
||
## 1. 需求概述
|
||
|
||
当前系统已支持 USPS 运单号格式:420 开头 + 5 位邮编 + 以 92/93/94/95 开头的追踪号。现在需要补充支持 420 开头 + 9 位邮编 + 以 92/93/94/95 开头的追踪号的格式。
|
||
|
||
## 2. 详细需求
|
||
|
||
### 2.1 运单号结构
|
||
|
||
- **现有格式**:420 + 5 位邮编 + 以 92/93/94/95 开头的追踪号
|
||
- **新增格式**:420 + 9 位邮编 + 以 92/93/94/95 开头的追踪号
|
||
|
||
### 2.2 校验规则
|
||
|
||
1. 运单号必须为纯数字
|
||
2. 运单号必须以 "420" 开头
|
||
3. 运单号长度至少为 7 位
|
||
4. 对于 420 + 5 位邮编的情况:
|
||
- 从第 9 位开始(索引 8)检查是否以 92/93/94/95 开头
|
||
5. 对于 420 + 9 位邮编的情况:
|
||
- 从第 13 位开始(索引 12)检查是否以 92/93/94/95 开头
|
||
|
||
### 2.3 备注提取规则
|
||
|
||
- 对于 420 + 5 位邮编的情况:提取从第 9 位开始的部分作为备注
|
||
- 对于 420 + 9 位邮编的情况:提取从第 13 位开始的部分作为备注
|
||
|
||
### 2.4 渠道识别规则
|
||
|
||
在 `IdentifyChannel` 方法中,需要同时支持:
|
||
1. 直接以 92/93/94 开头的 USPS 运单号
|
||
2. 420 + 5 位邮编 + 92/93/94 开头的 USPS 运单号
|
||
3. 420 + 9 位邮编 + 92/93/94 开头的 USPS 运单号
|
||
|
||
## 3. 实现方案
|
||
|
||
### 3.1 修改 `AssociateWaybillAsync` 方法
|
||
|
||
在 `BagTagService.cs` 文件的 `AssociateWaybillAsync` 方法中,修改 USPS 运单号处理逻辑,以支持 420 + 9 位邮编的情况。
|
||
|
||
### 3.2 修改 `IdentifyChannel` 方法
|
||
|
||
在 `BagTagService.cs` 文件的 `IdentifyChannel` 方法中,修改 USPS 渠道识别逻辑,以支持 420 + 9 位邮编的情况。
|
||
|
||
## 4. 测试用例
|
||
|
||
### 4.1 有效的 USPS 运单号
|
||
|
||
1. **420 + 5 位邮编 + 92 开头**:420123459212345678
|
||
2. **420 + 5 位邮编 + 93 开头**:420123459312345678
|
||
3. **420 + 5 位邮编 + 94 开头**:420123459412345678
|
||
4. **420 + 5 位邮编 + 95 开头**:420123459512345678
|
||
5. **420 + 9 位邮编 + 92 开头**:4201234567899212345678
|
||
6. **420 + 9 位邮编 + 93 开头**:4201234567899312345678
|
||
7. **420 + 9 位邮编 + 94 开头**:4201234567899412345678
|
||
8. **420 + 9 位邮编 + 95 开头**:4201234567899512345678
|
||
|
||
### 4.2 无效的 USPS 运单号
|
||
|
||
1. **非纯数字**:42012345ABC12345678
|
||
2. **不以 420 开头**:123123459212345678
|
||
3. **长度不足**:420123
|
||
4. **420 + 5 位邮编但不以 92/93/94/95 开头**:420123451212345678
|
||
5. **420 + 9 位邮编但不以 92/93/94/95 开头**:4201234567891212345678
|
||
|
||
## 5. 代码修改点
|
||
|
||
### 5.1 `AssociateWaybillAsync` 方法
|
||
|
||
- 文件:`d:\EPproject\LabelReplaceServer\src\BLL\Services\BagTagService.cs`
|
||
- 行号:156-172
|
||
- 修改内容:添加对 420 + 9 位邮编情况的处理
|
||
|
||
### 5.2 `IdentifyChannel` 方法
|
||
|
||
- 文件:`d:\EPproject\LabelReplaceServer\src\BLL\Services\BagTagService.cs`
|
||
- 行号:298-317
|
||
- 修改内容:添加对 420 + 9 位邮编情况的渠道识别
|
||
|
||
## 6. 预期结果
|
||
|
||
修改后,系统应能正确处理以下情况:
|
||
1. 识别并处理 420 + 5 位邮编 + 92/93/94/95 开头的 USPS 运单号
|
||
2. 识别并处理 420 + 9 位邮编 + 92/93/94/95 开头的 USPS 运单号
|
||
3. 正确提取以 92/93/94/95 开头的部分作为备注
|
||
4. 在渠道识别中正确识别这两种格式的 USPS 运单号 |