-- 1. 创建优惠券模板数据 (Templates)
-- 修正版：适配实际表结构 ml_coupon_templates(coupon_type, discount_type, discount_value...)

DO $$ 
DECLARE
    v_merchant_id UUID;
    v_shop_id UUID;
    v_product_id UUID;
    v_template_shop_id UUID;
    v_template_product_id UUID;
    v_template_platform_id UUID;
    v_user_id UUID := 'b653fded-7d5e-4950-aa0d-725595543e3c'; -- 默认测试用户ID
BEGIN

    -- 获取一个商户和店铺
    SELECT id, merchant_id INTO v_shop_id, v_merchant_id FROM public.ml_shops LIMIT 1;
    -- 获取一个商品
    SELECT id INTO v_product_id FROM public.ml_products WHERE merchant_id = v_merchant_id LIMIT 1;

    -- A. 创建店铺满减券模板 (满100减10)
    -- coupon_type: 1(满减), discount_type: 1(固定金额), discount_value: 10
    INSERT INTO public.ml_coupon_templates (
        merchant_id, 
        name, 
        coupon_type, 
        discount_type, 
        discount_value, 
        min_order_amount, 
        total_quantity, 
        start_time, 
        end_time, 
        status,
        applicable_products
    ) VALUES (
        v_merchant_id, 
        '店铺新人礼 - 满100减10', 
        1, -- 满减
        1, -- 固定金额
        10.00, -- 减10元
        100.00, -- 满100
        9999, 
        now(), 
        now() + interval '1 year', 
        1,
        '[]'::jsonb
    ) RETURNING id INTO v_template_shop_id;

    -- B. 创建商品专属折扣券模板 (无门槛，9折)
    -- coupon_type: 2(折扣), discount_type: 2(百分比), discount_value: 0.9 (代表9折，消费端需适配逻辑)
    INSERT INTO public.ml_coupon_templates (
        merchant_id, 
        name, 
        coupon_type, 
        discount_type, 
        discount_value, 
        min_order_amount, 
        total_quantity, 
        start_time, 
        end_time, 
        status,
        applicable_products
    ) VALUES (
        v_merchant_id, 
        '爆品专属9折券', 
        2, -- 折扣
        2, -- 百分比
        0.90, -- 9折
        0, -- 无门槛
        9999, 
        now(), 
        now() + interval '1 year', 
        1,
        jsonb_build_array(v_product_id) -- 指定商品ID
    ) RETURNING id INTO v_template_product_id;

    -- C. 创建平台通用红包模板 (无门槛，5元)
    -- merchant_id: NULL, coupon_type: 1(满减/直减), discount_type: 1(固定), discount_value: 5
    INSERT INTO public.ml_coupon_templates (
        merchant_id, 
        name, 
        coupon_type, 
        discount_type, 
        discount_value, 
        min_order_amount, 
        total_quantity, 
        start_time, 
        end_time, 
        status,
        applicable_products
    ) VALUES (
        NULL, 
        '新人注册红包', 
        1, 
        1, 
        5.00, 
        0, 
        9999, 
        now(), 
        now() + interval '1 year', 
        1,
        '[]'::jsonb
    ) RETURNING id INTO v_template_platform_id;

    RAISE NOTICE 'Created Templates: Shop=%, Product=%, Platform=%', v_template_shop_id, v_template_product_id, v_template_platform_id;

    -- 2. 为测试直接“领取”几张优惠券 (Populate User Coupons)
    
    -- 领取店铺券 (未使用)
    INSERT INTO public.ml_user_coupons (
        user_id, template_id, coupon_code, status, received_at, expire_at
    ) VALUES (
        v_user_id, v_template_shop_id, 'SH' || substring(md5(clock_timestamp()::text) from 1 for 8), 1, now(), now() + interval '7 days'
    );

    -- 领取红包 (未使用)
    INSERT INTO public.ml_user_coupons (
        user_id, template_id, coupon_code, status, received_at, expire_at
    ) VALUES (
        v_user_id, v_template_platform_id, 'HB' || substring(md5(clock_timestamp()::text) from 1 for 8), 1, now(), now() + interval '30 days'
    );

    -- 领取一张已过期的券 (用于测试展示)
    INSERT INTO public.ml_user_coupons (
        user_id, template_id, coupon_code, status, received_at, expire_at
    ) VALUES (
        v_user_id, v_template_shop_id, 'EX' || substring(md5(clock_timestamp()::text) from 1 for 8), 3, now() - interval '10 days', now() - interval '3 days'
    );

    RAISE NOTICE 'Successfully inserted test coupons for user %', v_user_id;

END $$;
