Beispiel #1
0
        /// <summary>
        /// 更新美食模块的URL
        /// </summary>
        public void UpdateMeiShi()
        {
            HtmlAgilityPack.HtmlDocument doc = null;
            IDbConnection conn = null;

            try
            {
                conn = DapperManager.GetConnection();
                conn.Open();
                var list_source = conn.Query <City>("SELECT ID,Name,URL,MeiShiURL FROM T_City WHERE State = @State", new { State = 1 });
                //一个一个访问URL,并获取美食模块的URL
                for (int i = 0; i < list_source.Count(); i++)
                {
                    if (list_source.ElementAt(i).MeiShiURL != null)
                    {
                        continue;
                    }
                    try
                    {
                        doc = webClient.Load(list_source.ElementAt(i).URL);
                    }
                    catch (System.Net.WebException webEx)
                    {
                        listBox1.Invoke(new Action(() =>
                        {
                            listBox1.Items.Insert(0, webEx.Message);
                        }));
                        continue;
                    }
                    var hrefList = doc.DocumentNode.SelectNodes("//div[@class='category-nav-content-wrapper']//a[@href]");
                    foreach (var item in hrefList)
                    {
                        if (item.InnerText.Equals("美食"))
                        {
                            var MeiShiURL = item.Attributes["href"].Value;
                            list_source.ElementAt(i).MeiShiURL = MeiShiURL;
                            var count = conn.Execute("UPDATE T_City SET MeiShiURL = @MeiShiURL WHERE ID = @ID", list_source.ElementAt(i));
                            listBox1.Invoke(new Action(() =>
                            {
                                listBox1.Items.Insert(0, $"{DateTime.Now } 更新了{list_source.ElementAt(i).Name}的美食地址");
                            }));
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MyLog.logger.Error(ex.Message);
            }
            finally
            {
                conn.Close();
            }

            //hrefList = doc.DocumentNode.SelectNodes("//div[@id='app']//a[@href]");
        }
 static void ListRole()
 {
     using (var conn = DapperManager.GetConnection())
     {
         foreach (var item in conn.GetAll <RoleEntity>())
         {
             Console.WriteLine($"{item.Id,-10}{item.Name,-10}");
         }
     }
 }
        static void CreateRole(string roleName)
        {
            using (var conn = DapperManager.GetConnection())
            {
                var maxId = 1;
                var role  = new RoleEntity()
                {
                    Id   = maxId,
                    Name = roleName
                };

                var roles = conn.GetAll <RoleEntity>().ToList();
                if (roles.Any())
                {
                    maxId   = roles.Max(r => r.Id);
                    role.Id = maxId << 1;
                }

                conn.Insert(role);
                Console.WriteLine($"insert role: {roleName} => succeed!");
                ListRole();
            }
        }
Beispiel #4
0
 private void 更新城市ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     listBox1.Items.Insert(0, $"{DateTime.Now.ToShortTimeString()} 请求数据中...");
     try
     {
         LoadCity();
         IDbConnection conn = null;
         try
         {
             conn = DapperManager.GetConnection();
             conn.Open();
             _cancel_token = new CancellationTokenSource();
             var  list_source = conn.Query <City>("SELECT ID,Name,URL,MeiShiURL FROM T_City WHERE State = @State", new { State = 1 });
             var  offset      = list_source.Count() / 3;
             Task task        = new Task(() => {
                 UpdateMeiShi(list_source.Take(offset).ToList(), list_source.Count());
             });
             task.Start();
             Task task2 = new Task(() => {
                 UpdateMeiShi(list_source.Skip(offset).Take(offset).ToList(), list_source.Count());
             });
             task2.Start();
             Task task3 = new Task(() => {
                 UpdateMeiShi(list_source.Skip(offset * 2).ToList(), list_source.Count());
             });
             task3.Start();
         }
         catch (Exception ex)
         {
             MyLog.logger.Error(ex.Message);
         }
     }
     catch (Exception ex)
     {
         MyLog.logger.Error(ex.Message);
     }
 }
Beispiel #5
0
        /// <summary>
        /// 更新美食模块的URL
        /// </summary>
        public void UpdateMeiShi(List <City> list_source, int total)
        {
            HtmlAgilityPack.HtmlDocument doc = null;
            IDbConnection conn = null;

            try
            {
                conn = DapperManager.GetConnection();

                //一个一个访问URL,并获取美食模块的URL
                for (int i = 0; i < list_source.Count(); i++)
                {
                    if (_cancel_token.IsCancellationRequested)
                    {
                        numberOfMeishi = 0;
                        return;
                    }
                    try
                    {
                        doc = _webClient.Load(list_source.ElementAt(i).URL);
                    }
                    catch (System.Net.WebException ex)
                    {
                        listBox1.Invoke(new Action(() =>
                        {
                            listBox1.Items.Insert(0, $"{DateTime.Now} 更新{list_source.ElementAt(i).Name}的美食地址失败,请查看错误日志,{numberOfMeishi}/{total}");
                        }));
                        MyLog.logger.Error(ex.Message);
                        continue;
                    }
                    finally
                    {
                        listBox1.Invoke(new Action(() =>
                        {
                            listBox1.Items.Insert(0, $"{DateTime.Now} 更新了{list_source.ElementAt(i).Name}的美食地址,{numberOfMeishi}/{total}");
                        }));
                        Interlocked.Increment(ref numberOfMeishi);
                    }
                    var hrefList = doc.DocumentNode.SelectNodes("//div[@class='category-nav-content-wrapper']//a[@href]");
                    foreach (var item in hrefList)
                    {
                        //可能会有很多模块,比如美食,外卖,酒店,电影,机票等,这里只取美食模块的数据
                        if (item.InnerText.Equals("美食"))
                        {
                            var MeiShiURL = item.Attributes["href"].Value;
                            list_source.ElementAt(i).MeiShiURL = MeiShiURL;
                            var count = conn.Execute("UPDATE T_City SET MeiShiURL = @MeiShiURL WHERE ID = @ID", list_source.ElementAt(i));

                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MyLog.logger.Error(ex.Message);
            }
            finally
            {
                conn.Close();
            }
        }
Beispiel #6
0
        /// <summary>
        /// 获取所有城市列表
        /// </summary>
        public void LoadCity()
        {
            HtmlAgilityPack.HtmlDocument doc = null;
            try
            {
                //加载城市列表
                doc = _webClient.Load(Global.uri_city);
            }
            catch (Exception ex)
            {
                MyLog.logger.Error(ex.Message);
            }
            //Dom节点获取列表
            HtmlNodeCollection hrefList    = doc.DocumentNode.SelectNodes("//div[@id='app']//a[@href]");
            List <City>        list_target = new List <City>();

            for (int i = 0; i < hrefList.Count; i++)
            {
                var url = hrefList[i].Attributes["href"];
                if (i == 0)
                {
                    listBox1.Invoke(new Action(() =>
                    {
                        listBox1.Items.Insert(0, $"导入{i + 1}/{hrefList.Count}条数据");
                    }));
                }
                else
                {
                    listBox1.Items[0] = $"导入{i + 1}/{hrefList.Count}条数据";
                }
                list_target.Add(new City()
                {
                    URL  = url.Value.Insert(0, "http:"),
                    Name = hrefList[i].InnerText
                });
            }

            int count = 0;

            listBox1.Invoke(new Action(() =>
            {
                listBox1.Items.Insert(0, $"{DateTime.Now.ToShortTimeString()} 导入数据中...");
            }));
            IDbConnection conn = null;

            try
            {
                conn = DapperManager.GetConnection();
                conn.Open();
                var list_source = conn.Query <City>("SELECT Name,URL FROM T_City");
                var list_except = list_target.Except(list_source);
                count = conn.Execute("INSERT INTO T_City(Name,URL) VALUES(@Name,@URL)", list_except);
            }
            catch (Exception ex)
            {
                MyLog.logger.Error(ex.Message);
            }
            finally
            {
                conn.Close();
            }

            listBox1.Invoke(new Action(() =>
            {
                listBox1.Items.Insert(0, $"{DateTime.Now.ToShortTimeString()} 解析完毕,导入{count}条数据...");
            }));
        }