@@ -5,6 +5,7 @@
CREATE TABLE IF NOT EXISTS assets_category (
-- 基础字段
id BIGINT PRIMARY KEY , -- 从BIGSERIAL改为BIGINT, 取消自增
tenant_id BIGINT NOT NULL DEFAULT 0 , -- 租户ID int8
creator VARCHAR ( 64 ) NOT NULL ,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
updater VARCHAR ( 64 ) NOT NULL ,
@@ -24,6 +25,7 @@ CREATE TABLE IF NOT EXISTS assets_category (
) ;
-- 为分类表添加索引( 移除原uk_category_id唯一索引, 保留其他索引)
CREATE INDEX idx_category_tenant_id ON assets_category ( tenant_id ) ;
CREATE INDEX idx_category_parent_id ON assets_category ( parent_id ) ;
CREATE INDEX idx_category_level ON assets_category ( level ) ;
CREATE INDEX idx_category_status ON assets_category ( status ) ;
@@ -32,6 +34,7 @@ CREATE INDEX idx_category_is_leaf_node ON assets_category(is_leaf_node);
-- 分类表字段注释( 移除bid字段注释)
COMMENT ON TABLE assets_category IS ' 商品/服务分类表 ' ;
COMMENT ON COLUMN assets_category . id IS ' 主键ID( 非自增) ' ;
COMMENT ON COLUMN assets_category . tenant_id IS ' 租户ID ' ;
COMMENT ON COLUMN assets_category . creator IS ' 创建人 ' ;
COMMENT ON COLUMN assets_category . created_at IS ' 创建时间 ' ;
COMMENT ON COLUMN assets_category . updater IS ' 更新人 ' ;
@@ -49,12 +52,12 @@ COMMENT ON COLUMN assets_category.status IS '状态: 1启用/0禁用';
- - - - - - - - - - - - - - - - - - - - pgsql创建assets_category表语句 - - - - - - - - - - - - - - - - - - - - - - - - - --
--------------------pgsql创建assets_asset表语句---------------------------
-- 资产表( asset)
CREATE TABLE IF NOT EXISTS assets_asset (
-- 嵌入基础字段(复用 SQLBaseDO 结构)
id BIGINT PRIMARY KEY , -- 从BIGSERIAL改为BIGINT, 取消自增
tenant_id BIGINT NOT NULL DEFAULT 0 , -- 租户ID int8
creator VARCHAR ( 64 ) NOT NULL ,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
updater VARCHAR ( 64 ) NOT NULL ,
@@ -85,9 +88,10 @@ CREATE TABLE IF NOT EXISTS assets_asset (
-- 租户相关
tenant_module_type VARCHAR ( 64 ) DEFAULT ' '
) ;
) ;
-- 为资产表添加索引( 移除原uk_asset_id唯一索引, 保留其他索引)
-- 为资产表添加索引
CREATE INDEX idx_asset_tenant_id ON assets_asset ( tenant_id ) ;
CREATE INDEX idx_asset_category_id ON assets_asset ( category_id ) ;
CREATE INDEX idx_asset_type ON assets_asset ( type ) ;
CREATE INDEX idx_asset_status ON assets_asset ( status ) ;
@@ -95,9 +99,10 @@ CREATE INDEX idx_asset_online_time ON assets_asset(online_time);
CREATE INDEX idx_asset_offline_time ON assets_asset ( offline_time ) ;
CREATE INDEX idx_asset_tenant_module_type ON assets_asset ( tenant_module_type ) ;
-- 为资产表添加注释( 移除bid字段注释, 更新id注释)
-- 为资产表添加注释
COMMENT ON TABLE assets_asset IS ' 资产主表 ' ;
COMMENT ON COLUMN assets_asset . id IS ' 主键ID( 非自增) ' ;
COMMENT ON COLUMN assets_asset . tenant_id IS ' 租户ID ' ;
COMMENT ON COLUMN assets_asset . creator IS ' 创建人 ' ;
COMMENT ON COLUMN assets_asset . created_at IS ' 创建时间 ' ;
COMMENT ON COLUMN assets_asset . updater IS ' 更新人 ' ;
@@ -130,6 +135,7 @@ COMMENT ON COLUMN assets_asset.tenant_module_type IS '租户模块类型';
CREATE TABLE IF NOT EXISTS assets_asset_sku (
-- 基础字段(继承 SQLBaseDO 通用字段)
id BIGINT PRIMARY KEY , -- 主键ID( 非自增)
tenant_id BIGINT NOT NULL DEFAULT 0 , -- 租户ID int8
creator VARCHAR ( 64 ) NOT NULL ,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
updater VARCHAR ( 64 ) NOT NULL ,
@@ -152,24 +158,26 @@ CREATE TABLE IF NOT EXISTS assets_asset_sku (
stock_mode SMALLINT NOT NULL DEFAULT 1 , -- 库存管理模式: 1-明细模式 2-批次模式
category_id BIGINT NOT NULL DEFAULT 0 , -- 分类ID
category_path VARCHAR ( 512 ) DEFAULT ' ' , -- 分类路径
tenant_module_type VARCHAR ( 32 ) DEFAULT ' ' , -- 租户模块类型
-- 外键约束(可选,根据业务需要启用)
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
tenant_module_type VARCHAR ( 32 ) DEFAULT ' ' -- 租户模块类型
) ;
-- 索引(根据查询场景优化)
-- 外键约束
ALTER TABLE assets_asset_sku ADD CONSTRAINT fk_sku_asset_id FOREIGN KEY ( asset_id ) REFERENCES assets_asset ( id ) ON DELETE CASCADE ;
ALTER TABLE assets_asset_sku ADD CONSTRAINT fk_sku_category_id FOREIGN KEY ( category_id ) REFERENCES assets_category ( id ) ON DELETE SET DEFAULT ;
-- 索引
CREATE INDEX idx_sku_tenant_id ON assets_asset_sku ( tenant_id ) ;
CREATE INDEX idx_sku_asset_id ON assets_asset_sku ( asset_id ) ;
CREATE INDEX idx_sku_category_id ON assets_asset_sku ( category_id ) ;
CREATE INDEX idx_sku_status ON assets_asset_sku ( status ) ;
CREATE INDEX idx_sku_stock_mode ON assets_asset_sku ( stock_mode ) ;
CREATE INDEX idx_sku_deleted_at ON assets_asset_sku ( deleted_at ) ; -- 软删字段索引
CREATE INDEX idx_sku_deleted_at ON assets_asset_sku ( deleted_at ) ;
CREATE INDEX idx_sku_tenant_module_type ON assets_asset_sku ( tenant_module_type ) ;
-- 表和字段注释
COMMENT ON TABLE assets_asset_sku IS ' 资产SKU表 ' ;
COMMENT ON COLUMN assets_asset_sku . id IS ' 主键ID( 非自增) ' ;
COMMENT ON COLUMN assets_asset_sku . tenant_id IS ' 租户ID ' ;
COMMENT ON COLUMN assets_asset_sku . creator IS ' 创建人 ' ;
COMMENT ON COLUMN assets_asset_sku . created_at IS ' 创建时间 ' ;
COMMENT ON COLUMN assets_asset_sku . updater IS ' 更新人 ' ;
@@ -186,7 +194,7 @@ COMMENT ON COLUMN assets_asset_sku.stock IS '库存数量';
COMMENT ON COLUMN assets_asset_sku . specs_count IS ' 规格数量 ' ;
COMMENT ON COLUMN assets_asset_sku . specs_unit IS ' 规格单位 SpecsUnitKeyValue ' ;
COMMENT ON COLUMN assets_asset_sku . sort IS ' 排序 ' ;
COMMENT ON COLUMN assets_asset_sku . status IS ' 状态:active-启用/inactive-未启用/disabled-禁 用 ' ;
COMMENT ON COLUMN assets_asset_sku . status IS ' 状态:1启用 0停 用 ' ;
COMMENT ON COLUMN assets_asset_sku . stock_mode IS ' 库存管理模式: 1-明细模式 2-批次模式 ' ;
COMMENT ON COLUMN assets_asset_sku . category_id IS ' 分类ID ' ;
COMMENT ON COLUMN assets_asset_sku . category_path IS ' 分类路径 ' ;
@@ -199,6 +207,7 @@ COMMENT ON COLUMN assets_asset_sku.tenant_module_type IS '租户模块类型';
CREATE TABLE IF NOT EXISTS assets_stock_batch (
-- 基础字段(继承 SQLBaseDO 通用字段)
id BIGINT PRIMARY KEY , -- 主键ID( 非自增)
tenant_id BIGINT NOT NULL DEFAULT 0 , -- 租户ID int8
creator VARCHAR ( 64 ) NOT NULL ,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
updater VARCHAR ( 64 ) NOT NULL ,
@@ -218,7 +227,7 @@ CREATE TABLE IF NOT EXISTS assets_stock_batch (
-- 状态
status SMALLINT NOT NULL DEFAULT 1 ,
-- 订单关联
-- 订单关联
order_id BIGINT DEFAULT 0 , -- 关联订单ID( 如果有)
-- 渠道分配信息
@@ -231,29 +240,31 @@ CREATE TABLE IF NOT EXISTS assets_stock_batch (
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
category_path VARCHAR ( 512 ) DEFAULT ' ' -- 分类路径
) ;
-- 索引(针对高频查询场景优化)
-- 外键约束
ALTER TABLE assets_stock_batch ADD CONSTRAINT fk_batch_asset_id FOREIGN KEY ( asset_id ) REFERENCES assets_asset ( id ) ON DELETE CASCADE ;
ALTER TABLE assets_stock_batch ADD CONSTRAINT fk_batch_asset_sku_id FOREIGN KEY ( asset_sku_id ) REFERENCES assets_asset_sku ( id ) ON DELETE CASCADE ;
-- 索引
CREATE INDEX idx_batch_tenant_id ON assets_stock_batch ( tenant_id ) ;
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 ) ; -- 软删字段索引
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 . tenant_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 ' 更新人 ' ;
@@ -283,6 +294,7 @@ COMMENT ON COLUMN assets_stock_batch.category_path IS '分类路径';
CREATE TABLE IF NOT EXISTS assets_stock_details (
-- 基础字段(继承 SQLBaseDO 通用字段)
id BIGINT PRIMARY KEY , -- 主键ID( 非自增, 单件商品独立ID, 适配区块链资产标识)
tenant_id BIGINT NOT NULL DEFAULT 0 , -- 租户ID int8
creator VARCHAR ( 64 ) NOT NULL ,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
updater VARCHAR ( 64 ) NOT NULL ,
@@ -303,29 +315,31 @@ CREATE TABLE IF NOT EXISTS assets_stock_details (
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
category_path VARCHAR ( 512 ) DEFAULT ' ' -- 分类路径
) ;
-- 索引(针对高频查询+区块链场景优化)
-- 外键约束
ALTER TABLE assets_stock_details ADD CONSTRAINT fk_details_asset_id FOREIGN KEY ( asset_id ) REFERENCES assets_asset ( id ) ON DELETE CASCADE ;
ALTER TABLE assets_stock_details ADD CONSTRAINT fk_details_asset_sku_id FOREIGN KEY ( asset_sku_id ) REFERENCES assets_asset_sku ( id ) ON DELETE CASCADE ;
-- 索引
CREATE INDEX idx_details_tenant_id ON assets_stock_details ( tenant_id ) ;
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 ) ; -- 软删字段索引
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 ) ;
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 . tenant_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 ' 更新人 ' ;