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 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> GetPageAsync(PageDto request) { return await _dbContext.Queryable() .OrderByDescending(x => x.CreateTime) .Select() .ToPageListAsync(request); } public async Task> GetListByCodeAsync(string code) { return await _dbContext.Queryable() .Where(x => x.Code == code) .OrderByDescending(x => x.CreateTime) .Select() .ToListAsync(); } public async Task GetLastByCodeAsync(string code) { return await _dbContext.Queryable() .Where(x => x.Code == code) .OrderByDescending(x => x.Version) .Select() .FirstAsync(); } //************************************************************* help methods *************************************************************** private async Task GetLastVersionAsync(string code) { return await _dbContext.Queryable() .Where(x => x.Code == code) .OrderByDescending(x => x.Version) .Select(x => x.Version) .FirstAsync(); } }