# 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 运单号