智慧水务管理系统 - 精河县供水工程综合管理平台

V_platform_audit.sql 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. -- =============================================
  2. -- 平台运维审计 + 用户授权管理 DDL
  3. -- Version: 1.0
  4. -- Module: wm-revenue
  5. -- =============================================
  6. -- 1. 操作日志表
  7. CREATE TABLE IF NOT EXISTS pa_audit_log (
  8. id BIGSERIAL PRIMARY KEY,
  9. operator VARCHAR(100),
  10. operator_id BIGINT,
  11. module VARCHAR(100),
  12. action VARCHAR(50),
  13. target_type VARCHAR(50),
  14. target_id BIGINT,
  15. before_value TEXT,
  16. after_value TEXT,
  17. ip_address VARCHAR(50),
  18. user_agent VARCHAR(500),
  19. request_url VARCHAR(500),
  20. request_method VARCHAR(10),
  21. result VARCHAR(20) DEFAULT 'success',
  22. remark VARCHAR(500),
  23. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  24. );
  25. CREATE INDEX idx_audit_log_module ON pa_audit_log(module);
  26. CREATE INDEX idx_audit_log_action ON pa_audit_log(action);
  27. CREATE INDEX idx_audit_log_operator_id ON pa_audit_log(operator_id);
  28. CREATE INDEX idx_audit_log_created_at ON pa_audit_log(created_at);
  29. CREATE INDEX idx_audit_log_target ON pa_audit_log(target_type, target_id);
  30. COMMENT ON TABLE pa_audit_log IS '操作日志(CRUD审计)';
  31. COMMENT ON COLUMN pa_audit_log.operator IS '操作人姓名';
  32. COMMENT ON COLUMN pa_audit_log.operator_id IS '操作人ID';
  33. COMMENT ON COLUMN pa_audit_log.module IS '模块名称';
  34. COMMENT ON COLUMN pa_audit_log.action IS '操作类型:create/update/delete/query/export/login/logout';
  35. COMMENT ON COLUMN pa_audit_log.target_type IS '目标类型';
  36. COMMENT ON COLUMN pa_audit_log.target_id IS '目标ID';
  37. COMMENT ON COLUMN pa_audit_log.before_value IS '操作前数据(JSON)';
  38. COMMENT ON COLUMN pa_audit_log.after_value IS '操作后数据(JSON)';
  39. -- 2. 平台角色表
  40. CREATE TABLE IF NOT EXISTS pa_platform_role (
  41. id BIGSERIAL PRIMARY KEY,
  42. role_name VARCHAR(100) NOT NULL,
  43. role_code VARCHAR(50) NOT NULL UNIQUE,
  44. description VARCHAR(500),
  45. permissions TEXT DEFAULT '[]',
  46. data_scope VARCHAR(20) DEFAULT 'self',
  47. enabled INTEGER DEFAULT 1,
  48. deleted INTEGER DEFAULT 0,
  49. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  50. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  51. );
  52. CREATE INDEX idx_platform_role_code ON pa_platform_role(role_code);
  53. CREATE INDEX idx_platform_role_enabled ON pa_platform_role(enabled);
  54. COMMENT ON TABLE pa_platform_role IS '平台角色';
  55. COMMENT ON COLUMN pa_platform_role.role_name IS '角色名称';
  56. COMMENT ON COLUMN pa_platform_role.role_code IS '角色编码';
  57. COMMENT ON COLUMN pa_platform_role.permissions IS '权限列表(JSON数组)';
  58. COMMENT ON COLUMN pa_platform_role.data_scope IS '数据范围:all/dept/self/custom';
  59. -- 3. 角色-用户关联表
  60. CREATE TABLE IF NOT EXISTS pa_role_user_relation (
  61. id BIGSERIAL PRIMARY KEY,
  62. role_id BIGINT NOT NULL,
  63. user_id BIGINT NOT NULL,
  64. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  65. );
  66. CREATE INDEX idx_role_user_relation_role ON pa_role_user_relation(role_id);
  67. CREATE INDEX idx_role_user_relation_user ON pa_role_user_relation(user_id);
  68. CREATE UNIQUE INDEX idx_role_user_relation_unique ON pa_role_user_relation(role_id, user_id);
  69. COMMENT ON TABLE pa_role_user_relation IS '角色-用户关联';
  70. -- 4. 平台用户表
  71. CREATE TABLE IF NOT EXISTS pa_platform_user (
  72. id BIGSERIAL PRIMARY KEY,
  73. username VARCHAR(100) NOT NULL UNIQUE,
  74. real_name VARCHAR(100),
  75. phone VARCHAR(20),
  76. email VARCHAR(100),
  77. department_id BIGINT,
  78. role_id BIGINT,
  79. status INTEGER DEFAULT 1,
  80. password VARCHAR(200),
  81. last_login_at TIMESTAMP,
  82. deleted INTEGER DEFAULT 0,
  83. created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  84. updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
  85. );
  86. CREATE INDEX idx_platform_user_username ON pa_platform_user(username);
  87. CREATE INDEX idx_platform_user_department ON pa_platform_user(department_id);
  88. CREATE INDEX idx_platform_user_role ON pa_platform_user(role_id);
  89. CREATE INDEX idx_platform_user_status ON pa_platform_user(status);
  90. COMMENT ON TABLE pa_platform_user IS '平台用户';
  91. COMMENT ON COLUMN pa_platform_user.username IS '登录用户名';
  92. COMMENT ON COLUMN pa_platform_user.status IS '状态:1-启用 0-禁用';
  93. -- =============================================
  94. -- 默认角色数据
  95. -- =============================================
  96. INSERT INTO pa_platform_role (role_name, role_code, description, permissions, data_scope, enabled) VALUES
  97. ('超级管理员', 'SUPER_ADMIN', '系统超级管理员,拥有所有权限',
  98. '["user:read","user:write","user:delete","role:read","role:write","role:delete","audit:read","audit:export","system:config"]',
  99. 'all', 1),
  100. ('运维管理员', 'OPS_ADMIN', '运维管理员,可查看和管理所有运维相关功能',
  101. '["user:read","user:write","role:read","audit:read","audit:export","ops:manage"]',
  102. 'all', 1),
  103. ('普通用户', 'NORMAL_USER', '普通用户,基本查看权限',
  104. '["user:read","audit:read"]',
  105. 'self', 1),
  106. ('部门管理员', 'DEPT_ADMIN', '部门管理员,管理本部门用户',
  107. '["user:read","user:write","role:read","audit:read"]',
  108. 'dept', 1),
  109. ('审计员', 'AUDITOR', '审计员,只读审计日志权限',
  110. '["audit:read","audit:export","user:read","role:read"]',
  111. 'all', 1)
  112. ON CONFLICT (role_code) DO NOTHING;