修改代码
增加云商品数据
This commit is contained in:
1 parent
2f406c840f
commit
db4f030c17
58 files changed
+1550
-120
No files matched your search
@@ -0,0 +1,20 @@
|
||||
using Store.Modules.CloudProduct.Entities;
|
||||
|
||||
namespace Store.Modules.CloudProduct.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 导入项:商品模型 + 原始数据
|
||||
/// </summary>
|
||||
public class GoodsImportItem
|
||||
{
|
||||
/// <summary>
|
||||
/// 解析后的商品模型
|
||||
/// </summary>
|
||||
public GoodsEntity Goods { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// 原始数据(JSON 原文,压缩后落盘)
|
||||
/// </summary>
|
||||
public string RawData { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Store.Modules.CloudProduct.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品导入结果
|
||||
/// </summary>
|
||||
public class GoodsImportResult
|
||||
{
|
||||
/// <summary>
|
||||
/// 成功条数
|
||||
/// </summary>
|
||||
public int SuccessCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 失败条数
|
||||
/// </summary>
|
||||
public int FailedCount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 总条数
|
||||
/// </summary>
|
||||
public int Total => SuccessCount + FailedCount;
|
||||
|
||||
/// <summary>
|
||||
/// 错误明细
|
||||
/// </summary>
|
||||
public List<string> Errors { get; set; } = new();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using OpenSearch.Client;
|
||||
|
||||
namespace Store.Modules.CloudProduct.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品搜索文档:OpenSearch 索引中的商品模型,Id 为主键,Title 用于分词搜索
|
||||
/// </summary>
|
||||
public class GoodsSearchDocument
|
||||
{
|
||||
[Number(NumberType.Byte, Name = "platform")]
|
||||
public byte Platform { get; set; }
|
||||
|
||||
[Number(NumberType.Long, Name = "id")]
|
||||
public long Id { get; set; }
|
||||
|
||||
[Text(Name = "title", Analyzer = "ik_max_word", SearchAnalyzer = "ik_smart")]
|
||||
public string Title { get; set; } = string.Empty;
|
||||
|
||||
[Text(Name = "thumbUrl")]
|
||||
public string? ThumbUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>一级类目ID</summary>
|
||||
[Number(NumberType.Integer, Name = "cat_id_1")]
|
||||
public int? CatId1 { get; set; }
|
||||
|
||||
/// <summary>二级类目ID</summary>
|
||||
[Number(NumberType.Integer, Name = "cat_id_2")]
|
||||
public int? CatId2 { get; set; }
|
||||
|
||||
/// <summary>三级类目ID</summary>
|
||||
[Number(NumberType.Integer, Name = "cat_id_3")]
|
||||
public int? CatId3 { get; set; }
|
||||
|
||||
/// <summary>四级类目ID</summary>
|
||||
[Number(NumberType.Integer, Name = "cat_id_4")]
|
||||
public int? CatId4 { get; set; }
|
||||
|
||||
/// <summary>最低价快照,用于价格区间过滤和按价格排序</summary>
|
||||
[Number(NumberType.Long, Name = "min_price")]
|
||||
public long? MinPrice { get; set; }
|
||||
|
||||
/// <summary>销量,用于按销量排序</summary>
|
||||
[Number(NumberType.Integer, Name = "sold_quantity")]
|
||||
public int SoldQuantity { get; set; }
|
||||
|
||||
public override string ToString() => $"[Id={Id}] Title={Title} Cat=({CatId1},{CatId2},{CatId3},{CatId4}) Price={MinPrice} Sold={SoldQuantity}";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
namespace Store.Modules.CloudProduct.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品搜索请求
|
||||
/// </summary>
|
||||
public class GoodsSearchRequest
|
||||
{
|
||||
/// <summary>
|
||||
/// 标题(模糊搜索)
|
||||
/// </summary>
|
||||
public string Title { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 最低价格(分)
|
||||
/// </summary>
|
||||
public long? MinPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最高价格(分)
|
||||
/// </summary>
|
||||
public long? MaxPrice { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 一级类目ID
|
||||
/// </summary>
|
||||
public int? CatId1 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 二级类目ID
|
||||
/// </summary>
|
||||
public int? CatId2 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 三级类目ID
|
||||
/// </summary>
|
||||
public int? CatId3 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 四级类目ID
|
||||
/// </summary>
|
||||
public int? CatId4 { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最低销量
|
||||
/// </summary>
|
||||
public int? MinSoldQuantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 最高销量
|
||||
/// </summary>
|
||||
public int? MaxSoldQuantity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 平台类型
|
||||
/// </summary>
|
||||
public byte? Platform { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 页码(默认1)
|
||||
/// </summary>
|
||||
public int PageIndex { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// 每页数量(默认20)
|
||||
/// </summary>
|
||||
public int PageSize { get; set; } = 20;
|
||||
|
||||
/// <summary>
|
||||
/// 排序字段
|
||||
/// </summary>
|
||||
public string SortBy { get; set; } = "CreatedTime";
|
||||
|
||||
/// <summary>
|
||||
/// 排序方式:asc/desc(默认desc)
|
||||
/// </summary>
|
||||
public string SortOrder { get; set; } = "desc";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
namespace Store.Modules.CloudProduct.Dtos
|
||||
{
|
||||
/// <summary>
|
||||
/// OpenSearch 运行状态
|
||||
/// </summary>
|
||||
public class OpenSearchStatusDto
|
||||
{
|
||||
/// <summary>
|
||||
/// 节点地址
|
||||
/// </summary>
|
||||
public string NodeUrl { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 索引名称
|
||||
/// </summary>
|
||||
public string IndexName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 是否可连接
|
||||
/// </summary>
|
||||
public bool Connected { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// OpenSearch 服务及目标索引是否健康
|
||||
/// </summary>
|
||||
public bool Healthy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 集群名称
|
||||
/// </summary>
|
||||
public string? ClusterName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 集群状态(green、yellow 或 red)
|
||||
/// </summary>
|
||||
public string? ClusterStatus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 集群节点总数
|
||||
/// </summary>
|
||||
public int NumberOfNodes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据节点数量
|
||||
/// </summary>
|
||||
public int NumberOfDataNodes { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 活跃主分片数量
|
||||
/// </summary>
|
||||
public int ActivePrimaryShards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 活跃分片总数
|
||||
/// </summary>
|
||||
public int ActiveShards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 正在迁移的分片数量
|
||||
/// </summary>
|
||||
public int RelocatingShards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 正在初始化的分片数量
|
||||
/// </summary>
|
||||
public int InitializingShards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 未分配的分片数量
|
||||
/// </summary>
|
||||
public int UnassignedShards { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 索引是否存在
|
||||
/// </summary>
|
||||
public bool IndexExists { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 索引映射是否符合当前服务要求
|
||||
/// </summary>
|
||||
public bool MappingHealthy { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 标题字段的索引分析器
|
||||
/// </summary>
|
||||
public string? IndexAnalyzer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 标题字段的搜索分析器
|
||||
/// </summary>
|
||||
public string? SearchAnalyzer { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文档总数(索引不存在或读取失败时为 -1)
|
||||
/// </summary>
|
||||
public long DocumentCount { get; set; } = -1;
|
||||
|
||||
/// <summary>
|
||||
/// 状态检测耗时(毫秒)
|
||||
/// </summary>
|
||||
public long ElapsedMilliseconds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态说明或错误信息
|
||||
/// </summary>
|
||||
public string? Message { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user