# Quickstart: Table QR Code ## Prerequisites - Java 21+ - MySQL 8.2.0+ - Node.js (for frontend) - 已运行的 foodie_server 后端服务 - 已运行的 foodie-store 前端服务 ## Database Setup 执行以下 SQL 创建表: ```sql CREATE TABLE `table_qrcode` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', `table_no` varchar(32) NOT NULL COMMENT '桌号', `type` tinyint NOT NULL DEFAULT 0 COMMENT '类型:0=摊位码, 1=公用码', `store_id` bigint DEFAULT NULL COMMENT '关联摊位ID', `night_market_id` bigint NOT NULL COMMENT '夜市ID', `qr_code` varchar(255) DEFAULT NULL COMMENT '二维码内容', `status` tinyint NOT NULL DEFAULT 0 COMMENT '启用状态:0=启用, 1=停用', `use_status` tinyint NOT NULL DEFAULT 0 COMMENT '使用状态:0=空闲, 1=使用中', `create_by` varchar(64) DEFAULT NULL COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT NULL COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(255) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`), KEY `idx_store_id` (`store_id`), KEY `idx_night_market_id` (`night_market_id`), KEY `idx_type` (`type`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='餐桌码表'; ``` ## Backend Files to Create | File | Path | |------|------| | Entity | `ruoyi-system/src/main/java/com/ruoyi/system/domain/TableQrcode.java` | | Mapper Interface | `ruoyi-system/src/main/java/com/ruoyi/system/mapper/TableQrcodeMapper.java` | | Mapper XML | `ruoyi-system/src/main/resources/mapper/chanting/TableQrcodeMapper.xml` | | Service Interface | `ruoyi-system/src/main/java/com/ruoyi/system/service/ITableQrcodeService.java` | | Service Impl | `ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TableQrcodeServiceImpl.java` | | Controller | `ruoyi-admin/src/main/java/com/ruoyi/app/tableqrcode/TableQrcodeController.java` | ## Backend Dependencies to Add 在 `ruoyi-admin/pom.xml` 中添加 ZXing: ```xml com.google.zxing core 3.5.2 com.google.zxing javase 3.5.2 ``` ## Frontend Files to Create | File | Path | |------|------| | API Module | `foodie-store/src/api/tableQrcode.js` | | Page | `foodie-store/src/views/TableQRCode.vue` | | Router Update | `foodie-store/src/router/index.js` (添加路由) | ## Key Patterns to Follow - **Entity**: 使用 `@Data` + `@TableName` + `@TableId(type = IdType.AUTO)` - **Mapper**: 继承 `BaseMapper`,复杂查询在 XML 中 - **Service**: 继承 `IService` + `ServiceImpl` - **Controller**: `@RestController` + `@Auth` + `@RequestHeader String token` - **Auth**: 通过 `JwtUtil` 从 token 获取 userId,查询 InfoUser 获取 userType ## Verification 1. 启动后端,确认无编译错误 2. 启动前端,访问 `/table-qrcode` 页面 3. 创建一个摊位码,验证列表展示 4. 点击查看二维码,确认图片生成 5. 切换启用/停用状态 6. 验证权限:摊主只能看到自己的码