using FreeSql; using LiveForum.Code.Base; using LiveForum.IService.Others; using LiveForum.Model; using LiveForum.Model.Dto.Others; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace LiveForum.Service.Others { public class BannersService : IBannersService { private readonly IBaseRepository _bannersRepository; /// /// 构造函数 /// /// 轮播图仓储 public BannersService(IBaseRepository bannersRepository) { _bannersRepository = bannersRepository; } /// /// 获取轮播图列表 /// /// public async Task> GetBanners() { var now = DateTime.Now; // 查询启用的轮播图 var banners = await _bannersRepository.Select .Where(x => x.IsActive && (x.StartTime == null || x.StartTime <= now) && (x.EndTime == null || x.EndTime >= now)) .OrderBy(x => x.SortOrder) //.ThenByDescending(x => x.CreatedAt) .ToListAsync(); var items = banners.Select(banner => new BannerDto { BannerId = banner.Id, Title = banner.Title ?? "", ImageUrl = banner.ImageUrl ?? "", LinkUrl = banner.LinkUrl ?? "", LinkType = banner.LinkType ?? 0, TargetId = banner.LinkUrl??"", SortOrder = banner.SortOrder }).ToList(); return new BaseResponseList { Code = ResponseCode.Success, Data = items }; } /// /// 点击轮播图 /// /// 请求参数 /// public async Task> ClickBanner(BannerClickReq request) { // 获取轮播图 var banner = await _bannersRepository.Select .Where(x => x.Id == request.BannerId) .FirstAsync(); if (banner == null) { return new BaseResponse(ResponseCode.Error, "轮播图不存在"); } // 增加点击次数 banner.ClickCount++; await _bannersRepository.UpdateAsync(banner); return new BaseResponse(new BannerClickRespDto { ClickCount = banner.ClickCount }); } } }