vr-shopxo-plugin/shopxo/app/plugins/vr_ticket/service
Council 06d0382dd8 feat(phase4.2): 出票链路 + 短码核销 + QR payload
数据库变更:
- vr_tickets 表新增 short_code 字段(短码,UNIQUE)
- vr_tickets 表新增 qr_payload 字段(HMAC签名payload)
- 移除 qr_data 字段(不再使用加密QR)

出票流程 (issueTicket):
1. 先插入获取 ticket_id
2. 生成短码:BaseService::shortCodeEncode(goods_id, ticket_id)
3. 生成 QR payload:BaseService::signQrPayload(id/g/iat/exp)
4. 更新 short_code 和 qr_payload
5. 写入观演人信息

核销流程:
- verifyByShortCode(): 短码解码 → DB查询 → verifyTicketById()
- verifyTicketById(): 事务 + 悲观锁,统一的核销逻辑
- 自动路由:短码直接解出 goods_id,无需暴力搜索

QR payload 管理:
- getQrPayload(): 返回 payload,支持15分钟阈值自动刷新
- 有效期30分钟,剩余15分钟时静默预刷新
2026-04-23 00:15:45 +08:00
..
AuditService.php
BaseService.php feat(phase4.2): 出票链路 + 短码核销 + QR payload 2026-04-23 00:15:45 +08:00
SeatSkuService.php feat(Phase 3): 演播室选择器+层级售罄灰化+短码Feistel架构规划 2026-04-22 16:39:39 +08:00
TicketService.php feat(phase4.2): 出票链路 + 短码核销 + QR payload 2026-04-23 00:15:45 +08:00