|
|
using IBKLinker_Minio.Entity;
|
|
|
using log4net;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Reflection;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Web.Http;
|
|
|
using Minio;
|
|
|
using System.Net.PeerToPeer;
|
|
|
using System.IO;
|
|
|
using System.Reactive.Linq;
|
|
|
using Minio.DataModel;
|
|
|
using System.Security.AccessControl;
|
|
|
using System.IO.Pipes;
|
|
|
using System.Net.Mime;
|
|
|
using IBKLinker_Minio.Entity.MinioController;
|
|
|
using SOA.Objects;
|
|
|
using SOA.Persistent;
|
|
|
using System.Web.Http.Results;
|
|
|
using System.Runtime.InteropServices.ComTypes;
|
|
|
using System.Xml;
|
|
|
using Swashbuckle.Swagger;
|
|
|
using System.Runtime.ConstrainedExecution;
|
|
|
using System.Net.Http;
|
|
|
using System.Web.UI.WebControls;
|
|
|
using System.Runtime.Remoting.Contexts;
|
|
|
using System.Runtime.InteropServices;
|
|
|
using System.Net;
|
|
|
using NPOI.XSSF.UserModel;
|
|
|
using NPOI.SS.UserModel;
|
|
|
using System.Net.Http.Headers;
|
|
|
using NPOI.SS.Formula.Functions;
|
|
|
using System.Xml.Linq;
|
|
|
using NPOI.HPSF;
|
|
|
using IBKLinker_Minio.Common;
|
|
|
using NPOI.POIFS.Crypt.Dsig;
|
|
|
using NPOI.SS.Formula.Atp;
|
|
|
using Org.BouncyCastle.Asn1.Pkcs;
|
|
|
using System.Windows.Forms;
|
|
|
using Org.BouncyCastle.Asn1.Ocsp;
|
|
|
using System.Data;
|
|
|
using System.Web.WebSockets;
|
|
|
using System.Security.Cryptography;
|
|
|
|
|
|
namespace IBKLinker_Minio.Controller.MinioController
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 作者:孙亮
|
|
|
/// 编写时间:2023-08-15
|
|
|
/// 编写内容:mino上传接口
|
|
|
/// </summary>
|
|
|
[RoutePrefix("minio/minioapi")]
|
|
|
public class MinioApiController : ApiController
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// 调用log日志文件
|
|
|
/// </summary>
|
|
|
private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
|
public static List<SliceUploadModel> SliceUploadData = new List<SliceUploadModel>();
|
|
|
|
|
|
|
|
|
#region minio权限表
|
|
|
/// <summary>
|
|
|
/// 添加minio权限表
|
|
|
/// </summary>
|
|
|
/// <param name="minioAuthority">权限表</param>
|
|
|
[HttpPost, Route("AddAuthority")]
|
|
|
public RequestEntity AddAuthority(MinioAuthority minioAuthority)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
try
|
|
|
{
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
///拿到表自增长的值赋值给自增长主键pk
|
|
|
minioAuthority.Id = bb.getPk("S_MINIO_AUTHORITY", "MINIO_AUTHORITY");
|
|
|
///给创建时间赋值
|
|
|
minioAuthority.CreatorTime = DateTime.Now;
|
|
|
|
|
|
///把需要添加的数据同步到数据库
|
|
|
db.Insert<MinioAuthority>(minioAuthority);
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_AUTHORITY,minio权限表添加数据失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 修改minio权限表
|
|
|
/// </summary>
|
|
|
/// <param name="data">修改数据</param>
|
|
|
[HttpPost, Route("UpdateAuthority")]
|
|
|
public RequestEntity UpdateAuthority(List<MinioAuthority> data)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
///启动事务
|
|
|
db.BeginTransaction();
|
|
|
///给修改时间赋值
|
|
|
DateTime time = DateTime.Now;
|
|
|
db.Update<MinioAuthority>(data);
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
db.Rollback();
|
|
|
///把错误日志写到日志文件
|
|
|
logger.ErrorFormat("主表:MINIO_AUTHORITY,修改minio权限表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_AUTHORITY,创建数据库连接对象,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除minio权限表
|
|
|
/// </summary>
|
|
|
/// <param name="master">需要删除的数据</param>
|
|
|
[HttpPost, Route("RemoveAuthority")]
|
|
|
public RequestEntity RemoveAuthority(List<MinioAuthority> master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
db.BeginTransaction();
|
|
|
|
|
|
db.Delete<MinioAuthority>(master);
|
|
|
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
|
|
|
logger.ErrorFormat("主表:MINIO_AUTHORITY,创建数据库连接对象失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询minio权限表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetAuthority")]
|
|
|
public RequestEntity GetAuthority(MinioAuthority minioAuthority)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
string sql = string.Empty;
|
|
|
//IList<MinioAuthority> result = new List<MinioAuthority>();
|
|
|
if (!string.IsNullOrEmpty(minioAuthority.LimitsAuthorityId))
|
|
|
{
|
|
|
sql += " and a.LIMITS_AUTHORITY_ID ='" + minioAuthority.LimitsAuthorityId + "'";
|
|
|
}
|
|
|
request.data = db.Query<AuthorityModel>("select a.*,b.Role_Name as RoleName from MINIO_AUTHORITY a left join MINIO_ROLE_PERMISSION b on a.LIMITS_AUTHORITY_ID=b.ID where 1=1 " + sql + " ORDER BY PK");
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_AUTHORITY,查询minio权限表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region minio用户表
|
|
|
/// <summary>
|
|
|
/// 添加minio角色表
|
|
|
/// </summary>
|
|
|
/// <param name="minioUser">角色表</param>
|
|
|
[HttpPost, Route("AddUSER")]
|
|
|
public RequestEntity AddUSER(MinioUser minioUser)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
///拿到表自增长的值赋值给自增长主键pk
|
|
|
//minioUser.UserId = getPk("S_MINIO_USER", "MINIO_USER");
|
|
|
///给创建时间赋值
|
|
|
minioUser.CreatorTime = DateTime.Now;
|
|
|
|
|
|
///把需要添加的数据同步到数据库
|
|
|
db.Insert<MinioUser>(minioUser);
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_USER,minio角色表添加数据失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 修改minio用户表
|
|
|
/// </summary>
|
|
|
/// <param name="data">修改数据</param>
|
|
|
[HttpPost, Route("UpdateUSER")]
|
|
|
public RequestEntity UpdateUSER(List<MinioUser> data)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
///启动事务
|
|
|
db.BeginTransaction();
|
|
|
///给修改时间赋值
|
|
|
DateTime time = DateTime.Now;
|
|
|
db.Update<MinioUser>(data);
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
db.Rollback();
|
|
|
///把错误日志写到日志文件
|
|
|
logger.ErrorFormat("主表:MINIO_USER,修改minio角色表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_USER,创建数据库连接对象,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除minio角色表
|
|
|
/// </summary>
|
|
|
/// <param name="master">需要删除的数据</param>
|
|
|
[HttpPost, Route("RemoveUSER")]
|
|
|
public RequestEntity RemoveUSER(List<MinioUser> master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
db.BeginTransaction();
|
|
|
|
|
|
db.Delete<MinioUser>(master);
|
|
|
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
|
|
|
logger.ErrorFormat("主表:MINIO_USER,创建数据库连接对象失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询minio用户表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetUSER")]
|
|
|
public RequestEntity GetUSER(MinioUser minioUser)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
string sql = string.Empty;
|
|
|
//IList<MinioUser> result = new List<MinioUser>();
|
|
|
if (!string.IsNullOrEmpty(minioUser.UserName))
|
|
|
{
|
|
|
sql += " and a.USER_NAME ='" + minioUser.UserName + "'";
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(minioUser.UserId))
|
|
|
{
|
|
|
sql += " and a.USER_ID ='" + minioUser.UserId + "'";
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(minioUser.State.ToString()))
|
|
|
{
|
|
|
sql += " and a.STATE =" + minioUser.State + "";
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(minioUser.RoleId))
|
|
|
{
|
|
|
sql += " and a.ROLE_ID ='" + minioUser.RoleId + "'";
|
|
|
}
|
|
|
request.data = db.Query<UserModel>("select a.*,b.Role_Name as RoleName from MINIO_USER a left join MINIO_ROLE_PERMISSION b on a. ROLE_ID=b.ID where 1=1 " + sql + " ORDER BY USER_ID");
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_USER,查询minio角色表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region minio文件关联表
|
|
|
/// <summary>
|
|
|
/// 添加minio文件关联表
|
|
|
/// </summary>
|
|
|
/// <param name="minioFileassociation">文件关联表</param>
|
|
|
[HttpPost, Route("AddFileassociation")]
|
|
|
public RequestEntity AddFileassociation(MinioFileassociation minioFileassociation)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
bool Asstion = true;//定义是否执行关联
|
|
|
IList<MinioFileassociation> SelMFdata = new List<MinioFileassociation>();
|
|
|
SelMFdata = db.Query<MinioFileassociation>("select * from MINIO_FILEASSOCIATION where 1=1 and (FILE_PK='" + minioFileassociation.FilePk + "' or ASSOCIATION_FILE_PK='" + minioFileassociation.FilePk + "')");
|
|
|
//查询当前被关联文件是否已经被关联过
|
|
|
if (SelMFdata.Count > 0)
|
|
|
{
|
|
|
foreach (var item in SelMFdata)
|
|
|
{
|
|
|
if (item.FilePk == minioFileassociation.FilePk && item.AssociationFilePk == minioFileassociation.AssociationFilePk) //如果当前要关联的pk 等于已有的关联pk 被关联pk 等于已有的被关联pk
|
|
|
{
|
|
|
Asstion = false;
|
|
|
}
|
|
|
if (item.FilePk == minioFileassociation.AssociationFilePk && item.AssociationFilePk == minioFileassociation.FilePk) //如果当前要关联的pk 等于已有的被关联pk 被关联pk 等于已有的关联pk
|
|
|
{
|
|
|
Asstion = false;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (Asstion)
|
|
|
{
|
|
|
db.BeginTransaction();//启动事务
|
|
|
///拿到表自增长的值赋值给自增长主键pk
|
|
|
minioFileassociation.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_FILEASSOCIATION.nextval from dual"));
|
|
|
minioFileassociation.CreatorTime = DateTime.Now;
|
|
|
|
|
|
///把需要添加的数据同步到数据库
|
|
|
db.Insert<MinioFileassociation>(minioFileassociation);
|
|
|
db.Commit();//提交事务
|
|
|
request.code = "0";
|
|
|
request.msg = "关联成功!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.code = "1";
|
|
|
request.msg = "当前文件已经被关联过,请勿重复关联!";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
db.Rollback();//回滚
|
|
|
request.code = "1";
|
|
|
request.msg = "关联失败!";
|
|
|
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION,minio文件关联表表添加数据失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 修改minio文件关联表
|
|
|
/// </summary>
|
|
|
/// <param name="data">修改数据</param>
|
|
|
[HttpPost, Route("UpdateFileassociation")]
|
|
|
public RequestEntity UpdateFileassociation(List<MinioFileassociation> data)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
///启动事务
|
|
|
db.BeginTransaction();
|
|
|
///给修改时间赋值
|
|
|
DateTime time = DateTime.Now;
|
|
|
db.Update<MinioFileassociation>(data);
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
request.msg = "修改成功!";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
db.Rollback();//回滚
|
|
|
///把错误日志写到日志文件
|
|
|
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION,修改minio文件关联表表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
db.Rollback();//回滚
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION,创建数据库连接对象,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除minio文件关联表
|
|
|
/// </summary>
|
|
|
/// <param name="master">需要删除的数据</param>
|
|
|
[HttpPost, Route("RemoveFileassociation")]
|
|
|
public RequestEntity RemoveFileassociation(MinioFileassociation master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (master != null)
|
|
|
{
|
|
|
bool Asstion = true;
|
|
|
List<MinioFileassociation> Deldata = new List<MinioFileassociation>();
|
|
|
IList<MinioFileassociation> SelMFdata = new List<MinioFileassociation>();
|
|
|
SelMFdata = db.Query<MinioFileassociation>("select * from MINIO_FILEASSOCIATION where 1=1 and (FILE_PK='" + master.FilePk + "' or ASSOCIATION_FILE_PK='" + master.FilePk + "')");
|
|
|
//查询当前被关联文件是否已经被关联过
|
|
|
if (SelMFdata.Count > 0)
|
|
|
{
|
|
|
foreach (var item in SelMFdata)
|
|
|
{
|
|
|
if (item.FilePk == master.FilePk && item.AssociationFilePk == master.AssociationFilePk) //如果当前要关联的pk 等于已有的关联pk 被关联pk 等于已有的被关联pk
|
|
|
{
|
|
|
Deldata.Add(item);//向需要删除的list中追加数据
|
|
|
}
|
|
|
if (item.FilePk == master.AssociationFilePk && item.AssociationFilePk == master.FilePk) //如果当前要关联的pk 等于已有的被关联pk 被关联pk 等于已有的关联pk
|
|
|
{
|
|
|
Deldata.Add(item);//向需要删除的list中追加数据
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
db.BeginTransaction();//启动事务
|
|
|
db.Delete<MinioFileassociation>(Deldata);
|
|
|
db.Commit();//提交事务
|
|
|
request.code = "0";
|
|
|
request.msg = "删除成功!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.code = "1";
|
|
|
request.msg = "删除失败!";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
db.Rollback();//回滚
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION,创建数据库连接对象失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询minio文件关联表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetFileassociation")]
|
|
|
public RequestEntity GetFileassociation(string FilePk)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
if (FilePk != null)
|
|
|
{
|
|
|
IList<MinioFileassociation> SelMFdata = new List<MinioFileassociation>();
|
|
|
IList<MinioFileassociation> result = new List<MinioFileassociation>();
|
|
|
SelMFdata = db.Query<MinioFileassociation>("select * from MINIO_FILEASSOCIATION where 1=1 and (FILE_PK='" + int.Parse(FilePk) + "' or ASSOCIATION_FILE_PK='" + int.Parse(FilePk) + "') ORDER BY PK");
|
|
|
if (SelMFdata.Count > 0) //如果有数据
|
|
|
{
|
|
|
foreach (var item in SelMFdata)
|
|
|
{
|
|
|
MinioFileassociation date = new MinioFileassociation();//存储单条数据
|
|
|
if (item.FilePk.ToString() == FilePk)//判断当前查询结果文件pk是否等于选中的文件pk
|
|
|
{
|
|
|
#region 数据赋值
|
|
|
date.Pk = item.Pk;//主键
|
|
|
date.FileType = item.FileType;//文件类型
|
|
|
date.FilePk = item.FilePk;//文件PK
|
|
|
date.FilePath = item.FilePath;//文件路径
|
|
|
date.FileLevel = item.FileLevel;//文件层级
|
|
|
date.FileName = item.FileName;//文件名称
|
|
|
date.DownloadNum = item.DownloadNum;//文件下载次数
|
|
|
date.Version = item.Version;//文件版本
|
|
|
date.CreatorUser = item.CreatorUser;//创建者
|
|
|
date.CreatorTime = item.CreatorTime;//创建时间
|
|
|
date.AssociationFilePk = item.AssociationFilePk;//关联文件PK
|
|
|
date.AssociationFileType = item.AssociationFileType;//关联文件类型
|
|
|
date.AssociationFilePath = item.AssociationFilePath;//关联文件路径
|
|
|
date.AssociationFileName = item.AssociationFileName;//关联文件名称
|
|
|
date.AssociationFileLevel = item.AssociationFileLevel;//关联文件层级
|
|
|
date.AssociationDownloadNum = item.AssociationDownloadNum;//关联文件下载次数
|
|
|
date.AssociationVersion = item.AssociationVersion;//关联文件版本
|
|
|
#endregion
|
|
|
}
|
|
|
else //如果不等与的话将关联文件与被关联文件信息调换位置返回前端
|
|
|
{
|
|
|
#region 数据赋值
|
|
|
date.Pk = item.Pk;//主键
|
|
|
date.FileType = item.AssociationFileType;//文件类型
|
|
|
date.FilePk = item.AssociationFilePk;//文件PK
|
|
|
date.FilePath = item.AssociationFilePath;//文件路径
|
|
|
date.FileLevel = item.AssociationFileLevel;//文件层级
|
|
|
date.FileName = item.AssociationFileName;//文件名称
|
|
|
date.DownloadNum = item.AssociationDownloadNum;//文件下载次数
|
|
|
date.Version = item.AssociationVersion;//文件版本
|
|
|
date.CreatorUser = item.CreatorUser;//创建者
|
|
|
date.CreatorTime = item.CreatorTime;//创建时间
|
|
|
date.AssociationFilePk = item.FilePk;//关联文件PK
|
|
|
date.AssociationFileType = item.FileType;//关联文件类型
|
|
|
date.AssociationFilePath = item.FilePath;//关联文件路径
|
|
|
date.AssociationFileName = item.FileName;//关联文件名称
|
|
|
date.AssociationFileLevel = item.FileLevel;//关联文件层级
|
|
|
date.AssociationDownloadNum = item.DownloadNum;//关联文件下载次数
|
|
|
date.AssociationVersion = item.Version;//关联文件版本
|
|
|
#endregion
|
|
|
}
|
|
|
result.Add(date);//添加数据到list
|
|
|
}
|
|
|
request.data = result;
|
|
|
request.code = "0";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
|
|
|
request.code = "0";
|
|
|
request.msg = "暂无数据!";
|
|
|
request.data = result;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_FILEASSOCIATION,查询minio文件关联表表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region minio角色权限表
|
|
|
/// <summary>
|
|
|
/// 添加minio角色权限表
|
|
|
/// </summary>
|
|
|
/// <param name="minioRolePermission">minio角色权限表</param>
|
|
|
[HttpPost, Route("AddRolePermission")]
|
|
|
public RequestEntity AddRolePermission(RolePermissionModel minioRolePermission)
|
|
|
{
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
List<MinioAuthority> AuthorityList = new List<MinioAuthority>();
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
minioRolePermission.minioRolePermission.Id = Guid.NewGuid().ToString();
|
|
|
minioRolePermission.minioRolePermission.LimitsAuthorityId = Guid.NewGuid().ToString();
|
|
|
foreach (var item in minioRolePermission.ds.Split(','))
|
|
|
{
|
|
|
MinioAuthority ds = new MinioAuthority();
|
|
|
ds.LimitsAuthorityId = minioRolePermission.minioRolePermission.LimitsAuthorityId;
|
|
|
ds.CreatorTime = DateTime.Now;
|
|
|
ds.CreatorUser = minioRolePermission.minioRolePermission.CreatorUser;
|
|
|
ds.Id = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));
|
|
|
ds.FileId = int.Parse(item);
|
|
|
AuthorityList.Add(ds);
|
|
|
}
|
|
|
db.BeginTransaction();
|
|
|
///拿到表自增长的值赋值给自增长主键pk
|
|
|
minioRolePermission.minioRolePermission.Pk = bb.getPk("S_MINIO_ROLE_PERMISSION", "MINIO_ROLE_PERMISSION");
|
|
|
///给创建时间赋值
|
|
|
minioRolePermission.minioRolePermission.CreatorTime = DateTime.Now;
|
|
|
|
|
|
///把需要添加的数据同步到数据库
|
|
|
db.Insert<MinioRolePermission>(minioRolePermission.minioRolePermission);
|
|
|
db.Insert<MinioAuthority>(AuthorityList);
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION,minio角色权限表添加数据失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 修改minio角色表
|
|
|
/// </summary>
|
|
|
/// <param name="data">修改数据</param>
|
|
|
[HttpPost, Route("UpdateRolePermission")]
|
|
|
public RequestEntity UpdateRolePermission(RolePermissionModel minioRolePermission)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
List<MinioAuthority> AuthorityList = new List<MinioAuthority>();
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
//data.Id=Guid.NewGuid().ToString();
|
|
|
if (string.IsNullOrEmpty(minioRolePermission.minioRolePermission.LimitsAuthorityId))
|
|
|
{
|
|
|
minioRolePermission.minioRolePermission.LimitsAuthorityId = Guid.NewGuid().ToString();
|
|
|
}
|
|
|
foreach (var item in minioRolePermission.ds.Split(','))
|
|
|
{
|
|
|
MinioAuthority ds = new MinioAuthority();
|
|
|
ds.LimitsAuthorityId = minioRolePermission.minioRolePermission.LimitsAuthorityId;
|
|
|
ds.CreatorTime = DateTime.Now;
|
|
|
ds.CreatorUser = minioRolePermission.minioRolePermission.CreatorUser;
|
|
|
ds.FileId = int.Parse(item);
|
|
|
ds.Id = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));
|
|
|
AuthorityList.Add(ds);
|
|
|
}
|
|
|
try
|
|
|
{
|
|
|
///启动事务
|
|
|
db.BeginTransaction();
|
|
|
///给修改时间赋值
|
|
|
//DateTime time = DateTime.Now;
|
|
|
db.Update<MinioRolePermission>(minioRolePermission.minioRolePermission);
|
|
|
//删除历史记录加入新的记录
|
|
|
db.Execute("delete from MINIO_AUTHORITY where LIMITS_AUTHORITY_ID='" + minioRolePermission.minioRolePermission.LimitsAuthorityId + "' ");
|
|
|
db.Insert<MinioAuthority>(AuthorityList);
|
|
|
db.Commit();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
db.Rollback();
|
|
|
///把错误日志写到日志文件
|
|
|
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION,修改minio角色权限表表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION,创建数据库连接对象,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除minio角色表
|
|
|
/// </summary>
|
|
|
/// <param name="master">需要删除的数据</param>
|
|
|
[HttpPost, Route("RemoveRolePermission")]
|
|
|
public RequestEntity RemoveRolePermission(MinioRolePermission data)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
IList<MinioUser> MUData = new List<MinioUser>();
|
|
|
IList<MinioUser> UdpData = new List<MinioUser>();
|
|
|
string sql = "begin ";
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (data != null)
|
|
|
{
|
|
|
MUData = db.Query<MinioUser>("select * from MINIO_USER where 1=1 and ROLE_ID='" + data.Id + "'");//查询用户表中使用要被删除的角色
|
|
|
db.BeginTransaction();//启动事务
|
|
|
if (MUData.Count > 0)//如果有数据需要同步修改用户表中的角色
|
|
|
{
|
|
|
foreach (var item in MUData)
|
|
|
{
|
|
|
MinioUser date = new MinioUser();
|
|
|
date.UserId = item.UserId;//用户ID
|
|
|
date.UserName = item.UserName;//用户姓名
|
|
|
date.RoleId = "";//角色ID(将角色id改成0)
|
|
|
date.CreatorUser = item.CreatorUser;//创建人
|
|
|
date.State = item.State;//状态
|
|
|
date.CreatorTime = item.CreatorTime;//创建时间
|
|
|
UdpData.Add(date);//将数据加入list中
|
|
|
}
|
|
|
db.Update<MinioUser>(UdpData);
|
|
|
}
|
|
|
sql += string.Format("delete from MINIO_AUTHORITY where 1=1 and LIMITS_AUTHORITY_ID='{0}';", data.LimitsAuthorityId);
|
|
|
sql += string.Format("delete from MINIO_ROLE_PERMISSION where 1=1 and PK={0};", data.Pk);
|
|
|
sql += "end;";
|
|
|
db.Execute(sql);
|
|
|
db.Commit();//提交事务
|
|
|
request.code = "0";
|
|
|
request.msg = "删除成功";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
db.Rollback();//回滚
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION,创建数据库连接对象失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询minio角色表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetRolePermission")]
|
|
|
public RequestEntity GetRolePermission(MinioRolePermission minioRolePermission)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
string sql = string.Empty;
|
|
|
IList<MinioRolePermission> result = new List<MinioRolePermission>();
|
|
|
if (!string.IsNullOrEmpty(minioRolePermission.Id))
|
|
|
{
|
|
|
sql += " and ID ='" + minioRolePermission.Id + "'";
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(minioRolePermission.RoleName))
|
|
|
{
|
|
|
sql += " and ROLE_NAME like'%" + minioRolePermission.RoleName + "%'";
|
|
|
}
|
|
|
request.data = db.Query<MinioRolePermission>("select * from MINIO_ROLE_PERMISSION where 1=1 " + sql + " ORDER BY PK");
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION,查询minio角色权限表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region minio文件文件夹路径表
|
|
|
/// <summary>
|
|
|
/// 添加minio文件文件夹路径表
|
|
|
/// </summary>
|
|
|
/// <param name="minioStoragePath">minio文件文件夹路径表</param>
|
|
|
[HttpPost, Route("AddStoragePath")]
|
|
|
public RequestEntity AddStoragePath(List<MinioStoragePath> minioStoragePath)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
|
|
|
string BuckName = bb.GetBuckName();//调用取桶名称方法
|
|
|
var bucket = minio.BucketExistsAsync(BuckName);//判断桶是否存在
|
|
|
if (bucket.Result == false) //不存在就创建
|
|
|
{
|
|
|
minio.MakeBucketAsync(BuckName);//创建桶
|
|
|
}
|
|
|
string Operate = "";//操作
|
|
|
List<MinioStoragePath> date = new List<MinioStoragePath>();
|
|
|
List<MinioStoragePath> checkdatelist = new List<MinioStoragePath>();
|
|
|
string RecordFileName = "";//重复文件名称记录
|
|
|
///创建数据库连接上下文对象
|
|
|
db.BeginTransaction();//启动事务
|
|
|
if (minioStoragePath != null)
|
|
|
{
|
|
|
foreach (var items in minioStoragePath) //先循环接收数据
|
|
|
{
|
|
|
checkdatelist = db.Query<MinioStoragePath>("select t.* from MINIO_STORAGE_PATH t where 1=1 and t.FILE_NAME='" + items.FileName + "'").ToList();//查询上传的文件或新建的文件夹在当前文件夹下是否有重复存在
|
|
|
if (checkdatelist.Count > 0) //如果有
|
|
|
{
|
|
|
RecordFileName += items.FileName + ",";//记录名称
|
|
|
}
|
|
|
}
|
|
|
if (RecordFileName == "")//如果正常上传
|
|
|
{
|
|
|
foreach (var item in minioStoragePath)
|
|
|
{
|
|
|
MinioStoragePath data = new MinioStoragePath();
|
|
|
|
|
|
date = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where pk='" + minioStoragePath[0].Upk + "' ORDER BY PK").ToList();
|
|
|
if (item.FileType == 0) //如果是文件夹
|
|
|
{
|
|
|
if (item.Upk > 0)//判断如果创建的是根目录文件夹前端不需要对父级id传值
|
|
|
{
|
|
|
if (date.Count > 0)
|
|
|
{
|
|
|
#region 文件文件夹路径表字段赋值
|
|
|
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
|
|
|
#endregion
|
|
|
db.Insert<MinioStoragePath>(data);
|
|
|
#region 记录日志
|
|
|
Operate = " 创建了一个新的文件夹,";
|
|
|
bb.MinioOperationLog(data.CreatorUser, data.FileName, Operate, data.Pk.ToString(), data.Upk.ToString(), db);
|
|
|
#endregion
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
#region 文件文件夹路径表字段赋值
|
|
|
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;//层级
|
|
|
#endregion
|
|
|
db.Insert<MinioStoragePath>(data);
|
|
|
#region 记录日志
|
|
|
Operate = " 创建了一个新的文件夹,";
|
|
|
bb.MinioOperationLog(data.CreatorUser, data.FileName, Operate, data.Pk.ToString(), data.Upk.ToString(), db);
|
|
|
#endregion
|
|
|
}
|
|
|
#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)//判断是否上传成功
|
|
|
{
|
|
|
#region 文件文件夹路径表字段赋值
|
|
|
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;//层级
|
|
|
data.DocumentType = item.DocumentType;//文件种类
|
|
|
#endregion
|
|
|
db.Insert<MinioStoragePath>(data);
|
|
|
request.msg = "文件上传成功!";
|
|
|
request.code = "0";
|
|
|
#region 记录日志
|
|
|
Operate = " 上传了一个新的文档,";
|
|
|
bb.MinioOperationLog(item.CreatorUser, item.FileName, Operate, data.Pk.ToString(), data.Upk.ToString(), db);
|
|
|
#endregion
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.msg = "文件上传失败,请检查文件是否正确!";
|
|
|
request.code = "1";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.msg = "文件上传失败,其中" + RecordFileName + "在此文件夹已经存在!";
|
|
|
request.code = "1";
|
|
|
}
|
|
|
db.Commit();
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
db.Rollback();
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_STORAGE_PATH,minio文件文件夹路径表添加数据失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 修改minio文件文件夹路径
|
|
|
/// </summary>
|
|
|
/// <param name="data">修改数据</param>
|
|
|
[HttpPost, Route("UpdateStoragePath")]
|
|
|
public RequestEntity UpdateStoragePath(List<MinioStoragePath> data)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
try
|
|
|
{
|
|
|
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
|
|
|
string BuckName = bb.GetBuckName();//调用取桶名称方法
|
|
|
var bucket = minio.BucketExistsAsync(BuckName);//判断桶是否存在
|
|
|
if (bucket.Result == false) //不存在就创建
|
|
|
{
|
|
|
minio.MakeBucketAsync(BuckName);//创建桶
|
|
|
}
|
|
|
///创建数据库连接上下文对象
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
///启动事务
|
|
|
db.BeginTransaction();
|
|
|
///给修改时间赋值
|
|
|
DateTime time = DateTime.Now;//取当前时间
|
|
|
MinioStoragePath date = new MinioStoragePath();
|
|
|
List<MinioStoragePath> datelist = new List<MinioStoragePath>();
|
|
|
string Operate = "";//操作
|
|
|
if (data.Count > 0)
|
|
|
{
|
|
|
foreach (var item in data)
|
|
|
{
|
|
|
date.Pk = item.Pk;//主键ID
|
|
|
date.Upk = item.Upk;//子文件夹的父ID
|
|
|
date.FileName = item.FileName;//文件名称
|
|
|
date.FileType = item.FileType;//文件类型
|
|
|
date.FilePath = item.FilePath;//文件路径
|
|
|
date.CreatorUser = item.CreatorUser;//创建者
|
|
|
date.CreatorTime = item.CreatorTime;//创建时间
|
|
|
date.DownloadNum = item.DownloadNum;//下载次数
|
|
|
date.FileLevel = item.FileLevel;//层级
|
|
|
date.ModifyUsers = item.ModifyUsers;//修改用户
|
|
|
date.ModifyTime = time;//修改时间
|
|
|
date.ClearFlag = "0";//删除标记 0未删除 1删除
|
|
|
date.DocumentType = item.DocumentType;//文件种类
|
|
|
date.Version = item.Version;//版本
|
|
|
if (item.Bate64 != null)//如果是修改文件
|
|
|
{
|
|
|
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)//判断是否上传成功
|
|
|
{
|
|
|
datelist.Add(date);
|
|
|
#region 记录日志
|
|
|
Operate = " 更新了这个文档, ";
|
|
|
bb.MinioOperationLog(item.CreatorUser, item.FileName, Operate, item.Pk.ToString(), item.Upk.ToString(), db);
|
|
|
#endregion
|
|
|
}
|
|
|
}
|
|
|
else //正常修改文件/文件夹名称或移动
|
|
|
{
|
|
|
datelist.Add(date);
|
|
|
}
|
|
|
}
|
|
|
if (datelist != null)
|
|
|
{
|
|
|
db.Update<MinioStoragePath>(datelist);
|
|
|
db.Commit();//提交事务
|
|
|
request.code = "0";
|
|
|
request.msg = "修改成功!";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.code = "1";
|
|
|
request.msg = "请检查是否符合修改规范!";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
db.Rollback();//回滚
|
|
|
///把错误日志写到日志文件
|
|
|
logger.ErrorFormat("主表:MINIO_STORAGE_PATH,修改minio文件文件夹路径表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_STORAGE_PATH,创建数据库连接对象,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// 删除minio文件文件夹路径表
|
|
|
/// </summary>
|
|
|
/// <param name="master">需要删除的数据</param>
|
|
|
[HttpPost, Route("RemoveStoragePath")]
|
|
|
public RequestEntity RemoveStoragePath(List<MinioStoragePath> master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
DateTime time = DateTime.Now;//取当前时间
|
|
|
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
|
|
|
string BuckName = bb.GetBuckName();//调用取桶名称方法
|
|
|
string Operate = "";//操作
|
|
|
string FilePk = "";//文件pk
|
|
|
string fileUPk = "";//文件父级pk
|
|
|
db.BeginTransaction();
|
|
|
string sql = "";
|
|
|
//db.Delete<MinioStoragePath>(master);
|
|
|
foreach (var item in master)
|
|
|
{
|
|
|
if (item.FileType == 1) //如果类型是文件
|
|
|
{
|
|
|
var DelTask = minio.RemoveObjectAsync(BuckName, item.FileName);//minio操作删除文件
|
|
|
DelTask.Wait();
|
|
|
if (DelTask.Status == TaskStatus.RanToCompletion && !DelTask.IsFaulted)//判断是否删除成功
|
|
|
{
|
|
|
sql = "begin ";
|
|
|
sql += string.Format("delete from MINIO_STORAGE_PATH where 1=1 and PK='{2}';", item.ClearUsers, time, item.Pk);//更新文件路径表中的删除状态
|
|
|
sql += string.Format(" delete from MINIO_FILEASSOCIATION where FILE_PK like'%{0}%' or ASSOCIATION_FILE_PK like'%{0}%';", item.Pk);//删除关联表中的关联关系
|
|
|
sql += "end;";
|
|
|
db.Execute(sql);
|
|
|
#region 记录日志
|
|
|
Operate = " 删除了这个文档, ";
|
|
|
bb.MinioOperationLog(item.ClearUsers, item.FileName, Operate, FilePk, fileUPk, db);
|
|
|
#endregion
|
|
|
}
|
|
|
}
|
|
|
else //如果类型是文件夹
|
|
|
{
|
|
|
sql = string.Format("delete from MINIO_STORAGE_PATH where 1=1 and PK='{2}' ", item.ClearUsers, time, item.Pk);//更新文件路径表中的删除状态
|
|
|
db.Execute(sql);
|
|
|
#region 记录日志
|
|
|
Operate = " 删除了这个文件夹, ";
|
|
|
bb.MinioOperationLog(item.ClearUsers, item.FileName, Operate, FilePk, fileUPk, db);
|
|
|
#endregion
|
|
|
}
|
|
|
}
|
|
|
request.code = "0";
|
|
|
request.msg = "删除成功";
|
|
|
db.Commit();
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
db.Rollback();
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_ROLE_PERMISSION,创建数据库连接对象失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// 查询minio文件文件夹路径表
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetStoragePath")]
|
|
|
public RequestEntity GetStoragePath(GetStoragePathModel PathData)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
string sql = string.Empty;
|
|
|
IList<MinioStoragePath> result = new List<MinioStoragePath>();//定义查询到的list
|
|
|
if (PathData != null)//传输数据不为空
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(PathData.FileName.ToString()))//如果有名称模糊查询
|
|
|
{
|
|
|
sql += " and FILE_NAME like'%" + PathData.FileName + "%'";
|
|
|
}
|
|
|
//if (PathData.Upk > 0) //如果在子文件夹内
|
|
|
//{
|
|
|
// sql += " and UPK = '" + PathData.Upk + "'";
|
|
|
//}
|
|
|
if (!string.IsNullOrEmpty(PathData.BeginTime))//如果有开始时间
|
|
|
{
|
|
|
sql += string.Format(" and CREATE_TIME >= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", PathData.BeginTime);//开始时间
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(PathData.EndTime))//如果有结束时间
|
|
|
{
|
|
|
sql += string.Format(" and CREATE_TIME <= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", PathData.EndTime);//结束时间
|
|
|
}
|
|
|
request.data = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where 1=1 " + sql + " and CLEAR_FLAG='0' ORDER BY PK");
|
|
|
request.code = "0";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.code = "1";
|
|
|
request.msg = "查询失败,请检查查询条件!";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_STORAGE_PATH,查询minio文件文件夹路径表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region minio文件菜单递归和权限判断
|
|
|
/// <summary>
|
|
|
/// 根据ID查询子菜单
|
|
|
/// </summary>
|
|
|
/// <param name="PK"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetMenuTree")]
|
|
|
public List<MinioStoragePath> GetMenuTree(string PK = "")
|
|
|
{
|
|
|
List<MinioStoragePath> date = new List<MinioStoragePath>();
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
string sql = string.Empty;
|
|
|
|
|
|
if (!string.IsNullOrEmpty(PK))
|
|
|
{
|
|
|
sql += " and UPK =" + int.Parse(PK);
|
|
|
}
|
|
|
|
|
|
date = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where 1=1 " + sql + "and CLEAR_FLAG='0' ORDER BY CREATOR_TIME desc").ToList();
|
|
|
|
|
|
}
|
|
|
return date;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 获取所有文件夹
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetRecursion")]
|
|
|
public RequestEntity GetRecursion()
|
|
|
{
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
List<RequstStoragePath> requstStoragePaths = new List<RequstStoragePath>();
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
List<MinioStoragePath> rootDirectories = db.Query<MinioStoragePath>("select * from MINIO_STORAGE_PATH where CLEAR_FLAG='0' and FILE_TYPE='0'and FILE_LEVEL='1' ORDER BY PK").ToList();//查询根文件夹
|
|
|
foreach (var rootDir in rootDirectories)
|
|
|
{
|
|
|
RequstStoragePath rootModel = new RequstStoragePath();
|
|
|
rootModel.Pk = rootDir.Pk;//主键ID
|
|
|
rootModel.Upk = rootDir.Upk;//父级文件夹pk
|
|
|
rootModel.FileName = rootDir.FileName;//文件名称
|
|
|
rootModel.FilePath = rootDir.FilePath;//文件路径
|
|
|
rootModel.FileType = rootDir.FileType;//文件类型
|
|
|
rootModel.FileLevel = rootDir.FileLevel;//层级
|
|
|
rootModel.CreatorTime = rootDir.CreatorTime;//创建时间
|
|
|
rootModel.CreatorUser = rootDir.CreatorUser;//创建者
|
|
|
rootModel.DownloadNum = rootDir.DownloadNum;//下载次数
|
|
|
rootModel.ModifyUsers = rootDir.ModifyUsers;//修改用户
|
|
|
rootModel.ModifyTime = rootDir.ModifyTime;//修改时间
|
|
|
rootModel.ClearUsers = rootDir.ClearUsers;//删除用户
|
|
|
rootModel.ClearTime = rootDir.ClearTime;//删除时间
|
|
|
rootModel.ClearFlag = rootDir.ClearFlag;//删除标记 0未删除 1删除
|
|
|
rootModel.requstStoragePaths = bb.GetSubDirectories(rootDir.Pk);//子级存进list
|
|
|
requstStoragePaths.Add(rootModel);//添加list
|
|
|
}
|
|
|
}
|
|
|
request.data = requstStoragePaths;
|
|
|
request.code = "0";
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
throw;
|
|
|
}
|
|
|
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 权限查询
|
|
|
/// </summary>
|
|
|
/// <param name="UserID"></param>
|
|
|
/// <param name="FileName"></param>
|
|
|
/// <param name="EmpowerType"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet, Route("GetEmpower")]
|
|
|
public RequestEntity GetEmpower(string UserID, string FileName, string EmpowerType)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
//用户ID,文件ID,文件操作类型(查看/移动)
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
string sql = string.Empty;
|
|
|
if (!string.IsNullOrEmpty(UserID))
|
|
|
{
|
|
|
sql += "and a.USER_ID='" + UserID + "'";
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(FileName))
|
|
|
{
|
|
|
sql += "and d.File_Name='" + FileName + "'";
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(EmpowerType))
|
|
|
{
|
|
|
if (EmpowerType == "下载/打印")
|
|
|
{
|
|
|
sql += "and b.PRINT_FLAG=1";
|
|
|
}
|
|
|
if (EmpowerType == "查看")
|
|
|
{
|
|
|
sql += "and b.VIEW_FLAG=1";
|
|
|
}
|
|
|
if (EmpowerType == "上传")
|
|
|
{
|
|
|
sql += "and b.UPLOAD_FLAG=1";
|
|
|
}
|
|
|
if (EmpowerType == "编辑")
|
|
|
{
|
|
|
sql += "and b.EDIT_FLAG=1";
|
|
|
}
|
|
|
if (EmpowerType == "移动")
|
|
|
{
|
|
|
sql += "and b.MOVE_FLAG=1";
|
|
|
}
|
|
|
if (EmpowerType == "删除")
|
|
|
{
|
|
|
sql += "and b.DELETE_FLAG=1";
|
|
|
}
|
|
|
if (EmpowerType == "文件夹查看")
|
|
|
{
|
|
|
sql += "and b.FILE_VIEW_PERMISSIONS=1";
|
|
|
}
|
|
|
if (EmpowerType == "文件夹控制")
|
|
|
{
|
|
|
sql += "and b.FILE_CONTROL_PERMISSIONS=1";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
request.data = db.Query<retqustUser>("select b.*,d.FILE_NAME,d.FILE_PATH from minio_user a left join minio_role_permission b on a.role_id=b.id left join minio_authority c on b.limits_authority_id=c.limits_authority_id left join minio_storage_path d on c.file_id=d.pk where 1=1 " + sql + " ORDER BY d.PK").ToList();
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
//throw;
|
|
|
}
|
|
|
|
|
|
//通过用户ID查询用户得角色ID,
|
|
|
//判断当前角色是否有操作权限
|
|
|
//通过角色ID查询用户有权限得文件夹
|
|
|
|
|
|
return request;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region minio文件下载及预览
|
|
|
/// <summary>
|
|
|
/// 文件下载及预览接口
|
|
|
/// </summary>
|
|
|
[HttpPost, Route("FileDownload")]
|
|
|
public RequestEntity FileDownload(List<MinioStoragePath> minioStoragePath)
|
|
|
{
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
List<MinioStoragePath> data = new List<MinioStoragePath>();//定义输出下载的list
|
|
|
string NewFileName = "";
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (minioStoragePath != null)
|
|
|
{
|
|
|
foreach (var item in minioStoragePath)
|
|
|
{
|
|
|
MinioStoragePath date = new MinioStoragePath();//定义单条返回数据
|
|
|
string BuckName = bb.GetBuckName();//调用取桶名称方法
|
|
|
NewFileName = item.FileName;
|
|
|
if (item.Version != null && item.FileName.IndexOf(".pdf") > 0)//判断是否是pdf文件并且有版本做处理
|
|
|
{
|
|
|
NewFileName = item.FileName.Replace(".pdf", "_") + item.Version + ".pdf";
|
|
|
}
|
|
|
if (item.Version != null && item.FileName.IndexOf(".PDF") > 0)//判断是否是pdf文件并且有版本做处理
|
|
|
{
|
|
|
NewFileName = item.FileName.Replace(".PDF", "_") + item.Version + ".PDF";
|
|
|
}
|
|
|
var uploadTask = bb.Download(BuckName, NewFileName);//异步取base64
|
|
|
uploadTask.Wait();//等待取值
|
|
|
if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted) //判读是否有数值
|
|
|
{
|
|
|
date.Bate64 = uploadTask.Result;//赋值流文件
|
|
|
date.FileName = item.FileName;//赋值文件名称
|
|
|
data.Add(date);
|
|
|
if (item.OperationType == "0") //操作类型为下载
|
|
|
{
|
|
|
int DownloadNum = item.DownloadNum + 1;//将下载次数加一
|
|
|
string sql = "update MINIO_STORAGE_PATH set DOWNLOAD_NUM='" + DownloadNum + "' where pk='" + item.Pk + "'";
|
|
|
db.Execute(sql);//更新下载次数
|
|
|
}
|
|
|
request.code = "0";
|
|
|
}
|
|
|
else //如果不存在
|
|
|
{
|
|
|
request.msg = "请联系管理员检查!";
|
|
|
request.code = "1";
|
|
|
}
|
|
|
}
|
|
|
if (data != null)
|
|
|
{
|
|
|
request.data = data;//返回数据
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.msg = "请联系管理员检查!";
|
|
|
request.code = "1";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.msg = "请联系管理员检查!";
|
|
|
request.code = "1";
|
|
|
logger.InfoFormat(ex.ToString());
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 操作日志接口
|
|
|
/// <summary>
|
|
|
/// 查询minio文件操作日志
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpPost, Route("GetMinioBusinessLogic")]
|
|
|
public RequestEntity GetMinioBusinessLogic()
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();
|
|
|
try
|
|
|
{
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
request.data = db.Query<MinioOperationlog>("select * from MINIO_OPERATIONLOG where 1=1 order by OPERATE_TIME desc");
|
|
|
request.code = "0";
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.ErrorFormat("主表:MINIO_OPERATIONLOG,查询minio文件操作日志表失败,错误原因:{0}", ex);
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 标准清单
|
|
|
/// <summary>
|
|
|
/// 标准清单导出接口
|
|
|
/// </summary>
|
|
|
[HttpPost, Route("StandardListGeneration")]
|
|
|
public HttpResponseMessage StandardListGeneration(StandardListGenerationModel master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
IList<MinioStoragePath> date = new List<MinioStoragePath>();
|
|
|
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
if (master.InventoryName != null && master.InventoryType != null)
|
|
|
{
|
|
|
string ExcelName = "";//定义导出Excel文件名称
|
|
|
FileStream file = new FileStream(Application.StartupPath + "\\Files\\" + "清单模板.xlsx", FileMode.Open, FileAccess.Read);
|
|
|
XSSFWorkbook hssfworkbook = new XSSFWorkbook(file);
|
|
|
string sql = "select * from MINIO_STORAGE_PATH where 1=1 and FILE_TYPE='1' ";
|
|
|
if (master.InventoryType == "0")//标准类型
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(master.BeginTime))
|
|
|
{
|
|
|
sql += string.Format(" and CREATE_TIME >= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", master.BeginTime);//开始时间
|
|
|
}
|
|
|
if (!string.IsNullOrEmpty(master.EndTime))
|
|
|
{
|
|
|
sql += string.Format(" and CREATE_TIME <= to_date('{0}', 'yyyy/mm/dd hh24:mi:ss')", master.EndTime);//结束时间
|
|
|
}
|
|
|
sql += string.Format(" and FILE_PATH like'%{0}%'", master.InventoryName);//直接添加文件加名称
|
|
|
ExcelName = "标准清单";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
#region 清单判断
|
|
|
if (master.InventoryName == "HY企业标准清单")
|
|
|
{
|
|
|
sql += "and upk='103'";
|
|
|
ExcelName = "HY企业标准清单";
|
|
|
}
|
|
|
if (master.InventoryName == "Q-HY企业标准清单")
|
|
|
{
|
|
|
sql += "and upk='106'";
|
|
|
ExcelName = "Q-HY企业标准清单";
|
|
|
}
|
|
|
if (master.InventoryName == "新产品标准清单")
|
|
|
{
|
|
|
//sql += "and (FILE_PATH like'%XYGN%' or FILE_PATH like'%XYGW%')";
|
|
|
sql += "and (upk='91' or upk='93')";
|
|
|
ExcelName = "新产品标准清单";
|
|
|
}
|
|
|
if (master.InventoryName == "标准目录有效清单")
|
|
|
{
|
|
|
sql += "and (FILE_PATH like'企业标准'";
|
|
|
ExcelName = "标准目录有效清单";
|
|
|
}
|
|
|
if (master.InventoryName == "企业标准明细表")
|
|
|
{
|
|
|
sql += "and (FILE_PATH like'企业标准'";
|
|
|
ExcelName = "企业标准明细表";
|
|
|
}
|
|
|
if (master.InventoryName == "过期标准清单")
|
|
|
{
|
|
|
sql += "and (FILE_PATH like'%过期标准%'";
|
|
|
ExcelName = "过期标准清单";
|
|
|
}
|
|
|
if (master.InventoryName == "参考标准清单")
|
|
|
{
|
|
|
sql += "and (FILE_PATH like'%参考标准%'";
|
|
|
ExcelName = "参考标准清单";
|
|
|
}
|
|
|
if (master.InventoryName == "工艺卡清单")
|
|
|
{
|
|
|
sql += "and (FILE_PATH like'%170钢管厂工艺卡%' or FILE_PATH like'%219钢管厂工艺卡%' or FILE_PATH like'%460钢管厂工艺卡%' or FILE_PATH like'%170热处理工艺卡%' or FILE_PATH like'%连模铸系列工艺卡/转炉厂%' or FILE_PATH like'%连模铸系列工艺卡/特冶厂%' or FILE_PATH like'%连模铸系列工艺卡/电炉厂%' or FILE_PATH like'%电炉厂工艺卡%' or FILE_PATH like'%转炉厂工艺卡%' or FILE_PATH like'%特冶厂工艺卡%' or FILE_PATH like'%大棒厂工艺卡%' or FILE_PATH like'%小棒厂工艺卡%' or FILE_PATH like'%中棒厂工艺卡%'or FILE_PATH like'%锻造厂工艺卡%' or FILE_PATH like'%扁棒厂工艺卡%')";
|
|
|
ExcelName = "工艺卡清单";
|
|
|
}
|
|
|
if (master.InventoryName == "工艺规程清单")
|
|
|
{
|
|
|
sql += "and FILE_PATH like'%工艺规程%'";
|
|
|
ExcelName = "工艺规程清单";
|
|
|
}
|
|
|
if (master.InventoryName == "技术制度清单")
|
|
|
{
|
|
|
sql += "and FILE_PATH like'%技术制度%'";
|
|
|
ExcelName = "技术制度清单";
|
|
|
}
|
|
|
if (master.InventoryName == "艺字工艺清单")
|
|
|
{
|
|
|
sql += "and FILE_PATH like'%艺字工艺%'";
|
|
|
ExcelName = "艺字工艺清单";
|
|
|
}
|
|
|
if (master.InventoryName == "技字通知清单")
|
|
|
{
|
|
|
sql += "and FILE_PATH like'%技字通知%'";
|
|
|
ExcelName = "技字通知清单";
|
|
|
}
|
|
|
#endregion
|
|
|
}
|
|
|
date = db.Query<MinioStoragePath>(string.Format("{0} order by UPK ASC, CREATOR_TIME ASC ", sql));
|
|
|
if (date.Count > 0)
|
|
|
{
|
|
|
request.data = date;//测试查看数据用后去去掉
|
|
|
var sheet = hssfworkbook.GetSheetAt(0);
|
|
|
for (int i = 0; i < date.Count; i++)
|
|
|
{
|
|
|
if (sheet != null)
|
|
|
{
|
|
|
sheet.CopyRow(2, 3 + i);
|
|
|
}
|
|
|
}
|
|
|
var rowIndex = 3;
|
|
|
for (int i = 0; i < date.Count; i++)
|
|
|
{
|
|
|
var curRow = sheet.GetRow(rowIndex);
|
|
|
var data = date[i];
|
|
|
if (data.FilePath.IndexOf("企业标准/XYGN") >= 0 || data.FilePath.IndexOf("企业标准/XYGW") >= 0)//对国内国外标准进行特殊处理
|
|
|
{
|
|
|
int Num = data.FileName.IndexOf("-") + 8;//取文件名称技术协议编号位数
|
|
|
int name = data.FileName.Length - Num;//取文件名称技术协议名称位数
|
|
|
curRow.GetCell(0).SetCellValue(data.FilePath.Replace(data.FileName, ""));//路径
|
|
|
curRow.GetCell(1).SetCellValue(data.FileName.Substring(0, Num).Trim());//协议编号
|
|
|
curRow.GetCell(2).SetCellValue(data.FileName.Substring(Num, name).Trim());//名称
|
|
|
}
|
|
|
if (data.FilePath.IndexOf("标准通知") >= 0)
|
|
|
{
|
|
|
int Num = data.FileName.IndexOf("号");//取文件名称编号位数
|
|
|
int name = data.FileName.Length - Num;//取文件名称名称位数
|
|
|
curRow.GetCell(0).SetCellValue(data.FilePath.Replace(data.FileName, ""));//路
|
|
|
curRow.GetCell(1).SetCellValue(data.FileName.Substring(0, Num).Trim());//编号
|
|
|
curRow.GetCell(2).SetCellValue(data.FileName.Substring(Num, name).Replace(":", "").Trim());//名称
|
|
|
}
|
|
|
if (data.FilePath.IndexOf("标准通知") == -1 && data.FilePath.IndexOf("企业标准/XYGN") == -1 || data.FilePath.IndexOf("企业标准/XYGW") == -1)
|
|
|
{
|
|
|
var filecontent = data.FileName.Split(' ');//以空格进行区分
|
|
|
curRow.GetCell(0).SetCellValue(data.FilePath.Replace(data.FileName, ""));//路径
|
|
|
curRow.GetCell(1).SetCellValue(filecontent[0].ToString().Trim());//编号
|
|
|
curRow.GetCell(2).SetCellValue(data.FileName.Replace(filecontent[0].ToString(), ""));//名称
|
|
|
}
|
|
|
rowIndex = rowIndex + 1;
|
|
|
}
|
|
|
MemoryStream output = new MemoryStream();
|
|
|
hssfworkbook.Write(output);
|
|
|
output.Seek(0, SeekOrigin.Begin);
|
|
|
result.Content = new StreamContent(output);
|
|
|
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
|
|
|
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
|
|
|
if (ExcelName != null)
|
|
|
{
|
|
|
result.Content.Headers.ContentDisposition.FileName = ExcelName + ".xlsx";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
result.Content.Headers.ContentDisposition.FileName = "标准清单.xlsx";
|
|
|
}
|
|
|
result.Content.Headers.ContentLength = output.Length;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
logger.InfoFormat(ex.ToString());
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 切片上传
|
|
|
/// <summary>
|
|
|
/// 接收切片
|
|
|
/// </summary>
|
|
|
[HttpPost, Route("SliceUpload")]
|
|
|
public async Task<RequestEntity> SliceUploadAsync()//string FileName,string SliceQuantity,string FileNum, string FileId,string Size,string Upk, string FileType, string FilePath, string CreatorUser, string DownloadNum, string FileLevel, string FileCategory
|
|
|
{
|
|
|
Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
SliceUploadModel master = new SliceUploadModel();
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
try
|
|
|
{
|
|
|
var multipartMemoryStreamProvider = await Request.Content.ReadAsMultipartAsync();
|
|
|
foreach (var content in multipartMemoryStreamProvider.Contents)
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(content.Headers.ContentDisposition.FileName))
|
|
|
{
|
|
|
using (Stream stream = await content.ReadAsStreamAsync())
|
|
|
{
|
|
|
if (stream.CanSeek) // 确保流支持查询长度和定位
|
|
|
{
|
|
|
long length = stream.Length;
|
|
|
byte[] bytes = new byte[length];
|
|
|
int offset = 0;
|
|
|
int bytesRead;
|
|
|
while ((bytesRead = stream.Read(bytes, offset, bytes.Length - offset)) > 0)
|
|
|
{
|
|
|
offset += bytesRead;
|
|
|
}
|
|
|
// bytes 数组现在包含了整个流的内容
|
|
|
master.FileBase64 = bytes;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
string val = await content.ReadAsStringAsync();
|
|
|
dic.Add(content.Headers.ContentDisposition.Name.Replace("\"", ""), System.Web.HttpUtility.UrlDecode(val));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
master.FileName = dic["FileName"].ToString();//文件名称
|
|
|
master.SliceQuantity = dic["SliceQuantity"].ToString();//切片总数量
|
|
|
master.FileNum = dic["FileNum"].ToString();
|
|
|
master.FileId = dic["FileId"].ToString();
|
|
|
master.Upk = Convert.ToInt32( dic["Upk"].ToString());
|
|
|
master.FileType = Convert.ToInt32(dic["FileType"].ToString());
|
|
|
master.FilePath = dic["FilePath"].ToString();
|
|
|
master.CreatorUser = dic["CreatorUser"].ToString();
|
|
|
master.DownloadNum = Convert.ToInt32(dic["DownloadNum"].ToString());
|
|
|
master.FileLevel = Convert.ToInt32(dic["FileLevel"].ToString());
|
|
|
master.FileCategory = dic["FileCategory"].ToString();
|
|
|
SliceUploadData.Add(master);
|
|
|
request.code = "0";
|
|
|
request.msg = "已接收切片";
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.InfoFormat(ex.ToString());
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
/// <summary>
|
|
|
/// 拼接上传切片文件
|
|
|
/// </summary>
|
|
|
[HttpPost, Route("SliceUploadOrver")]
|
|
|
public RequestEntity SliceUploadOrver(SliceUploadModel master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
MinioBusinessLogic bb = new MinioBusinessLogic();//定义业务逻辑方法
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
#region 定义minio
|
|
|
MinioClient minio = bb.ConnectMinIO();//调用连接minio数据库方法
|
|
|
string BuckName = bb.GetBuckName();//调用取桶名称方法
|
|
|
var bucket = minio.BucketExistsAsync(BuckName);//判断桶是否存在
|
|
|
if (bucket.Result == false) //不存在就创建
|
|
|
{
|
|
|
minio.MakeBucketAsync(BuckName);//创建桶
|
|
|
}
|
|
|
#endregion
|
|
|
string base64 = "";
|
|
|
string Operate = "";//操作
|
|
|
MinioStoragePath date = new MinioStoragePath();
|
|
|
var file = SliceUploadData.Where(a => a.FileId == master.FileId).OrderBy(a => a.FileNum).ToList();//查询已经传完的唯一标识数据并以切片顺序排序
|
|
|
if (file.Count != 0)//如果查询数据不为0
|
|
|
{
|
|
|
if (file.Count.ToString() == master.SliceQuantity)//如果已经缓存的文件条数与总条数相等
|
|
|
{
|
|
|
List<byte> combinedList = new List<byte>();
|
|
|
foreach (var item in file)
|
|
|
{
|
|
|
combinedList.AddRange(item.FileBase64);
|
|
|
}
|
|
|
var contentType = file[0].FileCategory;//获取文件类型
|
|
|
//byte[] bt = Convert.FromBase64String(base64);//获取html base64
|
|
|
byte[] bt = combinedList.ToArray();
|
|
|
var uploadTask = minio.PutObjectAsync(BuckName, "/" + file[0].FileName, new MemoryStream(bt), bt.Length, contentType);//上传文件到minio数据库
|
|
|
uploadTask.Wait();
|
|
|
if (uploadTask.Status == TaskStatus.RanToCompletion && !uploadTask.IsFaulted)//判断是否上传成功
|
|
|
{
|
|
|
#region 文件文件夹路径表字段赋值
|
|
|
date.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_STORAGE_PATH.nextval from dual"));///拿到表自增长的值赋值给自增长主键pk
|
|
|
date.Upk = file[0].Upk;//子文件夹的父级id(如果是根目录默认父级id为0)
|
|
|
date.FileName = file[0].FileName;//文件名称
|
|
|
date.FileType = file[0].FileType;//文件类型
|
|
|
date.FilePath = file[0].FilePath;//文件路径
|
|
|
date.CreatorUser = file[0].CreatorUser;//创建者
|
|
|
date.CreatorTime = DateTime.Now;//创建时间
|
|
|
date.ClearFlag = "0";//删除状态为未删除
|
|
|
date.FileLevel = file[0].FileLevel + 1;//层级
|
|
|
date.DocumentType = file[0].DocumentType;//文件种类
|
|
|
#endregion
|
|
|
db.Insert<MinioStoragePath>(date);
|
|
|
request.msg = "文件上传成功!";
|
|
|
request.code = "0";
|
|
|
#region 记录日志
|
|
|
Operate = " 上传了一个新的文档,";
|
|
|
bb.MinioOperationLog(file[0].CreatorUser, file[0].FileName, Operate, date.Pk.ToString(), date.Upk.ToString(), db);
|
|
|
#endregion
|
|
|
SliceUploadData.RemoveAll(a => a.FileId == master.FileId);//清除已经上传文件的缓存
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
request.msg = "文件上传失败,请检查文件是否正确!";
|
|
|
request.code = "1";
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
SliceUploadData.RemoveAll(a => a.FileId == master.FileId);//清除已经上传文件的缓存
|
|
|
request.msg = "文件数量上传失败,请重试!";
|
|
|
request.code = "1";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
request.code = "1";
|
|
|
logger.InfoFormat(ex.ToString());
|
|
|
}
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region 同步关联
|
|
|
[HttpPost, Route("UdpDlsync")]
|
|
|
public RequestEntity UdpDlsync(string master)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
List<MinioStoragePath> data = new List<MinioStoragePath>();//定义输出下载的list
|
|
|
List<MinioStoragePath> newdata = new List<MinioStoragePath>();//定义输出下载的list
|
|
|
List<Dlsync> dldata = new List<Dlsync>();//定义输出下载的list
|
|
|
List<MinioStoragePath> datan = new List<MinioStoragePath>();
|
|
|
List<MinioFileassociation> mfcion = new List<MinioFileassociation>();
|
|
|
DataTable dt = new DataTable();
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
using (IDbContext filedb = ObjectContainer.GetObject<IDbContext>("filedb"))
|
|
|
{
|
|
|
string sql = "";
|
|
|
data = db.Query<MinioStoragePath>("select * from minio_storage_path where file_type='1' and upk='" + master + "' order by CREATOR_TIME asc").ToList();
|
|
|
foreach (var item in data)
|
|
|
{
|
|
|
//sql = string.Format("select g.title from ASSETENTRY g where entryid in (select entryid2 from ASSETLINK t where entryid1 = (select t.entryid from ASSETENTRY t ,(select p.fileid from DLSYNC p where p.name = '{0}' and (p.event='add' or p.event = 'update') )o where t.classpk = o.fileid))", item.FileName);
|
|
|
sql = string.Format("select g.title,g.username,g.createdate from ASSETENTRY g where entryid in (select entryid2 from ASSETLINK t where entryid1 = (select t.entryid from ASSETENTRY t ,(select p.fileid from DLSYNC p where p.name = '{0}' and (p.event='add' or p.event = 'update') and p.version='{1}' and ROWNUM = 1 order by p.version desc)o where t.classpk = o.fileid)) ", item.FileName, item.Version);
|
|
|
dt = filedb.Query(sql);
|
|
|
if (dt.Rows.Count > 0)
|
|
|
{
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
{
|
|
|
MinioFileassociation dc = new MinioFileassociation();
|
|
|
datan = db.Query<MinioStoragePath>("select * from minio_storage_path where file_name='" + dt.Rows[i]["title"].ToString() + "'").ToList();
|
|
|
if (datan.Count != 0)
|
|
|
{
|
|
|
|
|
|
|
|
|
if (item.DocumentType == "1")
|
|
|
{
|
|
|
if (datan[0].DocumentType == "2" || datan[0].DocumentType == "4")
|
|
|
{
|
|
|
dc.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_FILEASSOCIATION.nextval from dual"));
|
|
|
dc.FilePk = item.Pk;
|
|
|
dc.FileName = item.FileName;
|
|
|
dc.CreatorUser = dt.Rows[i]["username"].ToString().Replace(" ", "");
|
|
|
dc.CreatorTime = dt.Rows[i]["createdate"].ToString().ToDateTime();
|
|
|
dc.FilePath = item.FilePath;
|
|
|
dc.FileLevel = item.FileLevel;
|
|
|
dc.DownloadNum = item.DownloadNum;
|
|
|
dc.FileType = item.FileType;
|
|
|
dc.Version = item.Version;
|
|
|
dc.AssociationFilePk = datan[0].Pk;
|
|
|
dc.AssociationFileName = datan[0].FileName;
|
|
|
dc.AssociationFilePath = datan[0].FilePath;
|
|
|
dc.AssociationFileType = datan[0].FileType;
|
|
|
dc.AssociationFileLevel = datan[0].FileLevel;
|
|
|
dc.AssociationDownloadNum = datan[0].DownloadNum;
|
|
|
dc.AssociationVersion = datan[0].Version;
|
|
|
mfcion.Add(dc);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (item.DocumentType == "2")
|
|
|
{
|
|
|
if (datan[0].DocumentType == "3" || datan[0].DocumentType == "4")
|
|
|
{
|
|
|
dc.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_FILEASSOCIATION.nextval from dual"));
|
|
|
dc.FilePk = item.Pk;
|
|
|
dc.FileName = item.FileName;
|
|
|
dc.CreatorUser = dt.Rows[i]["username"].ToString().Replace(" ", "");
|
|
|
dc.CreatorTime = dt.Rows[i]["createdate"].ToString().ToDateTime();
|
|
|
dc.FilePath = item.FilePath;
|
|
|
dc.FileLevel = item.FileLevel;
|
|
|
dc.DownloadNum = item.DownloadNum;
|
|
|
dc.FileType = item.FileType;
|
|
|
dc.Version = item.Version;
|
|
|
dc.AssociationFilePk = datan[0].Pk;
|
|
|
dc.AssociationFileName = datan[0].FileName;
|
|
|
dc.AssociationFilePath = datan[0].FilePath;
|
|
|
dc.AssociationFileType = datan[0].FileType;
|
|
|
dc.AssociationFileLevel = datan[0].FileLevel;
|
|
|
dc.AssociationDownloadNum = datan[0].DownloadNum;
|
|
|
dc.AssociationVersion = datan[0].Version;
|
|
|
mfcion.Add(dc);
|
|
|
}
|
|
|
}
|
|
|
if (item.DocumentType == "3")
|
|
|
{
|
|
|
if (datan[0].DocumentType == "4")
|
|
|
{
|
|
|
dc.Pk = Convert.ToInt32(db.QueryScalar("select S_MINIO_FILEASSOCIATION.nextval from dual"));
|
|
|
dc.FilePk = item.Pk;
|
|
|
dc.FileName = item.FileName;
|
|
|
dc.CreatorUser = dt.Rows[i]["username"].ToString().Replace(" ", "");
|
|
|
dc.CreatorTime = dt.Rows[i]["createdate"].ToString().ToDateTime();
|
|
|
dc.FilePath = item.FilePath;
|
|
|
dc.FileLevel = item.FileLevel;
|
|
|
dc.DownloadNum = item.DownloadNum;
|
|
|
dc.FileType = item.FileType;
|
|
|
dc.Version = item.Version;
|
|
|
dc.AssociationFilePk = datan[0].Pk;
|
|
|
dc.AssociationFileName = datan[0].FileName;
|
|
|
dc.AssociationFilePath = datan[0].FilePath;
|
|
|
dc.AssociationFileType = datan[0].FileType;
|
|
|
dc.AssociationFileLevel = datan[0].FileLevel;
|
|
|
dc.AssociationDownloadNum = datan[0].DownloadNum;
|
|
|
dc.AssociationVersion = datan[0].Version;
|
|
|
mfcion.Add(dc);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
db.Insert<MinioFileassociation>(mfcion);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
#region
|
|
|
[HttpPost, Route("UdpDlsyncFile")]
|
|
|
public RequestEntity UdpDlsyncFile(string master,string parentfolderid, string DocumentType)
|
|
|
{
|
|
|
RequestEntity request = new RequestEntity();//定义返回集合
|
|
|
List<MinioStoragePath> data = new List<MinioStoragePath>();//定义输出下载的list
|
|
|
List<MinioStoragePath> newdata = new List<MinioStoragePath>();//定义输出下载的list
|
|
|
List<Dlsync> dldata = new List<Dlsync>();//定义输出下载的list
|
|
|
List<MinioStoragePath> datan = new List<MinioStoragePath>();
|
|
|
List<MinioFileassociation> mfcion = new List<MinioFileassociation>();
|
|
|
DataTable dt = new DataTable();
|
|
|
DataTable dta = new DataTable();
|
|
|
string ctime = "";
|
|
|
string mtime = "";
|
|
|
using (IDbContext db = ObjectContainer.GetObject<IDbContext>("db"))
|
|
|
{
|
|
|
using (IDbContext filedb = ObjectContainer.GetObject<IDbContext>("filedb"))
|
|
|
{
|
|
|
string sql = "";
|
|
|
data = db.Query<MinioStoragePath>("select * from minio_storage_path where file_type='1' and upk='" + master + "' order by CREATOR_TIME desc").ToList();
|
|
|
|
|
|
//foreach (var item in data)
|
|
|
//{
|
|
|
//sql = string.Format("select g.title from ASSETENTRY g where entryid in (select entryid2 from ASSETLINK t where entryid1 = (select t.entryid from ASSETENTRY t ,(select p.fileid from DLSYNC p where p.name = '{0}' and (p.event='add' or p.event = 'update') )o where t.classpk = o.fileid))", item.FileName);
|
|
|
sql = string.Format("select * from DLSYNC where parentfolderid='{0}' and (event='update' or event='add') ", parentfolderid, data[0].CreatorTime);
|
|
|
dt = filedb.Query(sql);
|
|
|
string sel = string.Format("select * from minio_storage_path where pk='{0}'", master); ;
|
|
|
dta = db.Query(sel);
|
|
|
if (dt.Rows.Count > 0)
|
|
|
{
|
|
|
for (int i = 0; i < dt.Rows.Count; i++)
|
|
|
{
|
|
|
ctime = dt.Rows[i]["CREATEDATE"].ToString();
|
|
|
mtime = dt.Rows[i]["MODIFIEDDATE"].ToString();
|
|
|
MinioStoragePath dc = new MinioStoragePath();
|
|
|
datan = db.Query<MinioStoragePath>("select * from minio_storage_path where file_name='" + dt.Rows[i]["NAME"].ToString() + "'").ToList();
|
|
|
if (datan.Count < 1)
|
|
|
{
|
|
|
dc.Pk = Convert.ToInt32(db.QueryScalar("select s_minio_storage_path.nextval from dual"));
|
|
|
dc.Upk = Convert.ToInt32(master);
|
|
|
dc.FileName = dt.Rows[i]["NAME"].ToString();
|
|
|
dc.FileType = 1;
|
|
|
dc.FilePath = dta.Rows[0]["FILE_PATH"].ToString()+"/"+ dt.Rows[i]["NAME"].ToString();
|
|
|
dc.CreatorUser = "sunliang";
|
|
|
dc.CreatorTime = ctime.ToDateTime();
|
|
|
dc.DownloadNum = 0;
|
|
|
dc.FileLevel = Convert.ToInt32( dta.Rows[0]["FILE_LEVEL"].ToString())+1;
|
|
|
dc.ModifyTime = mtime.ToDateTime();
|
|
|
dc.ClearFlag = "0";
|
|
|
dc.DocumentType = DocumentType;
|
|
|
dc.Version = dt.Rows[i]["VERSION"].ToString();
|
|
|
newdata.Add(dc);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//}
|
|
|
db.Insert<MinioStoragePath>(newdata);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
return request;
|
|
|
}
|
|
|
#endregion
|
|
|
|
|
|
}
|
|
|
}
|