# Data Model: Table QR Code ## Entity: TableQrcode **Table**: `table_qrcode` **Module**: ruoyi-system ### Fields | Field | Java Type | DB Type | Nullable | Default | Description | |-------|-----------|---------|----------|---------|-------------| | id | Long | bigint PK | NO | AUTO_INCREMENT | 主键 | | tableNo | String | varchar(32) | NO | - | 桌号(如 A01、B02) | | type | Integer | tinyint | NO | 0 | 类型:0=摊位码, 1=公用码 | | storeId | Long | bigint | YES | NULL | 关联摊位ID(摊位码必填,公用码为空) | | nightMarketId | Long | bigint | NO | - | 夜市ID | | qrCode | String | varchar(255) | YES | NULL | 二维码内容(URL 文本) | | status | Integer | tinyint | NO | 0 | 启用状态:0=启用, 1=停用 | | useStatus | Integer | tinyint | NO | 0 | 使用状态:0=空闲, 1=使用中 | | createBy | String | varchar(64) | YES | NULL | 创建者 | | createTime | Date | datetime | YES | NULL | 创建时间 | | updateBy | String | varchar(64) | YES | NULL | 更新者 | | updateTime | Date | datetime | YES | NULL | 更新时间 | | remark | String | varchar(255) | YES | NULL | 备注 | ### Relationships | Relation | Target Entity | Type | FK Field | Description | |----------|--------------|------|----------|-------------| | 所属摊位 | PosStore | ManyToOne | storeId | 摊位码关联的摊位 | | 所属夜市 | NightMarket | ManyToOne | nightMarketId | 所有码关联的夜市 | ### Validation Rules | Field | Rule | Condition | |-------|------|-----------| | tableNo | 必填,长度 1-32 | 所有 | | type | 必填,0 或 1 | 所有 | | storeId | 必填 | type=0(摊位码) | | storeId | 必须为空 | type=1(公用码) | | nightMarketId | 必填 | 所有 | | tableNo + storeId | 联合唯一 | type=0,同一摊位下桌号不重复 | | tableNo + nightMarketId | 联合唯一 | type=1,同一夜市下公用码桌号不重复 | ### State Transitions ``` status (启用状态): 0(启用) ←→ 1(停用) useStatus (使用状态): 0(空闲) ←→ 1(使用中) ``` - status 由管理员手动切换 - useStatus 由订单系统自动更新(下单时→使用中,结账后→空闲) ### Indexes ```sql CREATE INDEX idx_store_id ON table_qrcode(store_id); CREATE INDEX idx_night_market_id ON table_qrcode(night_market_id); CREATE INDEX idx_type ON table_qrcode(type); CREATE UNIQUE INDEX uk_table_no_store ON table_qrcode(table_no, store_id) WHERE type = 0; CREATE UNIQUE INDEX uk_table_no_market ON table_qrcode(table_no, night_market_id) WHERE type = 1; ``` ### DDL ```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='餐桌码表'; ```