-- ======================================== -- FastBee项目管理数据库表创建脚本 -- 创建日期: 2026-06-28 -- 描述: 创建项目表和项目-分组关系表,实现User→Project→Group→Device层级 -- ======================================== -- 1. 创建项目表(iot_project) -- 实现 User → Project 层级(通过responsible_user_id字段) CREATE TABLE `iot_project` ( `project_id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '项目ID', `project_name` VARCHAR(100) NOT NULL COMMENT '项目名称', `project_code` VARCHAR(50) DEFAULT NULL COMMENT '项目编码', `tenant_id` BIGINT(20) NOT NULL COMMENT '租户ID', `tenant_name` VARCHAR(30) DEFAULT '' COMMENT '租户名称', `responsible_user_id` BIGINT(20) DEFAULT NULL COMMENT '负责人ID', `responsible_user_name` VARCHAR(30) DEFAULT '' COMMENT '负责人姓名', `longitude` DOUBLE(11,6) DEFAULT NULL COMMENT '项目经度', `latitude` DOUBLE(11,6) DEFAULT NULL COMMENT '项目纬度', `address` VARCHAR(255) DEFAULT NULL COMMENT '项目地址', `project_status` TINYINT(1) DEFAULT 2 COMMENT '项目状态(1-预警,2-运行中,3-完结)', `start_time` DATETIME DEFAULT NULL COMMENT '开始时间', `end_time` DATETIME DEFAULT NULL COMMENT '结束时间', `project_desc` VARCHAR(500) DEFAULT NULL COMMENT '项目描述', `del_flag` CHAR(1) DEFAULT '0' COMMENT '删除标志(0存在 2删除)', `create_by` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME DEFAULT NULL COMMENT '创建时间', `update_by` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME DEFAULT NULL COMMENT '更新时间', `remark` VARCHAR(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`project_id`), KEY `idx_tenant_user` (`tenant_id`, `responsible_user_id`), KEY `idx_project_status` (`project_status`), KEY `idx_create_time` (`create_time`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='业务项目表'; -- 2. 创建项目-分组关系表(iot_project_group) -- 实现 Project → Device Group 层级 CREATE TABLE `iot_project_group` ( `project_id` BIGINT(20) NOT NULL COMMENT '项目ID', `group_id` BIGINT(20) NOT NULL COMMENT '设备分组ID', PRIMARY KEY (`project_id`, `group_id`), KEY `idx_project_id` (`project_id`), KEY `idx_group_id` (`group_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='项目-设备分组关系表'; -- ======================================== -- 层级关系说明: -- User (responsible_user_id) → Project (project_id) → Project_Group (group_id) → Device_Group (device_id) → Device -- -- 与现有逻辑兼容的关键点: -- 1. iot_group表保持不变(现有分组管理逻辑不受影响) -- 2. iot_device_user表保持不变(设备归属关系独立) -- 3. 项目-分组关系是可选的(未关联项目的分组保持现有功能) -- -- 用户查询设备的两种路径: -- 路径1:查询用户负责的项目设备(新增功能) -- SELECT DISTINCT d.* FROM iot_device d -- INNER JOIN iot_device_group dg ON d.device_id = dg.device_id -- INNER JOIN iot_project_group pg ON dg.group_id = pg.group_id -- INNER JOIN iot_project p ON pg.project_id = p.project_id -- WHERE p.responsible_user_id = #{userId} AND p.del_flag='0' AND d.del_flag='0' -- -- 路径2:查询设备归属用户的设备(现有逻辑) -- SELECT d.* FROM iot_device d -- INNER JOIN iot_device_user du ON d.device_id = du.device_id -- WHERE du.user_id = #{userId} AND d.del_flag='0' -- ========================================