91 lines
3.5 KiB
SQL
91 lines
3.5 KiB
SQL
-- ===================================================================
|
||
-- 用途:为已存在的 auth 用户创建 ml_delivery_staff 服务人员档案(兼容 v1/v2)
|
||
-- 前提:auth.users 中已有 homecare_worker@test.com
|
||
-- ===================================================================
|
||
|
||
DO $$
|
||
DECLARE
|
||
v_uid UUID;
|
||
v_has_v2 BOOLEAN := FALSE;
|
||
BEGIN
|
||
-- 1. 通过邮箱找到用户 ID
|
||
SELECT id INTO v_uid FROM auth.users WHERE email = 'homecare_worker@test.com' LIMIT 1;
|
||
|
||
IF v_uid IS NULL THEN
|
||
RAISE EXCEPTION 'auth.users 中不存在 homecare_worker@test.com,请先创建该用户';
|
||
END IF;
|
||
|
||
-- 2. 确保 ak_users 中有对应记录(role 必须是 delivery)
|
||
INSERT INTO public.ak_users (id, username, email, role, created_at, updated_at)
|
||
VALUES (v_uid, '居家服务员', 'homecare_worker@test.com', 'delivery', NOW(), NOW())
|
||
ON CONFLICT (id) DO UPDATE SET
|
||
username = EXCLUDED.username,
|
||
role = EXCLUDED.role,
|
||
updated_at = NOW();
|
||
|
||
RAISE NOTICE '✓ ak_users 已就绪,uid: %', v_uid;
|
||
|
||
-- 3. 探测 ml_delivery_staff 是否为 v2 结构(是否有 online_status 字段)
|
||
SELECT EXISTS (
|
||
SELECT 1 FROM information_schema.columns
|
||
WHERE table_schema = 'public'
|
||
AND table_name = 'ml_delivery_staff'
|
||
AND column_name = 'online_status'
|
||
) INTO v_has_v2;
|
||
|
||
-- 4. 根据表结构版本执行对应插入
|
||
IF v_has_v2 THEN
|
||
-- v2 结构(含 online_status, certificate_status, staff_no 等)
|
||
INSERT INTO public.ml_delivery_staff (
|
||
id, uid, nickname, avatar, phone,
|
||
status, is_active,
|
||
staff_no, online_status, certificate_status,
|
||
certificate_expire_at, service_area, skills,
|
||
created_at, updated_at
|
||
) VALUES (
|
||
gen_random_uuid(), v_uid, '居家服务员',
|
||
'https://api.dicebear.com/7.x/avataaars/svg?seed=homecare',
|
||
'13800138000',
|
||
1, TRUE,
|
||
'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,
|
||
status = EXCLUDED.status,
|
||
is_active = EXCLUDED.is_active,
|
||
updated_at = NOW();
|
||
|
||
RAISE NOTICE '✓ ml_delivery_staff (v2) 档案已创建/更新';
|
||
ELSE
|
||
-- v1 结构(仅基础字段)
|
||
INSERT INTO public.ml_delivery_staff (
|
||
id, uid, nickname, avatar, phone,
|
||
status, is_active,
|
||
created_at, updated_at
|
||
) VALUES (
|
||
gen_random_uuid(), v_uid, '居家服务员',
|
||
'https://api.dicebear.com/7.x/avataaars/svg?seed=homecare',
|
||
'13800138000',
|
||
1, TRUE,
|
||
NOW(), NOW()
|
||
)
|
||
ON CONFLICT (uid) DO UPDATE SET
|
||
nickname = EXCLUDED.nickname,
|
||
status = EXCLUDED.status,
|
||
is_active = EXCLUDED.is_active,
|
||
updated_at = NOW();
|
||
|
||
RAISE NOTICE '✓ ml_delivery_staff (v1) 档案已创建/更新';
|
||
END IF;
|
||
|
||
RAISE NOTICE '============================================';
|
||
RAISE NOTICE '建档完成!请重新编译小程序后登录测试。';
|
||
RAISE NOTICE '============================================';
|
||
|
||
END $$;
|