178 lines
11 KiB
SQL
178 lines
11 KiB
SQL
-- 平台对接模块 DDL
|
||
-- 创建时间: 2026-05-30
|
||
|
||
-- ----------------------------
|
||
-- 1. 平台实体
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_instance` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`name` varchar(100) NOT NULL COMMENT '平台名称,如 DCP结构监测',
|
||
`code` varchar(50) NOT NULL COMMENT '平台唯一标识,如 dcp',
|
||
`base_url` varchar(255) NOT NULL COMMENT '基础URL',
|
||
`auth_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '认证类型(1=密码Token,2=ApiKey,3=OAuth2)',
|
||
`auth_config` json DEFAULT NULL COMMENT '认证凭证JSON {userName,password,clientId,scope}',
|
||
`extra_config` json DEFAULT NULL COMMENT '初始化后保存的平台数据 {userId,projectId,...}',
|
||
`access_token` varchar(2000) DEFAULT NULL COMMENT '当前有效Token',
|
||
`token_expires_at` datetime DEFAULT NULL COMMENT 'Token过期时间',
|
||
`init_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '初始化状态(0=未初始化,1=已初始化)',
|
||
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用(0=禁用,1=启用)',
|
||
`tenant_id` bigint(20) DEFAULT NULL COMMENT '租户ID',
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
UNIQUE KEY `uk_code` (`code`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='第三方平台实体';
|
||
|
||
-- ----------------------------
|
||
-- 2. 接口定义
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_interface` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`platform_id` bigint(20) NOT NULL COMMENT '所属平台ID',
|
||
`name` varchar(100) NOT NULL COMMENT '接口名称',
|
||
`code` varchar(100) NOT NULL COMMENT '接口标识',
|
||
`method` varchar(10) NOT NULL COMMENT 'HTTP方法: GET/POST/PUT/DELETE',
|
||
`path` varchar(255) NOT NULL COMMENT '接口路径,支持路径变量 {userId}',
|
||
`content_type` varchar(100) DEFAULT 'application/json' COMMENT 'Content-Type',
|
||
`request_schema` json DEFAULT NULL COMMENT '入参字段定义 [{name,type,source,value,field,contextKey,required,desc}]',
|
||
`response_schema` json DEFAULT NULL COMMENT '出参字段定义 [{name,type,path,desc}]',
|
||
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_platform_id` (`platform_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台接口定义';
|
||
|
||
-- ----------------------------
|
||
-- 3. 流程定义
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_flow` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`platform_id` bigint(20) NOT NULL COMMENT '所属平台ID',
|
||
`name` varchar(100) NOT NULL COMMENT '流程名称',
|
||
`code` varchar(100) NOT NULL COMMENT '流程标识',
|
||
`flow_type` tinyint(1) NOT NULL COMMENT '流程类型(1=平台初始化,2=设备入网,3=Token刷新)',
|
||
`sensor_type` varchar(50) DEFAULT NULL COMMENT '传感器类型,flow_type=2时有效: inclino/stress/hyeto/static_level',
|
||
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_platform_type` (`platform_id`, `flow_type`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台对接流程';
|
||
|
||
-- ----------------------------
|
||
-- 4. 流程步骤
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_flow_step` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`flow_id` bigint(20) NOT NULL COMMENT '所属流程ID',
|
||
`step_order` int(11) NOT NULL DEFAULT 1 COMMENT '执行顺序,从1开始',
|
||
`interface_id` bigint(20) NOT NULL COMMENT '关联接口ID',
|
||
`param_mapping` json DEFAULT NULL COMMENT '入参来源覆盖配置,覆盖接口默认schema',
|
||
`result_key` varchar(100) DEFAULT NULL COMMENT '出参写入上下文的key,如 step1',
|
||
`result_save` json DEFAULT NULL COMMENT '需持久化的出参字段 [{field,saveTo}]',
|
||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_flow_id` (`flow_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='流程步骤';
|
||
|
||
-- ----------------------------
|
||
-- 5. 设备绑定关系
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_device_mapping` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`platform_id` bigint(20) NOT NULL COMMENT '所属平台ID',
|
||
`device_id` bigint(20) NOT NULL COMMENT 'FastBee设备ID',
|
||
`serial_number` varchar(64) NOT NULL COMMENT 'FastBee设备序列号',
|
||
`platform_device_id` varchar(100) DEFAULT NULL COMMENT 'DCP侧deviceId,入网后自动回填',
|
||
`platform_point_id` varchar(100) DEFAULT NULL COMMENT 'DCP侧pointId,入网后自动回填',
|
||
`sensor_type` varchar(50) NOT NULL COMMENT '传感器类型: inclino/stress/hyeto/static_level',
|
||
`device_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '设备类型: 0=直连设备 1=网关设备(多子设备)',
|
||
`push_interface_id` bigint(20) DEFAULT NULL COMMENT '推送接口ID,用于字段映射参照',
|
||
`field_mapping` json DEFAULT NULL COMMENT '字段映射 [{identifier,platformField,transform}]',
|
||
`extra_mapping` json DEFAULT NULL COMMENT '扩展映射配置,如静力水准子设备编号与DCP sensorId映射',
|
||
`net_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '入网状态(0=未入网,1=已入网)',
|
||
`enable` char(1) NOT NULL DEFAULT '1' COMMENT '是否启用',
|
||
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
|
||
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_serial` (`serial_number`),
|
||
KEY `idx_platform_device` (`platform_id`, `device_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台设备绑定关系';
|
||
|
||
-- ----------------------------
|
||
-- 5.1 设备绑定关系 - 新增 device_type 字段
|
||
-- ----------------------------
|
||
ALTER TABLE `platform_device_mapping`
|
||
ADD COLUMN IF NOT EXISTS `device_type` tinyint(1) NOT NULL DEFAULT 0
|
||
COMMENT '设备类型: 0=直连设备 1=网关设备(多子设备)' AFTER `sensor_type`;
|
||
|
||
-- ----------------------------
|
||
-- 5.2 子设备映射(网关多子设备通用)
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_device_sub_mapping` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`parent_mapping_id` bigint(20) NOT NULL COMMENT '父映射ID (platform_device_mapping.id)',
|
||
`sub_serial_number` varchar(64) NOT NULL COMMENT '子设备序列号',
|
||
`device_role` varchar(20) NOT NULL DEFAULT 'monitor' COMMENT '角色: reference=基准 monitor=监测',
|
||
`platform_device_id` varchar(100) DEFAULT NULL COMMENT '平台分配的设备ID (入网后回填)',
|
||
`platform_point_id` varchar(100) DEFAULT NULL COMMENT '平台分配的测点/辅助ID (入网后回填)',
|
||
`onboard_config` json DEFAULT NULL COMMENT '入网时传给平台的标识参数(平台相关)',
|
||
`net_status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '0=未入网 1=已入网',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_parent` (`parent_mapping_id`),
|
||
KEY `idx_sub_serial` (`sub_serial_number`),
|
||
UNIQUE KEY `uk_parent_sub` (`parent_mapping_id`, `sub_serial_number`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台设备子映射(网关多子设备通用)';
|
||
|
||
-- ----------------------------
|
||
-- 6. 推送日志
|
||
-- ----------------------------
|
||
CREATE TABLE IF NOT EXISTS `platform_push_log` (
|
||
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
|
||
`platform_id` bigint(20) NOT NULL COMMENT '平台ID',
|
||
`flow_id` bigint(20) DEFAULT NULL COMMENT '流程ID',
|
||
`step_order` int(11) DEFAULT NULL COMMENT '步骤序号',
|
||
`device_id` bigint(20) DEFAULT NULL COMMENT '设备ID',
|
||
`serial_number` varchar(64) DEFAULT NULL COMMENT '设备序列号',
|
||
`interface_code` varchar(100) DEFAULT NULL COMMENT '接口标识',
|
||
`request_url` varchar(500) DEFAULT NULL COMMENT '请求URL',
|
||
`request_body` mediumtext DEFAULT NULL COMMENT '请求体',
|
||
`response_code` int(11) DEFAULT NULL COMMENT 'HTTP响应码',
|
||
`response_body` mediumtext DEFAULT NULL COMMENT '响应体',
|
||
`status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '状态(0=进行中,1=成功,2=失败)',
|
||
`error_msg` varchar(1000) DEFAULT NULL COMMENT '错误信息',
|
||
`idempotency_key` varchar(100) DEFAULT NULL COMMENT '幂等键,防重复推送',
|
||
`log_type` tinyint(1) NOT NULL DEFAULT 1 COMMENT '日志类型(1=数据推送,2=操作日志)',
|
||
`retry_count` int(11) NOT NULL DEFAULT 0 COMMENT '重试次数',
|
||
`cost_ms` int(11) DEFAULT NULL COMMENT '耗时毫秒',
|
||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`id`),
|
||
KEY `idx_platform_status` (`platform_id`, `status`),
|
||
KEY `idx_device_time` (`device_id`, `create_time`),
|
||
KEY `idx_idempotency` (`idempotency_key`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台推送日志';
|
||
|
||
-- ----------------------------
|
||
-- DCP 内置数据初始化
|
||
-- ----------------------------
|
||
|
||
-- DCP 平台接口定义(内置,用户无需手动配置)
|
||
-- 注意:platform_id 需在创建 DCP 平台实例后更新,此处用占位符 0
|
||
-- 实际由 DcpPlatformAdapter 在初始化时写入
|
||
|