修复订单显示bug
This commit is contained in:
269
mall_sql/scripts/seed_homecare_worker.sql
Normal file
269
mall_sql/scripts/seed_homecare_worker.sql
Normal file
@@ -0,0 +1,269 @@
|
||||
-- =====================================================================================
|
||||
-- 脚本:创建居家服务员测试账号及完整档案(一站式 SQL)
|
||||
-- 用途:为 delivery 端登录提供真实的服务人员档案
|
||||
-- 执行环境:Supabase SQL Editor(需 postgres/superuser 权限)
|
||||
-- 对应前端配置:医疗-delivery/ak/config.uts
|
||||
-- - SUPA_URL: http://119.146.131.237:9126
|
||||
-- - 测试账号: homecare_worker@test.com / Homecare123!
|
||||
-- =====================================================================================
|
||||
|
||||
-- 0. 确保 pgcrypto 扩展可用(用于 bcrypt 密码哈希)
|
||||
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
v_auth_id UUID;
|
||||
v_instance_id UUID;
|
||||
v_email TEXT := 'homecare_worker@test.com';
|
||||
v_password TEXT := 'Homecare123!';
|
||||
v_nickname TEXT := '居家服务员';
|
||||
v_phone TEXT := '13800138000';
|
||||
BEGIN
|
||||
-- -------------------------------------------------------------------------
|
||||
-- 步骤 1:获取 instance_id(自托管 Supabase 通常只有一个 instance)
|
||||
-- -------------------------------------------------------------------------
|
||||
SELECT id INTO v_instance_id FROM auth.instances LIMIT 1;
|
||||
IF v_instance_id IS NULL THEN
|
||||
v_instance_id := '00000000-0000-0000-0000-000000000000'::UUID;
|
||||
END IF;
|
||||
|
||||
-- -------------------------------------------------------------------------
|
||||
-- 步骤 2:创建/更新 auth.users(Supabase Auth 核心用户表)
|
||||
-- 使用 crypt(..., gen_salt('bf')) 生成 bcrypt 哈希,与 gotrue 兼容
|
||||
-- -------------------------------------------------------------------------
|
||||
INSERT INTO auth.users (
|
||||
instance_id,
|
||||
id,
|
||||
aud,
|
||||
role,
|
||||
email,
|
||||
encrypted_password,
|
||||
email_confirmed_at,
|
||||
confirmation_sent_at,
|
||||
recovery_sent_at,
|
||||
email_change_sent_at,
|
||||
new_email,
|
||||
invited_at,
|
||||
confirmation_token,
|
||||
recovery_token,
|
||||
email_change_token_new,
|
||||
email_change_token_current,
|
||||
email_change,
|
||||
email_change_confirm_status,
|
||||
banned_until,
|
||||
reauthentication_token,
|
||||
reauthentication_sent_at,
|
||||
is_super_admin,
|
||||
created_at,
|
||||
updated_at,
|
||||
phone,
|
||||
phone_confirmed_at,
|
||||
phone_change,
|
||||
phone_change_token,
|
||||
phone_change_sent_at,
|
||||
confirmed_at,
|
||||
raw_app_meta_data,
|
||||
raw_user_meta_data,
|
||||
is_sso_user,
|
||||
deleted_at,
|
||||
is_anonymous
|
||||
) VALUES (
|
||||
v_instance_id,
|
||||
gen_random_uuid(),
|
||||
'authenticated',
|
||||
'authenticated',
|
||||
v_email,
|
||||
crypt(v_password, gen_salt('bf')),
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
0,
|
||||
NULL,
|
||||
'',
|
||||
NULL,
|
||||
FALSE,
|
||||
NOW(),
|
||||
NOW(),
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
'',
|
||||
NULL,
|
||||
NOW(),
|
||||
'{"provider":"email","providers":["email"]}'::jsonb,
|
||||
'{"name":"居家服务员","role":"delivery","nickname":"居家服务员"}'::jsonb,
|
||||
FALSE,
|
||||
NULL,
|
||||
FALSE
|
||||
)
|
||||
ON CONFLICT (email) DO UPDATE SET
|
||||
encrypted_password = crypt(v_password, gen_salt('bf')),
|
||||
email_confirmed_at = COALESCE(auth.users.email_confirmed_at, NOW()),
|
||||
confirmed_at = COALESCE(auth.users.confirmed_at, NOW()),
|
||||
updated_at = NOW(),
|
||||
raw_user_meta_data = '{"name":"居家服务员","role":"delivery","nickname":"居家服务员"}'::jsonb,
|
||||
deleted_at = NULL,
|
||||
is_anonymous = FALSE;
|
||||
|
||||
-- 获取刚创建/更新的用户 ID
|
||||
SELECT id INTO v_auth_id FROM auth.users WHERE email = v_email LIMIT 1;
|
||||
|
||||
IF v_auth_id IS NULL THEN
|
||||
RAISE EXCEPTION 'auth.users 插入失败,请检查权限或表结构';
|
||||
END IF;
|
||||
|
||||
RAISE NOTICE '✓ auth.users 已创建/更新: % (ID: %)', v_email, v_auth_id;
|
||||
|
||||
-- -------------------------------------------------------------------------
|
||||
-- 步骤 3:创建 auth.identities(Supabase Auth 身份表,某些版本必需)
|
||||
-- -------------------------------------------------------------------------
|
||||
INSERT INTO auth.identities (
|
||||
id,
|
||||
user_id,
|
||||
identity_data,
|
||||
provider,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
v_auth_id::TEXT,
|
||||
v_auth_id,
|
||||
jsonb_build_object('sub', v_auth_id::TEXT, 'email', v_email),
|
||||
'email',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
identity_data = jsonb_build_object('sub', v_auth_id::TEXT, 'email', v_email),
|
||||
updated_at = NOW();
|
||||
|
||||
RAISE NOTICE '✓ auth.identities 已创建/更新';
|
||||
|
||||
-- -------------------------------------------------------------------------
|
||||
-- 步骤 4:创建 public.ak_users(业务用户资料表)
|
||||
-- -------------------------------------------------------------------------
|
||||
INSERT INTO public.ak_users (
|
||||
id,
|
||||
username,
|
||||
email,
|
||||
gender,
|
||||
birthday,
|
||||
height_cm,
|
||||
weight_kg,
|
||||
bio,
|
||||
avatar_url,
|
||||
preferred_language,
|
||||
health_goal,
|
||||
service_address,
|
||||
emergency_contact,
|
||||
chronic_notes,
|
||||
care_preference,
|
||||
role,
|
||||
school_id,
|
||||
grade_id,
|
||||
class_id,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
v_auth_id,
|
||||
v_nickname,
|
||||
v_email,
|
||||
'unknown',
|
||||
NULL,
|
||||
0,
|
||||
0,
|
||||
'居家养老护理员,具备基础护理和康复训练资质',
|
||||
'https://api.dicebear.com/7.x/avataaars/svg?seed=homecare',
|
||||
'zh-CN',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'delivery',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
username = EXCLUDED.username,
|
||||
email = EXCLUDED.email,
|
||||
role = EXCLUDED.role,
|
||||
bio = EXCLUDED.bio,
|
||||
avatar_url = EXCLUDED.avatar_url,
|
||||
updated_at = NOW();
|
||||
|
||||
RAISE NOTICE '✓ public.ak_users 已插入/更新';
|
||||
|
||||
-- -------------------------------------------------------------------------
|
||||
-- 步骤 5:创建 public.ml_delivery_staff(服务人员档案表)
|
||||
-- -------------------------------------------------------------------------
|
||||
INSERT INTO public.ml_delivery_staff (
|
||||
id,
|
||||
uid,
|
||||
nickname,
|
||||
avatar,
|
||||
phone,
|
||||
status,
|
||||
is_active,
|
||||
station_id,
|
||||
staff_no,
|
||||
online_status,
|
||||
certificate_status,
|
||||
certificate_expire_at,
|
||||
service_area,
|
||||
skills,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (
|
||||
gen_random_uuid(),
|
||||
v_auth_id,
|
||||
v_nickname,
|
||||
'https://api.dicebear.com/7.x/avataaars/svg?seed=homecare',
|
||||
v_phone,
|
||||
1, -- 状态: 1-启用
|
||||
TRUE, -- 是否激活
|
||||
NULL, -- 所属站点(可选)
|
||||
'HC' || EXTRACT(YEAR FROM NOW()) || LPAD(FLOOR(RANDOM() * 10000)::TEXT, 4, '0'), -- 工号
|
||||
'resting', -- 在线状态
|
||||
'valid', -- 资质状态
|
||||
(NOW() + INTERVAL '1 year')::DATE, -- 资质到期日
|
||||
'北京市朝阳区',
|
||||
'["基础护理", "康复训练", "上门照护", "健康监测"]'::jsonb,
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (uid) WHERE deleted_at IS NULL DO UPDATE SET
|
||||
nickname = EXCLUDED.nickname,
|
||||
phone = EXCLUDED.phone,
|
||||
status = EXCLUDED.status,
|
||||
is_active = EXCLUDED.is_active,
|
||||
online_status = EXCLUDED.online_status,
|
||||
certificate_status = EXCLUDED.certificate_status,
|
||||
service_area = EXCLUDED.service_area,
|
||||
skills = EXCLUDED.skills,
|
||||
updated_at = NOW();
|
||||
|
||||
RAISE NOTICE '✓ public.ml_delivery_staff 已插入/更新';
|
||||
|
||||
-- -------------------------------------------------------------------------
|
||||
-- 完成
|
||||
-- -------------------------------------------------------------------------
|
||||
RAISE NOTICE '============================================';
|
||||
RAISE NOTICE '居家服务员账号初始化完成!';
|
||||
RAISE NOTICE '邮箱: %', v_email;
|
||||
RAISE NOTICE '密码: %', v_password;
|
||||
RAISE NOTICE '用户ID: %', v_auth_id;
|
||||
RAISE NOTICE 'SUPA_URL: http://119.146.131.237:9126';
|
||||
RAISE NOTICE '============================================';
|
||||
|
||||
END $$;
|
||||
Reference in New Issue
Block a user