刘光辉
4 小时以前 06f314545ac3514d7ce28939920866ae8188d31c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
-- Read-only CTE fixtures; no schema or business data is created/changed.
fixture_folders AS (
  SELECT ('00000000-0000-0000-0000-' || lpad(n::text,12,'0'))::uuid id,
         CASE WHEN n=1 THEN NULL ELSE ('00000000-0000-0000-0000-' || lpad((n-1)::text,12,'0'))::uuid END parent_id,
         'tenant-a'::text tenant_id, NULL::integer f_delete_mark
  FROM generate_series(1,30) n
),
fixture_permissions AS (
  SELECT 'tenant-a'::text tenant_id, principal_type, principal_id, include_child_orgs,
         'FOLDER'::text resource_type,
         ('00000000-0000-0000-0000-' || lpad(folder::text,12,'0'))::uuid resource_id,
         scope resource_scope, action action_code,
         CASE WHEN principal_id='revoked' THEN now() ELSE NULL END revoked_at,
         CASE WHEN principal_id='future' THEN now()+interval '1 day' ELSE now()-interval '1 day' END valid_from,
         CASE WHEN principal_id='expired' THEN now()-interval '1 second' ELSE NULL END valid_to,
         CASE WHEN principal_id='exhausted' THEN 1 ELSE NULL END max_use_count, 1 used_count,
         'MANUAL'::text source_type
  FROM (VALUES
    ('USER','self',false,1,'SELF','PRINT'),
    ('USER','subtree',false,1,'SUBTREE','PRINT'),
    ('USER','subtree',false,2,'SUBTREE','PRINT'),
    ('USER','read-only',false,1,'SUBTREE','READ'),
    ('USER','leaf',false,25,'SELF','PRINT'),
    ('USER','revoked',false,1,'SUBTREE','PRINT'),
    ('USER','expired',false,1,'SUBTREE','PRINT'),
    ('USER','future',false,1,'SUBTREE','PRINT'),
    ('USER','exhausted',false,1,'SUBTREE','PRINT'),
    ('ROLE','role-1',false,1,'SUBTREE','PRINT'),
    ('POSITION','position-1',false,1,'SUBTREE','PRINT'),
    ('GROUP','group-1',false,1,'SUBTREE','PRINT'),
    ('ORG','org-direct',false,1,'SUBTREE','PRINT'),
    ('ORG','org-parent',true,1,'SUBTREE','PRINT')
  ) p(principal_type,principal_id,include_child_orgs,folder,scope,action)
  UNION ALL
  SELECT 'tenant-a', 'USER', 'applicant', false, 'FILE_VERSION',
         '00000000-0000-0000-0000-000000000101'::uuid, 'SELF', 'PRINT',
         NULL::timestamptz, now()-interval '1 day', NULL::timestamptz, NULL::integer, 0, 'WORKFLOW'
),
fixture_tasks AS (
  SELECT 'task-' || lpad(n::text,2,'0') f_id, 'tenant-a'::text f_tenant_id,
         NULL::integer f_delete_mark, CASE WHEN n=34 THEN 'yiquxiao' ELSE 'daidayin' END biz_status,
         'file-' || n wenjian_id, 'D(00)'::text banbenhao, 'document-' || n wenjian_mingcheng,
         'code-' || n wenjian_bianhao, 'org'::text jieshou_bumen_id,
         'wenjian_dayin'::text laiyuan_leixing, 'application-' || n laiyuan_danju_id, 'detail-' || n laiyuan_mingxi_id,
         NULL::timestamp shenhe_wancheng_riqi, NULL::timestamp peixun_wancheng_riqi,
         NULL::timestamp shengxiao_riqi, '1'::text shifou_shoukong, 3 dayin_fenshu,
         NULL::text beizhu_shuoming, timestamp '2026-01-01' f_creator_time
  FROM generate_series(1,34) n
),
fixture_resources AS (
  SELECT 'file-' || n f_id,
         CASE WHEN n=33 THEN 'tenant-b' ELSE 'tenant-a' END f_tenant_id,
         CASE WHEN n=32 THEN 1 ELSE NULL END f_delete_mark,
         ('00000000-0000-0000-0000-' || lpad(least(n,30)::text,12,'0')) wenjian_mulu_id
  FROM generate_series(1,34) n WHERE n != 31
),
fixture_applications AS (
  SELECT 'application-' || n f_id,
         CASE WHEN n=5 THEN 'tenant-b' ELSE 'tenant-a' END f_tenant_id,
         CASE WHEN n=4 THEN 1 ELSE NULL END f_delete_mark,
         CASE WHEN n=2 THEN 'other-user' ELSE 'applicant' END shenqing_ren,
         CASE WHEN n=3 THEN 1 ELSE 2 END f_flow_state
  FROM generate_series(1,10) n
),
fixture_details AS (
  SELECT 'detail-' || n f_id, 'tenant-a'::text f_tenant_id,
         CASE WHEN n=10 THEN 1 ELSE NULL END f_delete_mark,
         CASE WHEN n=6 THEN 'wrong-application' ELSE 'application-' || n END f_foreign_id,
         CASE WHEN n=7 THEN 'wrong-file' ELSE 'file-' || n END wenjian_id,
         CASE WHEN n=9 THEN 'wrong-version' ELSE 'D(00)' END banben_hao,
         'version-' || n banben_id
  FROM generate_series(1,10) n
),
fixture_versions AS (
  SELECT 'version-' || n f_id, 'tenant-a'::text f_tenant_id, NULL::integer f_delete_mark,
         'file-' || n wenjian_id, 'D(00)'::text banbenhao,
         ('00000000-0000-0000-0000-' || lpad((200+n)::text,12,'0')) wenjian_zhongxin_wenjian_id,
         CASE WHEN n=8 THEN '00000000-0000-0000-0000-000000000102'
              WHEN n>10 THEN ('00000000-0000-0000-0000-' || lpad((100+n)::text,12,'0'))
              ELSE '00000000-0000-0000-0000-000000000101' END wenjian_zhongxin_banben_id
  FROM generate_series(1,34) n
),
fixture_org AS (
  SELECT 'tenant-a'::text f_tenant_id, 'org'::text f_id, 'Department'::text f_full_name, NULL::integer f_delete_mark
),
fixture_prints AS (
  SELECT 'tenant-a'::text f_tenant_id, 'task-30'::text dayin_renwu_id,
         NULL::integer f_delete_mark, status biz_status
  FROM (VALUES ('yidayin'),('yizuofei')) p(status)
),