DO 迁移 (15个 TenantBaseDO → ProjectBaseDO): - IoT: IotDeviceDO - Ops 核心: OpsOrderDO, OpsOrderEventDO, OpsOrderDispatchDO, OpsOrderQueueDO, OpsBusAreaDO, OpsAreaDeviceRelationDO, OpsDeviceTrajectoryDO - Ops 保洁: OpsOrderCleanExtDO, OpsCleanerStatusDO, OpsCleanerPerformanceMonthlyDO, OpsInspectionRecordDO, OpsInspectionRecordItemDO - Ops 安保: OpsOrderSecurityExtDO, OpsAreaSecurityUserDO IoT 适配: - IotDeviceRespDTO 新增 projectId 字段 - IotDeviceMessage 新增 projectId 字段 - IotDeviceMessageServiceImpl.appendDeviceMessage() 设置 projectId - IotCleanRuleMessageHandler 嵌套 ProjectUtils.execute() 设置项目上下文 缓存改造: - ProjectRedisCacheManager extends TenantRedisCacheManager,追加 :projectId 后缀 - ViewshTenantAutoConfiguration 替换为 ProjectRedisCacheManager SQL 迁移脚本 (sql/mysql/project/): - 01-create-tables.sql: system_project + system_user_project 建表 - 02-default-data.sql: 默认项目 + 用户关联回填 - 03-alter-business-tables.sql: 15 张表添加 project_id (NULL → 回填 → NOT NULL → 索引) - 04-index-audit.sql: 现有索引审计 + project_id 补充建议 - 99-rollback.sql: 完整回滚方案 附带修复: - fix(ops): UserDispatchStatusServiceImpl 添加缺失的 KEY_PREFIX 常量 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
47 lines
2.4 KiB
SQL
47 lines
2.4 KiB
SQL
-- =============================================
|
|
-- 租户-项目两级架构 - 回滚脚本
|
|
-- 执行顺序与正向脚本相反:业务表 → 默认数据 → 建表
|
|
-- =============================================
|
|
|
|
-- -----------------------------------------------
|
|
-- Step 1: 回滚业务表(删除 project_id 字段及索引)
|
|
-- -----------------------------------------------
|
|
|
|
ALTER TABLE iot_device DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_order DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_order_event DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_order_dispatch DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_order_queue DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_bus_area DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_area_device_relation DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_order_security_ext DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_area_security_user DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_order_clean_ext DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_cleaner_status DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_cleaner_performance_monthly DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_device_trajectory DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_inspection_record DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
ALTER TABLE ops_inspection_record_item DROP INDEX idx_project_id, DROP COLUMN project_id;
|
|
|
|
-- -----------------------------------------------
|
|
-- Step 2: 回滚默认数据(删除用户-项目关联 和 默认项目)
|
|
-- -----------------------------------------------
|
|
|
|
-- 删除系统自动生成的用户-项目关联
|
|
DELETE FROM system_user_project WHERE creator = 'system' AND deleted = 0;
|
|
|
|
-- 删除系统自动生成的默认项目
|
|
DELETE FROM system_project WHERE code = 'DEFAULT' AND creator = 'system' AND deleted = 0;
|
|
|
|
-- -----------------------------------------------
|
|
-- Step 3: 删除核心表
|
|
-- -----------------------------------------------
|
|
|
|
DROP TABLE IF EXISTS system_user_project;
|
|
DROP TABLE IF EXISTS system_project;
|
|
|
|
-- -----------------------------------------------
|
|
-- 验证
|
|
-- -----------------------------------------------
|
|
SELECT '回滚完成' AS status;
|