예제 #1
0
        public async Task <IActionResult> PostNewsDocLocalHostAsync([FromHeader] String source,
                                                                    [FromRoute] SiteRoute route,
                                                                    DateTime pushTime,
                                                                    DateTime?errStartTime
                                                                    )
        {
            var response = new Response <Object>();

            try {
                var categories = await _IWebCategoryRepository.Query(a => a.SiteId == route.mark && a.IsEnable == 1, a => a.Sequence).ToListAsync();

                var iidn = await _IWebNewsElastic.AddIndexAsync(_IWebNewsElastic.IndexName);

                List <WebNews> news = null;
                Expression <Func <WebNews, bool> > predicate;
                if (errStartTime != null)   //如果中途断掉则根据断掉的时间节点重新写入
                {
                    predicate = c => c.SiteId == route.mark && c.IsEnable == 1 &&
                                (c.PushTime <= pushTime && c.PushTime > errStartTime);
                }
                else
                {
                    predicate = c => c.SiteId == route.mark && c.IsEnable == 1 &&
                                c.PushTime <= pushTime;
                }
                for (int pageIndex = 1; pageIndex <= 1; pageIndex++)
                {
                    news = await _IWebNewsRepository.Query(predicate)
                           .ToPager(pageIndex, 100).ToListAsync();

                    var docs = new List <WebNewsDoc>();
                    news.ForEach(x => {
                        var category = categories.SingleOrDefault(a => a.CategoryName == x.CategoryName);
                        if (category != null)
                        {
                            docs.Add(GetWebNewsDoc(x));
                        }
                    });
                    if (docs.Count > 0)
                    {
                        try {
                            var flag = await _IWebNewsElastic.BatchAddDocumentAsync(_IWebNewsElastic.IndexName, docs);

                            response.Data    = docs.Count * pageIndex;//写入es
                            response.Message = docs.LastOrDefault().PushTime.ToString();
                            response.Code    = flag;
                        } catch (Exception ex) {
                            LogHelper.LogError("写入ES错误信息:{0}", ex.Message + ex.StackTrace);
                        }
                    }
                }
            } catch (Exception ex) {
                LogHelper.LogError("db读取错误信息:{0}", ex.Message + ex.StackTrace);
            }
            return(response.ToHttpResponse());
        }
예제 #2
0
        public async Task <IActionResult> PostWebNewsAsync([FromBody] List <GatherPost> item)
        {
            try {
                var categories = await _IWebCategoryRepository.Query(a => a.IsEnable == 1 && a.SiteId == 1)
                                 .ToListAsync();

                var entities = new List <WebNews>();
                var docs     = new List <WebNewsDoc>();
                //var d = new WebSite() { Remarks = $"{item[0].content_type}/{item[0].thumbpic}/{item[0].video}" };
                //await _IWebSiteRepository.AddAsync(d);
                //await _IWebSiteRepository.SaveChangesAsync();
                item.ForEach(x => {
                    if (!IsExistsTitle(x.title))
                    {
                        var category = categories.FirstOrDefault(y => y.CategoryName == x.cate_name);
                        if (category != null)
                        {
                            var entity = GetNewsEntity(category, x);
                            var doc    = GetNewsDoc(entity);
                            entities.Add(entity);
                            docs.Add(doc);
                        }
                    }
                });

                if (entities.Count > 0)
                {
                    var resultDB = await _IWebNewsRepository.BatchAddAsync(entities);
                }
                if (docs.Count > 0)
                {
                    var resultES = await _IWebNewsElastic.BatchAddDocumentAsync(_IWebNewsElastic.IndexName, docs);
                }
            } catch (Exception ex) {
                LogHelper.LogError("错误信息:{0}", ex.Message + ex.StackTrace);
            }
            return(Ok());
        }