74 lines
2.5 KiB
C#
74 lines
2.5 KiB
C#
using Dlhis.Basic.Common.FileOperation.Request;
|
|
using Dlhis.Basic.Common.FileOperation.Response;
|
|
using Dlhis.Entity.Common.Entities;
|
|
using Kurisu.AspNetCore.DataAccess.Dto;
|
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Extensions;
|
|
using Kurisu.AspNetCore.DataAccess.SqlSugar.Services;
|
|
|
|
namespace Dlhis.Basic.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>()
|
|
.FirstAsync();
|
|
}
|
|
|
|
//************************************************************* 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)
|
|
.FirstAsync();
|
|
}
|
|
} |