Example #1
0
        public static async Task <List <Agent> > GetDiffAgent()
        {
            List <Agent> diffAgentList = new List <Agent>();

            List <Agent> agentList;
            List <Tuan>  tuanList;

            using (TswwDbContext context = new TswwDbContext())
            {
                agentList = await context.Agents.AsNoTracking().ToListAsync();

                tuanList = await context.Tuans.AsNoTracking().ToListAsync();
            }

            foreach (var agent in agentList)
            {
                if (!string.IsNullOrWhiteSpace(agent.BelongTuan))
                {
                    List <string> tuans = new List <string>();

                    var belongTuans = agent.TuanIds.Split('|');
                    if (belongTuans.Length > 1)
                    {
                        foreach (var belongTuan in belongTuans)
                        {
                            tuans.Add(belongTuan);
                        }
                    }
                    else
                    {
                        tuans.Add(agent.TuanIds);
                    }

                    foreach (var tuan in tuans)
                    {
                        if (!tuanList.Any(s => s.TuanId.Equals(tuan)))
                        {
                            diffAgentList.Add(agent);
                        }
                    }
                }
                else
                {
                    diffAgentList.Add(agent);
                }
            }
            return(diffAgentList.OrderBy(s => s.BelongTuan).ToList());
        }
Example #2
0
        /// <summary>
        /// 获取代理列表并写入数据库
        /// </summary>
        /// <param name="startPage"></param>
        /// <param name="maxPage"></param>
        /// <param name="loginUrl"></param>
        /// <param name="baseUrl"></param>
        public static async Task GetAgentList(int startPage, int maxPage, string loginUrl, string baseUrl)
        {
            CookieContainer cookiescontainer = new CookieContainer();
            var             handler          = new HttpClientHandler()
            {
                CookieContainer   = cookiescontainer,
                AllowAutoRedirect = true,
                UseCookies        = true
            };
            var httpClient = new HttpClient(handler);
            var result     = await httpClient.PostAsync(loginUrl, new FormUrlEncodedContent(Common.GetPostPara()));

            if (result.IsSuccessStatusCode)
            {
                var parser = new HtmlParser();
                for (int i = startPage; i <= maxPage; i++)
                {
                    var pageResult = await httpClient.GetStringAsync($"http://sp.wdwd.com/distr/lists?p={i}");

                    var document = await parser.ParseAsync(pageResult);

                    var          tbodyTrs   = document.QuerySelectorAll("tbody");
                    var          trElements = tbodyTrs[0].QuerySelectorAll("tr");
                    List <Agent> agentList  = new List <Agent>();
                    foreach (var item in trElements)
                    {
                        var distrTimeEls  = item.QuerySelectorAll(".distr-time");
                        var distrPriceEls = item.QuerySelectorAll(".distr-price");

                        Agent agent = new Agent()
                        {
                            UserId             = item.GetAttribute("data-id"),
                            HeadImg            = item.QuerySelector(".distr-img").QuerySelector("img").GetAttribute("src"),
                            Name               = item.QuerySelector(".distr-name").QuerySelector("input").GetAttribute("data-name"),
                            Mobile             = item.QuerySelector(".distr-mobile").InnerHtml,
                            TotalAmount        = distrPriceEls[0].TextContent,
                            CurrentMothlAmount = distrPriceEls[1].TextContent,
                            FirstAgentTime     = distrTimeEls[0].InnerHtml.Replace("<br>", ""),
                            LastUpDateTime     = distrTimeEls[1].InnerHtml.Replace("<br>", ""),
                            ShopId             = item.GetAttribute("data-shop"),
                        };
                        var itemUrl    = $"{baseUrl}{item.QuerySelector(".opts").QuerySelector("a").GetAttribute("href")}";
                        var itemResult = await httpClient.GetStringAsync(itemUrl);

                        var itemHtml = await parser.ParseAsync(itemResult);

                        //用户等级
                        var agnetLevel = itemHtml.QuerySelector("#J_distrLvl").TextContent;
                        agent.Level = agnetLevel;

                        //用户所属团
                        var tuanEls   = itemHtml.QuerySelector(".distr-stats").QuerySelectorAll("li")[1].QuerySelectorAll("span");
                        var tuanStr   = new StringBuilder();
                        var tuanIdStr = new StringBuilder();
                        foreach (var tuan in tuanEls)
                        {
                            tuanStr.Append(tuan.TextContent).Append("|");

                            var tuanIdANode = tuan.QuerySelector("a");
                            if (tuanIdANode != null)
                            {
                                var tuanId = tuanIdANode.GetAttribute("data-team-id");
                                tuanIdStr.Append(tuanId).Append("|");
                            }
                        }

                        var tuanstrs = tuanStr.ToString().TrimEnd('|');
                        agent.BelongTuan = tuanstrs.Equals("暂未加入团队") ? "" : tuanstrs;

                        var tuanIdStrs = tuanIdStr.ToString().TrimEnd('|');
                        agent.TuanIds = tuanIdStrs;

                        agent.CreateTime = DateTime.Now;
                        agentList.Add(agent);
                    }

                    using (var context = new TswwDbContext())
                    {
                        foreach (var item in agentList)
                        {
                            var agent = context.Agents.SingleOrDefault(s => s.UserId == item.UserId);
                            if (agent != null)
                            {
                                agent.TotalAmount        = item.TotalAmount;
                                agent.CurrentMothlAmount = item.CurrentMothlAmount;
                                agent.TuanIds            = item.TuanIds;
                                agent.BelongTuan         = item.BelongTuan;
                                agent.IsUpdated          = true;
                                agent.UpdatedTime        = DateTime.Now;
                            }
                            else
                            {
                                item.IsUpdated   = true;
                                item.UpdatedTime = DateTime.Now;
                                context.Agents.Add(item);
                            }
                            context.SaveChanges();
                        }
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// 获取团
        /// </summary>
        /// <param name="loginUrl"></param>
        /// <param name="tuanUrl"></param>
        /// <returns></returns>
        public static async Task GetTuanList(string loginUrl, string tuanUrl)
        {
            CookieContainer cookiescontainer = new CookieContainer();
            var             handler          = new HttpClientHandler()
            {
                CookieContainer   = cookiescontainer,
                AllowAutoRedirect = true,
                UseCookies        = true
            };
            var httpClient = new HttpClient(handler);
            var result     = await httpClient.PostAsync(loginUrl, new FormUrlEncodedContent(Common.GetPostPara()));

            if (result.IsSuccessStatusCode)
            {
                var parser     = new HtmlParser();
                var pageResult = await httpClient.GetStringAsync(tuanUrl);

                var document = await parser.ParseAsync(pageResult);

                var tbodys     = document.QuerySelectorAll("tbody");
                var trElements = tbodys[0].QuerySelectorAll("tr");

                List <Tuan> tuanList = new List <Tuan>();

                foreach (var item in trElements)
                {
                    var  teamTdNodes = item.QuerySelectorAll("td");
                    Tuan tuan        = new Tuan
                    {
                        TuanId         = item.GetAttribute("data-id"),
                        HeadImg        = item.QuerySelector(".col-team").QuerySelector("img").GetAttribute("src"),
                        Name           = item.QuerySelector(".cell").TextContent,
                        TuanType       = teamTdNodes[2].QuerySelector(".cell").TextContent,
                        TuanRenShu     = teamTdNodes[3].QuerySelector(".cell").TextContent,
                        TuanZhang      = teamTdNodes[4].QuerySelector(".cell").TextContent,
                        FanLiType      = teamTdNodes[5].QuerySelector(".cell").TextContent,
                        TotalAmount    = teamTdNodes[6].QuerySelector(".cell").TextContent,
                        TotalSaleCount = teamTdNodes[7].QuerySelector(".cell").TextContent,
                        TuanCreateTime = teamTdNodes[8].QuerySelector(".cell").TextContent,
                        IsUpdate       = true,
                        UpdateTime     = DateTime.Now,
                        CreateTime     = DateTime.Now
                    };
                    tuanList.Add(tuan);
                }

                using (var context = new TswwDbContext())
                {
                    foreach (var item in tuanList)
                    {
                        var tuan = context.Tuans.SingleOrDefault(s => s.TuanId == item.TuanId);
                        if (tuan != null)
                        {
                            tuan.Name           = item.Name;
                            tuan.TuanRenShu     = item.TuanRenShu;
                            tuan.TotalAmount    = item.TotalAmount;
                            tuan.TotalSaleCount = item.TotalSaleCount;
                        }
                        else
                        {
                            context.Tuans.Add(item);
                        }
                        context.SaveChanges();
                    }
                }
            }
        }