sql
This commit is contained in:
160
update.sql
160
update.sql
@@ -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表语句---------------------------
|
||||
Reference in New Issue
Block a user