-- 订单附件表;将原 LabelUrl 迁移为 systemLabel 后删除订单旧面单字段。 -- 在 MySQL 执行前请先备份。 CREATE TABLE IF NOT EXISTS `t_order_file` ( `Id` INT NOT NULL AUTO_INCREMENT COMMENT '主键,自增', `OrderId` INT NOT NULL COMMENT '订单Id', `FileType` VARCHAR(32) NOT NULL COMMENT '附件类型:tradeProof交易证明/systemLabel系统面单/downstreamLabel下游面单/lastMileLabel末端面单/infraredImage红外图片', `FileName` VARCHAR(255) NULL COMMENT '原始文件名', `FileUrl` VARCHAR(512) NOT NULL COMMENT '文件地址(相对路径或外链)', `ContentType` VARCHAR(128) NULL COMMENT '文件MIME类型', `FileSize` BIGINT NULL COMMENT '文件大小(字节)', `Sort` INT NOT NULL DEFAULT 0 COMMENT '同类型内排序', `Source` VARCHAR(32) NOT NULL DEFAULT 'upload' COMMENT '来源:upload上传/systemGenerate系统生成/downstream下游回传/migrate迁移', `Remark` VARCHAR(512) NULL COMMENT '备注', `IsDeleted` TINYINT NOT NULL DEFAULT 0 COMMENT '软删除:0-否,1-是', `ConcurrencyStamp` CHAR(36) NOT NULL DEFAULT (UUID()) COMMENT '并发戳', `CreateUserId` INT NOT NULL DEFAULT 0 COMMENT '创建人', `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `UpdateUserId` INT NULL COMMENT '更新人', `UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`Id`), KEY `idx_ord_file_order_type` (`OrderId`, `FileType`, `IsDeleted`) ) COMMENT='订单附件表'; -- 迁移已有系统面单地址(若 LabelUrl 列已删除可跳过本段) 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`;