diff --git a/db.sql b/db.sql index 56cbe57..3b2a822 100644 --- a/db.sql +++ b/db.sql @@ -1380,6 +1380,7 @@ CREATE TABLE `C_parcel_item` ( `ParcelId` INT NOT NULL COMMENT '包裹ID → C_parcel.Id', `ProductName` VARCHAR(512) NULL COMMENT '商品名称', `AttributeText` VARCHAR(256) NULL COMMENT '规格属性', + `ImageUrl` VARCHAR(1024) NULL COMMENT '商品图片URL', `Quantity` INT NOT NULL DEFAULT 0 COMMENT '数量', `SkuId` INT NULL COMMENT '库内SKU ID → C_sku.Id', `SkuCode` VARCHAR(64) NULL COMMENT '冗余SKU编码', diff --git a/sql/C_parcel_item_ImageUrl.sql b/sql/C_parcel_item_ImageUrl.sql new file mode 100644 index 0000000..01709ef --- /dev/null +++ b/sql/C_parcel_item_ImageUrl.sql @@ -0,0 +1,20 @@ +-- 已有库增量:包裹明细增加商品图片 ImageUrl +-- 可重复执行 + +SET @col_exists := ( + SELECT COUNT(1) + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = DATABASE() + AND TABLE_NAME = 'C_parcel_item' + AND COLUMN_NAME = 'ImageUrl' +); + +SET @sql := IF( + @col_exists = 0, + 'ALTER TABLE `C_parcel_item` ADD COLUMN `ImageUrl` VARCHAR(1024) NULL COMMENT ''商品图片URL'' AFTER `AttributeText`', + 'SELECT ''C_parcel_item.ImageUrl already exists'' AS info' +); + +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; diff --git a/sql/README.md b/sql/README.md index 66e3a46..073e2be 100644 --- a/sql/README.md +++ b/sql/README.md @@ -3,5 +3,5 @@ OMS / 共用库的建表脚本已统一到仓库根目录 `db.sql`。 - 新环境:直接执行 `db.sql`(会 DROP 后重建,勿在有生产数据的库上执行) -- 已有库:用 diff 对比 `db.sql` 与现库结构后手工 ALTER;本目录下单个表脚本(如 `C_parcel_arrival.sql`、`C_parcel_item_AttributeText.sql`)可直接在已有库执行增量建表 +- 已有库:用 diff 对比 `db.sql` 与现库结构后手工 ALTER;本目录下单个表脚本(如 `C_parcel_arrival.sql`、`C_parcel_item_AttributeText.sql`、`C_parcel_item_ImageUrl.sql`)可直接在已有库执行增量建表 - 数据权限表(`user_org_perm` 等)若 RBAC 与 OMS 分库,请只在 RBAC 库执行 `db.sql` 末尾对应段落 diff --git a/src/Oms.Application/Dtos/Warehouse/WarehouseDtos.cs b/src/Oms.Application/Dtos/Warehouse/WarehouseDtos.cs index 3c803a4..490478e 100644 --- a/src/Oms.Application/Dtos/Warehouse/WarehouseDtos.cs +++ b/src/Oms.Application/Dtos/Warehouse/WarehouseDtos.cs @@ -333,6 +333,9 @@ public class WarehouseParcelItemSaveInput public string? AttributeText { get; set; } + /// 商品图片 URL。 + public string? ImageUrl { get; set; } + public int Quantity { get; set; } public string? Remark { get; set; } @@ -346,6 +349,9 @@ public class WarehouseParcelItemOutput public string? AttributeText { get; set; } + /// 商品图片 URL。 + public string? ImageUrl { get; set; } + public int Quantity { get; set; } public int? SkuId { get; set; } diff --git a/src/Oms.Application/Services/Warehouse/WarehouseService.Parcel.cs b/src/Oms.Application/Services/Warehouse/WarehouseService.Parcel.cs index ca8c1ab..47edf02 100644 --- a/src/Oms.Application/Services/Warehouse/WarehouseService.Parcel.cs +++ b/src/Oms.Application/Services/Warehouse/WarehouseService.Parcel.cs @@ -160,6 +160,12 @@ public partial class WarehouseService throw new BusinessException("商品数量必须大于 0"); } + var imageUrl = string.IsNullOrWhiteSpace(itemInput.ImageUrl) ? null : itemInput.ImageUrl.Trim(); + if (imageUrl != null && imageUrl.Length > 1024) + { + imageUrl = imageUrl[..1024]; + } + var item = new CParcelItem { ParcelId = parcel.Id, @@ -167,6 +173,7 @@ public partial class WarehouseService AttributeText = string.IsNullOrWhiteSpace(itemInput.AttributeText) ? null : itemInput.AttributeText.Trim(), + ImageUrl = imageUrl, Quantity = itemInput.Quantity, Remark = string.IsNullOrWhiteSpace(itemInput.Remark) ? null : itemInput.Remark.Trim() }; @@ -287,6 +294,7 @@ public partial class WarehouseService Id = item.Id, ProductName = item.ProductName, AttributeText = item.AttributeText, + ImageUrl = item.ImageUrl, Quantity = item.Quantity, SkuId = item.SkuId, SkuCode = item.SkuCode, diff --git a/src/Oms.Domain/WarehouseAggregate/Entities/CParcelItem.cs b/src/Oms.Domain/WarehouseAggregate/Entities/CParcelItem.cs index 98d8ab1..06e870a 100644 --- a/src/Oms.Domain/WarehouseAggregate/Entities/CParcelItem.cs +++ b/src/Oms.Domain/WarehouseAggregate/Entities/CParcelItem.cs @@ -13,6 +13,9 @@ public class CParcelItem : OmsAuditedAggregateRoot /// 规格属性。 public string? AttributeText { get; set; } + /// 商品图片 URL(采集/手工)。 + public string? ImageUrl { get; set; } + public int Quantity { get; set; } public int? SkuId { get; set; }