thirdparty_tables.sql 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. -- ThirdParty模块数据库表结构
  2. -- 创建时间: 2025-06-13
  3. -- 说明: 第三方服务管理模块的数据库表
  4. -- 第三方服务配置表
  5. CREATE TABLE `kku_thirdparty_services` (
  6. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  7. `name` varchar(100) NOT NULL COMMENT '服务名称',
  8. `code` varchar(50) NOT NULL COMMENT '服务代码(唯一标识)',
  9. `type` varchar(20) NOT NULL COMMENT '服务类型',
  10. `provider` varchar(50) NOT NULL COMMENT '服务提供商',
  11. `description` text COMMENT '服务描述',
  12. `base_url` varchar(255) COMMENT '基础URL',
  13. `version` varchar(20) DEFAULT 'v1' COMMENT 'API版本',
  14. `auth_type` varchar(20) NOT NULL COMMENT '认证类型',
  15. `status` varchar(20) NOT NULL DEFAULT 'INACTIVE' COMMENT '服务状态',
  16. `priority` int(11) DEFAULT 0 COMMENT '优先级(数字越小优先级越高)',
  17. `timeout` int(11) DEFAULT 30 COMMENT '超时时间(秒)',
  18. `retry_times` int(11) DEFAULT 3 COMMENT '重试次数',
  19. `retry_delay` int(11) DEFAULT 1000 COMMENT '重试延迟(毫秒)',
  20. `config` json COMMENT '服务配置信息',
  21. `headers` json COMMENT '默认请求头',
  22. `params` json COMMENT '默认参数',
  23. `webhook_url` varchar(255) COMMENT 'Webhook回调地址',
  24. `webhook_secret` varchar(100) COMMENT 'Webhook密钥',
  25. `health_check_url` varchar(255) COMMENT '健康检查URL',
  26. `health_check_interval` int(11) DEFAULT 300 COMMENT '健康检查间隔(秒)',
  27. `last_health_check` timestamp NULL COMMENT '最后健康检查时间',
  28. `health_status` varchar(20) DEFAULT 'UNKNOWN' COMMENT '健康状态',
  29. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  30. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  31. PRIMARY KEY (`id`),
  32. UNIQUE KEY `uk_code` (`code`),
  33. KEY `idx_type` (`type`),
  34. KEY `idx_provider` (`provider`),
  35. KEY `idx_status` (`status`),
  36. KEY `idx_priority` (`priority`),
  37. KEY `idx_created_at` (`created_at`)
  38. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='第三方服务配置表';
  39. -- 认证凭证表
  40. CREATE TABLE `kku_thirdparty_credentials` (
  41. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  42. `service_id` bigint(20) unsigned NOT NULL COMMENT '服务ID',
  43. `name` varchar(100) NOT NULL COMMENT '凭证名称',
  44. `type` varchar(20) NOT NULL COMMENT '凭证类型',
  45. `credentials` json NOT NULL COMMENT '凭证信息(加密存储)',
  46. `environment` varchar(20) DEFAULT 'production' COMMENT '环境(production/staging/development)',
  47. `is_active` tinyint(1) DEFAULT 1 COMMENT '是否激活',
  48. `expires_at` timestamp NULL COMMENT '过期时间',
  49. `last_used_at` timestamp NULL COMMENT '最后使用时间',
  50. `usage_count` bigint(20) DEFAULT 0 COMMENT '使用次数',
  51. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  52. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  53. PRIMARY KEY (`id`),
  54. KEY `idx_service_id` (`service_id`),
  55. KEY `idx_type` (`type`),
  56. KEY `idx_environment` (`environment`),
  57. KEY `idx_is_active` (`is_active`),
  58. KEY `idx_expires_at` (`expires_at`),
  59. CONSTRAINT `fk_credentials_service` FOREIGN KEY (`service_id`) REFERENCES `kku_thirdparty_services` (`id`) ON DELETE CASCADE
  60. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='认证凭证表';
  61. -- 调用日志表
  62. CREATE TABLE `kku_thirdparty_logs` (
  63. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  64. `service_id` bigint(20) unsigned NOT NULL COMMENT '服务ID',
  65. `credential_id` bigint(20) unsigned COMMENT '凭证ID',
  66. `request_id` varchar(50) NOT NULL COMMENT '请求ID(用于追踪)',
  67. `method` varchar(10) NOT NULL COMMENT '请求方法',
  68. `url` varchar(500) NOT NULL COMMENT '请求URL',
  69. `headers` json COMMENT '请求头',
  70. `params` json COMMENT '请求参数',
  71. `body` text COMMENT '请求体',
  72. `response_status` int(11) COMMENT '响应状态码',
  73. `response_headers` json COMMENT '响应头',
  74. `response_body` text COMMENT '响应体',
  75. `response_time` int(11) COMMENT '响应时间(毫秒)',
  76. `error_message` text COMMENT '错误信息',
  77. `level` varchar(20) DEFAULT 'INFO' COMMENT '日志级别',
  78. `user_id` bigint(20) unsigned COMMENT '用户ID',
  79. `ip_address` varchar(45) COMMENT 'IP地址',
  80. `user_agent` varchar(500) COMMENT 'User Agent',
  81. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  82. PRIMARY KEY (`id`),
  83. KEY `idx_service_id` (`service_id`),
  84. KEY `idx_credential_id` (`credential_id`),
  85. KEY `idx_request_id` (`request_id`),
  86. KEY `idx_method` (`method`),
  87. KEY `idx_response_status` (`response_status`),
  88. KEY `idx_level` (`level`),
  89. KEY `idx_user_id` (`user_id`),
  90. KEY `idx_created_at` (`created_at`),
  91. CONSTRAINT `fk_logs_service` FOREIGN KEY (`service_id`) REFERENCES `kku_thirdparty_services` (`id`) ON DELETE CASCADE,
  92. CONSTRAINT `fk_logs_credential` FOREIGN KEY (`credential_id`) REFERENCES `kku_thirdparty_credentials` (`id`) ON DELETE SET NULL
  93. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='调用日志表';
  94. -- 配额管理表
  95. CREATE TABLE `kku_thirdparty_quotas` (
  96. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  97. `service_id` bigint(20) unsigned NOT NULL COMMENT '服务ID',
  98. `type` varchar(20) NOT NULL COMMENT '配额类型',
  99. `limit_value` bigint(20) NOT NULL COMMENT '限制值',
  100. `used_value` bigint(20) DEFAULT 0 COMMENT '已使用值',
  101. `reset_at` timestamp NULL COMMENT '重置时间',
  102. `window_start` timestamp NULL COMMENT '时间窗口开始',
  103. `window_end` timestamp NULL COMMENT '时间窗口结束',
  104. `is_active` tinyint(1) DEFAULT 1 COMMENT '是否激活',
  105. `alert_threshold` decimal(5,2) DEFAULT 80.00 COMMENT '告警阈值(百分比)',
  106. `is_exceeded` tinyint(1) DEFAULT 0 COMMENT '是否已超限',
  107. `exceeded_at` timestamp NULL COMMENT '超限时间',
  108. `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  109. `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  110. PRIMARY KEY (`id`),
  111. UNIQUE KEY `uk_service_type` (`service_id`, `type`),
  112. KEY `idx_type` (`type`),
  113. KEY `idx_is_active` (`is_active`),
  114. KEY `idx_is_exceeded` (`is_exceeded`),
  115. KEY `idx_reset_at` (`reset_at`),
  116. CONSTRAINT `fk_quotas_service` FOREIGN KEY (`service_id`) REFERENCES `kku_thirdparty_services` (`id`) ON DELETE CASCADE
  117. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='配额管理表';
  118. -- 监控记录表
  119. CREATE TABLE `kku_thirdparty_monitors` (
  120. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  121. `service_id` bigint(20) unsigned NOT NULL COMMENT '服务ID',
  122. `check_type` varchar(20) NOT NULL COMMENT '检查类型(health/performance/availability)',
  123. `status` varchar(20) NOT NULL COMMENT '检查状态',
  124. `response_time` int(11) COMMENT '响应时间(毫秒)',
  125. `status_code` int(11) COMMENT 'HTTP状态码',
  126. `error_message` text COMMENT '错误信息',
  127. `details` json COMMENT '详细信息',
  128. `checked_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '检查时间',
  129. PRIMARY KEY (`id`),
  130. KEY `idx_service_id` (`service_id`),
  131. KEY `idx_check_type` (`check_type`),
  132. KEY `idx_status` (`status`),
  133. KEY `idx_checked_at` (`checked_at`),
  134. CONSTRAINT `fk_monitors_service` FOREIGN KEY (`service_id`) REFERENCES `kku_thirdparty_services` (`id`) ON DELETE CASCADE
  135. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='监控记录表';
  136. -- 插入默认数据
  137. INSERT INTO `kku_thirdparty_services` (`name`, `code`, `type`, `provider`, `description`, `auth_type`, `status`) VALUES
  138. ('阿里云短信服务', 'aliyun_sms', 'SMS', 'ALIYUN', '阿里云短信发送服务', 'API_KEY', 'INACTIVE'),
  139. ('腾讯云短信服务', 'tencent_sms', 'SMS', 'TENCENT', '腾讯云短信发送服务', 'API_KEY', 'INACTIVE'),
  140. ('阿里云邮件推送', 'aliyun_email', 'EMAIL', 'ALIYUN', '阿里云邮件推送服务', 'API_KEY', 'INACTIVE'),
  141. ('极光推送', 'jpush', 'PUSH', 'JPUSH', '极光移动推送服务', 'API_KEY', 'INACTIVE'),
  142. ('支付宝支付', 'alipay', 'PAYMENT', 'ALIPAY', '支付宝开放平台支付服务', 'SIGNATURE', 'INACTIVE'),
  143. ('微信支付', 'wechat_pay', 'PAYMENT', 'WECHAT', '微信支付API服务', 'SIGNATURE', 'INACTIVE'),
  144. ('阿里云OSS', 'aliyun_oss', 'STORAGE', 'ALIYUN', '阿里云对象存储服务', 'API_KEY', 'INACTIVE'),
  145. ('高德地图', 'amap', 'MAP', 'AMAP', '高德地图API服务', 'API_KEY', 'INACTIVE'),
  146. ('百度AI', 'baidu_ai', 'AI', 'BAIDU', '百度人工智能服务', 'API_KEY', 'INACTIVE'),
  147. ('腾讯验证码', 'tencent_captcha', 'CAPTCHA', 'TENCENT', '腾讯天御验证码服务', 'API_KEY', 'INACTIVE');