-- ===================================================================================== -- 补充消息 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() );