123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- using MiniWebApi.Handler;
- using MiniWebApi.Network;
- using Newtonsoft.Json;
- using SQLite;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Net.Http;
- using System.Text;
- using System.Text.RegularExpressions;
- using Vinno.IUS.Common.Log;
- using Vinno.vCloud.Disk.Database;
- using Vinno.vCloud.Disk.Database.Dto;
- using Vinno.vCloud.Disk.Language;
- using Vinno.vCloud.Disk.UFile;
- using Vinno.vCloud.Common.Storage.ObjectStorageInfo.Authorization;
- using Vinno.vCloud.Protocol.Infrastructures.Storage;
- using Vinno.vCloud.Disk.Tencent;
- namespace Vinno.vCloud.Disk.Controllers
- {
- [WebApiHandler("FoldersAndFiles")]
- internal class FoldersAndFilesController : BaseHandler
- {
- /// <summary>
- /// 根据Id查询文件夹和文件
- /// </summary>
- /// <param name="context"></param>
- [Post]
- public void GetKeyValues(WebApiHttpContext context)
- {
- var param = context.GetParams();
- var breadcrumbList = param.GetStringValue("breadcrumbList");
- if (Regex.IsMatch(breadcrumbList, "^[0-9,]+$") && !string.IsNullOrWhiteSpace(breadcrumbList))
- {
- var select = SqlExecute.DB.Query<FoldersAndFiles>($"select * from FoldersAndFiles where id in({breadcrumbList})");
- var result = select.OrderBy(f=>f.Id).ToList();
- result.Insert(0,new FoldersAndFiles { FatherId = -1, FileUrl = string.Empty, Id = 0, Name = WebTranslateHelper.Translate("Root"), Type = 1 });
- var data = result.Select(f => new { f.Id, f.Name });
- context.Response.Json(data, true);
- }
- }
- /// <summary>
- /// 获取文件夹和文件列表
- /// </summary>
- /// <param name="context"></param>
- [Get]
- public void GetFoldersAndFiles(WebApiHttpContext context)
- {
- var page = context.GetParam("page").ToInt();
- var limit = context.GetParam("limit").ToInt();
- var data = SqlExecute.DB.Table<FoldersAndFiles>().OrderByDescending(f => f.Id);
- var dtos = data.ToList();
- dtos.ForEach(f => f.CreateTime = f.CreateTime.ToLocalTime());
- var result = new
- {
- code = 0,
- msg = "",
- count = dtos.Count(),
- data = dtos.Skip((page - 1) * limit).Take(limit)
- };
- context.Response.Json(result, true);
- }
- /// <summary>
- /// 根据父级Id获取文件夹和文件
- /// </summary>
- /// <param name="context"></param>
- [Get]
- public void GetFoldersAndFilesByFatherId(WebApiHttpContext context)
- {
- var fatherId = context.GetParam("fatherId").ToInt();
- var data = SqlExecute.DB.Table<FoldersAndFiles>().Where(f=>f.FatherId == fatherId);
- var result = data.ToList();
- result.ForEach(f => f.CreateTime = f.CreateTime.ToLocalTime());
- context.Response.Json(result, true);
- }
- /// <summary>
- /// 添加文件夹和文件
- /// </summary>
- /// <param name="context"></param>
- [Post]
- public void AddFoldersAndFiles(WebApiHttpContext context)
- {
- var param = context.GetParams();
- var name = param.GetStringValue("name");
- var fileUrl = param.GetStringValue("fileUrl");
- var fatherId = param.GetStringValue("fatherId").ToInt();
- var password = param.GetStringValue("password");
- var currUser = param.GetStringValue("currUser");
- var type = param.GetStringValue("type").ToInt();
- if (string.IsNullOrWhiteSpace(name))
- {
- context.Response.Json(new
- {
- Success = false,
- Msg = WebTranslateHelper.Translate("ParamsError")+":[name]"
- }, true);
- return;
- }
- var repeatingData = SqlExecute.DB.Query(SqlExecute.DB.GetMapping<FoldersAndFiles>(), "select * from FoldersAndFiles where Name=? and Type=? and FatherId=?", name, type, fatherId);
- if (repeatingData.Count > 0)
- {
- context.Response.Json(new
- {
- Success = false,
- Msg = WebTranslateHelper.Translate("Repeating") + $":[{name}]"
- }, true);
- return;
- }
- FoldersAndFiles foldersAndFiles = new FoldersAndFiles();
- foldersAndFiles.Name = name;
- foldersAndFiles.Password = password;
- foldersAndFiles.Type = type;
- foldersAndFiles.FileUrl = fileUrl;
- foldersAndFiles.FatherId = fatherId;
- foldersAndFiles.FileMd5 = string.Empty;
- foldersAndFiles.Creater = currUser;
- foldersAndFiles.CreateTime = DateTime.UtcNow;
- var isSuccess = SqlExecute.DB.Insert(foldersAndFiles)>0;
- context.Response.Json(new
- {
- Success = isSuccess,
- Msg = string.Empty
- }, true);
- }
- /// <summary>
- /// 获取文件夹和文件信息
- /// </summary>
- /// <param name="context"></param>
- [Get]
- public void GetFoldersAndFilesById(WebApiHttpContext context)
- {
- var id = context.GetParam("id");
- var ffInfo = SqlExecute.DB.FindWithQuery<FoldersAndFiles>("select * from FoldersAndFiles where Id=?", id.ToInt());
- if (ffInfo != null)
- {
- ffInfo.CreateTime = ffInfo.CreateTime.ToLocalTime();
- context.Response.Json(ffInfo, true);
- }
- }
- /// <summary>
- /// 编辑文件夹和文件
- /// </summary>
- /// <param name="context"></param>
- [Post]
- public void EditFoldersAndFiles(WebApiHttpContext context)
- {
- var param = context.GetParams();
- var id = param.GetStringValue("id").ToInt();
- var name = param.GetStringValue("name");
- var fileUrl = param.GetStringValue("fileUrl");
- var fatherId = param.GetStringValue("fatherId").ToInt();
- var password = param.GetStringValue("password");
- var currUser = param.GetStringValue("currUser");
- var type = param.GetStringValue("type").ToInt();
- if (id==0 || string.IsNullOrWhiteSpace(name))
- {
- context.Response.Json(new
- {
- Success = false,
- Msg = WebTranslateHelper.Translate("ParamsError") + ":[name]"
- }, true);
- return;
- }
- var foldersAndFiles = SqlExecute.DB.Get<FoldersAndFiles>(id);
- foldersAndFiles.Id = id;
- foldersAndFiles.Name = name;
- foldersAndFiles.Password = password;
- foldersAndFiles.Type = type;
- foldersAndFiles.FileUrl = fileUrl;
- foldersAndFiles.FatherId = fatherId;
- foldersAndFiles.Creater = currUser;
- foldersAndFiles.CreateTime = DateTime.UtcNow;
- var isSuccess = SqlExecute.DB.Update(foldersAndFiles) > 0;
- context.Response.Json(new
- {
- Success = isSuccess,
- Msg = string.Empty
- }, true);
- }
- /// <summary>
- /// 删除文件夹和文件
- /// </summary>
- /// <param name="context"></param>
- [Get]
- public void DeleteFoldersAndFiles(WebApiHttpContext context)
- {
- var id = context.GetParam("id");
- if (string.IsNullOrWhiteSpace(id))
- {
- context.Response.Json(new
- {
- Success = false,
- Msg = WebTranslateHelper.Translate("ParamsError") + ":[id]"
- }, true);
- return;
- }
- var key = id.ToInt();
- var ffRef = SqlExecute.DB.Find<FoldersAndFiles>(f => f.Id == key);
- var isSuccess = false;
- var msg = string.Empty;
- if (ffRef!=null && !string.IsNullOrWhiteSpace(ffRef.Name))
- {
- try
- {
- var repeatingData = SqlExecute.DB.Query(SqlExecute.DB.GetMapping<FoldersAndFiles>(), "select * from FoldersAndFiles where Name=? and Type=? and FatherId=?", ffRef.Name, 0, ffRef.FatherId);
- if (repeatingData.Count == 1)
- {
- CosUploadHelper.DeleteFile(ffRef.FileUrl);
- }
- var result = SqlExecute.DB.Delete(id, SqlExecute.DB.GetMapping<FoldersAndFiles>());
- isSuccess = result > 0;
- }
- catch (Exception ex)
- {
- Logger.WriteLineError($"{ex}");
- msg = WebTranslateHelper.Translate("DeleteError");
- }
- }
- context.Response.Json(new
- {
- Success = isSuccess,
- Msg = msg
- }, true);
- }
- }
- }
|