20260203
This commit is contained in:
62
doc_mall/consumer/sql/simulate_multi_shop.sql
Normal file
62
doc_mall/consumer/sql/simulate_multi_shop.sql
Normal file
@@ -0,0 +1,62 @@
|
||||
-- =====================================================================================
|
||||
-- 模拟多店铺环境:创建第二个商户和店铺,并将部分商品转移过去
|
||||
-- =====================================================================================
|
||||
DO $$
|
||||
DECLARE
|
||||
v_merchant_1 UUID;
|
||||
v_merchant_2 UUID;
|
||||
v_shop_2_id UUID;
|
||||
v_user_email VARCHAR := 'test_merchant_2@example.com';
|
||||
BEGIN
|
||||
-- 1. 获取已存在的第一个商户 (脚本生成的商品属于这个商户)
|
||||
SELECT id INTO v_merchant_1 FROM public.ak_users WHERE role = 'merchant' LIMIT 1;
|
||||
IF v_merchant_1 IS NULL THEN
|
||||
RAISE EXCEPTION '未找到任何商户用户,请先确保基础数据存在';
|
||||
END IF;
|
||||
|
||||
-- 2. 查找或创建第二个商户
|
||||
-- 尝试找一个不是 v_merchant_1 的用户
|
||||
SELECT id INTO v_merchant_2 FROM public.ak_users WHERE id != v_merchant_1 LIMIT 1;
|
||||
|
||||
-- 如果只有一个用户,我们需要"借用"这个身份或者提示用户
|
||||
-- 这里为了安全,如果只有一个用户,我们就不强行创建新用户了(因为涉及auth表),
|
||||
-- 而是尝试将 ak_users 表里可能的普通用户角色临时改为 merchant 来演示
|
||||
IF v_merchant_2 IS NULL THEN
|
||||
-- 尝试找一个普通用户
|
||||
SELECT id INTO v_merchant_2 FROM public.ak_users WHERE role != 'merchant' LIMIT 1;
|
||||
|
||||
IF v_merchant_2 IS NOT NULL THEN
|
||||
-- 升级为商户以便演示
|
||||
UPDATE public.ak_users SET role = 'merchant' WHERE id = v_merchant_2;
|
||||
RAISE NOTICE '已将用户 % 临时升级为商户以便演示多店铺', v_merchant_2;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- 如果实在找不到第二个用户,无法继续
|
||||
IF v_merchant_2 IS NULL THEN
|
||||
RAISE NOTICE '提示:系统中只有一个用户,无法模拟多店铺场景。请先注册第二个用户。';
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
-- 3. 确保第二个商户有店铺
|
||||
SELECT id INTO v_shop_2_id FROM public.ml_shops WHERE merchant_id = v_merchant_2 LIMIT 1;
|
||||
|
||||
IF v_shop_2_id IS NULL THEN
|
||||
INSERT INTO public.ml_shops (merchant_id, shop_name, status, description)
|
||||
VALUES (v_merchant_2, '极客数码专营店', 1, '专注于数码产品配件')
|
||||
RETURNING id INTO v_shop_2_id;
|
||||
RAISE NOTICE '为第二个商户创建了店铺:极客数码专营店';
|
||||
ELSE
|
||||
UPDATE public.ml_shops SET shop_name = '极客数码专营店' WHERE id = v_shop_2_id;
|
||||
END IF;
|
||||
|
||||
-- 4. 将部分商品转移到第二个店铺
|
||||
-- 转移 "数码配件(ACC)" 和 "图书(BOOK)" 类商品
|
||||
UPDATE public.ml_products
|
||||
SET merchant_id = v_merchant_2
|
||||
WHERE product_code LIKE 'ACC%' OR product_code LIKE 'BOOK%';
|
||||
|
||||
RAISE NOTICE '已将 [数码配件] 和 [图书文娱] 类商品转移到第二个店铺。';
|
||||
RAISE NOTICE '现在购物车中添加这些商品应该会显示在不同的分组下。';
|
||||
|
||||
END $$;
|
||||
Reference in New Issue
Block a user