feat(admin): implement user level, group and label modules with database, rpc and ui

This commit is contained in:
comlibmb
2026-02-10 20:34:45 +08:00
parent 80e5a1ddeb
commit 47968565a5
28 changed files with 1896 additions and 140 deletions

View File

@@ -0,0 +1,55 @@
-- =====================================================================================
-- Schema: 用户等级表
-- 位置docs/sql/10_schema/user/
-- 对象类型Schema (DDL)
-- 版本v1
-- 说明:用户等级(经验值/折扣/展示/状态),支持逻辑删除
-- =====================================================================================
CREATE TABLE IF NOT EXISTS public.ak_user_levels (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name TEXT NOT NULL,
level_weight INT NOT NULL,
min_experience INT NOT NULL DEFAULT 0,
discount_percent INT NOT NULL DEFAULT 100,
is_visible BOOLEAN NOT NULL DEFAULT TRUE,
status INT NOT NULL DEFAULT 1,
icon_url TEXT NULL,
bg_image_url TEXT NULL,
bg_style_json JSONB NULL,
remark TEXT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
deleted_at TIMESTAMPTZ NULL,
CONSTRAINT ak_user_levels_level_weight_nonnegative CHECK (level_weight >= 0),
CONSTRAINT ak_user_levels_min_experience_nonnegative CHECK (min_experience >= 0),
CONSTRAINT ak_user_levels_discount_percent_range CHECK (discount_percent BETWEEN 1 AND 100)
);
-- 唯一性(仅对未删除记录生效)
CREATE UNIQUE INDEX IF NOT EXISTS ak_user_levels_name_uniq_active
ON public.ak_user_levels (name)
WHERE deleted_at IS NULL;
CREATE UNIQUE INDEX IF NOT EXISTS ak_user_levels_level_weight_uniq_active
ON public.ak_user_levels (level_weight)
WHERE deleted_at IS NULL;
-- 常用查询索引
CREATE INDEX IF NOT EXISTS ak_user_levels_active_filter_idx
ON public.ak_user_levels (status, is_visible)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS ak_user_levels_min_experience_idx
ON public.ak_user_levels (min_experience)
WHERE deleted_at IS NULL;
CREATE INDEX IF NOT EXISTS ak_user_levels_level_weight_desc_idx
ON public.ak_user_levels (level_weight DESC)
WHERE deleted_at IS NULL;