-- 创建菜单分类表
CREATE TABLE
    menu_cate (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 主键
        name TEXT NOT NULL DEFAULT '', -- 分类名称
        logo TEXT NOT NULL DEFAULT '', -- 分类Logo
        description TEXT, -- 分类描述
        create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
        update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
        sort INTEGER NOT NULL DEFAULT 0, -- 排序
        status INTEGER NOT NULL DEFAULT 1 -- 状态 (1-Active, 0-Inactive)
    );

-- 创建商品表
CREATE TABLE
    menu_commodity (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 主键
        name TEXT NOT NULL DEFAULT '', -- 商品名称
        cate_id INTEGER NOT NULL DEFAULT 0, -- 分类ID
        goods_no TEXT NOT NULL DEFAULT '', -- 商品编号
        is_single_spec INTEGER NOT NULL DEFAULT 1, -- 是否单规格 (1-单规格, 0-多规格)
        logo TEXT NOT NULL DEFAULT '', -- 商品Logo
        price REAL NOT NULL DEFAULT 0.00, -- 价格
        line_price REAL NOT NULL DEFAULT 0.00, -- 商品原价
        stock INTEGER NOT NULL DEFAULT 0, -- 库存
        sort INTEGER NOT NULL DEFAULT 0, -- 排序
        description TEXT NOT NULL DEFAULT '', -- 商品描述
        create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
        update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
        status INTEGER NOT NULL DEFAULT 1, -- 状态 (1-Active, 0-Inactive),
        FOREIGN KEY (cate_id) REFERENCES menu_cate (id)
    );

-- 创建SKU表
CREATE TABLE
    menu_sku (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 主键
        sku_no TEXT NOT NULL DEFAULT '', -- SKU编号
        logo TEXT NOT NULL DEFAULT '', -- SKU Logo
        goods_id INTEGER NOT NULL DEFAULT 0, -- 商品ID
        stock INTEGER NOT NULL DEFAULT 0, -- 库存
        price REAL NOT NULL DEFAULT 0.00, -- 价格
        line_price REAL NOT NULL DEFAULT 0.00, -- 商品原价
        status INTEGER NOT NULL DEFAULT 1, -- 状态 (1-Active, 0-Inactive),
        FOREIGN KEY (goods_id) REFERENCES menu_commodity (id)
    );

-- 创建规格表
CREATE TABLE
    menu_spec (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 主键
        goods_id INTEGER NOT NULL DEFAULT 0, -- 商品ID
        name TEXT NOT NULL DEFAULT '', -- 规格名称
        value TEXT NOT NULL DEFAULT '', -- 规格值
        status INTEGER NOT NULL DEFAULT 1, -- 状态 (1-Active, 0-Inactive),
        FOREIGN KEY (goods_id) REFERENCES menu_commodity (id)
    );

-- 创建SKU和规格的中间表
CREATE TABLE
    menu_sku_spec (
        sku_id INTEGER NOT NULL, -- SKU ID
        spec_id INTEGER NOT NULL, -- 规格ID
        PRIMARY KEY (sku_id, spec_id),
        FOREIGN KEY (sku_id) REFERENCES menu_sku (id),
        FOREIGN KEY (spec_id) REFERENCES menu_spec (id)
    );

-- 创建店铺订单表信息
CREATE TABLE
    store_order (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 自增ID
        order_sn TEXT NOT NULL DEFAULT '', -- 订单号
        table_id INTEGER NOT NULL, -- 所属桌码ID
        pay_type INTEGER NOT NULL DEFAULT 0, -- 支付方式 (1-现金, 0-Paypal)
        amount REAL NOT NULL DEFAULT 0.00, -- 订单金额
        pay_amount REAL NOT NULL DEFAULT 0.00, -- 支付金额
        discount REAL NOT NULL DEFAULT 0.00, -- 折扣金额
        param TEXT NOT NULL DEFAULT '', -- 订单参数
        service_fee REAL DEFAULT NULL, -- 服务费
        remark TEXT NOT NULL DEFAULT '', -- 用户备注
        create_time DATETIME DEFAULT NULL, -- 创建时间
        update_time DATETIME DEFAULT NULL, -- 更新时间
        status TEXT NOT NULL DEFAULT 'A', -- 订单状态
        pay_time DATETIME DEFAULT NULL, -- 支付时间
        pay_status INTEGER NOT NULL DEFAULT 1, -- 支付状态
        settle_status INTEGER NOT NULL DEFAULT 1, -- 结算状态
        goods TEXT NOT NULL DEFAULT '{}' -- 订单商品信息
    );

