Files
jinko.yikatong/Src/Dlhis.Common/FileOperation/Services/Implements/FileVersionService.cs
2024-04-02 20:28:21 +08:00

75 lines
2.4 KiB
C#

using Dlhis.Common.FileOperation.Request;
using Dlhis.Common.FileOperation.Response;
using Dlhis.Entity.Common;
using Kurisu.Core.DataAccess.Dto;
using Kurisu.SqlSugar.Extensions;
using Kurisu.SqlSugar.Services;
namespace Dlhis.Common.FileOperation.Services.Implements;
public class FileVersionService : IFileVersionService
{
private readonly IMinioService _minioService;
private readonly IDbContext _dbContext;
public FileVersionService(IMinioService minioService, IDbContext dbContext)
{
_minioService = minioService;
_dbContext = dbContext;
}
public async Task<string> UploadFileAsync(FileVersionUploadRequest request)
{
var url = await _minioService.UploadFileAsync(request.Bucket, request.File);
var version = (await GetLastVersionAsync(request.Code)) + 1;
await _dbContext.InsertAsync(new FileVersionEntity
{
Name = request.Name,
Url = url,
Description = request.Description,
Code = request.Code,
Version = version,
});
return url;
}
public async Task<Pagination<FileVersionResponse>> GetPageAsync(PageDto request)
{
return await _dbContext.Queryable<FileVersionEntity>()
.OrderByDescending(x => x.CreateTime)
.Select<FileVersionResponse>()
.ToPageListAsync(request);
}
public async Task<List<FileVersionResponse>> GetListByCodeAsync(string code)
{
return await _dbContext.Queryable<FileVersionEntity>()
.Where(x => x.Code == code)
.OrderByDescending(x => x.CreateTime)
.Select<FileVersionResponse>()
.ToListAsync();
}
public async Task<FileVersionResponse> GetLastByCodeAsync(string code)
{
return await _dbContext.Queryable<FileVersionEntity>()
.Where(x => x.Code == code)
.OrderByDescending(x => x.Version)
.Select<FileVersionResponse>()
.SingleAsync();
}
//************************************************************* help methods ***************************************************************
private async Task<int> GetLastVersionAsync(string code)
{
return await _dbContext.Queryable<FileVersionEntity>()
.Where(x => x.Code == code)
.OrderByDescending(x => x.Version)
.Select(x => x.Version)
.SingleAsync();
}
}