This commit is contained in:
2026-03-23 10:30:44 +08:00
parent 829dc07747
commit 989d89579b

View File

@@ -129,8 +129,8 @@ COMMENT ON COLUMN assets_asset.tenant_module_type IS '租户模块类型';
-- 资产SKU表
CREATE TABLE IF NOT EXISTS assets_asset_sku (
-- 基础字段(继承 SQLBaseDO 通用字段)
id BIGINT PRIMARY KEY, -- 主键ID非自增
creator VARCHAR(64) NOT NULL,
id BIGINT PRIMARY KEY, -- 主键ID非自增
creator VARCHAR(64) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(64) NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -157,7 +157,7 @@ CREATE TABLE IF NOT EXISTS assets_asset_sku (
-- 外键约束(可选,根据业务需要启用)
CONSTRAINT fk_sku_asset_id FOREIGN KEY (asset_id) REFERENCES assets_asset(id) ON DELETE CASCADE,
CONSTRAINT fk_sku_category_id FOREIGN KEY (category_id) REFERENCES assets_category(id) ON DELETE SET DEFAULT
);
);
-- 索引(根据查询场景优化)
CREATE INDEX idx_sku_asset_id ON assets_asset_sku(asset_id);
@@ -192,4 +192,156 @@ COMMENT ON COLUMN assets_asset_sku.category_id IS '分类ID';
COMMENT ON COLUMN assets_asset_sku.category_path IS '分类路径';
COMMENT ON COLUMN assets_asset_sku.tenant_module_type IS '租户模块类型';
--------------------pgsql创建assets_sku表语句---------------------------
--------------------pgsql创建assets_asset_sku表语句---------------------------
--------------------pgsql创建assets_stock_batch表语句---------------------------
-- 库存批次表(批次管理模式专用)
CREATE TABLE IF NOT EXISTS assets_stock_batch (
-- 基础字段(继承 SQLBaseDO 通用字段)
id BIGINT PRIMARY KEY, -- 主键ID非自增
creator VARCHAR(64) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(64) NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamp(6),
-- 核心关联字段
asset_id BIGINT NOT NULL, -- 关联资产ID
asset_sku_id BIGINT NOT NULL, -- 关联资产SKU ID
batch_no VARCHAR(64) NOT NULL, -- 批次号
batch_qty INT NOT NULL DEFAULT 0, -- 批次总数量(入库后不可变)
available_qty INT NOT NULL DEFAULT 0, -- 可用数量(实时变化)
-- 批次元数据
metadata JSONB NOT NULL DEFAULT '[]'::JSONB, -- 其他元数据:[]map[string]interface{}
-- 状态
status SMALLINT NOT NULL DEFAULT 1,
-- 订单关联
order_id BIGINT DEFAULT 0, -- 关联订单ID如果有
-- 渠道分配信息
assigned_channel VARCHAR(64) DEFAULT '', -- 分配的销售渠道
channel_sku VARCHAR(128) DEFAULT '', -- 渠道商品SKU
channel_metadata JSONB DEFAULT '{}'::JSONB, -- 渠道专属数据map[string]interface{}
allocated_at TIMESTAMP, -- 分配时间(可为空)
-- 临期管理
production_date TIMESTAMP, -- 生产日期(可为空)
expiry_date TIMESTAMP, -- 过期日期(可为空)
expiry_warning_date TIMESTAMP, -- 临期预警时间(可为空)
category_path VARCHAR(512) DEFAULT '', -- 分类路径
-- 外键约束(可选,根据业务需要启用)
CONSTRAINT fk_batch_asset_id FOREIGN KEY (asset_id) REFERENCES assets_asset(id) ON DELETE CASCADE,
CONSTRAINT fk_batch_asset_sku_id FOREIGN KEY (asset_sku_id) REFERENCES assets_asset_sku(id) ON DELETE CASCADE
);
-- 索引(针对高频查询场景优化)
CREATE INDEX idx_batch_asset_id ON assets_stock_batch(asset_id);
CREATE INDEX idx_batch_asset_sku_id ON assets_stock_batch(asset_sku_id);
CREATE INDEX idx_batch_batch_no ON assets_stock_batch(batch_no); -- 批次号查询索引
CREATE INDEX idx_batch_status ON assets_stock_batch(status); -- 状态筛选索引
CREATE INDEX idx_batch_order_id ON assets_stock_batch(order_id); -- 订单关联查询索引
CREATE INDEX idx_batch_expiry_date ON assets_stock_batch(expiry_date); -- 临期/过期筛选索引
CREATE INDEX idx_batch_assigned_channel ON assets_stock_batch(assigned_channel); -- 渠道筛选索引
CREATE INDEX idx_batch_deleted_at ON assets_stock_batch(deleted_at); -- 软删字段索引
-- 唯一索引(保证批次号+SKU唯一性避免重复批次
CREATE UNIQUE INDEX uk_batch_sku_batch_no ON assets_stock_batch(asset_sku_id, batch_no) WHERE deleted_at IS NULL;
-- 表和字段注释
COMMENT ON TABLE assets_stock_batch IS '库存批次表(批次管理模式专用)';
COMMENT ON COLUMN assets_stock_batch.id IS '主键ID非自增';
COMMENT ON COLUMN assets_stock_batch.creator IS '创建人';
COMMENT ON COLUMN assets_stock_batch.created_at IS '创建时间';
COMMENT ON COLUMN assets_stock_batch.updater IS '更新人';
COMMENT ON COLUMN assets_stock_batch.updated_at IS '更新时间';
COMMENT ON COLUMN assets_stock_batch.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN assets_stock_batch.asset_id IS '关联资产ID';
COMMENT ON COLUMN assets_stock_batch.asset_sku_id IS '关联资产SKU ID';
COMMENT ON COLUMN assets_stock_batch.batch_no IS '批次号';
COMMENT ON COLUMN assets_stock_batch.batch_qty IS '批次总数量(入库后不可变)';
COMMENT ON COLUMN assets_stock_batch.available_qty IS '可用数量(实时变化)';
COMMENT ON COLUMN assets_stock_batch.metadata IS '其他元数据,结构为[]map[string]interface{}';
COMMENT ON COLUMN assets_stock_batch.status IS '批次状态1-活跃/2-临期/3-过期/4-售罄)';
COMMENT ON COLUMN assets_stock_batch.order_id IS '关联订单ID如果有';
COMMENT ON COLUMN assets_stock_batch.assigned_channel IS '分配的销售渠道';
COMMENT ON COLUMN assets_stock_batch.channel_sku IS '渠道商品SKU';
COMMENT ON COLUMN assets_stock_batch.channel_metadata IS '渠道专属数据结构为map[string]interface{}';
COMMENT ON COLUMN assets_stock_batch.allocated_at IS '分配时间';
COMMENT ON COLUMN assets_stock_batch.production_date IS '生产日期';
COMMENT ON COLUMN assets_stock_batch.expiry_date IS '过期日期';
COMMENT ON COLUMN assets_stock_batch.expiry_warning_date IS '临期预警时间(有过期日期时建议填写)';
COMMENT ON COLUMN assets_stock_batch.category_path IS '分类路径';
--------------------pgsql创建assets_stock_batch表语句---------------------------
--------------------pgsql创建assets_stock_details表语句---------------------------
-- 库存明细表单件商品独立ID适配区块链虚拟资产场景
CREATE TABLE IF NOT EXISTS assets_stock_details (
-- 基础字段(继承 SQLBaseDO 通用字段)
id BIGINT PRIMARY KEY, -- 主键ID非自增单件商品独立ID适配区块链资产标识
creator VARCHAR(64) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updater VARCHAR(64) NOT NULL,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
deleted_at timestamp(6),
-- 核心关联字段
asset_id BIGINT NOT NULL, -- 关联资产ID
asset_sku_id BIGINT NOT NULL, -- 关联资产SKU ID
status SMALLINT NOT NULL DEFAULT 1,
order_id BIGINT DEFAULT 0, -- 关联订单ID如果有
lock_expire TIMESTAMP, -- 锁定过期时间(可为空)
metadata JSONB NOT NULL DEFAULT '[]'::JSONB, -- 其他元数据:[]map[string]interface{}
token_id VARCHAR(256) DEFAULT '', -- 区块链TokenID如果有
-- 渠道分配信息
assigned_channel VARCHAR(64) DEFAULT '', -- 分配的销售渠道
channel_sku VARCHAR(128) DEFAULT '', -- 渠道商品SKU
channel_metadata JSONB DEFAULT '{}'::JSONB, -- 渠道专属数据map[string]interface{}
allocated_at TIMESTAMP, -- 分配时间(可为空)
category_path VARCHAR(512) DEFAULT '', -- 分类路径
-- 外键约束(可选,根据业务需要启用)
CONSTRAINT fk_details_asset_id FOREIGN KEY (asset_id) REFERENCES assets_asset(id) ON DELETE CASCADE,
CONSTRAINT fk_details_asset_sku_id FOREIGN KEY (asset_sku_id) REFERENCES assets_asset_sku(id) ON DELETE CASCADE
);
-- 索引(针对高频查询+区块链场景优化)
CREATE INDEX idx_details_asset_id ON assets_stock_details(asset_id);
CREATE INDEX idx_details_asset_sku_id ON assets_stock_details(asset_sku_id);
CREATE INDEX idx_details_status ON assets_stock_details(status); -- 库存状态筛选(核心查询维度)
CREATE INDEX idx_details_order_id ON assets_stock_details(order_id); -- 订单关联查询
CREATE INDEX idx_details_lock_expire ON assets_stock_details(lock_expire); -- 锁定过期时间筛选(解锁/清理锁定库存)
CREATE INDEX idx_details_token_id ON assets_stock_details(token_id); -- 区块链TokenID查询核心索引
CREATE INDEX idx_details_assigned_channel ON assets_stock_details(assigned_channel); -- 渠道筛选
CREATE INDEX idx_details_deleted_at ON assets_stock_details(deleted_at); -- 软删字段索引
-- 唯一索引保证区块链TokenID唯一性避免重复资产
CREATE UNIQUE INDEX uk_details_token_id ON assets_stock_details(token_id) WHERE deleted_at IS NULL AND token_id != '';
-- 表和字段注释
COMMENT ON TABLE assets_stock_details IS '库存明细表单件商品独立ID用于区块链虚拟资产管理';
COMMENT ON COLUMN assets_stock_details.id IS '主键ID非自增单件商品独立唯一标识';
COMMENT ON COLUMN assets_stock_details.creator IS '创建人';
COMMENT ON COLUMN assets_stock_details.created_at IS '创建时间';
COMMENT ON COLUMN assets_stock_details.updater IS '更新人';
COMMENT ON COLUMN assets_stock_details.updated_at IS '更新时间';
COMMENT ON COLUMN assets_stock_details.deleted_at IS '删除时间(软删)';
COMMENT ON COLUMN assets_stock_details.asset_id IS '关联资产ID';
COMMENT ON COLUMN assets_stock_details.asset_sku_id IS '关联资产SKU ID';
COMMENT ON COLUMN assets_stock_details.status IS '库存状态1-可用/2-已售出/3-预留/4-锁定)';
COMMENT ON COLUMN assets_stock_details.order_id IS '关联订单ID如果有';
COMMENT ON COLUMN assets_stock_details.lock_expire IS '锁定过期时间(锁定状态下有效)';
COMMENT ON COLUMN assets_stock_details.metadata IS '其他元数据,结构为[]map[string]interface{}';
COMMENT ON COLUMN assets_stock_details.token_id IS '区块链TokenID虚拟资产唯一标识可为空';
COMMENT ON COLUMN assets_stock_details.assigned_channel IS '分配的销售渠道';
COMMENT ON COLUMN assets_stock_details.channel_sku IS '渠道商品SKU';
COMMENT ON COLUMN assets_stock_details.channel_metadata IS '渠道专属数据结构为map[string]interface{}';
COMMENT ON COLUMN assets_stock_details.allocated_at IS '分配时间';
COMMENT ON COLUMN assets_stock_details.category_path IS '分类路径';
--------------------pgsql创建assets_stock_details表语句---------------------------