From e13920c21cfe9929976d52212da00a0b306e78e4 Mon Sep 17 00:00:00 2001 From: sunliang <593170460@qq.com> Date: Thu, 16 Nov 2023 18:54:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=8A=E4=BC=A0=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=88=96=E6=96=B0=E5=BB=BA=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E5=90=8D=E7=A7=B0=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MinioController/MinioApiController.cs | 172 ++++++++++-------- 1 file changed, 98 insertions(+), 74 deletions(-) diff --git a/IBKLinker-Minio/Controller/MinioController/MinioApiController.cs b/IBKLinker-Minio/Controller/MinioController/MinioApiController.cs index 1a6d414..ac067f0 100644 --- a/IBKLinker-Minio/Controller/MinioController/MinioApiController.cs +++ b/IBKLinker-Minio/Controller/MinioController/MinioApiController.cs @@ -681,90 +681,108 @@ namespace IBKLinker_Minio.Controller.MinioController MinioClient minio = new MinioClient("172.15.88.212:9000", "minioadmin", "minioadmin");//连接所需minio所在地址、登录名、密码 string buckname = "dayetegang";//桶名称 List date = new List(); + List checkdatelist = new List(); + string RecordFileName = "";//重复文件名称记录 ///创建数据库连接上下文对象 db.BeginTransaction();//启动事务 if (minioStoragePath != null) { - foreach (var item in minioStoragePath) + foreach (var items in minioStoragePath) //先循环接收数据 + { + checkdatelist = db.Query("select t.FILE_NAME from MINIO_STORAGE_PATH where 1=1 and FILE_NAME='"+items.FileName+ "' and UPK='"+items.Upk+"'").ToList();//查询上传的文件或新建的文件夹在当前文件夹下是否有重复存在 + if (checkdatelist.Count >0) //如果有 + { + RecordFileName += items.FileName +",";//记录名称 + } + } + if (RecordFileName == null)//如果没有正常上传 { - MinioStoragePath data = new MinioStoragePath(); - MinioOperationlog MOdata = new MinioOperationlog(); - date = db.Query("select * from MINIO_STORAGE_PATH where pk='" + minioStoragePath[0].Upk + "' ORDER BY PK").ToList(); - if (item.FileType == 0) //如果是文件夹 + foreach (var item in minioStoragePath) { - if (item.Upk > 0)//判断如果创建的是根目录文件夹前端不需要对父级id传值 + MinioStoragePath data = new MinioStoragePath(); + MinioOperationlog MOdata = new MinioOperationlog(); + date = db.Query("select * from MINIO_STORAGE_PATH where pk='" + minioStoragePath[0].Upk + "' ORDER BY PK").ToList(); + if (item.FileType == 0) //如果是文件夹 { - if (date.Count > 0) + if (item.Upk > 0)//判断如果创建的是根目录文件夹前端不需要对父级id传值 { - data.Upk = minioStoragePath[0].Upk;//子文件夹的父级id + if (date.Count > 0) + { + data.Upk = minioStoragePath[0].Upk;//子文件夹的父级id + data.FileName = minioStoragePath[0].FileName;//文件名称 + data.FileType = minioStoragePath[0].FileType;//文件类型 + data.FilePath = minioStoragePath[0].FilePath;//文件路径 + data.CreatorUser = minioStoragePath[0].CreatorUser;//创建者 + data.ClearFlag = "0";//删除状态为未删除 + data.CreatorTime = DateTime.Now;//创建时间 + data.FileLevel = date[0].FileLevel + 1;//层级 + data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk + db.Insert(data); + } + } + else + { + data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk + data.Upk = 0;//子文件夹的父级id(如果是根目录默认父级id为0) data.FileName = minioStoragePath[0].FileName;//文件名称 data.FileType = minioStoragePath[0].FileType;//文件类型 data.FilePath = minioStoragePath[0].FilePath;//文件路径 data.CreatorUser = minioStoragePath[0].CreatorUser;//创建者 - data.ClearFlag = "0";//删除状态为未删除 data.CreatorTime = DateTime.Now;//创建时间 - data.FileLevel = date[0].FileLevel + 1;//层级 - data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk + data.ClearFlag = "0";//删除状态为未删除 + data.FileLevel = 1;//层级 db.Insert(data); } - } - else - { - data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk - data.Upk = 0;//子文件夹的父级id(如果是根目录默认父级id为0) - data.FileName = minioStoragePath[0].FileName;//文件名称 - data.FileType = minioStoragePath[0].FileType;//文件类型 - data.FilePath = minioStoragePath[0].FilePath;//文件路径 - data.CreatorUser = minioStoragePath[0].CreatorUser;//创建者 - data.CreatorTime = DateTime.Now;//创建时间 - data.ClearFlag = "0";//删除状态为未删除 - data.FileLevel = 1;//层级 - db.Insert(data); - } - #region minio创建文件夹 - //var folderName = minioStoragePath[0].FilePath + "/";//取前端发送路径(或单一文件夹名称) - //minio.PutObjectAsync(buckname, folderName, new MemoryStream(), 0, "application/octet-stream"); - #endregion - request.msg = "文件夹创建成功!"; - request.code = "0"; - } - if (item.FileType == 1)//如果是文件 - { - var contentType = item.FileCategory; - string strBase64 = item.Bate64;//取文件base64流数据 - byte[] bt = Convert.FromBase64String(strBase64);//获取html base64 - var uploadTask = minio.PutObjectAsync(buckname, "/" + item.FileName, new MemoryStream(bt), bt.Length, contentType);//上传文件到minio数据库 - uploadTask.Wait(); - if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted)//判断是否上传成功 - { - data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk - data.Upk = item.Upk;//子文件夹的父级id(如果是根目录默认父级id为0) - data.FileName = item.FileName;//文件名称 - data.FileType = item.FileType;//文件类型 - data.FilePath = item.FilePath;//文件路径 - data.CreatorUser = item.CreatorUser;//创建者 - data.CreatorTime = DateTime.Now;//创建时间 - data.ClearFlag = "0";//删除状态为未删除 - data.FileLevel = date[0].FileLevel + 1;//层级 - db.Insert(data); - request.msg = "文件上传成功!"; - request.code = "0"; - #region 记录日志 - MOdata.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_OPERATIONLOG.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk; - MOdata.OperateUser = item.CreatorUser;//操作者 - MOdata.OperateTime = DateTime.Now;//操作时间 - MOdata.Operater = item.CreatorUser + "上传了一个新的文档," + item.FileName + DateTime.Now.ToString();//操作 - MOdata.CreationTime = DateTime.Now;//创建时间 - db.Insert(MOdata);//写入数据库 + #region minio创建文件夹 + //var folderName = minioStoragePath[0].FilePath + "/";//取前端发送路径(或单一文件夹名称) + //minio.PutObjectAsync(buckname, folderName, new MemoryStream(), 0, "application/octet-stream"); #endregion + request.msg = "文件夹创建成功!"; + request.code = "0"; } - else + if (item.FileType == 1)//如果是文件 { - request.msg = "文件上传失败,请检查文件是否正确!"; - request.code = "0"; + var contentType = item.FileCategory; + string strBase64 = item.Bate64;//取文件base64流数据 + byte[] bt = Convert.FromBase64String(strBase64);//获取html base64 + var uploadTask = minio.PutObjectAsync(buckname, "/" + item.FileName, new MemoryStream(bt), bt.Length, contentType);//上传文件到minio数据库 + uploadTask.Wait(); + if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted)//判断是否上传成功 + { + data.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk + data.Upk = item.Upk;//子文件夹的父级id(如果是根目录默认父级id为0) + data.FileName = item.FileName;//文件名称 + data.FileType = item.FileType;//文件类型 + data.FilePath = item.FilePath;//文件路径 + data.CreatorUser = item.CreatorUser;//创建者 + data.CreatorTime = DateTime.Now;//创建时间 + data.ClearFlag = "0";//删除状态为未删除 + data.FileLevel = date[0].FileLevel + 1;//层级 + db.Insert(data); + request.msg = "文件上传成功!"; + request.code = "0"; + #region 记录日志 + MOdata.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_OPERATIONLOG.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk; + MOdata.OperateUser = item.CreatorUser;//操作者 + MOdata.OperateTime = DateTime.Now;//操作时间 + MOdata.Operater = item.CreatorUser + "上传了一个新的文档," + item.FileName + DateTime.Now.ToString();//操作 + MOdata.CreationTime = DateTime.Now;//创建时间 + db.Insert(MOdata);//写入数据库 + #endregion + } + else + { + request.msg = "文件上传失败,请检查文件是否正确!"; + request.code = "1"; + } } } } + else + { + request.msg = "文件上传失败,其中" + RecordFileName +"在此文件夹已经存在!"; + request.code = "1"; + } db.Commit(); } } @@ -1102,9 +1120,9 @@ namespace IBKLinker_Minio.Controller.MinioController [HttpPost, Route("FileDownload")] public RequestEntity FileDownload(List minioStoragePath) { - MinioBusinessLogic bb = new MinioBusinessLogic(); - RequestEntity request = new RequestEntity(); - MinioStoragePath data = new MinioStoragePath(); + MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法 + RequestEntity request = new RequestEntity();//定义返回集合 + List data = new List();//定义输出下载的list using (IDbContext db = ObjectContainer.GetObject("db")) { try @@ -1113,20 +1131,21 @@ namespace IBKLinker_Minio.Controller.MinioController { foreach (var item in minioStoragePath) { - - var minio = new MinioClient("172.15.88.212:9000", "minioadmin", "minioadmin"); + MinioStoragePath date = new MinioStoragePath();//定义单条返回数据 + var minio = new MinioClient("172.15.88.212:9000", "minioadmin", "minioadmin");//链接minio数据库 string bucketName = "dayetegang"; var uploadTask = bb.Download(bucketName, item.FileName);//异步取base64 uploadTask.Wait();//等待取值 if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted) //判读是否有数值 { - data.Bate64 = uploadTask.Result; - data.FileName = item.FileName; + date.Bate64 = uploadTask.Result;//赋值流文件 + date.FileName = item.FileName;//赋值文件名称 + data.Add(date); if (item.OperationType == "0") //操作类型为下载 { - int DownloadNum = item.DownloadNum + 1; + int DownloadNum = item.DownloadNum + 1;//将下载次数加一 string sql = "update MINIO_STORAGE_PATH set DOWNLOAD_NUM='" + DownloadNum + "' where pk='" + item.Pk + "'"; - db.Execute(sql); + db.Execute(sql);//更新下载次数 } request.code = "0"; } @@ -1138,7 +1157,7 @@ namespace IBKLinker_Minio.Controller.MinioController } if (data != null) { - request.data = data; + request.data = data;//返回数据 } } else @@ -1158,11 +1177,15 @@ namespace IBKLinker_Minio.Controller.MinioController return request; } #endregion + #region 标准清单 + /// + /// 标准清单导出接口 + /// [HttpPost, Route("StandardListGeneration")] public HttpResponseMessage StandardListGeneration(StandardListGenerationModel master) { - RequestEntity request = new RequestEntity(); + RequestEntity request = new RequestEntity();//定义返回集合 IList date = new List(); HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK); using (IDbContext db = ObjectContainer.GetObject("db")) @@ -1321,6 +1344,7 @@ namespace IBKLinker_Minio.Controller.MinioController return result; } #endregion + #region 公用方法 /// /// 矫正pk值