Sfoglia il codice sorgente

docs: 小票打印设计文档——取票入场+扫码出场

lq 1 mese fa
parent
commit
f5b65e6fb9
1 ha cambiato i file con 91 aggiunte e 0 eliminazioni
  1. 91 0
      docs/superpowers/specs/2026-07-30-ticket-printer-design.md

+ 91 - 0
docs/superpowers/specs/2026-07-30-ticket-printer-design.md

@@ -0,0 +1,91 @@
+# 取票打印 + 扫码出场 — 设计文档
+
+> 日期:2026-07-30 | 优先级:P0-4
+
+## 1. 目标
+
+实现临时车取票入场、扫码出场。入场时票机按钮触发打印二维码小票,出场时扫码枪扫描小票二维码查询数字票并结算。
+
+## 2. 硬件架构
+
+```
+入场:打印机按钮 → 串口 → PC → 后端 → ESC/POS 打印
+出场:扫码枪(USB键盘) → PC → entryExit.vue → 后端查询 ticket
+```
+
+## 3. 数据模型
+
+### printer 设备配置表
+
+| 字段 | 类型 | 说明 |
+|------|------|------|
+| id | uint | 主键 |
+| name | string | 打印机名称 |
+| port_name | string | COM端口名(如 COM3) |
+| baud_rate | int | 波特率(默认 9600) |
+| status | string | online / offline |
+| location | string | 安装位置(入口/出口) |
+
+复用现有 `vehicle_record` + `digital_ticket`(无车牌,trigger_mode=ticket_machine)。
+
+## 4. 入场流程
+
+```
+驾驶员按票机按钮 → 串口接收 → POST /ticket-machine/button
+  ├─ 创建 vehicle_record(无车牌)
+  ├─ 创建 digital_ticket (trigger_mode=ticket_machine)
+  ├─ ESC/POS 打印小票
+  │    内容:停车场名称 / 入场时间 / 票号 / ticket_no 二维码
+  └─ GateOpener 抬杆
+```
+
+## 5. 出场流程
+
+```
+扫码枪扫小票 → entryExit.vue 监听输入 → 自动填入 ticket_no
+  ├─ GET /digital-ticket/{ticketNo}
+  ├─ ExitPreview → 计费
+  ├─ 支付(现金/POS/扫码)
+  └─ ExitConfirm → 抬杆
+```
+
+## 6. 后端新增
+
+| 文件 | 说明 |
+|------|------|
+| `internal/dao/printer.go` | 打印机设备 DAO |
+| `internal/modules/printer/api.go` | 打印机管理 + 按钮事件 API |
+| `internal/modules/printer/service/service.go` | ESC/POS 指令封装 + 串口通信 |
+| `internal/modules/printer/service/escpos.go` | ESC/POS 协议常量与指令构建 |
+
+## 7. ESC/POS 小票模板
+
+```
+          ┌──────────────┐
+          │  龙弛智慧停车  │  (居中)
+          │  LC PARKING   │
+          │──────────────│
+          │ 入场时间       │
+          │ 2026-07-30    │
+          │ 10:30:00      │
+          │              │
+          │ [二维码]      │
+          │              │
+          │ NO: ts_xxx   │
+          │──────────────│
+          │ 请保留此小票   │
+          │ 出场扫码缴费   │
+          └──────────────┘
+```
+
+## 8. 文件变更
+
+| 文件 | 操作 |
+|------|------|
+| `internal/dao/printer.go` | 新建 |
+| `internal/modules/printer/api.go` | 新建 |
+| `internal/modules/printer/service/service.go` | 新建 |
+| `internal/modules/printer/service/escpos.go` | 新建 |
+| `internal/initialize/gorm.go` | 修改 |
+| `internal/initialize/router.go` | 修改 |
+| `frontend/src/view/parking/entryExit.vue` | 修改(出场监听扫码枪输入) |