001_initial_tables.sql 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. -- ============================================================
  2. -- 初始建表
  3. -- ============================================================
  4. CREATE SCHEMA IF NOT EXISTS domain_monitor;
  5. -- 监控域名表
  6. CREATE TABLE IF NOT EXISTS domain_monitor.monitored_domains (
  7. id SERIAL PRIMARY KEY,
  8. domain VARCHAR NOT NULL,
  9. remark VARCHAR(500),
  10. super_admin_id INTEGER,
  11. is_active BOOLEAN DEFAULT TRUE,
  12. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  13. updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  14. );
  15. CREATE UNIQUE INDEX IF NOT EXISTS ix_monitored_domains_domain ON domain_monitor.monitored_domains (domain);
  16. CREATE INDEX IF NOT EXISTS ix_monitored_domains_id ON domain_monitor.monitored_domains (id);
  17. -- 超级管理员表
  18. CREATE TABLE IF NOT EXISTS domain_monitor.super_admin (
  19. id SERIAL PRIMARY KEY,
  20. username VARCHAR NOT NULL,
  21. nickname VARCHAR,
  22. remark VARCHAR(500),
  23. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  24. );
  25. -- 超级管理员与租户关联表
  26. CREATE TABLE IF NOT EXISTS domain_monitor.super_admin_tenant (
  27. id SERIAL PRIMARY KEY,
  28. super_admin_id INTEGER NOT NULL,
  29. tenant_id INTEGER NOT NULL
  30. );
  31. CREATE INDEX IF NOT EXISTS ix_sat_super_admin ON domain_monitor.super_admin_tenant (super_admin_id);
  32. CREATE INDEX IF NOT EXISTS ix_sat_tenant ON domain_monitor.super_admin_tenant (tenant_id);
  33. -- 租户表
  34. CREATE TABLE IF NOT EXISTS domain_monitor.tenant (
  35. id SERIAL PRIMARY KEY,
  36. company_name VARCHAR,
  37. subdomain VARCHAR NOT NULL,
  38. balance NUMERIC(20, 4) DEFAULT 0,
  39. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
  40. updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  41. );
  42. CREATE UNIQUE INDEX IF NOT EXISTS ix_tenant_subdomain ON domain_monitor.tenant (subdomain);
  43. -- 模型信息参考表
  44. CREATE TABLE IF NOT EXISTS domain_monitor.models (
  45. id SERIAL PRIMARY KEY,
  46. model_code VARCHAR NOT NULL,
  47. model_name VARCHAR NOT NULL,
  48. original_price NUMERIC(20, 4)
  49. );
  50. CREATE UNIQUE INDEX IF NOT EXISTS ix_model_code ON domain_monitor.models (model_code);
  51. -- 用户消费明细表
  52. CREATE TABLE IF NOT EXISTS domain_monitor.user_consumption_detail (
  53. id SERIAL PRIMARY KEY,
  54. user_id VARCHAR NOT NULL,
  55. username VARCHAR,
  56. tenant_id INTEGER NOT NULL,
  57. model_code VARCHAR NOT NULL,
  58. call_count INTEGER DEFAULT 0,
  59. user_actual_total NUMERIC(20, 4) DEFAULT 0,
  60. user_discount NUMERIC(10, 4) DEFAULT 1.0000,
  61. user_actual_price NUMERIC(20, 4),
  62. tenant_actual_total NUMERIC(20, 4) DEFAULT 0,
  63. tenant_discount NUMERIC(10, 4) DEFAULT 1.0000,
  64. tenant_actual_price NUMERIC(20, 4),
  65. super_admin_discount NUMERIC(10, 4) DEFAULT 1.0000,
  66. super_admin_actual_price NUMERIC(20, 4),
  67. original_price NUMERIC(20, 4),
  68. consumption_date TIMESTAMP WITH TIME ZONE NOT NULL,
  69. order_no VARCHAR,
  70. invoiced BOOLEAN DEFAULT FALSE,
  71. created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
  72. );
  73. CREATE INDEX IF NOT EXISTS ix_ucd_user ON domain_monitor.user_consumption_detail (user_id);
  74. CREATE INDEX IF NOT EXISTS ix_ucd_tenant ON domain_monitor.user_consumption_detail (tenant_id);
  75. CREATE INDEX IF NOT EXISTS ix_ucd_model ON domain_monitor.user_consumption_detail (model_code);
  76. CREATE INDEX IF NOT EXISTS ix_ucd_consumption_date ON domain_monitor.user_consumption_detail (consumption_date);