using YD_Event.Application.Client.Dtos;
using Furion.UnifyResult;
namespace YD_Event.Application.Client;
///
/// 相册
///
[ApiDescriptionSettings("博客前端接口")]
[AllowAnonymous]
public class AlbumsController : IDynamicApiController
{
private readonly ISqlSugarRepository _albumsRepository;
public AlbumsController(ISqlSugarRepository albumsRepository)
{
_albumsRepository = albumsRepository;
}
///
/// 相册列表
///
///
///
[HttpGet]
public async Task> Get([FromQuery] Pagination dto)
{
return await _albumsRepository.AsQueryable().Where(x => x.IsVisible && x.Status == AvailabilityStatus.Enable)
.OrderBy(x => x.Sort)
.OrderByDescending(x => x.Id)
.Select(x => new AlbumsOutput
{
Id = x.Id,
Name = x.Name,
Cover = x.Cover,
Remark = x.Remark,
CreatedTime = x.CreatedTime
}).ToPagedListAsync(dto);
}
///
/// 相册下的图片
///
///
///
[HttpGet]
public async Task> Pictures([FromQuery] PicturesQueryInput dto)
{
var album = await _albumsRepository.AsQueryable().Where(x => x.Id == dto.AlbumId && x.IsVisible && x.Status == AvailabilityStatus.Enable).Select(x => new
{
x.Name,
x.Cover
}).FirstAsync();
UnifyContext.Fill(album);
return await _albumsRepository.AsQueryable().InnerJoin((albums, pictures) => albums.Id == pictures.AlbumId)
.Where(albums => albums.IsVisible && albums.Status == AvailabilityStatus.Enable && albums.Id == dto.AlbumId)
.OrderByDescending((albums, pictures) => pictures.Id)
.Select((albums, pictures) => new PictureOutput { Id = pictures.Id, Url = pictures.Url }).ToPagedListAsync(dto);
}
}