From 7fa2ef988854e5789008d771cbf171e0075416b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=A1=C2=B7=C3=A6?= <279202647@qq.com>
Date: Wed, 14 Apr 2021 12:52:25 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=82=A8=E5=AD=98Sku?=
=?UTF-8?q?=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=9F=A5=E8=AF=A2?=
=?UTF-8?q?=E5=BF=85=E8=A6=81=E5=8F=82=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../JdShopListener/JdShopListener.csproj | 2 +-
JdShopListener/JdShopListener/MainWindow.xaml | 2 +-
.../JdShopListener/MainWindowViewModel.cs | 364 +++++++++++++++++-
... 20210414042219_InitialCreate.Designer.cs} | 29 +-
...ate.cs => 20210414042219_InitialCreate.cs} | 11 +-
.../Migrations/JdDBContextModelSnapshot.cs | 27 ++
.../JdShopListener/Models/ItemChangeModel.cs | 112 +-----
.../JdShopListener/Models/ItemData.cs | 15 +-
.../JdShopListener/Models/SkuModel.cs | 31 ++
.../JdShopListener/SqlHelpers/DbHelper.cs | 13 +
JdShopListener/JdShopListener/db/items.db | Bin 28672 -> 28672 bytes
11 files changed, 488 insertions(+), 118 deletions(-)
rename JdShopListener/JdShopListener/Migrations/{20210413085518_InitialCreate.Designer.cs => 20210414042219_InitialCreate.Designer.cs} (71%)
rename JdShopListener/JdShopListener/Migrations/{20210413085518_InitialCreate.cs => 20210414042219_InitialCreate.cs} (73%)
diff --git a/JdShopListener/JdShopListener/JdShopListener.csproj b/JdShopListener/JdShopListener/JdShopListener.csproj
index 46ad476..456270c 100644
--- a/JdShopListener/JdShopListener/JdShopListener.csproj
+++ b/JdShopListener/JdShopListener/JdShopListener.csproj
@@ -29,7 +29,7 @@
- Always
+ PreserveNewest
diff --git a/JdShopListener/JdShopListener/MainWindow.xaml b/JdShopListener/JdShopListener/MainWindow.xaml
index c9cfc1c..7212ae6 100644
--- a/JdShopListener/JdShopListener/MainWindow.xaml
+++ b/JdShopListener/JdShopListener/MainWindow.xaml
@@ -167,7 +167,7 @@
-
+
diff --git a/JdShopListener/JdShopListener/MainWindowViewModel.cs b/JdShopListener/JdShopListener/MainWindowViewModel.cs
index be02f67..b5842da 100644
--- a/JdShopListener/JdShopListener/MainWindowViewModel.cs
+++ b/JdShopListener/JdShopListener/MainWindowViewModel.cs
@@ -45,9 +45,11 @@ namespace JdShopListener
Btn_Add = new RelayCommand(Add);
Btn_ShowList = new RelayCommand(ShowList);
Btn_Start = new RelayCommand(Start);
-
+ Btn_ShowData = new RelayCommand(ShowData);
+ ItemList = new System.Collections.ObjectModel.ObservableCollection();
SkuList = new System.Collections.ObjectModel.ObservableCollection();
-
+ SelectDate = DateList.FirstOrDefault();
+ SelectPro = ProList.FirstOrDefault();
Init();
}
@@ -92,7 +94,7 @@ namespace JdShopListener
public ProModel SelectPro
{
get { return _SelectPro; }
- set { Set(ref _SelectPro, value); }
+ set { Set(ref _SelectPro, value); ShowData(); }
}
@@ -103,7 +105,7 @@ namespace JdShopListener
public DateModel SelectDate
{
get { return _SelectDate; }
- set { Set(ref _SelectDate, value); }
+ set { Set(ref _SelectDate, value);ShowData(); }
}
private System.Collections.ObjectModel.ObservableCollection _ItemList;
@@ -146,6 +148,10 @@ namespace JdShopListener
set { Set(ref _Desc, value); }
}
+ ///
+ /// 所有sku最后变化记录
+ ///
+ public List LastItemChangeList { get; set; } = new List();
///
/// 添加事件
@@ -162,6 +168,10 @@ namespace JdShopListener
///
public RelayCommand Btn_Start { get; set; }
+ ///
+ /// 刷新数据
+ ///
+ public RelayCommand Btn_ShowData { get; set; }
///
/// 添加
@@ -171,7 +181,7 @@ namespace JdShopListener
Thread addThread=new Thread(()=>{
- var detail= GetItemDetail("69920799280");
+ var detail= GetItemDetail(Sku);
var list = detail.product.colorSize;
@@ -196,7 +206,9 @@ namespace JdShopListener
//加入本地数据库
skus.Add(model);
- SkuList.Add(model);
+ Application.Current.Dispatcher.Invoke(() => {
+ SkuList.Add(model);
+ });
}
//加载sku详情
@@ -206,12 +218,29 @@ namespace JdShopListener
//主图
string src = detail.product.src;
+ var catIds = detail.product.cat;
+
+ List cats = new List();
+
+ foreach (var catId in catIds)
+ {
+ cats.Add((int)catId);
+ }
+
+ string cat = string.Join(",", cats);
//标题
string title = detail.product.name;
+ string shopId = detail.product.shopId;
+
+ string vid= detail.product.venderId;
+
sku.ImgUrl = "http://img11.360buyimg.com/n1/" + src;
sku.Title = title;
+ sku.Cat = cat;
+ sku.ShopId = shopId;
+ sku.VenderId = vid;
Thread.Sleep(3000);
});
@@ -240,7 +269,158 @@ namespace JdShopListener
///
public void Start()
{
+ Thread t = new Thread(() =>
+ {
+ LastItemChangeList.Clear();
+ LastItemChangeList = DbHelper.Db.GetLastItemChanges();
+
+ DoWork();
+ });
+ t.Start();
+ }
+
+ ///
+ /// 显示数据
+ ///
+ public void ShowData()
+ {
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ ItemList.Clear();
+ });
+
+ if (SelectPro == null||SelectDate==null)
+ return;
+
+ var list= DbHelper.Db.GetItemChanges(DateTime.Now.AddDays(SelectDate.Day));
+ switch (SelectPro.Type)
+ {
+ case ProType.Active:
+ {
+ var data = list.Where(c => c.NewActive != c.OldActive).ToList();
+ data.ForEach(item =>
+ {
+
+ ItemData change = new ItemData()
+ {
+ Date = item.Date,
+ Desc = item.Desc,
+ ImgUrl = item.ImgUrl,
+ SkuId = item.SkuId
+ };
+
+ if (item.OldActive == null)
+ {
+ item.OldActive = "[]";
+ }
+ if (item.NewActive == null)
+ {
+ item.NewActive = "[]";
+ }
+ change.OldProList = Newtonsoft.Json.JsonConvert.DeserializeObject>(item.OldActive);
+ change.NewProList = Newtonsoft.Json.JsonConvert.DeserializeObject>(item.NewActive);
+
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ ItemList.Add(change);
+ });
+
+ });
+ }
+ break;
+
+ case ProType.Coupons:
+ {
+ var data = list.Where(c => c.NewCoupons != c.OldCoupons).ToList();
+ data.ForEach(item =>
+ {
+
+ ItemData change = new ItemData()
+ {
+ Date = item.Date,
+ Desc = item.Desc,
+ ImgUrl = item.ImgUrl,
+ SkuId = item.SkuId
+ };
+
+ if (item.OldCoupons == null)
+ {
+ item.OldCoupons = "[]";
+ }
+ if (item.NewCoupons == null)
+ {
+ item.NewCoupons = "[]";
+ }
+ change.OldProList = Newtonsoft.Json.JsonConvert.DeserializeObject>(item.OldCoupons);
+ change.NewProList = Newtonsoft.Json.JsonConvert.DeserializeObject>(item.NewCoupons);
+
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ ItemList.Add(change);
+ });
+ });
+ }
+ break;
+
+ case ProType.Promotion:
+ {
+ var data = list.Where(c => c.NewPromotion != c.OldPromotion).ToList();
+ data.ForEach(item =>
+ {
+
+ ItemData change = new ItemData()
+ {
+ Date = item.Date,
+ Desc = item.Desc,
+ ImgUrl = item.ImgUrl,
+ SkuId = item.SkuId
+ };
+
+ if (item.OldPromotion == null)
+ {
+ item.OldPromotion = "[]";
+ }
+ if (item.NewPromotion == null)
+ {
+ item.NewPromotion = "[]";
+ }
+ change.OldProList = Newtonsoft.Json.JsonConvert.DeserializeObject>(item.OldPromotion);
+ change.NewProList = Newtonsoft.Json.JsonConvert.DeserializeObject>(item.NewPromotion);
+
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ ItemList.Add(change);
+ });
+ });
+ }
+ break;
+
+ case ProType.Price:
+ {
+ var data = list.Where(c => c.NewPrice != c.OldPrice).ToList();
+ data.ForEach(item =>
+ {
+
+ ItemData change = new ItemData()
+ {
+ Date = item.Date,
+ Desc = item.Desc,
+ ImgUrl = item.ImgUrl,
+ SkuId = item.SkuId
+ };
+
+ change.OldPro = item.OldPrice.ToString();
+ change.NewPro = item.NewPrice.ToString();
+
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ ItemList.Add(change);
+ });
+ });
+ }
+ break;
+ }
}
///
@@ -275,7 +455,177 @@ namespace JdShopListener
return null;
}
}
-
+
+ ///
+ /// 执行任务
+ ///
+ public void DoWork()
+ {
+ //开始监控全部
+ foreach (var sku in SkuList)
+ {
+ var lastSku = LastItemChangeList.FirstOrDefault(c => c.SkuId == sku.SkuId);
+
+ if(lastSku==null)
+ {
+ lastSku = new ItemChangeModel();
+ }
+
+ ItemChangeModel item = new ItemChangeModel()
+ {
+ Date = DateTime.Now,
+ Desc = sku.Desc,
+ ImgUrl = sku.ImgUrl,
+ SkuId = sku.SkuId
+ };
+
+ var result = GetWareBusiness(sku);
+
+ //价格
+ decimal? price = result.price.p;
+ if (price == null || price == 0)
+ {
+ price = result.price.op ?? 0;
+ }
+
+ item.NewPrice = (decimal)price;
+
+ #region 活动
+ var newActive = new List