日期:2026-07-30 | 优先级:P0-4
实现临时车取票入场、扫码出场。入场时票机按钮触发打印二维码小票,出场时扫码枪扫描小票二维码查询数字票并结算。
入场:打印机按钮 → 串口 → PC → 后端 → ESC/POS 打印
出场:扫码枪(USB键盘) → PC → entryExit.vue → 后端查询 ticket
| 字段 | 类型 | 说明 |
|---|---|---|
| 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)。
驾驶员按票机按钮 → 串口接收 → POST /ticket-machine/button
├─ 创建 vehicle_record(无车牌)
├─ 创建 digital_ticket (trigger_mode=ticket_machine)
├─ ESC/POS 打印小票
│ 内容:停车场名称 / 入场时间 / 票号 / ticket_no 二维码
└─ GateOpener 抬杆
扫码枪扫小票 → entryExit.vue 监听输入 → 自动填入 ticket_no
├─ GET /digital-ticket/{ticketNo}
├─ ExitPreview → 计费
├─ 支付(现金/POS/扫码)
└─ ExitConfirm → 抬杆
| 文件 | 说明 |
|---|---|
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 协议常量与指令构建 |
┌──────────────┐
│ 龙弛智慧停车 │ (居中)
│ LC PARKING │
│──────────────│
│ 入场时间 │
│ 2026-07-30 │
│ 10:30:00 │
│ │
│ [二维码] │
│ │
│ NO: ts_xxx │
│──────────────│
│ 请保留此小票 │
│ 出场扫码缴费 │
└──────────────┘
| 文件 | 操作 |
|---|---|
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 |
修改(出场监听扫码枪输入) |