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

47 lines
2.0 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_divisions_v1.sql
-- 说明:管理分销体系中的事业部,支持独立分销比例、邀请码及有效期,按商家隔离。
-- =====================================================================================
CREATE TABLE IF NOT EXISTS public.ak_distribution_divisions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
merchant_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
uid UUID NOT NULL REFERENCES public.ak_users(id), -- 事业部负责人UID
name TEXT NOT NULL, -- 事业部名称
invite_code TEXT UNIQUE NOT NULL, -- 事业部专属邀请码
ratio DECIMAL(5,2) DEFAULT 0, -- 事业部额外分销比例 (%)
agent_count INTEGER DEFAULT 0, -- 下属代理商数量 (由程序或触发器维护)
end_time TIMESTAMPTZ, -- 协议截止时间
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_divisions ENABLE ROW LEVEL SECURITY;
-- 权限策略
CREATE POLICY "Merchants manage their own divisions"
ON public.ak_distribution_divisions FOR ALL
TO authenticated
USING (merchant_id = auth.uid())
WITH CHECK (merchant_id = auth.uid());
-- 允许查看
CREATE POLICY "Authenticated users view active divisions"
ON public.ak_distribution_divisions FOR SELECT
TO authenticated
USING (status = true);
-- 索引
CREATE INDEX IF NOT EXISTS idx_divisions_merchant ON public.ak_distribution_divisions(merchant_id);
CREATE INDEX IF NOT EXISTS idx_divisions_uid ON public.ak_distribution_divisions(uid);