diff --git a/Infrastructure/Enums/StoreType.cs b/Infrastructure/Enums/StoreType.cs
index 4dea7eb..79d8e6d 100644
--- a/Infrastructure/Enums/StoreType.cs
+++ b/Infrastructure/Enums/StoreType.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.ComponentModel;
namespace Infrastructure.Enums
{
@@ -30,5 +25,10 @@ namespace Infrastructure.Enums
[Description("腾讯云")]
TENCENT = 3,
+ ///
+ /// 七牛
+ ///
+ [Description("七牛云")]
+ QINIU = 4
}
}
diff --git a/ZR.Admin.WebApi/Controllers/CommonController.cs b/ZR.Admin.WebApi/Controllers/CommonController.cs
index d36dff1..18e2433 100644
--- a/ZR.Admin.WebApi/Controllers/CommonController.cs
+++ b/ZR.Admin.WebApi/Controllers/CommonController.cs
@@ -1,5 +1,6 @@
using Infrastructure;
using Infrastructure.Attribute;
+using Infrastructure.Enums;
using Infrastructure.Extensions;
using Infrastructure.Model;
using Microsoft.AspNetCore.Hosting;
@@ -91,26 +92,60 @@ namespace ZR.Admin.WebApi.Controllers
///
/// 存储目录
/// 自定义文件名
- /// 上传类型 1、发送邮件
+ /// 上传类型1、保存到本地 2、保存到阿里云
///
[HttpPost()]
[Verify]
[ActionPermissionFilter(Permission = "common")]
- public async Task UploadFile([FromForm(Name = "file")] IFormFile formFile, string fileName = "", string fileDir = "uploads", int uploadType = 0)
+ public async Task UploadFile([FromForm(Name = "file")] IFormFile formFile, string fileName = "", string fileDir = "uploads", StoreType storeType = StoreType.LOCAL)
{
if (formFile == null) throw new CustomException(ResultCode.PARAM_ERROR, "上传文件不能为空");
+ SysFile file = new();
+ string fileExt = Path.GetExtension(formFile.FileName);//文件后缀
+ double fileSize = Math.Round(formFile.Length / 1024.0, 2);//文件大小KB
+ string[] NotAllowedFileExtensions = new string[] { ".bat", ".exe", ".jar", ".js" };
+ int MaxContentLength = 15;
+ if (NotAllowedFileExtensions.Contains(fileExt))
+ {
+ return ToResponse(ResultCode.CUSTOM_ERROR, "上传失败,未经允许上传类型");
+ }
+ switch (storeType)
+ {
+ case StoreType.LOCAL:
+ file = await SysFileService.SaveFileToLocal(WebHostEnvironment.WebRootPath, fileName, fileDir, HttpContext.GetName(), formFile);
- SysFile file = await SysFileService.SaveFileToLocal(WebHostEnvironment.WebRootPath, fileName, fileDir, HttpContext.GetName(), formFile);
+ break;
+ case StoreType.ALIYUN:
+ if ((fileSize / 1024) > MaxContentLength)
+ {
+ return ToResponse(ResultCode.CUSTOM_ERROR, "上传文件过大,不能超过 " + MaxContentLength + " MB");
+ }
+ file = new(formFile.FileName, fileName, fileExt, fileSize + "kb", fileDir, HttpContext.GetName())
+ {
+ StoreType = (int)StoreType.ALIYUN,
+ FileType = formFile.ContentType
+ };
+ file = await SysFileService.SaveFileToAliyun(file, formFile);
+
+ if (file.Id <= 0) { return ToResponse(ApiResult.Error("阿里云连接失败")); }
+ break;
+ case StoreType.TENCENT:
+ break;
+ case StoreType.QINIU:
+ break;
+ default:
+ break;
+ }
return SUCCESS(new
{
- url = uploadType == 1 ? file.FileUrl : file.AccessUrl,
+ url = file.AccessUrl,
fileName,
fileId = file.Id.ToString()
});
}
///
- /// 存储文件到阿里云
+ /// 存储文件到阿里云(已弃用)
///
///
/// 自定义文件名
@@ -134,7 +169,7 @@ namespace ZR.Admin.WebApi.Controllers
{
return ToResponse(ResultCode.CUSTOM_ERROR, "上传文件过大,不能超过 " + MaxContentLength + " MB");
}
- SysFile file = new(formFile.FileName, fileName, fileExt, fileSize + "kb", fileDir, "", HttpContext.GetName())
+ SysFile file = new(formFile.FileName, fileName, fileExt, fileSize + "kb", fileDir, HttpContext.GetName())
{
StoreType = (int)Infrastructure.Enums.StoreType.ALIYUN,
FileType = formFile.ContentType
diff --git a/ZR.Admin.WebApi/Dockerfile b/ZR.Admin.WebApi/Dockerfile
index 91f4597..0f0f4be 100644
--- a/ZR.Admin.WebApi/Dockerfile
+++ b/ZR.Admin.WebApi/Dockerfile
@@ -4,7 +4,7 @@ WORKDIR /app
#Ŀ¼,ڽڷ
#VOLUME /app
#dockerⱩ¶˿
-EXPOSE 5000
+EXPOSE 8888
VOLUME /app/logs
#COPY bin/Release/net5.0/publish/ app/
COPY . app/
@@ -15,5 +15,7 @@ RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# ƷļĿ¼
#COPY . app/
+WORKDIR /app
-ENTRYPOINT ["dotnet", "ZR.Admin.WebApi.dll"]
\ No newline at end of file
+#ȼ dotnet ZR.Admin.WebApi.dllָ˿Ĭdocker˿80˿
+ENTRYPOINT ["dotnet", "ZR.Admin.WebApi.dll", "--server.urls","http://*:8888"]
\ No newline at end of file
diff --git a/ZR.Admin.WebApi/Extensions/TasksExtension.cs b/ZR.Admin.WebApi/Extensions/TasksExtension.cs
index 2ca150e..018a19c 100644
--- a/ZR.Admin.WebApi/Extensions/TasksExtension.cs
+++ b/ZR.Admin.WebApi/Extensions/TasksExtension.cs
@@ -33,11 +33,12 @@ namespace ZR.Admin.WebApi.Extensions
///
public static IApplicationBuilder UseAddTaskSchedulers(this IApplicationBuilder app)
{
- var _tasksQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService));
+ //var _tasksQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService));
ITaskSchedulerServer _schedulerServer = App.GetRequiredService();
- var tasks = _tasksQzService.GetList(m => m.IsStart);
+ //var tasks = _tasksQzService.GetList(m => m.IsStart);
+ var tasks = SqlSugar.IOC.DbScoped.SugarScope.Queryable().Where(m => m.IsStart).ToList();
//程序启动后注册所有定时任务
foreach (var task in tasks)
diff --git a/ZR.Admin.WebApi/Framework/JwtUtil.cs b/ZR.Admin.WebApi/Framework/JwtUtil.cs
index eb37c83..3a52795 100644
--- a/ZR.Admin.WebApi/Framework/JwtUtil.cs
+++ b/ZR.Admin.WebApi/Framework/JwtUtil.cs
@@ -131,9 +131,13 @@ namespace ZR.Admin.WebApi.Framework
{
var userData = jwtToken.FirstOrDefault(x => x.Type == ClaimTypes.UserData).Value;
var loginUser = JsonConvert.DeserializeObject(userData);
- var permissions = CacheHelper.GetCache(GlobalConstant.UserPermKEY + loginUser?.UserId);
+ var permissions = (List)CacheHelper.GetCache(GlobalConstant.UserPermKEY + loginUser?.UserId);
+ if (loginUser?.UserName == "admin")
+ {
+ permissions = new List() { GlobalConstant.AdminPerm };
+ }
if (permissions == null) return null;
- loginUser.Permissions = (List)permissions;
+ loginUser.Permissions = permissions;
return loginUser;
}
catch (Exception ex)
@@ -150,8 +154,10 @@ namespace ZR.Admin.WebApi.Framework
///
public static List AddClaims(LoginUser user)
{
- user.Permissions = new List();
- //1、创建Cookie保存用户信息,使用claim
+ if (user?.Permissions.Count > 50)
+ {
+ user.Permissions = new List();
+ }
var claims = new List()
{
new Claim(ClaimTypes.PrimarySid, user.UserId.ToString()),
@@ -159,8 +165,6 @@ namespace ZR.Admin.WebApi.Framework
new Claim(ClaimTypes.UserData, JsonConvert.SerializeObject(user))
};
- //写入Cookie
- //WhiteCookie(context, claims);
return claims;
}
diff --git a/ZR.Common/AliyunOssHelper.cs b/ZR.Common/AliyunOssHelper.cs
index 4c9bf97..b45c87a 100644
--- a/ZR.Common/AliyunOssHelper.cs
+++ b/ZR.Common/AliyunOssHelper.cs
@@ -43,5 +43,25 @@ namespace ZR.Common
return System.Net.HttpStatusCode.BadRequest;
}
+ ///
+ /// 删除资源
+ ///
+ ///
+ ///
+ ///
+ public static System.Net.HttpStatusCode DeleteFile(string dirPath, string bucketName = "")
+ {
+ if (string.IsNullOrEmpty(bucketName)) { bucketName = bucketName1; }
+ try
+ {
+ OssClient client = new(endpoint, accessKeyId, accessKeySecret);
+ DeleteObjectResult putObjectResult = client.DeleteObject(bucketName, dirPath);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine(ex.Message);
+ }
+ return System.Net.HttpStatusCode.BadRequest;
+ }
}
}
diff --git a/ZR.Model/System/SysFile.cs b/ZR.Model/System/SysFile.cs
index 501b9c0..81c75be 100644
--- a/ZR.Model/System/SysFile.cs
+++ b/ZR.Model/System/SysFile.cs
@@ -72,14 +72,13 @@ namespace ZR.Model.System
public string AccessUrl { get; set; }
public SysFile() { }
- public SysFile(string originFileName, string fileName, string ext, string fileSize, string storePath, string accessUrl,string create_by)
+ public SysFile(string originFileName, string fileName, string ext, string fileSize, string storePath, string create_by)
{
StorePath = storePath;
RealName = originFileName;
FileName = fileName;
FileExt = ext;
FileSize = fileSize;
- AccessUrl = accessUrl;
Create_by = create_by;
Create_time = DateTime.Now;
}
diff --git a/ZR.Service/System/IService/ISysTasksLogService.cs b/ZR.Service/System/IService/ISysTasksLogService.cs
index fe0815d..381796a 100644
--- a/ZR.Service/System/IService/ISysTasksLogService.cs
+++ b/ZR.Service/System/IService/ISysTasksLogService.cs
@@ -1,4 +1,5 @@
-using ZR.Model.System;
+using System.Threading.Tasks;
+using ZR.Model.System;
using ZR.Repository;
namespace ZR.Service.System.IService
@@ -10,6 +11,6 @@ namespace ZR.Service.System.IService
///
///
//public int AddTaskLog(string jobId);
- SysTasksLog AddTaskLog(string jobId, SysTasksLog tasksLog);
+ Task AddTaskLog(string jobId, SysTasksLog tasksLog);
}
}
diff --git a/ZR.Service/System/SysFileService.cs b/ZR.Service/System/SysFileService.cs
index 415a21e..a774d7d 100644
--- a/ZR.Service/System/SysFileService.cs
+++ b/ZR.Service/System/SysFileService.cs
@@ -51,14 +51,15 @@ namespace ZR.Service.System
using (var stream = new FileStream(finalFilePath, FileMode.Create))
{
- await formFile.CopyToAsync(stream);
+ await formFile.CopyToAsync(stream);//await 不能少
}
string accessPath = string.Concat(OptionsSetting.Upload.UploadUrl, "/", filePath.Replace("\\", "/"), "/", fileName);
- SysFile file = new(formFile.FileName, fileName, fileExt, fileSize + "kb", filePath, accessPath, userName)
+ SysFile file = new(formFile.FileName, fileName, fileExt, fileSize + "kb", filePath, userName)
{
StoreType = (int)Infrastructure.Enums.StoreType.LOCAL,
FileType = formFile.ContentType,
- FileUrl = finalFilePath
+ FileUrl = finalFilePath,
+ AccessUrl = accessPath
};
file.Id = await InsertFile(file);
return file;
diff --git a/ZR.Service/System/SysTasksLogService.cs b/ZR.Service/System/SysTasksLogService.cs
index 0aa6cd2..61c9ec6 100644
--- a/ZR.Service/System/SysTasksLogService.cs
+++ b/ZR.Service/System/SysTasksLogService.cs
@@ -1,6 +1,7 @@
using Infrastructure.Attribute;
using System;
using System.Linq.Expressions;
+using System.Threading.Tasks;
using ZR.Model;
using ZR.Model.System;
using ZR.Repository;
@@ -12,7 +13,7 @@ namespace ZR.Service.System
/// 任务日志
///
[AppService(ServiceLifetime = LifeTime.Transient, ServiceType = typeof(ISysTasksLogService))]
- public class SysTasksLogService : BaseRepository, ISysTasksLogService
+ public class SysTasksLogService : BaseService, ISysTasksLogService
{
private ISysTasksQzService _tasksQzService;
public SysTasksLogService(ISysTasksQzService tasksQzService)
@@ -20,10 +21,10 @@ namespace ZR.Service.System
_tasksQzService = tasksQzService;
}
- public SysTasksLog AddTaskLog(string jobId, SysTasksLog logModel)
+ public async Task AddTaskLog(string jobId, SysTasksLog logModel)
{
//获取任务信息
- var model = _tasksQzService.GetSingleAsync(f => f.ID == jobId).Result;
+ var model = await _tasksQzService.GetSingleAsync(f => f.ID == jobId);
if (model != null)
{
@@ -33,7 +34,7 @@ namespace ZR.Service.System
logModel.CreateTime = DateTime.Now;
}
- InsertAsync(logModel);
+ await InsertAsync(logModel);
return logModel;
}
diff --git a/ZR.Tasks/TaskScheduler/JobBase.cs b/ZR.Tasks/TaskScheduler/JobBase.cs
index 3de1997..5d27c75 100644
--- a/ZR.Tasks/TaskScheduler/JobBase.cs
+++ b/ZR.Tasks/TaskScheduler/JobBase.cs
@@ -56,7 +56,7 @@ namespace ZR.Tasks
JobMessage = logMsg
};
- RecordTaskLog(context, logModel);
+ await RecordTaskLog(context, logModel);
return logModel;
}
@@ -65,7 +65,7 @@ namespace ZR.Tasks
///
///
///
- protected void RecordTaskLog(IJobExecutionContext context, SysTasksLog logModel)
+ protected async Task RecordTaskLog(IJobExecutionContext context, SysTasksLog logModel)
{
var tasksLogService = (ISysTasksLogService)App.GetRequiredService(typeof(ISysTasksLogService));
var taskQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService));
@@ -74,11 +74,11 @@ namespace ZR.Tasks
IJobDetail job = context.JobDetail;
logModel.InvokeTarget = job.JobType.FullName;
- logModel = tasksLogService.AddTaskLog(job.Key.Name, logModel);
+ logModel = await tasksLogService.AddTaskLog(job.Key.Name, logModel);
//成功后执行次数+1
if (logModel.Status == "0")
{
- taskQzService.UpdateAsync(f => new SysTasksQz()
+ await taskQzService.UpdateAsync(f => new SysTasksQz()
{
RunTimes = f.RunTimes + 1,
LastRunTime = DateTime.Now
diff --git a/ZR.Vue/src/components/FileUpload/index.vue b/ZR.Vue/src/components/FileUpload/index.vue
index 14d85de..a8a9eaf 100644
--- a/ZR.Vue/src/components/FileUpload/index.vue
+++ b/ZR.Vue/src/components/FileUpload/index.vue
@@ -52,7 +52,7 @@ export default {
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: {
type: Array,
- default: () => ['doc', 'xls', 'ppt', 'txt', 'pdf', 'svga', 'json']
+ default: () => ['doc', 'xls', 'ppt', 'txt', 'pdf', 'json']
},
// 是否显示提示
isShowTip: {
diff --git a/ZR.Vue/src/components/UploadImage/index.vue b/ZR.Vue/src/components/UploadImage/index.vue
index 8bf4f22..3317d27 100644
--- a/ZR.Vue/src/components/UploadImage/index.vue
+++ b/ZR.Vue/src/components/UploadImage/index.vue
@@ -1,7 +1,7 @@
@@ -20,7 +20,7 @@