-- 自动生成品牌关联商品数据 (每品牌12个)
-- 将此脚本在 Supabase SQL Editor 中运行

DO $$
DECLARE
    v_brand RECORD;
    v_merchant_id UUID;
    v_category_id UUID;
    v_product_id UUID;
    v_i INTEGER;
    v_counter INTEGER := 0;
    v_img_seed TEXT;
BEGIN
    -- 1. 获取一个有效的商户ID (用于作为这些商品的卖家)
    -- 假设系统中至少有一个店铺
    SELECT merchant_id INTO v_merchant_id FROM public.ml_shops WHERE status = 1 LIMIT 1;
    
    -- 如果没有店铺，尝试找一个 merchant角色的用户
    IF v_merchant_id IS NULL THEN
        SELECT id INTO v_merchant_id FROM public.ak_users WHERE role = 'merchant' LIMIT 1;
    END IF;

    IF v_merchant_id IS NULL THEN
        RAISE NOTICE '未找到有效的商户(merchant_id)，无法生成商品数据。请先创建店铺或商户用户。';
        RETURN;
    END IF;

    RAISE NOTICE '使用商户ID: % 进行商品生成', v_merchant_id;

    -- 2. 遍历所有有效品牌
    FOR v_brand IN SELECT * FROM public.ml_brands WHERE is_active = TRUE LOOP
        
        RAISE NOTICE '正在处理品牌: %', v_brand.name;

        -- 为每个品牌生成12个商品
        FOR v_i IN 1..12 LOOP
            -- 随机获取一个商品分类
            SELECT id INTO v_category_id FROM public.ml_categories WHERE is_active = TRUE ORDER BY random() LIMIT 1;
            
            v_img_seed := md5(random()::text);

            -- 插入商品主表
            INSERT INTO public.ml_products (
                merchant_id, 
                category_id, 
                brand_id, 
                product_code, 
                name, 
                subtitle,
                base_price, 
                market_price,
                status, 
                total_stock, 
                available_stock,
                main_image_url,
                description,
                is_new,
                is_hot
            ) VALUES (
                v_merchant_id,
                v_category_id,
                v_brand.id,
                UPPER('BR' || substr(md5(v_brand.id::text || v_i::text || now()::text), 1, 6)), -- 生成唯一编码
                v_brand.name || ' - 明星单品系列 ' || LPAD(v_i::text, 2, '0'),
                '品牌官方正品 极速发货 品质保证',
                (random() * 500 + 50)::decimal(10,2), -- 价格 50-550
                (random() * 800 + 100)::decimal(10,2), -- 市场价
                1, -- 上架状态
                999, 
                999,
                -- 使用随机图片服务
                'https://picsum.photos/400/400?random=' || substr(v_img_seed, 1, 5),
                '<h3>商品详情</h3><p>这是一段自动生成的' || v_brand.name || '商品描述信息。此商品采用优质原料，经过严格质检。</p>',
                (random() > 0.7), -- 30%概率为新品
                (random() > 0.8)  -- 20%概率为热销
            ) RETURNING id INTO v_product_id;

            -- 插入商品默认SKU (确保有库存且有价格，否则前端可能无法下单)
            INSERT INTO public.ml_product_skus (
                product_id, 
                sku_code, 
                price, 
                stock, 
                specifications,
                status
            ) VALUES (
                v_product_id,
                UPPER('SKU' || substr(md5(v_product_id::text), 1, 6)),
                (random() * 500 + 50)::decimal(10,2),
                999,
                '{"规格": "标准版"}',
                1
            );
            
            v_counter := v_counter + 1;
        END LOOP;
        
    END LOOP;
    
    RAISE NOTICE '完成！总共生成了 % 个商品。', v_counter;
    
END $$;
