data-model.md 3.6 KB

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

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

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='餐桌码表';