用 Supabase 把商家后台的「会员+订单+权限」一次搭好
你想要的其实就三件事:会员数据别乱、订单流程可追踪、不同员工权限别越界。到2026年4月4日 02:00这个时间点,Supabase 的 Postgres + RLS + Webhook 足够把一个小型商家后台跑起来,哪怕你每天 300 单、会员 1 万,也能稳。
Postgres 建表:3 张表就能跑业务
结构别复杂,先把核心字段定死:谁买、买了啥、谁能看。
- members:id(UUID)、phone、name、level、created_at
- orders:id、member_id、amount、status(paid/refund/pending)、created_at
- staff_roles:user_id、role(admin/ops/cs)、store_id
示例(精简版):
create table members(
id uuid primary key default gen_random_uuid(),
phone text unique, name text, level text default 'normal',
created_at timestamptz default now()
);
create table orders(
id uuid primary key default gen_random_uuid(),
member_id uuid references members(id),
amount numeric(10,2) not null,
status text default 'pending',
created_at timestamptz default now()
);
Row Level Security:把“能看什么”写进数据库
RLS 的好处是:就算前端写炸了,数据也不容易被越权读走。
- 会员本人:只能看自己的订单(用 auth.uid() 关联 member 的 user_id,或用映射表)
- 客服 cs:只能查订单,不允许改金额
- 运营 ops:能改订单状态(pending→paid/ refund)
- 管理员 admin:全店可见
做法是给 orders 开 RLS,再按 role 写 policy。重点:policy 里只放最小权限,别偷懒用全表放行。
Webhook 自动触发 + 数据导出:让订单闭环
订单一旦插入或状态变更,就自动通知外部系统,比如发货、发短信、记账。
- 在 Supabase 配置 Database Webhook:监听 orders 的 INSERT/UPDATE,把 payload 打到你的回调 URL(例如 /webhooks/order-paid)
- 回调里做幂等:用 order_id + status 校验,避免重复发货
- 导出给财务:Studio 里筛选 paid 订单直接导出 CSV;或写 SQL 视图(按店铺、日期、支付方式)再导出
可执行建议:今天就按“3 张表 + 3 个角色”落地一版;先把 RLS policy 写到能挡住越权查询;Webhook 只做一件事(比如 paid→发货),跑通后再加退款、对账导出。