数据库变更: - 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分钟时静默预刷新 |
||
|---|---|---|
| .. | ||
| AuditService.php | ||
| BaseService.php | ||
| SeatSkuService.php | ||
| TicketService.php | ||