feat: support merchant team roles and permissions

This commit is contained in:
yml2213
2026-08-13 11:41:34 +08:00
parent 6c98fa557e
commit a4791decb0
21 changed files with 969 additions and 201 deletions
@@ -0,0 +1,16 @@
-- 商户自定义员工角色。role code 仅在所属商户内唯一,权限以逗号分隔保存。
CREATE TABLE IF NOT EXISTS merchant_roles (
id BIGSERIAL PRIMARY KEY,
created_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ,
merchant_id BIGINT NOT NULL,
code VARCHAR(64) NOT NULL,
name VARCHAR(64) NOT NULL,
permissions TEXT NOT NULL DEFAULT '',
status BIGINT NOT NULL DEFAULT 1
);
CREATE UNIQUE INDEX IF NOT EXISTS idx_merchant_role_code
ON merchant_roles (merchant_id, code);
CREATE INDEX IF NOT EXISTS idx_merchant_roles_merchant_id
ON merchant_roles (merchant_id);
@@ -0,0 +1,11 @@
-- 为已有商户补齐可编辑的默认团队角色。负责人仍是系统保留角色,不落库。
INSERT INTO merchant_roles (merchant_id, code, name, permissions, status)
SELECT merchants.id, roles.code, roles.name, roles.permissions, 1
FROM merchants
CROSS JOIN (
VALUES
('operator', '运营', 'api:manage,callbacks:manage,orders:manage,products:manage,wallet:view'),
('finance', '财务', 'recharge:manage,wallet:ledger,wallet:view'),
('support', '客服', 'orders:manage')
) AS roles(code, name, permissions)
ON CONFLICT (merchant_id, code) DO NOTHING;