-- 创建店铺材料表信息
CREATE TABLE
    store_material (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 材料表id
        material_no TEXT NOT NULL, -- 材料编号
        material_type TEXT NOT NULL, -- 材料类别
        name TEXT NOT NULL, -- 材料名称
        specification TEXT NOT NULL, -- 规格
        inventory INTEGER NOT NULL DEFAULT 0, -- 库存数量
        shelf_life INTEGER NOT NULL DEFAULT 0, -- 保质期
        unit TEXT NOT NULL, -- 单位
        img TEXT NOT NULL, -- 材料文件/图片id
        purchase_period INTEGER NOT NULL DEFAULT 0, -- 采购期数
        create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
        update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
        status INTEGER NOT NULL DEFAULT 1 -- 状态0下架1上架
    );

-- 店铺区域表
CREATE TABLE
    store_area (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 区域id
        name TEXT NOT NULL, -- 区域名称
        description TEXT NOT NULL DEFAULT '', -- 区域描述
        create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
        update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
        status INTEGER NOT NULL DEFAULT 1 -- 状态 (1-有效, 0-无效)
    );

-- 店铺座位表
CREATE TABLE
    store_table (
        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, -- 桌子id
        area_id INTEGER NOT NULL, -- 所属区域id
        table_no TEXT NOT NULL, -- 桌号
        capacity INTEGER NOT NULL DEFAULT 0, -- 座位数
        create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 创建时间
        update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 更新时间
        status INTEGER NOT NULL DEFAULT 1, -- 状态 (1-有效, 0-无效)
        FOREIGN KEY (area_id) REFERENCES store_area (id)
    );

-- 新增菜单分类表的更新时间触发器
CREATE TRIGGER trg_menu_cate_update_time AFTER
UPDATE ON menu_cate FOR EACH ROW WHEN NEW.update_time = OLD.update_time BEGIN
UPDATE menu_cate
SET
    update_time = CURRENT_TIMESTAMP
WHERE
    id = OLD.id;

END;

-- 新增商品表的更新时间触发器
CREATE TRIGGER trg_menu_commodity_update_time AFTER
UPDATE ON menu_commodity FOR EACH ROW WHEN NEW.update_time = OLD.update_time BEGIN
UPDATE menu_commodity
SET
    update_time = CURRENT_TIMESTAMP
WHERE
    id = OLD.id;

END;

-- 新增订单表的更新时间触发器
CREATE TRIGGER trg_order_update_time AFTER
UPDATE ON store_order FOR EACH ROW WHEN NEW.update_time = OLD.update_time BEGIN
UPDATE store_order
SET
    update_time = CURRENT_TIMESTAMP
WHERE
    id = OLD.id;

END;

-- 新增材料表的更新时间触发器
CREATE TRIGGER trg_material_update_time AFTER
UPDATE ON store_material FOR EACH ROW WHEN NEW.update_time = OLD.update_time BEGIN
UPDATE store_material
SET
    update_time = CURRENT_TIMESTAMP
WHERE
    id = OLD.id;

END;

-- 新增区域表的更新时间触发器
CREATE TRIGGER trg_area_update_time AFTER
UPDATE ON store_area FOR EACH ROW WHEN NEW.update_time = OLD.update_time BEGIN
UPDATE store_area
SET
    update_time = CURRENT_TIMESTAMP
WHERE
    id = OLD.id;

END;

-- 新增桌子表的更新时间触发器
CREATE TRIGGER trg_table_update_time AFTER
UPDATE ON store_table FOR EACH ROW WHEN NEW.update_time = OLD.update_time BEGIN
UPDATE store_table
SET
    update_time = CURRENT_TIMESTAMP
WHERE
    id = OLD.id;

END;