From 6d41f52de5c5757a6fba6e7e52f1ced22adac52c Mon Sep 17 00:00:00 2001 From: lq1405 <2769838458@qq.com> Date: Sun, 14 Sep 2025 13:57:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E5=88=86=E7=B1=BB=20=E4=B8=8D=E5=90=8C=E5=88=86?= =?UTF-8?q?=E7=B1=BB=20=E6=AC=A1=E6=95=B0=E9=99=90=E5=88=B6=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=20=E6=96=87=E4=BB=B6=E4=BF=9D=E5=AD=98=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E4=B8=8D=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LMS.Repository/DTO/FileUploadDto.cs | 3 +- .../FileUploadService/QiniuUploadService.cs | 43 +++++++++++++++---- 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/LMS.Repository/DTO/FileUploadDto.cs b/LMS.Repository/DTO/FileUploadDto.cs index 784251e..446e155 100644 --- a/LMS.Repository/DTO/FileUploadDto.cs +++ b/LMS.Repository/DTO/FileUploadDto.cs @@ -15,6 +15,7 @@ namespace LMS.Repository.DTO public required string FileName { get; set; } public required string ContentType { get; set; } public Dictionary Metadata { get; set; } = new(); + public string? Type { get; set; } } /// @@ -25,7 +26,7 @@ namespace LMS.Repository.DTO [Required] [Url] public required string Url { get; set; } - + [Required] public required string FileName { get; set; } } diff --git a/LMS.service/Service/FileUploadService/QiniuUploadService.cs b/LMS.service/Service/FileUploadService/QiniuUploadService.cs index c1695d8..cc6a0a2 100644 --- a/LMS.service/Service/FileUploadService/QiniuUploadService.cs +++ b/LMS.service/Service/FileUploadService/QiniuUploadService.cs @@ -10,6 +10,7 @@ using LMS.Tools.HttpTool; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Options; +using OneOf.Types; using static LMS.Common.Enums.ResponseCodeEnum; using static LMS.Repository.DTO.FileUploadDto; using static LMS.Repository.FileUpload.FileRequestReturn; @@ -88,19 +89,36 @@ namespace LMS.service.Service.FileUploadService { return APIResponseModel.CreateErrorResponseModel(ResponseCode.ParameterError, "无效的机器ID或未找到关联用户"); } - - // 3. 校验当前用户是不是超出了上传限制 - var userFilesCount = await GetUserUploadToday(userId.Value); - if (userFilesCount >= 5) + string fileKey; + string fileName = $"{Guid.NewGuid().ToString("N")}{Path.GetExtension(request.FileName)}"; + if (request.Type != "video") { - return APIResponseModel.CreateErrorResponseModel(ResponseCode.ParameterError, "今日上传文件数量已达上限,请明天再试"); + // 3. 校验当前用户是不是超出了上传限制 + var userFilesCount = await GetUserUploadToday(userId.Value, request.Type); + if (userFilesCount >= 5) + { + return APIResponseModel.CreateErrorResponseModel(ResponseCode.ParameterError, "今日上传文件数量已达上限,请明天再试"); + } + fileKey = $"diantu/user/{userId}/{DateTime.Now:yyyyMMdd}/{fileName}"; + } + else + { + var userFilesCount = await GetUserUploadToday(userId.Value, request.Type); + if (userFilesCount >= 50) + { + return APIResponseModel.CreateErrorResponseModel(ResponseCode.ParameterError, "今日上传文件数量已达上限,请明天再试"); + } + fileKey = $"upload/user/{userId}/{DateTime.Now:yyyyMMdd}/upload_{fileName}"; } - string fileKey = $"diantu/user/{userId}/{DateTime.Now:yyyyMMdd}/{request.FileName}"; // 4. 上传到七牛云 FileUploads fileUpload = await _qiniuService.UploadFileToQiNiu(fileBytes, userId.Value, request.FileName, fileKey); + if (request.Type == "video") + { + fileUpload.Status = "unactive"; + } // 5. 修改数据库 _dbContext.FileUploads.Add(fileUpload); await _dbContext.SaveChangesAsync(); @@ -279,9 +297,18 @@ namespace LMS.service.Service.FileUploadService return (totalCount, fileUploads); } - private async Task GetUserUploadToday(long userId) + private async Task GetUserUploadToday(long userId, string type) { - return await _dbContext.FileUploads + var query = _dbContext.FileUploads.AsQueryable(); + if (type == "video") + { + query = query.Where(x => x.Status == "unactive"); + } + else + { + query = query.Where(x => x.Status == "active"); + } + return await query .CountAsync(f => f.UserId == userId && f.CreatedAt.Date == BeijingTimeExtension.GetBeijingTime().Date); }