99 lines
4.2 KiB
SQL
99 lines
4.2 KiB
SQL
-- =====================================================================================
|
||
-- 补充消息 notification 和 客服 chat 相关表结构及测试数据
|
||
-- 对应用户 ID: b653fded-7d5e-4950-aa0d-725595543e3c (test@mall.com)
|
||
-- =====================================================================================
|
||
|
||
-- 1. 创建通知/消息表 (ml_notifications)
|
||
-- 用于存储: 系统通知、优惠活动、订单通知等
|
||
CREATE TABLE IF NOT EXISTS public.ml_notifications (
|
||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||
user_id UUID NOT NULL REFERENCES public.ak_users(id) ON DELETE CASCADE,
|
||
type VARCHAR(50) NOT NULL, -- 'system'(系统通知), 'promotion'(优惠活动), 'order'(订单通知)
|
||
title VARCHAR(200) NOT NULL,
|
||
content TEXT,
|
||
icon_url TEXT, -- 图标/图片地址
|
||
link_url TEXT, -- 点击跳转链接
|
||
is_read BOOLEAN DEFAULT FALSE,
|
||
extra_data JSONB DEFAULT '{}', -- 扩展数据
|
||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||
);
|
||
|
||
COMMENT ON TABLE public.ml_notifications IS '系统通知与活动消息表';
|
||
|
||
-- 开启 RLS
|
||
ALTER TABLE public.ml_notifications ENABLE ROW LEVEL SECURITY;
|
||
|
||
-- 创建 RLS 策略 (用户只能查自己的通知)
|
||
CREATE POLICY ml_notifications_select_policy ON public.ml_notifications
|
||
FOR SELECT USING (
|
||
auth.uid() = (SELECT auth_id FROM public.ak_users WHERE id = user_id)
|
||
);
|
||
|
||
-- 2. 创建客服会话/消息表 (ml_chat_messages)
|
||
-- 用于存储: 用户与客服的聊天记录
|
||
CREATE TABLE IF NOT EXISTS public.ml_chat_messages (
|
||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||
session_id UUID DEFAULT uuid_generate_v4(), -- 会话ID,可用于分组
|
||
sender_id UUID REFERENCES public.ak_users(id), -- 发送者ID (NULL代表系统/自动回复)
|
||
receiver_id UUID REFERENCES public.ak_users(id), -- 接收者ID
|
||
content TEXT,
|
||
msg_type VARCHAR(20) DEFAULT 'text', -- 'text', 'image', 'product', 'order'
|
||
is_read BOOLEAN DEFAULT FALSE,
|
||
is_from_user BOOLEAN DEFAULT FALSE, -- 方便前端判断方向 (true: 用户发给客服, false: 客服发给用户)
|
||
extra_data JSONB DEFAULT '{}', -- 用于存储商品卡片信息等
|
||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||
);
|
||
|
||
COMMENT ON TABLE public.ml_chat_messages IS '客服聊天记录表';
|
||
|
||
-- 开启 RLS
|
||
ALTER TABLE public.ml_chat_messages ENABLE ROW LEVEL SECURITY;
|
||
|
||
-- 创建 RLS 策略 (用户只能查属于自己的消息)
|
||
CREATE POLICY ml_chat_messages_select_policy ON public.ml_chat_messages
|
||
FOR SELECT USING (
|
||
auth.uid() IN (
|
||
SELECT auth_id FROM public.ak_users WHERE id IN (sender_id, receiver_id)
|
||
)
|
||
);
|
||
|
||
-- =====================================================================================
|
||
-- 3. 插入测试数据
|
||
-- 目标用户: b653fded-7d5e-4950-aa0d-725595543e3c
|
||
-- =====================================================================================
|
||
|
||
-- 3.1 插入一条“系统通知”
|
||
INSERT INTO public.ml_notifications (user_id, type, title, content, icon_url, created_at)
|
||
VALUES (
|
||
'b653fded-7d5e-4950-aa0d-725595543e3c',
|
||
'system',
|
||
'系统安全升级通知',
|
||
'尊敬的用户,为了保障您的账户安全,我们已完成系统安全组件升级。建议您定期修改登录密码。',
|
||
'/static/icons/system-notice.png',
|
||
NOW() - INTERVAL '1 day' -- 昨天收到的
|
||
);
|
||
|
||
-- 3.2 插入一条“优惠活动”
|
||
INSERT INTO public.ml_notifications (user_id, type, title, content, icon_url, link_url, created_at)
|
||
VALUES (
|
||
'b653fded-7d5e-4950-aa0d-725595543e3c',
|
||
'promotion',
|
||
'夏日清凉大促开启',
|
||
'全场商品5折起!清凉一夏,好物带回家。点击立即参与抢购,限量神券等你来拿!',
|
||
'/static/icons/promotion.png',
|
||
'/pages/mall/activity/summer_sale',
|
||
NOW()
|
||
);
|
||
|
||
-- 3.3 插入一条“客服消息” (模仿客服发给用户的欢迎语)
|
||
INSERT INTO public.ml_chat_messages (sender_id, receiver_id, content, msg_type, is_from_user, created_at)
|
||
VALUES (
|
||
NULL, -- NULL表示系统客服
|
||
'b653fded-7d5e-4950-aa0d-725595543e3c',
|
||
'您好!欢迎光临商城优选。请问有什么可以帮您的吗?我们全天24小时为您服务。',
|
||
'text',
|
||
FALSE, -- 客服发的
|
||
NOW()
|
||
);
|