From 919c1b6a2ef8ce71ea81d145d2d5966aa6885b50 Mon Sep 17 00:00:00 2001
From: 李曜臣
Date: Mon, 23 Mar 2026 15:45:40 +0800
Subject: [PATCH] 1
---
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelCreateInputVo.cs | 23 +++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListInputVo.cs | 33 +++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListOutputDto.cs | 30 ++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetOutputDto.cs | 31 +++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelUpdateInputVo.cs | 21 +++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryCreateInputVo.cs | 15 +++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListInputVo.cs | 11 +++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListOutputDto.cs | 21 +++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetOutputDto.cs | 17 +++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryUpdateInputVo.cs | 6 ++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionCreateInputVo.cs | 15 +++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListInputVo.cs | 11 +++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListOutputDto.cs | 19 +++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetOutputDto.cs | 17 +++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionUpdateInputVo.cs | 6 ++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateCreateInputVo.cs | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateElementDto.cs | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListInputVo.cs | 30 ++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListOutputDto.cs | 29 +++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetOutputDto.cs | 33 +++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateUpdateInputVo.cs | 6 ++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeCreateInputVo.cs | 13 +++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListInputVo.cs | 11 +++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListOutputDto.cs | 19 +++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetOutputDto.cs | 15 +++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeUpdateInputVo.cs | 6 ++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelAppService.cs | 43 +++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelCategoryAppService.cs | 18 ++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelMultipleOptionAppService.cs | 18 ++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTemplateAppService.cs | 38 ++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTypeAppService.cs | 18 ++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelCategoryDbEntity.cs | 33 +++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelDbEntity.cs | 44 ++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelMultipleOptionDbEntity.cs | 33 +++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelProductDbEntity.cs | 15 +++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateDbEntity.cs | 45 +++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateElementDbEntity.cs | 45 +++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateLocationDbEntity.cs | 15 +++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTypeDbEntity.cs | 31 +++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlProductDbEntity.cs | 23 +++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelAppService.cs | 656 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelCategoryAppService.cs | 197 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelMultipleOptionAppService.cs | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelTemplateAppService.cs | 429 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelTypeAppService.cs | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
45 files changed, 2629 insertions(+), 0 deletions(-)
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelCreateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelUpdateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryCreateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryUpdateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionCreateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionUpdateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateCreateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateElementDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateUpdateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeCreateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetOutputDto.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeUpdateInputVo.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelCategoryAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelMultipleOptionAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTemplateAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTypeAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelCategoryDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelMultipleOptionDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelProductDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateElementDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateLocationDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTypeDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlProductDbEntity.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelCategoryAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelMultipleOptionAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelTemplateAppService.cs
create mode 100644 美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelTypeAppService.cs
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelCreateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelCreateInputVo.cs
new file mode 100644
index 0000000..5965aec
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelCreateInputVo.cs
@@ -0,0 +1,23 @@
+namespace FoodLabeling.Application.Contracts.Dtos.Label;
+
+public class LabelCreateInputVo
+{
+ public string LabelCode { get; set; } = string.Empty;
+
+ public string LabelName { get; set; } = string.Empty;
+
+ public string TemplateCode { get; set; } = string.Empty;
+
+ public string LocationId { get; set; } = string.Empty;
+
+ public string LabelCategoryId { get; set; } = string.Empty;
+
+ public string LabelTypeId { get; set; } = string.Empty;
+
+ public List ProductIds { get; set; } = new();
+
+ public object? LabelInfoJson { get; set; }
+
+ public bool State { get; set; } = true;
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListInputVo.cs
new file mode 100644
index 0000000..07dd5f8
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListInputVo.cs
@@ -0,0 +1,33 @@
+using Volo.Abp.Application.Dtos;
+
+namespace FoodLabeling.Application.Contracts.Dtos.Label;
+
+///
+/// 标签分页列表入参(按产品展示多个标签)
+///
+public class LabelGetListInputVo : PagedAndSortedResultRequestDto
+{
+ public string? Keyword { get; set; }
+
+ ///
+ /// 门店Id(可选)
+ ///
+ public string? LocationId { get; set; }
+
+ ///
+ /// 产品Id(可选;用于“一个产品展示多个标签”)
+ ///
+ public string? ProductId { get; set; }
+
+ public string? LabelCategoryId { get; set; }
+
+ public string? LabelTypeId { get; set; }
+
+ ///
+ /// 模板编码(可选)
+ ///
+ public string? TemplateCode { get; set; }
+
+ public bool? State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListOutputDto.cs
new file mode 100644
index 0000000..6938581
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetListOutputDto.cs
@@ -0,0 +1,30 @@
+namespace FoodLabeling.Application.Contracts.Dtos.Label;
+
+public class LabelGetListOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string LabelName { get; set; } = string.Empty;
+
+ public string LocationName { get; set; } = string.Empty;
+
+ public string LabelCategoryName { get; set; } = string.Empty;
+
+ public string ProductCategoryName { get; set; } = string.Empty;
+
+ public string ProductName { get; set; } = string.Empty;
+
+ public string TemplateName { get; set; } = string.Empty;
+
+ public string LabelTypeName { get; set; } = string.Empty;
+
+ public bool State { get; set; }
+
+ public DateTime LastEdited { get; set; }
+
+ ///
+ /// 模板缺失字段告警(当前阶段暂定 false)
+ ///
+ public bool HasError { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetOutputDto.cs
new file mode 100644
index 0000000..77cd258
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelGetOutputDto.cs
@@ -0,0 +1,31 @@
+namespace FoodLabeling.Application.Contracts.Dtos.Label;
+
+public class LabelGetOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string LabelName { get; set; } = string.Empty;
+
+ public string LocationId { get; set; } = string.Empty;
+
+ public string LocationName { get; set; } = string.Empty;
+
+ public string LabelCategoryId { get; set; } = string.Empty;
+
+ public string LabelCategoryName { get; set; } = string.Empty;
+
+ public string LabelTypeId { get; set; } = string.Empty;
+
+ public string LabelTypeName { get; set; } = string.Empty;
+
+ public string TemplateCode { get; set; } = string.Empty;
+
+ public string TemplateName { get; set; } = string.Empty;
+
+ public bool State { get; set; }
+
+ public object? LabelInfoJson { get; set; }
+
+ public List ProductIds { get; set; } = new();
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelUpdateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelUpdateInputVo.cs
new file mode 100644
index 0000000..f656110
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/Label/LabelUpdateInputVo.cs
@@ -0,0 +1,21 @@
+namespace FoodLabeling.Application.Contracts.Dtos.Label;
+
+public class LabelUpdateInputVo
+{
+ public string LabelName { get; set; } = string.Empty;
+
+ public string TemplateCode { get; set; } = string.Empty;
+
+ public string LocationId { get; set; } = string.Empty;
+
+ public string LabelCategoryId { get; set; } = string.Empty;
+
+ public string LabelTypeId { get; set; } = string.Empty;
+
+ public List ProductIds { get; set; } = new();
+
+ public object? LabelInfoJson { get; set; }
+
+ public bool State { get; set; } = true;
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryCreateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryCreateInputVo.cs
new file mode 100644
index 0000000..986bca2
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryCreateInputVo.cs
@@ -0,0 +1,15 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelCategory;
+
+public class LabelCategoryCreateInputVo
+{
+ public string CategoryCode { get; set; } = string.Empty;
+
+ public string CategoryName { get; set; } = string.Empty;
+
+ public string? CategoryPhotoUrl { get; set; }
+
+ public bool State { get; set; } = true;
+
+ public int OrderNum { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListInputVo.cs
new file mode 100644
index 0000000..5f93662
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListInputVo.cs
@@ -0,0 +1,11 @@
+using Volo.Abp.Application.Dtos;
+
+namespace FoodLabeling.Application.Contracts.Dtos.LabelCategory;
+
+public class LabelCategoryGetListInputVo : PagedAndSortedResultRequestDto
+{
+ public string? Keyword { get; set; }
+
+ public bool? State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListOutputDto.cs
new file mode 100644
index 0000000..db2aa7c
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetListOutputDto.cs
@@ -0,0 +1,21 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelCategory;
+
+public class LabelCategoryGetListOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string CategoryCode { get; set; } = string.Empty;
+
+ public string CategoryName { get; set; } = string.Empty;
+
+ public string? CategoryPhotoUrl { get; set; }
+
+ public bool State { get; set; }
+
+ public int OrderNum { get; set; }
+
+ public long NoOfLabels { get; set; }
+
+ public DateTime LastEdited { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetOutputDto.cs
new file mode 100644
index 0000000..242b820
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryGetOutputDto.cs
@@ -0,0 +1,17 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelCategory;
+
+public class LabelCategoryGetOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string CategoryCode { get; set; } = string.Empty;
+
+ public string CategoryName { get; set; } = string.Empty;
+
+ public string? CategoryPhotoUrl { get; set; }
+
+ public bool State { get; set; }
+
+ public int OrderNum { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryUpdateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryUpdateInputVo.cs
new file mode 100644
index 0000000..5a52b5d
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelCategory/LabelCategoryUpdateInputVo.cs
@@ -0,0 +1,6 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelCategory;
+
+public class LabelCategoryUpdateInputVo : LabelCategoryCreateInputVo
+{
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionCreateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionCreateInputVo.cs
new file mode 100644
index 0000000..52a8cf9
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionCreateInputVo.cs
@@ -0,0 +1,15 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelMultipleOption;
+
+public class LabelMultipleOptionCreateInputVo
+{
+ public string OptionCode { get; set; } = string.Empty;
+
+ public string OptionName { get; set; } = string.Empty;
+
+ public string? OptionValuesJson { get; set; }
+
+ public bool State { get; set; } = true;
+
+ public int OrderNum { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListInputVo.cs
new file mode 100644
index 0000000..dbf8365
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListInputVo.cs
@@ -0,0 +1,11 @@
+using Volo.Abp.Application.Dtos;
+
+namespace FoodLabeling.Application.Contracts.Dtos.LabelMultipleOption;
+
+public class LabelMultipleOptionGetListInputVo : PagedAndSortedResultRequestDto
+{
+ public string? Keyword { get; set; }
+
+ public bool? State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListOutputDto.cs
new file mode 100644
index 0000000..f7af6bc
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetListOutputDto.cs
@@ -0,0 +1,19 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelMultipleOption;
+
+public class LabelMultipleOptionGetListOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string OptionCode { get; set; } = string.Empty;
+
+ public string OptionName { get; set; } = string.Empty;
+
+ public string? OptionValuesJson { get; set; }
+
+ public bool State { get; set; }
+
+ public int OrderNum { get; set; }
+
+ public DateTime LastEdited { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetOutputDto.cs
new file mode 100644
index 0000000..0b181c6
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionGetOutputDto.cs
@@ -0,0 +1,17 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelMultipleOption;
+
+public class LabelMultipleOptionGetOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string OptionCode { get; set; } = string.Empty;
+
+ public string OptionName { get; set; } = string.Empty;
+
+ public string? OptionValuesJson { get; set; }
+
+ public bool State { get; set; }
+
+ public int OrderNum { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionUpdateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionUpdateInputVo.cs
new file mode 100644
index 0000000..066e6f7
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelMultipleOption/LabelMultipleOptionUpdateInputVo.cs
@@ -0,0 +1,6 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelMultipleOption;
+
+public class LabelMultipleOptionUpdateInputVo : LabelMultipleOptionCreateInputVo
+{
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateCreateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateCreateInputVo.cs
new file mode 100644
index 0000000..1a98451
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateCreateInputVo.cs
@@ -0,0 +1,61 @@
+using System.Text.Json.Serialization;
+
+namespace FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+
+public class LabelTemplateCreateInputVo
+{
+ ///
+ /// editor JSON 里的 id,对应数据库 fl_label_template.TemplateCode
+ ///
+ [JsonPropertyName("id")]
+ public string TemplateCode { get; set; } = string.Empty;
+
+ ///
+ /// editor JSON 里的 name,对应数据库 fl_label_template.TemplateName
+ ///
+ [JsonPropertyName("name")]
+ public string TemplateName { get; set; } = string.Empty;
+
+ [JsonPropertyName("labelType")]
+ public string? LabelType { get; set; }
+
+ [JsonPropertyName("unit")]
+ public string Unit { get; set; } = "inch";
+
+ [JsonPropertyName("width")]
+ public decimal Width { get; set; }
+
+ [JsonPropertyName("height")]
+ public decimal Height { get; set; }
+
+ ///
+ /// editor JSON 里的 appliedLocation(ALL / SPECIFIED)
+ ///
+ [JsonPropertyName("appliedLocation")]
+ public string AppliedLocationType { get; set; } = "ALL";
+
+ [JsonPropertyName("showRuler")]
+ public bool ShowRuler { get; set; } = true;
+
+ [JsonPropertyName("showGrid")]
+ public bool ShowGrid { get; set; } = true;
+
+ ///
+ /// 预留:前端可能不传;如果不传则默认 true
+ ///
+ [JsonPropertyName("state")]
+ public bool State { get; set; } = true;
+
+ ///
+ /// elements(前端 editor 的 elements[],会全量重建)
+ ///
+ [JsonPropertyName("elements")]
+ public List Elements { get; set; } = new();
+
+ ///
+ /// 当 AppliedLocationType=SPECIFIED 时生效
+ ///
+ [JsonPropertyName("appliedLocationIds")]
+ public List AppliedLocationIds { get; set; } = new();
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateElementDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateElementDto.cs
new file mode 100644
index 0000000..b1a8bf3
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateElementDto.cs
@@ -0,0 +1,64 @@
+using System.Text.Json.Serialization;
+
+namespace FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+
+///
+/// 模板元素(对齐你给的 editor JSON:id/type/x/y/width/height/rotation/border/config)
+///
+public class LabelTemplateElementDto
+{
+ [JsonPropertyName("id")]
+ public string Id { get; set; } = string.Empty;
+
+ [JsonPropertyName("type")]
+ public string ElementType { get; set; } = string.Empty;
+
+ [JsonPropertyName("x")]
+ public decimal PosX { get; set; }
+
+ [JsonPropertyName("y")]
+ public decimal PosY { get; set; }
+
+ [JsonPropertyName("width")]
+ public decimal Width { get; set; }
+
+ [JsonPropertyName("height")]
+ public decimal Height { get; set; }
+
+ [JsonPropertyName("rotation")]
+ public string Rotation { get; set; } = "horizontal";
+
+ [JsonPropertyName("border")]
+ public string BorderType { get; set; } = "none";
+
+ [JsonPropertyName("zIndex")]
+ public int ZIndex { get; set; }
+
+ [JsonPropertyName("orderNum")]
+ public int OrderNum { get; set; }
+
+ ///
+ /// 值来源:FIXED / AUTO_DB / PRINT_INPUT
+ ///
+ [JsonPropertyName("valueSourceType")]
+ public string ValueSourceType { get; set; } = "FIXED";
+
+ [JsonPropertyName("bindingExpr")]
+ public string? BindingExpr { get; set; }
+
+ [JsonPropertyName("autoQueryKey")]
+ public string? AutoQueryKey { get; set; }
+
+ [JsonPropertyName("inputKey")]
+ public string? InputKey { get; set; }
+
+ [JsonPropertyName("isRequiredInput")]
+ public bool IsRequiredInput { get; set; }
+
+ ///
+ /// 元素配置
+ ///
+ [JsonPropertyName("config")]
+ public object? ConfigJson { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListInputVo.cs
new file mode 100644
index 0000000..3956076
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListInputVo.cs
@@ -0,0 +1,30 @@
+using Volo.Abp.Application.Dtos;
+
+namespace FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+
+///
+/// 标签模板分页查询入参
+///
+public class LabelTemplateGetListInputVo : PagedAndSortedResultRequestDto
+{
+ ///
+ /// 关键字(模板名称/模板编码)
+ ///
+ public string? Keyword { get; set; }
+
+ ///
+ /// 门店Id(用于筛选:ALL 或指定门店)
+ ///
+ public string? LocationId { get; set; }
+
+ ///
+ /// 标签类型(例如 PRICE)
+ ///
+ public string? LabelType { get; set; }
+
+ ///
+ /// 状态
+ ///
+ public bool? State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListOutputDto.cs
new file mode 100644
index 0000000..b91846d
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetListOutputDto.cs
@@ -0,0 +1,29 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+
+public class LabelTemplateGetListOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string TemplateCode { get; set; } = string.Empty;
+
+ public string TemplateName { get; set; } = string.Empty;
+
+ public string? LabelType { get; set; }
+
+ ///
+ /// 位置展示:All Locations 或首个指定门店的名称
+ ///
+ public string LocationText { get; set; } = string.Empty;
+
+ ///
+ /// elements 数量(Contents)
+ ///
+ public int ContentsCount { get; set; }
+
+ public string SizeText { get; set; } = string.Empty;
+
+ public int VersionNo { get; set; }
+
+ public DateTime LastEdited { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetOutputDto.cs
new file mode 100644
index 0000000..1187b11
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateGetOutputDto.cs
@@ -0,0 +1,33 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+
+public class LabelTemplateGetOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string TemplateCode { get; set; } = string.Empty;
+
+ public string TemplateName { get; set; } = string.Empty;
+
+ public string? LabelType { get; set; }
+
+ public string Unit { get; set; } = string.Empty;
+
+ public decimal Width { get; set; }
+
+ public decimal Height { get; set; }
+
+ public string AppliedLocationType { get; set; } = "ALL";
+
+ public bool ShowRuler { get; set; }
+
+ public bool ShowGrid { get; set; }
+
+ public int VersionNo { get; set; }
+
+ public bool State { get; set; }
+
+ public List Elements { get; set; } = new();
+
+ public List AppliedLocationIds { get; set; } = new();
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateUpdateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateUpdateInputVo.cs
new file mode 100644
index 0000000..1ec4d23
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelTemplate/LabelTemplateUpdateInputVo.cs
@@ -0,0 +1,6 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+
+public class LabelTemplateUpdateInputVo : LabelTemplateCreateInputVo
+{
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeCreateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeCreateInputVo.cs
new file mode 100644
index 0000000..27e3863
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeCreateInputVo.cs
@@ -0,0 +1,13 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelType;
+
+public class LabelTypeCreateInputVo
+{
+ public string TypeCode { get; set; } = string.Empty;
+
+ public string TypeName { get; set; } = string.Empty;
+
+ public bool State { get; set; } = true;
+
+ public int OrderNum { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListInputVo.cs
new file mode 100644
index 0000000..af2f04c
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListInputVo.cs
@@ -0,0 +1,11 @@
+using Volo.Abp.Application.Dtos;
+
+namespace FoodLabeling.Application.Contracts.Dtos.LabelType;
+
+public class LabelTypeGetListInputVo : PagedAndSortedResultRequestDto
+{
+ public string? Keyword { get; set; }
+
+ public bool? State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListOutputDto.cs
new file mode 100644
index 0000000..1a63ae4
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetListOutputDto.cs
@@ -0,0 +1,19 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelType;
+
+public class LabelTypeGetListOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string TypeCode { get; set; } = string.Empty;
+
+ public string TypeName { get; set; } = string.Empty;
+
+ public bool State { get; set; }
+
+ public int OrderNum { get; set; }
+
+ public long NoOfLabels { get; set; }
+
+ public DateTime LastEdited { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetOutputDto.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetOutputDto.cs
new file mode 100644
index 0000000..0763156
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeGetOutputDto.cs
@@ -0,0 +1,15 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelType;
+
+public class LabelTypeGetOutputDto
+{
+ public string Id { get; set; } = string.Empty;
+
+ public string TypeCode { get; set; } = string.Empty;
+
+ public string TypeName { get; set; } = string.Empty;
+
+ public bool State { get; set; }
+
+ public int OrderNum { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeUpdateInputVo.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeUpdateInputVo.cs
new file mode 100644
index 0000000..23b6698
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/Dtos/LabelType/LabelTypeUpdateInputVo.cs
@@ -0,0 +1,6 @@
+namespace FoodLabeling.Application.Contracts.Dtos.LabelType;
+
+public class LabelTypeUpdateInputVo : LabelTypeCreateInputVo
+{
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelAppService.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelAppService.cs
new file mode 100644
index 0000000..95e10fc
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelAppService.cs
@@ -0,0 +1,43 @@
+using FoodLabeling.Application.Contracts.Dtos.Common;
+using FoodLabeling.Application.Contracts.Dtos.Label;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+
+namespace FoodLabeling.Application.Contracts.IServices;
+
+///
+/// 标签管理接口(美国版)
+///
+public interface ILabelAppService : IApplicationService
+{
+ ///
+ /// 按产品分页列表(一个产品展示多个标签)
+ ///
+ Task> GetListAsync(LabelGetListInputVo input);
+
+ ///
+ /// 标签详情(id=LabelCode)
+ ///
+ Task GetAsync(string id);
+
+ ///
+ /// 新增标签
+ ///
+ Task CreateAsync(LabelCreateInputVo input);
+
+ ///
+ /// 编辑标签(id=LabelCode)
+ ///
+ Task UpdateAsync(string id, LabelUpdateInputVo input);
+
+ ///
+ /// 删除标签(逻辑删除)
+ ///
+ Task DeleteAsync(string id);
+
+ ///
+ /// 标签预览:解析模板 AUTO_DB/PRINT_INPUT(不做打印落库)
+ ///
+ Task PreviewAsync(LabelPreviewResolveInputVo input);
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelCategoryAppService.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelCategoryAppService.cs
new file mode 100644
index 0000000..32464df
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelCategoryAppService.cs
@@ -0,0 +1,18 @@
+using FoodLabeling.Application.Contracts.Dtos.Common;
+using FoodLabeling.Application.Contracts.Dtos.LabelCategory;
+
+namespace FoodLabeling.Application.Contracts.IServices;
+
+public interface ILabelCategoryAppService
+{
+ Task> GetListAsync(LabelCategoryGetListInputVo input);
+
+ Task GetAsync(string id);
+
+ Task CreateAsync(LabelCategoryCreateInputVo input);
+
+ Task UpdateAsync(string id, LabelCategoryUpdateInputVo input);
+
+ Task DeleteAsync(string id);
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelMultipleOptionAppService.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelMultipleOptionAppService.cs
new file mode 100644
index 0000000..38919ab
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelMultipleOptionAppService.cs
@@ -0,0 +1,18 @@
+using FoodLabeling.Application.Contracts.Dtos.Common;
+using FoodLabeling.Application.Contracts.Dtos.LabelMultipleOption;
+
+namespace FoodLabeling.Application.Contracts.IServices;
+
+public interface ILabelMultipleOptionAppService
+{
+ Task> GetListAsync(LabelMultipleOptionGetListInputVo input);
+
+ Task GetAsync(string id);
+
+ Task CreateAsync(LabelMultipleOptionCreateInputVo input);
+
+ Task UpdateAsync(string id, LabelMultipleOptionUpdateInputVo input);
+
+ Task DeleteAsync(string id);
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTemplateAppService.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTemplateAppService.cs
new file mode 100644
index 0000000..373cd9b
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTemplateAppService.cs
@@ -0,0 +1,38 @@
+using FoodLabeling.Application.Contracts.Dtos.Common;
+using FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+using Volo.Abp.Application.Dtos;
+using Volo.Abp.Application.Services;
+
+namespace FoodLabeling.Application.Contracts.IServices;
+
+///
+/// 标签模板管理接口(美国版对外)
+///
+public interface ILabelTemplateAppService : IApplicationService
+{
+ ///
+ /// 标签模板分页列表
+ ///
+ Task> GetListAsync(LabelTemplateGetListInputVo input);
+
+ ///
+ /// 标签模板详情(含 elements 与适用门店)
+ ///
+ Task GetAsync(string id);
+
+ ///
+ /// 新增标签模板
+ ///
+ Task CreateAsync(LabelTemplateCreateInputVo input);
+
+ ///
+ /// 编辑标签模板(版本号 +1,重建 elements)
+ ///
+ Task UpdateAsync(string id, LabelTemplateUpdateInputVo input);
+
+ ///
+ /// 删除标签模板(逻辑删除;若已被标签引用则禁止)
+ ///
+ Task DeleteAsync(string id);
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTypeAppService.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTypeAppService.cs
new file mode 100644
index 0000000..aa4d03a
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application.Contracts/IServices/ILabelTypeAppService.cs
@@ -0,0 +1,18 @@
+using FoodLabeling.Application.Contracts.Dtos.Common;
+using FoodLabeling.Application.Contracts.Dtos.LabelType;
+
+namespace FoodLabeling.Application.Contracts.IServices;
+
+public interface ILabelTypeAppService
+{
+ Task> GetListAsync(LabelTypeGetListInputVo input);
+
+ Task GetAsync(string id);
+
+ Task CreateAsync(LabelTypeCreateInputVo input);
+
+ Task UpdateAsync(string id, LabelTypeUpdateInputVo input);
+
+ Task DeleteAsync(string id);
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelCategoryDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelCategoryDbEntity.cs
new file mode 100644
index 0000000..d70b724
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelCategoryDbEntity.cs
@@ -0,0 +1,33 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_category")]
+public class FlLabelCategoryDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public bool IsDeleted { get; set; }
+
+ public DateTime CreationTime { get; set; }
+
+ public string? CreatorId { get; set; }
+
+ public string? LastModifierId { get; set; }
+
+ public DateTime? LastModificationTime { get; set; }
+
+ public string ConcurrencyStamp { get; set; } = string.Empty;
+
+ public string CategoryCode { get; set; } = string.Empty;
+
+ public string CategoryName { get; set; } = string.Empty;
+
+ public string? CategoryPhotoUrl { get; set; }
+
+ public int OrderNum { get; set; }
+
+ public bool State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelDbEntity.cs
new file mode 100644
index 0000000..3199335
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelDbEntity.cs
@@ -0,0 +1,44 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label")]
+public class FlLabelDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public bool IsDeleted { get; set; }
+
+ public DateTime CreationTime { get; set; }
+
+ public string? CreatorId { get; set; }
+
+ public string? LastModifierId { get; set; }
+
+ public DateTime? LastModificationTime { get; set; }
+
+ public string ConcurrencyStamp { get; set; } = string.Empty;
+
+ public string LabelCode { get; set; } = string.Empty;
+
+ public string LabelName { get; set; } = string.Empty;
+
+ public string TemplateId { get; set; } = string.Empty;
+
+ public string? LocationId { get; set; }
+
+ public string? LabelCategoryId { get; set; }
+
+ public string? LabelTypeId { get; set; }
+
+ public string? LabelType { get; set; }
+
+ public bool State { get; set; }
+
+ ///
+ /// json 字段,直接保存为字符串(入参/出参自行序列化/反序列化)
+ ///
+ public string? LabelInfoJson { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelMultipleOptionDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelMultipleOptionDbEntity.cs
new file mode 100644
index 0000000..b6fe0f4
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelMultipleOptionDbEntity.cs
@@ -0,0 +1,33 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_multiple_option")]
+public class FlLabelMultipleOptionDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public bool IsDeleted { get; set; }
+
+ public DateTime CreationTime { get; set; }
+
+ public string? CreatorId { get; set; }
+
+ public string? LastModifierId { get; set; }
+
+ public DateTime? LastModificationTime { get; set; }
+
+ public string ConcurrencyStamp { get; set; } = string.Empty;
+
+ public string OptionCode { get; set; } = string.Empty;
+
+ public string OptionName { get; set; } = string.Empty;
+
+ public string? OptionValuesJson { get; set; }
+
+ public int OrderNum { get; set; }
+
+ public bool State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelProductDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelProductDbEntity.cs
new file mode 100644
index 0000000..42033ca
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelProductDbEntity.cs
@@ -0,0 +1,15 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_product")]
+public class FlLabelProductDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public string LabelId { get; set; } = string.Empty;
+
+ public string ProductId { get; set; } = string.Empty;
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateDbEntity.cs
new file mode 100644
index 0000000..6ca3be8
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateDbEntity.cs
@@ -0,0 +1,45 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_template")]
+public class FlLabelTemplateDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public bool IsDeleted { get; set; }
+
+ public DateTime CreationTime { get; set; }
+
+ public string? CreatorId { get; set; }
+
+ public string? LastModifierId { get; set; }
+
+ public DateTime? LastModificationTime { get; set; }
+
+ public string ConcurrencyStamp { get; set; } = string.Empty;
+
+ public string TemplateCode { get; set; } = string.Empty;
+
+ public string TemplateName { get; set; } = string.Empty;
+
+ public string? LabelType { get; set; }
+
+ public string Unit { get; set; } = "inch";
+
+ public decimal Width { get; set; }
+
+ public decimal Height { get; set; }
+
+ public string AppliedLocationType { get; set; } = "ALL";
+
+ public bool ShowRuler { get; set; }
+
+ public bool ShowGrid { get; set; }
+
+ public int VersionNo { get; set; }
+
+ public bool State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateElementDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateElementDbEntity.cs
new file mode 100644
index 0000000..f727092
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateElementDbEntity.cs
@@ -0,0 +1,45 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_template_element")]
+public class FlLabelTemplateElementDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public string TemplateId { get; set; } = string.Empty;
+
+ public string ElementKey { get; set; } = string.Empty;
+
+ public string ElementType { get; set; } = string.Empty;
+
+ public decimal PosX { get; set; }
+
+ public decimal PosY { get; set; }
+
+ public decimal Width { get; set; }
+
+ public decimal Height { get; set; }
+
+ public string Rotation { get; set; } = "horizontal";
+
+ public string BorderType { get; set; } = "none";
+
+ public int ZIndex { get; set; }
+
+ public int OrderNum { get; set; }
+
+ public string ValueSourceType { get; set; } = "FIXED";
+
+ public string? BindingExpr { get; set; }
+
+ public string? AutoQueryKey { get; set; }
+
+ public string? InputKey { get; set; }
+
+ public bool IsRequiredInput { get; set; }
+
+ public string? ConfigJson { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateLocationDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateLocationDbEntity.cs
new file mode 100644
index 0000000..9f15259
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTemplateLocationDbEntity.cs
@@ -0,0 +1,15 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_template_location")]
+public class FlLabelTemplateLocationDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public string TemplateId { get; set; } = string.Empty;
+
+ public string LocationId { get; set; } = string.Empty;
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTypeDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTypeDbEntity.cs
new file mode 100644
index 0000000..875724a
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlLabelTypeDbEntity.cs
@@ -0,0 +1,31 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_label_type")]
+public class FlLabelTypeDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public bool IsDeleted { get; set; }
+
+ public DateTime CreationTime { get; set; }
+
+ public string? CreatorId { get; set; }
+
+ public string? LastModifierId { get; set; }
+
+ public DateTime? LastModificationTime { get; set; }
+
+ public string ConcurrencyStamp { get; set; } = string.Empty;
+
+ public string TypeCode { get; set; } = string.Empty;
+
+ public string TypeName { get; set; } = string.Empty;
+
+ public int OrderNum { get; set; }
+
+ public bool State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlProductDbEntity.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlProductDbEntity.cs
new file mode 100644
index 0000000..c4c7d45
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/DbModels/FlProductDbEntity.cs
@@ -0,0 +1,23 @@
+using SqlSugar;
+
+namespace FoodLabeling.Application.Services.DbModels;
+
+[SugarTable("fl_product")]
+public class FlProductDbEntity
+{
+ [SugarColumn(IsPrimaryKey = true)]
+ public string Id { get; set; } = string.Empty;
+
+ public bool IsDeleted { get; set; }
+
+ public string ProductCode { get; set; } = string.Empty;
+
+ public string ProductName { get; set; } = string.Empty;
+
+ public string? CategoryName { get; set; }
+
+ public string? ProductImageUrl { get; set; }
+
+ public bool State { get; set; }
+}
+
diff --git a/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelAppService.cs b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelAppService.cs
new file mode 100644
index 0000000..b9c35ba
--- /dev/null
+++ b/美国版/Food Labeling Management Code/Yi.Abp.Net8/module/food-labeling-us/FoodLabeling.Application/Services/LabelAppService.cs
@@ -0,0 +1,656 @@
+using System.Text.Json;
+using FoodLabeling.Application.Contracts.Dtos.Common;
+using FoodLabeling.Application.Contracts.Dtos.Label;
+using FoodLabeling.Application.Contracts.Dtos.LabelTemplate;
+using FoodLabeling.Application.Contracts.IServices;
+using FoodLabeling.Application.Services.DbModels;
+using FoodLabeling.Domain.Entities;
+using SqlSugar;
+using Volo.Abp;
+using Volo.Abp.Application.Services;
+using Volo.Abp.Guids;
+using Volo.Abp.Uow;
+using Yi.Framework.SqlSugarCore.Abstractions;
+
+namespace FoodLabeling.Application.Services;
+
+///
+/// 标签管理(一个产品展示多个标签)
+///
+public class LabelAppService : ApplicationService, ILabelAppService
+{
+ private readonly ISqlSugarDbContext _dbContext;
+ private readonly IGuidGenerator _guidGenerator;
+
+ public LabelAppService(ISqlSugarDbContext dbContext, IGuidGenerator guidGenerator)
+ {
+ _dbContext = dbContext;
+ _guidGenerator = guidGenerator;
+ }
+
+ public async Task> GetListAsync(LabelGetListInputVo input)
+ {
+ RefAsync total = 0;
+
+ var productId = input.ProductId?.Trim();
+ var locationId = input.LocationId?.Trim();
+ var keyword = input.Keyword?.Trim();
+ var labelCategoryId = input.LabelCategoryId?.Trim();
+ var labelTypeId = input.LabelTypeId?.Trim();
+ var templateCode = input.TemplateCode?.Trim();
+
+ // 先查 label-product 映射(按产品)
+ var query = _dbContext.SqlSugarClient.Queryable(
+ (lp, l, p, c, t, tpl) =>
+ lp.LabelId == l.Id &&
+ lp.ProductId == p.Id &&
+ l.LabelCategoryId == c.Id &&
+ l.LabelTypeId == t.Id &&
+ l.TemplateId == tpl.Id)
+ .Where((lp, l, p, c, t, tpl) => l.IsDeleted == false)
+ .Where((lp, l, p, c, t, tpl) => !c.IsDeleted)
+ .Where((lp, l, p, c, t, tpl) => !t.IsDeleted)
+ .Where((lp, l, p, c, t, tpl) => !tpl.IsDeleted)
+ .Where((lp, l, p, c, t, tpl) => !p.IsDeleted)
+ .WhereIF(!string.IsNullOrWhiteSpace(productId), (lp, l, p, c, t, tpl) => lp.ProductId == productId)
+ .WhereIF(!string.IsNullOrWhiteSpace(locationId), (lp, l, p, c, t, tpl) => l.LocationId == locationId)
+ .WhereIF(!string.IsNullOrWhiteSpace(labelCategoryId), (lp, l, p, c, t, tpl) => l.LabelCategoryId == labelCategoryId)
+ .WhereIF(!string.IsNullOrWhiteSpace(labelTypeId), (lp, l, p, c, t, tpl) => l.LabelTypeId == labelTypeId)
+ .WhereIF(!string.IsNullOrWhiteSpace(templateCode), (lp, l, p, c, t, tpl) => tpl.TemplateCode == templateCode)
+ .WhereIF(!string.IsNullOrWhiteSpace(keyword),
+ (lp, l, p, c, t, tpl) =>
+ l.LabelName.Contains(keyword!) ||
+ p.ProductName.Contains(keyword!) ||
+ c.CategoryName.Contains(keyword!) ||
+ t.TypeName.Contains(keyword!))
+ .WhereIF(input.State != null, (lp, l, p, c, t, tpl) => l.State == input.State)
+ .OrderByDescending((lp, l, p, c, t, tpl) => l.LastModificationTime ?? l.CreationTime);
+
+ if (!string.IsNullOrWhiteSpace(input.Sorting))
+ {
+ query = query.OrderBy(input.Sorting);
+ }
+
+ var entities = await query.Select((lp, l, p, c, t, tpl) => new
+ {
+ LabelCode = l.LabelCode,
+ LabelName = l.LabelName,
+ LocationId = l.LocationId,
+ LocationName = (string?)null, // later fill
+ LabelCategoryName = c.CategoryName,
+ ProductCategoryName = p.CategoryName,
+ ProductName = p.ProductName,
+ TemplateName = tpl.TemplateName,
+ LabelTypeName = t.TypeName,
+ State = l.State,
+ LastEdited = l.LastModificationTime ?? l.CreationTime
+ })
+ .ToPageListAsync(input.SkipCount, input.MaxResultCount, total);
+
+ var locationIds = entities
+ .Select(x => x.LocationId)
+ .Where(x => !string.IsNullOrWhiteSpace(x))
+ .Select(x => x!.Trim())
+ .Distinct()
+ .ToList();
+
+ var locationMap = new Dictionary();
+ if (locationIds.Count > 0)
+ {
+ var locGuids = locationIds.Where(x => Guid.TryParse(x, out _)).Select(Guid.Parse).ToList();
+ if (locGuids.Count > 0)
+ {
+ var locs = await _dbContext.SqlSugarClient.Queryable()
+ .Where(x => !x.IsDeleted)
+ .Where(x => locGuids.Contains(x.Id))
+ .ToListAsync();
+ locationMap = locs.ToDictionary(x => x.Id.ToString(), x => x);
+ }
+ }
+
+ var items = entities.Select(x =>
+ {
+ var locationName = string.Empty;
+ if (!string.IsNullOrWhiteSpace(x.LocationId) && locationMap.TryGetValue(x.LocationId!, out var loc))
+ {
+ locationName = loc.LocationName ?? loc.LocationCode;
+ }
+ return new LabelGetListOutputDto
+ {
+ Id = x.LabelCode ?? string.Empty,
+ LabelName = x.LabelName ?? string.Empty,
+ LocationName = string.IsNullOrWhiteSpace(locationName) ? "无" : locationName,
+ LabelCategoryName = x.LabelCategoryName ?? string.Empty,
+ ProductCategoryName = x.ProductCategoryName ?? string.Empty,
+ ProductName = x.ProductName ?? string.Empty,
+ TemplateName = x.TemplateName ?? string.Empty,
+ LabelTypeName = x.LabelTypeName ?? string.Empty,
+ State = x.State,
+ LastEdited = x.LastEdited,
+ HasError = false
+ };
+ }).ToList();
+
+ var pageSize = input.MaxResultCount <= 0 ? items.Count : input.MaxResultCount;
+ var pageIndex = pageSize <= 0 ? 1 : (input.SkipCount / pageSize) + 1;
+ var totalPages = pageSize <= 0 ? 0 : (int)Math.Ceiling(total / (double)pageSize);
+
+ return new PagedResultWithPageDto
+ {
+ PageIndex = pageIndex,
+ PageSize = pageSize,
+ TotalCount = total,
+ TotalPages = totalPages,
+ Items = items
+ };
+ }
+
+ public async Task GetAsync(string id)
+ {
+ var labelCode = id?.Trim();
+ if (string.IsNullOrWhiteSpace(labelCode))
+ {
+ throw new UserFriendlyException("标签Code不能为空");
+ }
+
+ var label = await _dbContext.SqlSugarClient.Queryable()
+ .FirstAsync(x => !x.IsDeleted && x.LabelCode == labelCode);
+ if (label is null)
+ {
+ throw new UserFriendlyException("标签不存在");
+ }
+
+ var template = await _dbContext.SqlSugarClient.Queryable()
+ .FirstAsync(x => x.Id == label.TemplateId);
+ var category = await _dbContext.SqlSugarClient.Queryable()
+ .FirstAsync(x => x.Id == label.LabelCategoryId);
+ var type = await _dbContext.SqlSugarClient.Queryable()
+ .FirstAsync(x => x.Id == label.LabelTypeId);
+
+ LocationAggregateRoot? location = null;
+ if (!string.IsNullOrWhiteSpace(label.LocationId) && Guid.TryParse(label.LocationId, out var locId))
+ {
+ location = await _dbContext.SqlSugarClient.Queryable()
+ .FirstAsync(x => !x.IsDeleted && x.Id == locId);
+ }
+
+ var productIds = await _dbContext.SqlSugarClient.Queryable()
+ .Where(x => x.LabelId == label.Id)
+ .Select(x => x.ProductId)
+ .ToListAsync();
+
+ object? labelInfo = null;
+ if (!string.IsNullOrWhiteSpace(label.LabelInfoJson))
+ {
+ labelInfo = JsonSerializer.Deserialize