admin接入数据库
This commit is contained in:
@@ -1,41 +1,29 @@
|
||||
-- =====================================================================================
|
||||
-- Schema: 分销代理商管理表
|
||||
-- 位置:docs/sql/10_schema/distribution/ak_distribution_agents_v1.sql
|
||||
-- 说明:管理事业部旗下的代理商,按商家隔离。
|
||||
-- 对象类型:TABLE
|
||||
-- 版本:v1
|
||||
-- 依赖:ak_users, ak_distribution_divisions
|
||||
-- =====================================================================================
|
||||
|
||||
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关闭
|
||||
|
||||
uid UUID PRIMARY KEY REFERENCES public.ak_users(id) ON DELETE CASCADE,
|
||||
division_uid UUID NOT NULL REFERENCES public.ak_distribution_divisions(uid), -- 所属事业部
|
||||
name TEXT NOT NULL,
|
||||
commission_ratio NUMERIC(5,2) DEFAULT 0 CHECK (commission_ratio >= 0 AND commission_ratio <= 100),
|
||||
is_enabled BOOLEAN DEFAULT TRUE,
|
||||
end_time TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ DEFAULT now(),
|
||||
|
||||
-- 约束:一个用户在一个商家下只能成为一个代理商
|
||||
UNIQUE(merchant_id, uid)
|
||||
created_by UUID REFERENCES public.ak_users(id),
|
||||
updated_by UUID REFERENCES public.ak_users(id)
|
||||
);
|
||||
|
||||
-- 启用 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);
|
||||
CREATE INDEX IF NOT EXISTS idx_distribution_agents_division_uid ON public.ak_distribution_agents(division_uid);
|
||||
|
||||
-- 注释
|
||||
COMMENT ON TABLE public.ak_distribution_agents IS '分销代理商信息表';
|
||||
COMMENT ON COLUMN public.ak_distribution_agents.uid IS '用户ID(关联代理商本人)';
|
||||
COMMENT ON COLUMN public.ak_distribution_agents.division_uid IS '所属事业部UID';
|
||||
COMMENT ON COLUMN public.ak_distribution_agents.commission_ratio IS '代理商固定分佣比例(%)';
|
||||
|
||||
Reference in New Issue
Block a user