private async void btnClear_Click(object sender, EventArgs e)
        {
            btnClear.Enabled  = false;
            btnExport.Enabled = false;
            btnImoort.Enabled = false;
            using (AmazonspiderDbContext context = new AmazonspiderDbContext())
            {
                label2.Text = "正在清理输入请稍后。。。";

                Int32 count = 0;

                var list = context.Products.Where(q => q.Status != 1 && q.Status != 2).ToList();
                await Task.Run(() =>
                {
                    var t1query = from t in context.TaskSchedules
                                  join p in context.Products on t.PlayerAccountId equals p.Id
                                  where p.Status != 1 && p.Status != 2 && t.PlayerType == "Amazonspider.ProductDownload.Download"
                                  select t;

                    context.TaskSchedules.RemoveRange(t1query);


                    var t2query = from t in context.TaskSchedules
                                  join pi in context.ProductImages on t.PlayerAccountId equals pi.Id
                                  join p in context.Products on pi.Asin equals p.Asin

                                  where p.Status != 1 && p.Status != 2 && t.PlayerType == "Amazonspider.ProductImageDownload.Download"
                                  select t;

                    context.TaskSchedules.RemoveRange(t2query);

                    var query = from pi in context.ProductImages
                                join p in context.Products on pi.Asin equals p.Asin
                                where p.Status != 1 && p.Status != 2
                                select pi;

                    context.ProductImages.RemoveRange(query);
                    context.Products.RemoveRange(context.Products.Where(q => q.Status != 1 && q.Status != 2));
                });

                await context.SaveChangesAsync();
            }

            using (AmazonspiderDbContext context = new AmazonspiderDbContext())
            {
                context.Configuration.EnsureTransactionsForFunctionsAndCommands = false;

                context.Database.ExecuteSqlCommand("VACUUM");

                await context.Database.ExecuteSqlCommandAsync("REINDEX 'Asin'");
            }
            MessageBox.Show("清理成功");
            label2.Text       = "无操作";
            btnClear.Enabled  = true;
            btnExport.Enabled = true;
            btnImoort.Enabled = true;
        }
        private Task Export()
        {
            return(Task.Run(() =>
            {
                using (AmazonspiderDbContext context = new AmazonspiderDbContext())
                {
                    var list = context.Products.Where(q => q.Status == 1).Take(5000).ToList();
                    int canExportCount = 0;
                    int errorExportCount = 0;

                    if (!System.IO.Directory.Exists(exportImagePath))
                    {
                        Directory.CreateDirectory(exportImagePath);
                    }
                    CSVUtil csvUtin = new CSVUtil(exportFilePath);

                    foreach (var item in list)
                    {
                        var titles = item.Title.Split(' ').ToList();
                        foreach (var title in titles)
                        {
                            var l = Setting.Key.Where(q => q != "").Where(q => title.Trim() == q.Trim()).ToList();
                            if (l.Count > 0)
                            {
                                item.Status = 2;//.Update(model.Id, 2);
                                errorExportCount++;
                                continue;
                            }
                        }

                        var img = context.ProductImages.Where(q => q.Asin == item.Asin).FirstOrDefault();
                        var imgName = "";
                        if (img != null)
                        {
                            item.Status = 2;
                            if (File.Exists(Environment.CurrentDirectory + $"\\Images\\{img.Asin}_{img.Number}.tbi"))
                            {
                                System.IO.File.Copy(Environment.CurrentDirectory + $"\\Images\\{img.Asin}_{img.Number}.tbi", $"{exportImagePath}\\{img.Asin}_{img.Number}.tbi", true);
                                imgName = $"{img.Asin}_{img.Number}";
                            }

                            if (item.Price > 0.01M)
                            {
                                csvUtin.AddPorductInfo(item.Title, item.Price.ToString(), "0", "<SPAN style='COLOR: #ffffff; BACKGROUND-COLOR: #ffffff'>" + item.Asin + "</SPAN> " + descFilter(item.Desc), imgName, "", "", "", "", "");
                                canExportCount++;
                            }
                        }
                        else
                        {
                            errorExportCount++;
                            context.Products.Remove(item);
                        }

                        label2.Invoke(new Action(() =>
                        {
                            label2.Text = $"正在导出导出{list.Count},已导出{canExportCount},失败{errorExportCount}";
                        }));
                    }
                    context.SaveChanges();
                    csvUtin.WriteCSV5();
                    label2.Invoke(new Action(() =>
                    {
                        label2.Text = $"导出成功,一共导出{list.Count},已导出{canExportCount},失败{errorExportCount}";
                        MessageBox.Show("导出成功");
                    }));
                }
            }));
        }
        private Task Import()
        {
            return(Task.Run(() =>
            {
                try
                {
                    SQLiteConnection sQLiteConnection = new SQLiteConnection($"data source ={importDatabasePath}");
                    AmazonspiderDbContext contextImport = new AmazonspiderDbContext(sQLiteConnection);
                    var waitImportList = contextImport.Products.Where(q => q.Status == 1).ToList();
                    AmazonspiderDbContext context = new AmazonspiderDbContext();
                    int importCount = 0;
                    int errorCount = 0;
                    foreach (var item in waitImportList)
                    {
                        var images = contextImport.ProductImages.Where(q => q.Asin == item.Asin && item.Status != 0).ToList();
                        if (images.Count == 0)
                        {
                            errorCount++;
                            continue;
                        }
                        var product = context.Products.Where(q => q.Asin == item.Asin).FirstOrDefault();
                        if (product != null)
                        {
                            //处理图片信息

                            if (images.Count != 0)
                            {
                                if (product.Status == 0)
                                {
                                    product.Status = 1;
                                    product.Title = item.Title;
                                    product.Price = item.Price;
                                    product.Url = item.Url;
                                    product.Desc = item.Desc;

                                    foreach (var image in images)
                                    {
                                        context.ProductImages.Add(new ProductImage()
                                        {
                                            Asin = image.Asin,
                                            Number = image.Number,
                                            Status = image.Status,
                                            Url = image.Url,
                                        });
                                    }
                                }
                                importCount++;
                            }
                            else
                            {
                                errorCount++;
                            }
                        }
                        else
                        {
                            context.Products.Add(new Product()
                            {
                                Title = item.Title,
                                Price = item.Price,
                                Asin = item.Asin,
                                Desc = item.Desc,
                                Status = item.Status,
                                Time = item.Time
                            });
                            foreach (var image in images)
                            {
                                context.ProductImages.Add(new ProductImage()
                                {
                                    Asin = image.Asin,
                                    Number = image.Number,
                                    Status = image.Status,
                                    Url = image.Url,
                                });
                            }
                            importCount++;
                        }
                        label2.Invoke(new Action(() =>
                        {
                            label2.Text = $"一共导入{waitImportList.Count},导入成功:{importCount},导入失败:{errorCount}";
                        }));
                    }
                    label2.Invoke(new Action(() =>
                    {
                        label2.Text = $"导入完毕,{waitImportList.Count},导入成功:{importCount},导入失败:{errorCount}";
                    }));
                    context.SaveChanges();
                    MessageBox.Show("导入成功");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("导入失败");
                    log4net.ILog log = log4net.LogManager.GetLogger("testApp.Logging");//获取一个日志记录器
                    log.Error("导入失败--", ex);
                }
            }));
        }