Files
medical-mall/docs/sql/10_schema/distribution/ak_distribution_agents_v1.sql
2026-02-15 16:37:37 +08:00

42 lines
1.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =====================================================================================
-- Schema: 分销代理商管理表
-- 位置docs/sql/10_schema/distribution/ak_distribution_agents_v1.sql
-- 说明:管理事业部旗下的代理商,按商家隔离。
-- =====================================================================================
CREATE TABLE IF NOT EXISTS public.ak_distribution_agents (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
merchant_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
division_id UUID NOT NULL REFERENCES public.ak_distribution_divisions(id) ON DELETE CASCADE,
uid UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
name TEXT NOT NULL, -- 代理商名称(或备注名)
status BOOLEAN DEFAULT true, -- 状态: true开启, false关闭
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now(),
-- 约束:一个用户在一个商家下只能成为一个代理商
UNIQUE(merchant_id, uid)
);
-- 启用 RLS
ALTER TABLE public.ak_distribution_agents ENABLE ROW LEVEL SECURITY;
-- 权限策略:商家仅能管理自己的代理商
CREATE POLICY "Merchants manage their own agents"
ON public.ak_distribution_agents FOR ALL
TO authenticated
USING (merchant_id = auth.uid())
WITH CHECK (merchant_id = auth.uid());
-- 允许查看
CREATE POLICY "Authenticated users view active agents"
ON public.ak_distribution_agents FOR SELECT
TO authenticated
USING (status = true);
-- 索引
CREATE INDEX IF NOT EXISTS idx_agents_merchant ON public.ak_distribution_agents(merchant_id);
CREATE INDEX IF NOT EXISTS idx_agents_division ON public.ak_distribution_agents(division_id);