feat(admin): implement user level, group and label modules with database, rpc and ui
This commit is contained in:
30
docs/sql/10_schema/user/ak_user_groups_v1.sql
Normal file
30
docs/sql/10_schema/user/ak_user_groups_v1.sql
Normal file
@@ -0,0 +1,30 @@
|
||||
-- =====================================================================================
|
||||
-- Schema: 用户分组表
|
||||
-- 位置:docs/sql/10_schema/user/ak_user_groups_v1.sql
|
||||
-- 对象类型:Schema (DDL)
|
||||
-- 版本:v1
|
||||
-- 说明:用户分组定义,支持逻辑删除和状态管理
|
||||
-- =====================================================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.ak_user_groups (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
|
||||
name TEXT NOT NULL,
|
||||
remark TEXT NULL,
|
||||
status INT NOT NULL DEFAULT 1, -- 1:启用, 0:禁用
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
deleted_at TIMESTAMPTZ NULL,
|
||||
|
||||
CONSTRAINT ak_user_groups_name_length CHECK (char_length(name) >= 1)
|
||||
);
|
||||
|
||||
-- 唯一性约束(仅对未删除记录生效)
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS ak_user_groups_name_uniq_active
|
||||
ON public.ak_user_groups (name)
|
||||
WHERE deleted_at IS NULL;
|
||||
|
||||
-- 常用查询索引
|
||||
CREATE INDEX IF NOT EXISTS ak_user_groups_status_idx ON public.ak_user_groups (status) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX IF NOT EXISTS ak_user_groups_created_at_idx ON public.ak_user_groups (created_at DESC);
|
||||
33
docs/sql/10_schema/user/ak_user_labels_v1.sql
Normal file
33
docs/sql/10_schema/user/ak_user_labels_v1.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
-- =====================================================================================
|
||||
-- Schema: 用户标签表
|
||||
-- 位置:docs/sql/10_schema/user/ak_user_labels_v1.sql
|
||||
-- 对象类型:Schema (DDL)
|
||||
-- 版本:v1
|
||||
-- 说明:用户标签定义,支持逻辑删除与状态管理
|
||||
-- =====================================================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.ak_user_labels (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
|
||||
name TEXT NOT NULL,
|
||||
color TEXT NULL,
|
||||
remark TEXT NULL,
|
||||
status INT NOT NULL DEFAULT 1,
|
||||
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
||||
deleted_at TIMESTAMPTZ NULL,
|
||||
|
||||
CONSTRAINT ak_user_labels_name_length CHECK (char_length(name) >= 1)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS ak_user_labels_name_uniq_active
|
||||
ON public.ak_user_labels (name)
|
||||
WHERE deleted_at IS NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ak_user_labels_status_idx
|
||||
ON public.ak_user_labels (status)
|
||||
WHERE deleted_at IS NULL;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS ak_user_labels_created_at_idx
|
||||
ON public.ak_user_labels (created_at DESC);
|
||||
55
docs/sql/10_schema/user/ak_user_levels_v1.sql
Normal file
55
docs/sql/10_schema/user/ak_user_levels_v1.sql
Normal 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;
|
||||
Reference in New Issue
Block a user