设计变更: - 旧方案:位打包 (goods_id<<17|ticket_id),需要暴力搜索 goods_id - 新方案:goods_id(4位base36) + ticket_id(5位base36) → Feistel8 → 短码 新设计优势: - 解码 O(1):直接取前4位=goods_id,后5位=ticket_id - 无需暴力搜索,只需验证 hint 匹配 - goods_id 范围扩大:0-1,679,615(4位base36) - ticket_id 范围扩大:0-1,073,741,823(5位base36) - 安全性不变:Feistel8 混淆仍保护 ticket_id 技术实现: - shortCodeEncode: base36 固定4位/5位 padding → intval → Feistel8 - shortCodeDecode: 有 hint 直接验证,无 hint 暴力搜索 - 校验边界:goods_id ≤ 0xFFFFFF, ticket_id ≤ 0x3FFFFFFF |
||
|---|---|---|
| .. | ||
| AuditService.php | ||
| BaseService.php | ||
| SeatSkuService.php | ||
| TicketService.php | ||