-- Order files table + migrate LabelUrl into systemLabel, then drop legacy columns. -- Run on MySQL. Backup first. CREATE TABLE IF NOT EXISTS `t_order_file` ( `Id` INT NOT NULL AUTO_INCREMENT, `OrderId` INT NOT NULL COMMENT 'Order Id', `FileType` VARCHAR(32) NOT NULL COMMENT 'tradeProof/systemLabel/downstreamLabel/lastMileLabel/infraredImage', `FileName` VARCHAR(255) NULL COMMENT 'Original file name', `FileUrl` VARCHAR(512) NOT NULL COMMENT 'Relative or absolute URL', `ContentType` VARCHAR(128) NULL, `FileSize` BIGINT NULL, `Sort` INT NOT NULL DEFAULT 0, `Source` VARCHAR(32) NOT NULL DEFAULT 'upload' COMMENT 'upload/systemGenerate/downstream/migrate', `Remark` VARCHAR(512) NULL, `IsDeleted` TINYINT NOT NULL DEFAULT 0, `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()), `CreateUserId` INT NOT NULL DEFAULT 0, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `UpdateUserId` INT NULL, `UpdateTime` DATETIME NULL, PRIMARY KEY (`Id`), KEY `idx_ord_file_order_type` (`OrderId`, `FileType`, `IsDeleted`) ) COMMENT='Order attachment files'; -- Migrate existing system label URL (ignore if column already dropped) INSERT INTO `t_order_file` (`OrderId`, `FileType`, `FileName`, `FileUrl`, `ContentType`, `Sort`, `Source`, `CreateUserId`, `CreateTime`) SELECT `Id`, 'systemLabel', SUBSTRING_INDEX(`LabelUrl`, '/', -1), `LabelUrl`, 'application/pdf', 0, 'migrate', 0, NOW() FROM `t_order` WHERE `LabelUrl` IS NOT NULL AND TRIM(`LabelUrl`) <> '' AND NOT EXISTS ( SELECT 1 FROM `t_order_file` f WHERE f.`OrderId` = `t_order`.`Id` AND f.`FileType` = 'systemLabel' AND f.`IsDeleted` = 0 ); ALTER TABLE `t_order` DROP COLUMN `LabelUrl`, DROP COLUMN `LabelGenerateStatus`, DROP COLUMN `LabelGenerateError`;