src/ZKEACMS.Sitemap/Service/SiteUrlProviders/PageSiteUrlProvider.cs

(完整代码) 2KB

/* http://www.zkea.net/ 
 * Copyright (c) ZKEASOFT. All rights reserved. 
 * http://www.zkea.net/licenses */

using Microsoft.AspNetCore.Http;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using ZKEACMS.Page;
using ZKEACMS.Sitemap.Models;
using ZKEACMS.Widget;
using Easy.Extend;
using Easy;

namespace ZKEACMS.Sitemap.Service.SiteUrlProviders
{
    public class PageSiteUrlProvider : ISiteUrlProvider
    {
        private readonly IPageService _pageService;
        private readonly SitemapDbContext _sitemapDbContext;
        private readonly IWidgetBasePartService _widgetBasePartService;
        public PageSiteUrlProvider(SitemapDbContext sitemapDbContext,
            IPageService pageService,
            IWidgetBasePartService widgetBasePartService)
        {
            _sitemapDbContext = sitemapDbContext;
            _pageService = pageService;
            _widgetBasePartService = widgetBasePartService;
        }
        public IEnumerable<SiteUrl> Get()
        {
            HashSet<string> distinct = new HashSet<string>();
            var widgetIds = _sitemapDbContext.ArticleDetailWidget.ToList().Select(m => m.ID).ToArray();
            widgetIds = widgetIds.Concat(_sitemapDbContext.ProductDetailWidget.ToList().Select(m => m.ID)).ToArray();
            var pageIds = _widgetBasePartService.Get(m => widgetIds.Contains(m.ID)).Select(m => m.PageId);
            var pages = _pageService.Get().Where(m => !pageIds.Contains(m.ID) && m.IsPublishedPage).OrderBy(m => m.ReferencePageID).ThenByDescending(m => m.PublishDate).ToList();
            foreach (var page in pages)
            {
                if (page.Url.IsNotNullAndWhiteSpace() && !distinct.Contains(page.ReferencePageID))
                {
                    distinct.Add(page.ReferencePageID);
                    yield return new SiteUrl
                    {
                        Url = Helper.Url.ToAbsolutePath(page.Url),
                        ModifyDate = page.PublishDate ?? DateTime.Now,
                        Changefreq = "daily",
                        Priority = 0.5F
                    };
                }

            }
        }
    }
}

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。