chore: 重写初始提交(清空历史,整理后全量提交)

This commit is contained in:
ywxapp
2026-08-16 16:54:14 +08:00
commit 6c1a106bc1
1808 changed files with 238144 additions and 0 deletions
+146
View File
@@ -0,0 +1,146 @@
-- ============================================================
-- addon/mqttbroker/install.sql —— mqttbroker 插件数据表
-- 框架约定:插件安装时由 ywxapp\service\AddonService 执行本文件
-- (仅允许 CREATE TABLE / INSERT,见 importsql 白名单)。
-- 表名须为 __PREFIX__<插件名>_*,与 __PREFIX__addon 等核心表命名一致。
-- 时间字段统一约定:create_at / update_at / delete_at
-- ============================================================
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_connection` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`client_id` varchar(191) NOT NULL DEFAULT '' COMMENT 'MQTT客户端标识',
`username` varchar(191) DEFAULT NULL COMMENT '用户名',
`ip` varchar(64) DEFAULT NULL COMMENT '客户端IP',
`status` tinyint(1) DEFAULT '1' COMMENT '1在线 0离线',
`create_at` int DEFAULT NULL COMMENT '连接时间',
`update_at` int DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_client_id` (`client_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT客户端连接表';
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_message` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`client_id` varchar(191) DEFAULT NULL COMMENT '发布者client_id',
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
`payload` longtext COMMENT '消息内容',
`qos` tinyint(1) DEFAULT '0' COMMENT 'QoS等级',
`retain` tinyint(1) DEFAULT '0' COMMENT '是否保留消息',
`source` varchar(32) DEFAULT 'client' COMMENT '来源:client 客户端 / manual 后台手动',
`create_at` int DEFAULT NULL COMMENT '时间',
PRIMARY KEY (`id`),
KEY `idx_topic` (`topic`),
KEY `idx_create_at` (`create_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT消息日志表';
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_topic` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`client_id` varchar(191) NOT NULL DEFAULT '' COMMENT '订阅者client_id',
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '订阅主题(支持通配符)',
`qos` tinyint(1) DEFAULT '0' COMMENT 'QoS等级',
`create_at` int DEFAULT NULL COMMENT '订阅时间',
PRIMARY KEY (`id`),
KEY `idx_client_id` (`client_id`),
KEY `idx_topic` (`topic`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT订阅关系表';
-- 认证账号表(allow_anonymous=0 或提供用户名时校验密码)
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_auth` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(191) NOT NULL DEFAULT '' COMMENT '用户名',
`password` varchar(191) NOT NULL DEFAULT '' COMMENT '密码(bcrypt哈希,兼容明文)',
`is_superuser` tinyint(1) NOT NULL DEFAULT '0' COMMENT '超级用户跳过ACL',
`status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1启用 0禁用',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`create_at` int DEFAULT NULL,
`update_at` int DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT认证账号表';
-- ACL 主题权限表(按 sort 顺序匹配,命中即决定 allow/deny
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_acl` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`target_type` varchar(16) NOT NULL DEFAULT 'all' COMMENT 'all/user/client',
`target` varchar(191) NOT NULL DEFAULT '' COMMENT '匹配值:用户名/clientidall时忽略',
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题过滤器,支持通配符与占位符%u %c',
`access` tinyint(1) NOT NULL DEFAULT '3' COMMENT '1订阅 2发布 3两者',
`allow` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1允许 0拒绝',
`sort` int NOT NULL DEFAULT '0' COMMENT '匹配优先级,越小越先',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`create_at` int DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_sort` (`sort`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT ACL权限表';
-- 保留消息持久化表(重启后恢复 retained)
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_retain` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
`payload` longblob COMMENT '消息内容(二进制安全)',
`qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'QoS等级',
`update_at` int DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_topic` (`topic`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT保留消息表';
-- 离线消息队列表(clean=false 会话离线期间的 QoS1/2 消息)
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_offline` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`client_id` varchar(191) NOT NULL DEFAULT '' COMMENT '目标订阅者client_id',
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
`payload` longblob COMMENT '消息内容(二进制安全)',
`qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'QoS等级',
`create_at` int DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_client_id` (`client_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='MQTT离线消息队列表';
-- 实时运行指标快照(Broker 周期写入单行 id=1,后台仪表盘轮询读取,跨进程安全)
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_stats` (
`id` int unsigned NOT NULL,
`uptime` int DEFAULT '0' COMMENT '运行时长(秒)',
`clients_online` int DEFAULT '0' COMMENT '在线连接数',
`clients_total` int DEFAULT '0' COMMENT '累计会话数',
`subscriptions` int DEFAULT '0' COMMENT '订阅关系数',
`messages_received` int DEFAULT '0' COMMENT '累计接收消息数',
`messages_sent` int DEFAULT '0' COMMENT '累计发送消息数',
`retained` int DEFAULT '0' COMMENT '保留消息数',
`timestamp` int DEFAULT '0' COMMENT '快照时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MQTT实时运行指标快照';
-- 转发规则表(规则引擎:匹配源主题后转发到外部 Broker,如 EMQX
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_rule` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(191) NOT NULL DEFAULT '' COMMENT '规则名称',
`source_filter` varchar(255) NOT NULL DEFAULT '' COMMENT '源主题过滤器(支持通配符 + #)',
`target_type` varchar(16) NOT NULL DEFAULT 'mqtt' COMMENT '转发目标类型:mqtt',
`target_broker` varchar(255) NOT NULL DEFAULT '' COMMENT '外部Broker地址 host:port',
`target_clientid` varchar(191) DEFAULT '' COMMENT '连接外部Broker的clientId(可选)',
`target_username` varchar(191) DEFAULT '' COMMENT '外部Broker用户名(可选)',
`target_password` varchar(191) DEFAULT '' COMMENT '外部Broker密码(可选)',
`target_topic` varchar(255) NOT NULL DEFAULT '' COMMENT '转发目标主题,支持 ${topic} 变量',
`target_qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT '转发QoS',
`enabled` tinyint(1) NOT NULL DEFAULT '1' COMMENT '1启用 0停用',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`create_at` int DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_enabled` (`enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MQTT转发规则(规则引擎)';
-- 手动发布出站队列(后台/API 发布经 DB 出栈,Broker 消费后内部路由,零外部依赖)
CREATE TABLE IF NOT EXISTS `__PREFIX__mqttbroker_outbox` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`topic` varchar(255) NOT NULL DEFAULT '' COMMENT '主题',
`payload` longblob COMMENT '消息内容(二进制安全)',
`qos` tinyint(1) NOT NULL DEFAULT '0' COMMENT 'QoS等级',
`retain` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否保留',
`source` varchar(32) DEFAULT 'manual' COMMENT '来源: manual/api/admin',
`create_at` int DEFAULT NULL,
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0待投递 1已投递',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='MQTT手动发布出站队列(跨进程内部路由)';