diff --git a/SiNan.Model/Db/Product/Product.cs b/SiNan.Model/Db/Product/Product.cs
new file mode 100644
index 0000000..c7a1682
--- /dev/null
+++ b/SiNan.Model/Db/Product/Product.cs
@@ -0,0 +1,54 @@
+using FreeSql.DataAnnotations;
+using System;
+
+namespace SiNan.Model.Db
+{
+
+ [Table(Name = "product", DisableSyncStructure = true)]
+ public partial class Product
+ {
+
+ ///
+ /// SPU
+ ///
+ [Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
+ public string Id { get; set; }
+
+ [Column(DbType = "datetime")]
+ public DateTime? CreateTime { get; set; }
+
+ [Column(DbType = "int(1)", MapType = typeof(int))]
+ public Enums.Platform Platform { get; set; }
+
+ ///
+ /// 货号
+ ///
+ [Column(StringLength = 100)]
+ public string ProductItemNum { get; set; }
+
+
+ public long? ShopId { get; set; }
+
+ ///
+ /// 标题
+ ///
+
+ public string Title { get; set; }
+
+ ///
+ /// 主SkuId
+ ///
+ [Column(StringLength = 50)]
+ public string MainSkuId { get; set; }
+
+ ///
+ /// 京东商品状态【-1:删除 1:从未上架 2:自主下架 4:系统下架 8:上架 513:从未上架待审 514:自主下架待审 516:系统下架待审 520:上架待审核 1028:系统下架审核失败】
+ ///
+ public int? State { get; set; }
+
+ [Column(MapType = typeof(int), DbType = "int")]
+ public Enums.Stage Stage { get; set; } = Enums.Stage.新品款;
+
+ }
+
+}
diff --git a/SiNan.Model/Db/Product/ProductSku.cs b/SiNan.Model/Db/Product/ProductSku.cs
new file mode 100644
index 0000000..36d3a2e
--- /dev/null
+++ b/SiNan.Model/Db/Product/ProductSku.cs
@@ -0,0 +1,57 @@
+using FreeSql.DataAnnotations;
+using System;
+
+namespace SiNan.Model.Db
+{
+
+ [Table(Name = "productsku", DisableSyncStructure = true)]
+ public partial class ProductSku
+ {
+
+ ///
+ /// SKU
+ ///
+ [Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
+ public string Id { get; set; }
+
+ [Column(DbType = "datetime")]
+ public DateTime? CreateTime { get; set; }
+
+
+ public string Logo { get; set; }
+
+ [Column(DbType = "int(1)", MapType = typeof(int))]
+ public Enums.Platform Platform { get; set; }
+
+ ///
+ /// 售价
+ ///
+ [Column(DbType = "decimal(18,2)")]
+ public decimal? Price { get; set; }
+
+ ///
+ /// SPU
+ ///
+ [Column(StringLength = 50)]
+ public string ProductId { get; set; }
+
+
+ public long? ShopId { get; set; }
+
+
+ public string Title { get; set; }
+
+ ///
+ /// 京东Sku状态【1:上架 2:下架 4:删除】
+ ///
+ public int? State { get; set; }
+
+ ///
+ /// 三级类目Id
+ ///
+ public int? CategoryId { get; set; }
+
+ public string CategoryName { get; set; }
+ }
+
+}
diff --git a/SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs b/SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs
new file mode 100644
index 0000000..a5836bd
--- /dev/null
+++ b/SiNan.Model/Dto/Request/Product/SearchProductGOIRequestcs.cs
@@ -0,0 +1,13 @@
+namespace SiNan.Model.Dto.Request.Product
+{
+ public class SearchProductGOIRequestcs
+ {
+ public string Spu { get; set; }
+
+ public string Sku { get; set; }
+
+ public string SpuTitle { get; set; }
+
+ public Enums.Stage? Stage { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/SiNan.Model/Dto/Response/GOI/GOIResponse.cs b/SiNan.Model/Dto/Response/GOI/GOIResponse.cs
new file mode 100644
index 0000000..6dec949
--- /dev/null
+++ b/SiNan.Model/Dto/Response/GOI/GOIResponse.cs
@@ -0,0 +1,17 @@
+namespace SiNan.Model.Dto
+{
+ public class GOIResponse
+ {
+ public decimal Cost { get; set; }
+
+ public decimal Profit { get; set; }
+
+ public decimal GOI
+ {
+ get
+ {
+ return Cost == 0M ? 0M : Math.Round(Profit / Cost, 2);
+ }
+ }
+ }
+}
diff --git a/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs b/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs
new file mode 100644
index 0000000..25e6a41
--- /dev/null
+++ b/SiNan.Model/Dto/Response/GOI/ProductGOIResponse.cs
@@ -0,0 +1,50 @@
+namespace SiNan.Model.Dto
+{
+ public class ProductGOIResponse : ProductResponse
+ {
+ ///
+ /// 商品维度 昨日GOI
+ ///
+ public GOIResponse ProductGOI_Yestoday { get; set; }
+
+ ///
+ /// 商品维度 近7天GOI
+ ///
+ public GOIResponse ProductGOI_Recent7Day { get; set; }
+
+ ///
+ /// 商品维度 近30天GOI
+ ///
+ public GOIResponse ProductGOI_Recent30Day { get; set; }
+
+ ///
+ /// 推广维度 昨日GOI
+ ///
+ public GOIResponse PromotionGOI_Yestoday { get; set; }
+
+ ///
+ /// 推广维度 近7天GOI
+ ///
+ public GOIResponse PromotionGOI_Recent7Day { get; set; }
+
+ ///
+ /// 推广维度 近30天GOI
+ ///
+ public GOIResponse PromotionGOI_Recent30Day { get; set; }
+
+ ///
+ /// 累计花费
+ ///
+ public decimal TotalCost { get; set; }
+
+ ///
+ /// 累计亏损
+ ///
+ public decimal TotalDeficit { get; set; }
+
+ ///
+ /// 最大亏损
+ ///
+ public decimal MaxDeficit { get; set; }
+ }
+}
diff --git a/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs b/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs
new file mode 100644
index 0000000..1a4a997
--- /dev/null
+++ b/SiNan.Model/Dto/Response/GOI/ProductSkuGOIResponse.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SiNan.Model.Dto.Response.GOI
+{
+ internal class ProductSkuGOIResponse
+ {
+ }
+}
diff --git a/SiNan.Model/Dto/Response/Product/ProductResponse.cs b/SiNan.Model/Dto/Response/Product/ProductResponse.cs
new file mode 100644
index 0000000..3814a24
--- /dev/null
+++ b/SiNan.Model/Dto/Response/Product/ProductResponse.cs
@@ -0,0 +1,6 @@
+namespace SiNan.Model.Dto
+{
+ public class ProductResponse : Model.Db.Product
+ {
+ }
+}
diff --git a/SiNan.Model/Enums.cs b/SiNan.Model/Enums.cs
new file mode 100644
index 0000000..40ffd3d
--- /dev/null
+++ b/SiNan.Model/Enums.cs
@@ -0,0 +1,26 @@
+namespace SiNan.Model
+{
+ public class Enums
+ {
+ ///
+ /// 商品阶段 新品款=0 成长款=1 日销款=2 TOP款=3 清仓款=4
+ ///
+ public enum Stage
+ {
+ 新品款 = 0, 成长款 = 1, 日销款 = 2, TOP款 = 3, 清仓款 = 4
+ }
+
+ ///
+ /// 电商平台 淘宝 = 0,京东 = 1,阿里巴巴 = 2,拼多多 = 3,微信 = 4,拳探 = 10
+ ///
+ public enum Platform
+ {
+ 淘宝 = 0,
+ 京东 = 1,
+ 阿里巴巴 = 2,
+ 拼多多 = 3,
+ 微信 = 4,
+ 拳探 = 10
+ }
+ }
+}
diff --git a/SiNan.Model/_MDS重新生成.bat b/SiNan.Model/_MDS重新生成.bat
new file mode 100644
index 0000000..6b055b2
--- /dev/null
+++ b/SiNan.Model/_MDS重新生成.bat
@@ -0,0 +1,2 @@
+
+FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace SiNan.Server.Model.Db -DB "MySql,data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;" -FileName "{name}.cs"
diff --git a/SiNan.Model/__重新生成.bat b/SiNan.Model/__重新生成.bat
new file mode 100644
index 0000000..a570f90
--- /dev/null
+++ b/SiNan.Model/__重新生成.bat
@@ -0,0 +1,2 @@
+
+FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace SiNan.Model.Db -DB "MySql,data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwyb;charset=utf8;sslmode=none;" -FileName "{name}.cs"