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 HomePopupsService : IHomePopupsService { private readonly IBaseRepository _homePopupsRepository; /// /// 构造函数 /// /// 首页弹窗仓储 public HomePopupsService(IBaseRepository homePopupsRepository) { _homePopupsRepository = homePopupsRepository; } /// /// 获取首页弹窗 /// /// public async Task> GetHomePopup() { var now = DateTime.Now; // 查询启用的弹窗,按排序顺序取第一个 var popup = await _homePopupsRepository.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) .FirstAsync(); if (popup == null) { return new BaseResponse(ResponseCode.Success, null); } // 增加浏览次数 popup.ViewCount++; await _homePopupsRepository.UpdateAsync(popup); var result = new HomePopupDto { PopupId = popup.Id, Title = popup.Title ?? "", ImageUrl = popup.ImageUrl ?? "", LinkUrl = popup.LinkUrl ?? "", LinkType = popup.LinkType ?? 4, TargetId = popup.LinkUrl, SortOrder = popup.SortOrder }; return new BaseResponse(result); } /// /// 点击弹窗 /// /// 请求参数 /// public async Task> ClickPopup(HomePopupClickReq request) { // 获取弹窗 var popup = await _homePopupsRepository.Select .Where(x => x.Id == request.PopupId) .FirstAsync(); if (popup == null) { return new BaseResponse(ResponseCode.Error, "弹窗不存在"); } // 增加点击次数 popup.ClickCount++; await _homePopupsRepository.UpdateAsync(popup); return new BaseResponse(new HomePopupClickRespDto { ClickCount = popup.ClickCount }); } } }