|
|
@ -33,7 +33,8 @@ namespace JdShopListener |
|
|
|
new ProModel(){ Name="价格" , Type= ProType.Price}, |
|
|
|
new ProModel(){ Name="活动" , Type= ProType.Active}, |
|
|
|
new ProModel(){ Name="促销" , Type= ProType.Promotion}, |
|
|
|
new ProModel(){ Name="优惠券" , Type= ProType.Coupons} |
|
|
|
new ProModel(){ Name="优惠券" , Type= ProType.Coupons}, |
|
|
|
new ProModel(){ Name="Sku" , Type= ProType.Sku}, |
|
|
|
}; |
|
|
|
|
|
|
|
DateList = new System.Collections.ObjectModel.ObservableCollection<DateModel>() { |
|
|
@ -61,7 +62,10 @@ namespace JdShopListener |
|
|
|
SkuList.Clear(); |
|
|
|
var list= DbHelper.Db.GetSkuList(); |
|
|
|
list.ForEach(c => { |
|
|
|
if (c.IsShow == 1) |
|
|
|
{ |
|
|
|
SkuList.Add(c); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
@ -191,9 +195,9 @@ namespace JdShopListener |
|
|
|
set { Set(ref _IsAdd, value); } |
|
|
|
} |
|
|
|
|
|
|
|
private bool _IsStart; |
|
|
|
private bool? _IsStart=false; |
|
|
|
|
|
|
|
public bool IsStart |
|
|
|
public bool? IsStart |
|
|
|
{ |
|
|
|
get { return _IsStart; } |
|
|
|
set { Set(ref _IsStart, value); } |
|
|
@ -245,12 +249,38 @@ namespace JdShopListener |
|
|
|
SpuId = spuId |
|
|
|
}; |
|
|
|
|
|
|
|
if (model.SkuId == Sku) |
|
|
|
{ |
|
|
|
model.IsShow = 1; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//去除重复
|
|
|
|
if (SkuList.Count(c => c.SkuId == model.SkuId) > 0) |
|
|
|
{ |
|
|
|
|
|
|
|
if (model.IsShow == 1) |
|
|
|
{ |
|
|
|
var osku = SkuList.FirstOrDefault(c => c.SkuId == model.SkuId); |
|
|
|
|
|
|
|
if (osku.IsShow != 1) |
|
|
|
{ |
|
|
|
|
|
|
|
osku.IsShow = 1; |
|
|
|
DbHelper.Db.UpdateSkuModel(osku); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//加入本地数据库
|
|
|
|
skus.Add(model); |
|
|
|
|
|
|
|
Application.Current.Dispatcher.Invoke(() => |
|
|
|
{ |
|
|
|
SkuList.Add(model); |
|
|
@ -331,7 +361,7 @@ namespace JdShopListener |
|
|
|
/// </summary>
|
|
|
|
public void Start() |
|
|
|
{ |
|
|
|
if (!IsStart) |
|
|
|
if (IsStart==false) |
|
|
|
{ |
|
|
|
IsStart = true; |
|
|
|
Thread t = new Thread(() => |
|
|
@ -339,12 +369,36 @@ namespace JdShopListener |
|
|
|
LastItemChangeList.Clear(); |
|
|
|
LastItemChangeList = DbHelper.Db.GetLastItemChanges(); |
|
|
|
|
|
|
|
while (IsStart==true) |
|
|
|
{ |
|
|
|
AddLog("开始sku定时监控!"); |
|
|
|
|
|
|
|
DoWork(); |
|
|
|
|
|
|
|
AddLog("全部sku监控执行完成,等待一小时后开始下一轮监控!"); |
|
|
|
|
|
|
|
for(int i=0;i<60;i++) |
|
|
|
{ |
|
|
|
if (IsStart != true) |
|
|
|
break; |
|
|
|
|
|
|
|
for (int s = 0; s < 60; s++) |
|
|
|
{ |
|
|
|
if (IsStart != true) |
|
|
|
break; |
|
|
|
//等待一小时
|
|
|
|
Thread.Sleep(1000); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
IsStart = false; |
|
|
|
}); |
|
|
|
t.Start(); |
|
|
|
} |
|
|
|
else { |
|
|
|
IsStart = null; |
|
|
|
AddLog("开始停止监控!"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary>
|
|
|
@ -488,6 +542,66 @@ namespace JdShopListener |
|
|
|
}); |
|
|
|
} |
|
|
|
break; |
|
|
|
|
|
|
|
case ProType.Sku: |
|
|
|
{ |
|
|
|
var data = list.Where(c => c.NewSkus != c.OldSkus).ToList(); |
|
|
|
data.ForEach(item => |
|
|
|
{ |
|
|
|
|
|
|
|
ItemData change = new ItemData() |
|
|
|
{ |
|
|
|
Date = item.Date, |
|
|
|
Desc = item.Desc, |
|
|
|
ImgUrl = item.ImgUrl, |
|
|
|
SkuId = item.SkuId |
|
|
|
}; |
|
|
|
|
|
|
|
if (item.OldSkus == null) |
|
|
|
{ |
|
|
|
item.OldSkus = "[]"; |
|
|
|
} |
|
|
|
if (item.NewSkus == null) |
|
|
|
{ |
|
|
|
item.NewSkus = "[]"; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<ProListModel> addSkus = new List<ProListModel>(); |
|
|
|
List<ProListModel> removeSkus = new List<ProListModel>(); |
|
|
|
|
|
|
|
var oldList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ProListModel>>(item.OldSkus).Select(c => c.Title); |
|
|
|
var newList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ProListModel>>(item.NewSkus).Select(c => c.Title); |
|
|
|
|
|
|
|
foreach (var sku in newList) |
|
|
|
{ |
|
|
|
//如果旧列表不存在就是新增
|
|
|
|
if (!oldList.Contains(sku)) |
|
|
|
{ |
|
|
|
addSkus.Add(new ProListModel() { Title=sku }); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
foreach (var sku in oldList) |
|
|
|
{ |
|
|
|
//如果新列表没有就是删除
|
|
|
|
if (!newList.Contains(sku)) |
|
|
|
{ |
|
|
|
removeSkus.Add(new ProListModel() { Title = sku }); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
change.OldProList = removeSkus; |
|
|
|
change.NewProList = addSkus; |
|
|
|
|
|
|
|
Application.Current.Dispatcher.Invoke(() => |
|
|
|
{ |
|
|
|
ItemList.Add(change); |
|
|
|
}); |
|
|
|
}); |
|
|
|
} |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -531,6 +645,13 @@ namespace JdShopListener |
|
|
|
{ |
|
|
|
//开始监控全部
|
|
|
|
foreach (var sku in SkuList) |
|
|
|
{ |
|
|
|
if (IsStart != true) |
|
|
|
{ |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
try |
|
|
|
{ |
|
|
|
var lastSku = LastItemChangeList.FirstOrDefault(c => c.SkuId == sku.SkuId); |
|
|
|
|
|
|
@ -652,20 +773,50 @@ namespace JdShopListener |
|
|
|
item.NewCoupons = Newtonsoft.Json.JsonConvert.SerializeObject(newCoupons); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region sku
|
|
|
|
|
|
|
|
var newSkus = new List<object>(); |
|
|
|
|
|
|
|
var detail = GetItemDetail(item.SkuId); |
|
|
|
|
|
|
|
//相邻的Sku列表
|
|
|
|
var nearSkus = detail.product.colorSize; |
|
|
|
|
|
|
|
foreach (var near in nearSkus) |
|
|
|
{ |
|
|
|
if (near != null) |
|
|
|
{ |
|
|
|
newSkus.Add(new { title= near.skuId, value = string.Empty }); |
|
|
|
} |
|
|
|
} |
|
|
|
item.NewSkus = Newtonsoft.Json.JsonConvert.SerializeObject(newSkus); |
|
|
|
#endregion
|
|
|
|
|
|
|
|
//判断是否有变化
|
|
|
|
if (lastSku.NewActive != item.NewActive||lastSku.NewCoupons!=item.NewCoupons||lastSku.NewPrice!=item.NewPrice||lastSku.NewPromotion!=item.NewPromotion) |
|
|
|
if (lastSku.NewSkus!=item.NewSkus|| lastSku.NewActive != item.NewActive || lastSku.NewCoupons != item.NewCoupons || lastSku.NewPrice != item.NewPrice || lastSku.NewPromotion != item.NewPromotion) |
|
|
|
{ |
|
|
|
item.OldActive = lastSku.NewActive; |
|
|
|
item.OldCoupons = lastSku.NewCoupons; |
|
|
|
item.OldPrice = lastSku.NewPrice; |
|
|
|
item.OldPromotion = lastSku.NewPromotion; |
|
|
|
item.OldSkus = lastSku.NewSkus; |
|
|
|
|
|
|
|
DbHelper.Db.AddItemChangeModel(item); |
|
|
|
|
|
|
|
AddLog($"{sku.SkuId}监控完成!已产生变化记录"); |
|
|
|
} |
|
|
|
else { |
|
|
|
AddLog($"{sku.SkuId}监控完成!未发生变化"); |
|
|
|
} |
|
|
|
|
|
|
|
Thread.Sleep(3000); |
|
|
|
} |
|
|
|
catch(Exception ex) |
|
|
|
{ |
|
|
|
AddLog(sku.SkuId + "监控失败," + ex.Message); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|