-- 简化佣金分配模型：删除 ShopSeriesAllocation 层，使用 ShopPackageAllocation 直接管理
-- 重构原因：业务模型只需要套餐级别的分配，不需要系列级别的中间层

-- ============================================
-- 1. 为 ShopPackageAllocation 添加新字段
-- ============================================

-- 添加 series_id 字段（记录套餐所属系列，便于查询）
ALTER TABLE tb_shop_package_allocation
ADD COLUMN IF NOT EXISTS series_id BIGINT DEFAULT 0 NOT NULL;

COMMENT ON COLUMN tb_shop_package_allocation.series_id IS '套餐系列ID（冗余字段，便于查询）';

-- 添加 allocator_shop_id 字段（记录是谁分配的，0表示平台分配）
ALTER TABLE tb_shop_package_allocation
ADD COLUMN IF NOT EXISTS allocator_shop_id BIGINT DEFAULT 0 NOT NULL;

COMMENT ON COLUMN tb_shop_package_allocation.allocator_shop_id IS '分配者店铺ID（0表示平台分配）';

-- ============================================
-- 2. 从现有数据迁移 series_id 和 allocator_shop_id
-- ============================================

-- 通过 package 表获取 series_id
UPDATE tb_shop_package_allocation spa
SET series_id = p.series_id
FROM tb_package p
WHERE spa.package_id = p.id AND spa.series_id = 0;

-- 通过 shop_series_allocation 获取 allocator_shop_id
UPDATE tb_shop_package_allocation spa
SET allocator_shop_id = ssa.allocator_shop_id
FROM tb_shop_series_allocation ssa
WHERE spa.allocation_id = ssa.id AND spa.allocator_shop_id = 0;

-- ============================================
-- 3. 删除废弃的 allocation_id 字段
-- ============================================

ALTER TABLE tb_shop_package_allocation
DROP COLUMN IF EXISTS allocation_id;

-- ============================================
-- 4. 添加索引优化查询性能
-- ============================================

CREATE INDEX IF NOT EXISTS idx_shop_package_allocation_series_id 
ON tb_shop_package_allocation(series_id);

CREATE INDEX IF NOT EXISTS idx_shop_package_allocation_allocator_shop_id 
ON tb_shop_package_allocation(allocator_shop_id);

-- ============================================
-- 5. 删除废弃的表
-- ============================================

-- 删除系列分配配置表
DROP TABLE IF EXISTS tb_shop_series_allocation_config;

-- 删除系列分配表
DROP TABLE IF EXISTS tb_shop_series_allocation;
