92 lines
2.8 KiB
C#
92 lines
2.8 KiB
C#
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<T_Banners> _bannersRepository;
|
|
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
/// <param name="bannersRepository">轮播图仓储</param>
|
|
public BannersService(IBaseRepository<T_Banners> bannersRepository)
|
|
{
|
|
_bannersRepository = bannersRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取轮播图列表
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public async Task<BaseResponseList<BannerDto>> 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<BannerDto>
|
|
{
|
|
Code = ResponseCode.Success,
|
|
Data = items
|
|
};
|
|
}
|
|
|
|
/// <summary>
|
|
/// 点击轮播图
|
|
/// </summary>
|
|
/// <param name="request">请求参数</param>
|
|
/// <returns></returns>
|
|
public async Task<BaseResponse<BannerClickRespDto>> ClickBanner(BannerClickReq request)
|
|
{
|
|
// 获取轮播图
|
|
var banner = await _bannersRepository.Select
|
|
.Where(x => x.Id == request.BannerId)
|
|
.FirstAsync();
|
|
|
|
if (banner == null)
|
|
{
|
|
return new BaseResponse<BannerClickRespDto>(ResponseCode.Error, "轮播图不存在");
|
|
}
|
|
|
|
// 增加点击次数
|
|
banner.ClickCount++;
|
|
await _bannersRepository.UpdateAsync(banner);
|
|
|
|
return new BaseResponse<BannerClickRespDto>(new BannerClickRespDto
|
|
{
|
|
ClickCount = banner.ClickCount
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|