using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using AutoMapper; using GxPress.Common.Tools; using GxPress.Repository.Interface; using GxPress.Repository.Interface.Media; using GxPress.Repository.Interface.Navigation; using GxPress.Repository.Interface.SpecialLabel; using GxPress.Repository.Interface.SystemLabel; using GxPress.Result.Navigation; using GxPress.Service.Interface.Navigation; namespace GxPress.Service.Implement.Navigation { public class NavigationService : INavigationService { private readonly INavigationRepository _navigationrepository; private readonly IMapper _mapper; private readonly IMiddleLableRepository _middleLableRepository; private readonly ISystemLabelRepository _systemLabelRepository; private readonly IMediaRepository _mediaRepository; private readonly IMediaLableRepository _mediaLableRepository; private readonly ISlideRepository slideRepository; private readonly ISpecialLabelRepository specialLabelRepository; public NavigationService(INavigationRepository _repository, IMapper _mapper, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMediaRepository _mediaRepository, IMediaLableRepository _mediaLableRepository, ISlideRepository slideRepository, ISpecialLabelRepository specialLabelRepository) { this._navigationrepository = _repository; this._middleLableRepository = _middleLableRepository; this._systemLabelRepository = _systemLabelRepository; this._mediaRepository = _mediaRepository; this._mediaLableRepository = _mediaLableRepository; this.slideRepository = slideRepository; this._mapper = _mapper; this.specialLabelRepository = specialLabelRepository; } /// /// 获取导航栏数据 /// /// public async Task GetNavigationResults(int navigationId) { var result = new MiddleLableResult(); var navigation = await _navigationrepository.GetAsync(navigationId); if (navigation.MiddleLableId > 0) { //获取中间页面 var middleLable = await _middleLableRepository.GetAsync(navigation.MiddleLableId); if (string.IsNullOrEmpty(middleLable.LabelId)) return result; result = _mapper.Map(middleLable); result.NavigationLabelMediaResults = new List(); //获取轮播 if (middleLable.IsSlide) { if (result.IsSlide) { result.Sildes = await slideRepository.GetListAsync(result.TypeId); foreach (var item in result.Sildes) item.ImageUrl = StringUtils.AddDomain(item.ImageUrl); } } //获取标签 var systemLabels = await _systemLabelRepository.GetAllAsync(StringUtils.StringCollectionToIntList(middleLable.LabelId).ToList()); foreach (var item in systemLabels) { //获取常规数据 var navigationLabelMediaResult = new NavigationLabelMediaResult() { Id = item.Id, Sort = item.Sort, StyleType = item.StyleType, ActionUrl = item.ActionUrl, ControllerUrl = item.ControllerUrl, IsPage = item.IsPage, IsSkip = item.IsSkip, LabelName = item.LabelName, ResourceType = item.ResourceType, LabelNameDescribe = item.LabelNameDescribe, Remark = item.Remark }; // 特殊 130,示范课堂140,品牌专区1(150),品牌专区2(160) var specialInts = systemLabels.Where(n => n.ResourceType >= 130).Select(n => n.ResourceType); if (specialInts.Contains(item.ResourceType)) { //获取特殊 navigationLabelMediaResult.IsSpecial = true; navigationLabelMediaResult.SpecialLabelResults = await specialLabelRepository.GetAllAsync(item.ResourceType); foreach (var specialLabelResult in navigationLabelMediaResult.SpecialLabelResults) specialLabelResult.ImageUrls = StringUtils.AddDomain(specialLabelResult.ImageUrls); result.NavigationLabelMediaResults.Add(navigationLabelMediaResult); continue; } //获取媒体标签 var lableInts = new List { item.Id }; var medias = await _mediaRepository.GetNavigationMediaResults(lableInts); navigationLabelMediaResult.MediaResults = medias.ToList(); foreach (var itemMedia in navigationLabelMediaResult.MediaResults) itemMedia.ImageUrls = StringUtils.AddDomain(itemMedia.ImageUrls); result.NavigationLabelMediaResults.Add(navigationLabelMediaResult); } } return result; } } }