consumer模块完成95%,在和商家端对接聊天购物闭环

This commit is contained in:
2026-02-06 17:10:31 +08:00
parent 06b7369494
commit e2f1dfb097
1454 changed files with 5425 additions and 210555 deletions

View File

@@ -0,0 +1,52 @@
-- 1. Immediate Fix: Update all shop counts based on existing products
-- Recalculate based on merchant_id link
UPDATE public.ml_shops s
SET product_count = (
SELECT count(*)
FROM public.ml_products p
WHERE p.merchant_id = s.merchant_id
AND p.status = 1
);
-- 2. Permanent Fix: Create a Trigger to keep it updated automatically
-- This ensures when you add/remove products in the future, the shop count updates
CREATE OR REPLACE FUNCTION public.update_shop_product_count_trigger()
RETURNS TRIGGER AS $$
BEGIN
-- Update count for the merchant associated with the NEW product (on Insert/Update)
IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
UPDATE public.ml_shops
SET product_count = (
SELECT count(*)
FROM public.ml_products
WHERE merchant_id = NEW.merchant_id
AND status = 1
)
WHERE merchant_id = NEW.merchant_id;
END IF;
-- Update count for the merchant associated with the OLD product (on Delete/Update)
IF (TG_OP = 'DELETE' OR (TG_OP = 'UPDATE' AND OLD.merchant_id IS DISTINCT FROM NEW.merchant_id)) THEN
UPDATE public.ml_shops
SET product_count = (
SELECT count(*)
FROM public.ml_products
WHERE merchant_id = OLD.merchant_id
AND status = 1
)
WHERE merchant_id = OLD.merchant_id;
END IF;
RETURN NULL;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
-- Drop trigger if exists to avoid error on multiple runs
DROP TRIGGER IF EXISTS on_product_change_update_shop_count ON public.ml_products;
-- Create the trigger
CREATE TRIGGER on_product_change_update_shop_count
AFTER INSERT OR UPDATE OR DELETE ON public.ml_products
FOR EACH ROW
EXECUTE FUNCTION public.update_shop_product_count_trigger();