/* * 资源文件更新信息 */ using System; using System.Web; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MySystem.BsModels; using Library; using LitJson; using MySystemLib; namespace MySystem.Areas.Admin.Controllers { [Area("Admin")] [Route("Admin/[controller]/[action]")] public class FileUpdateInfoController : BaseController { public FileUpdateInfoController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { OtherMySqlConn.connstr = ConfigurationManager.AppSettings["BsSqlConnStr"].ToString(); } #region 资源文件更新信息列表 /// /// 根据条件查询资源文件更新信息列表 /// /// public IActionResult Index(FileUpdateInfo data, string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; string Condition = ""; if (!string.IsNullOrEmpty(Condition)) { Condition = Condition.TrimEnd(','); Condition = ", where: {" + Condition + "}"; } ViewBag.Condition = Condition; return View(); } #endregion #region 根据条件查询资源文件更新信息列表 /// /// 资源文件更新信息列表 /// /// public JsonResult IndexData(FileUpdateInfo data, string Kind = "default", int page = 1, int limit = 30) { Dictionary Fields = new Dictionary(); string condition = " and SeoKeyword='" + Kind + "'"; Dictionary obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).IndexData("FileUpdateInfo", Fields, "Path asc,FileName asc", "False", page, limit, condition); //List> diclist = obj["data"] as List>; //foreach (Dictionary dic in diclist) //{ //} return Json(obj); } #endregion #region 增加资源文件更新信息 /// /// 增加或修改资源文件更新信息信息 /// /// public IActionResult Add(string right) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; return View(); } #endregion #region 增加资源文件更新信息 /// /// 增加或修改资源文件更新信息信息 /// /// [HttpPost] public string Add(FileUpdateInfo data) { Dictionary Fields = new Dictionary(); Fields.Add("Version", data.VersionNum); //更新版本 Fields.Add("Path", data.Path); //路径 Fields.Add("FileName", data.FileName); //文件名 Fields.Add("SeoTitle", data.SeoTitle); // Fields.Add("SeoKeyword", data.SeoKeyword); Fields.Add("SeoDescription", data.SeoDescription); int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Add("FileUpdateInfo", Fields, 0); AddSysLog(data.Id.ToString(), "FileUpdateInfo", "add"); bsdb.SaveChanges(); return "success"; } #endregion #region 修改资源文件更新信息 /// /// 增加或修改资源文件更新信息信息 /// /// public IActionResult Edit(string right, int Id = 0) { ViewBag.RightInfo = RightInfo; ViewBag.right = right; FileUpdateInfo editData = bsdb.FileUpdateInfo.FirstOrDefault(m => m.Id == Id) ?? new FileUpdateInfo(); ViewBag.data = editData; return View(); } #endregion #region 修改资源文件更新信息 /// /// 增加或修改资源文件更新信息信息 /// /// [HttpPost] public string Edit(FileUpdateInfo data) { Dictionary Fields = new Dictionary(); Fields.Add("Version", data.VersionNum); //更新版本 Fields.Add("Path", data.Path); //路径 Fields.Add("FileName", data.FileName); //文件名 Fields.Add("SeoTitle", data.SeoTitle); // Fields.Add("SeoKeyword", data.SeoKeyword); Fields.Add("SeoDescription", data.SeoDescription); new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Edit("FileUpdateInfo", Fields, data.Id); AddSysLog(data.Id.ToString(), "FileUpdateInfo", "update"); bsdb.SaveChanges(); return "success"; } #endregion #region 删除资源文件更新信息信息 /// /// 删除资源文件更新信息信息 /// /// public string Delete(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "FileUpdateInfo", "del"); foreach (string subid in idlist) { int id = int.Parse(subid); new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Delete("FileUpdateInfo", id); } bsdb.SaveChanges(); return "success"; } #endregion #region 开启 /// /// 开启 /// /// public string Open(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "FileUpdateInfo", "open"); foreach (string subid in idlist) { int id = int.Parse(subid); Dictionary Fields = new Dictionary(); Fields.Add("Status", 1); new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Edit("FileUpdateInfo", Fields, id); } bsdb.SaveChanges(); return "success"; } #endregion #region 关闭 /// /// 关闭 /// /// public string Close(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "FileUpdateInfo", "close"); foreach (string subid in idlist) { int id = int.Parse(subid); Dictionary Fields = new Dictionary(); Fields.Add("Status", 0); new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Edit("FileUpdateInfo", Fields, id); } bsdb.SaveChanges(); return "success"; } #endregion #region 排序 /// /// 排序 /// /// public string Sort(int Id, int Sort) { new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Sort("FileUpdateInfo", Sort, Id); AddSysLog(Id.ToString(), "FileUpdateInfo", "sort"); return "success"; } #endregion #region 导入数据 /// /// 导入数据 /// /// public string Import(string ExcelData) { ExcelData = HttpUtility.UrlDecode(ExcelData); JsonData list = JsonMapper.ToObject(ExcelData); for (int i = 1; i < list.Count; i++) { JsonData dr = list[i]; bsdb.FileUpdateInfo.Add(new FileUpdateInfo() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }); bsdb.SaveChanges(); } AddSysLog("0", "FileUpdateInfo", "Import"); return "success"; } #endregion #region 导出Excel /// /// 导出Excel /// /// public JsonResult ExportExcel(FileUpdateInfo data) { Dictionary Fields = new Dictionary(); Dictionary obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).IndexData("FileUpdateInfo", Fields, "Id desc", "False", 1, 20000, "", "", false); List> diclist = obj["data"] as List>; Dictionary result = new Dictionary(); result.Add("Status", "1"); result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx"); result.Add("Obj", diclist); Dictionary ReturnFields = new Dictionary(); result.Add("Fields", ReturnFields); AddSysLog("0", "FileUpdateInfo", "ExportExcel"); return Json(result); } #endregion #region 更新版本 /// /// 更新版本 /// /// public string UpdateVersion(int Id) { FileUpdateInfo info = bsdb.FileUpdateInfo.FirstOrDefault(m => m.Id == Id); if (info != null) { info.VersionNum += 1; bsdb.SaveChanges(); } return "success"; } #endregion #region 更新文件 /// /// 更新文件 /// /// public string UpdateFile(string Kind = "default") { SystemSet set = bsdb.SystemSet.FirstOrDefault() ?? new SystemSet(); GetSystemFiles(set, Kind); foreach (string filename in SystemFiles) { string Path = filename.Substring(0, filename.LastIndexOf("/") + 1); string template = filename.Substring(filename.LastIndexOf("/") + 1); if (!template.EndsWith(".html") && !template.EndsWith(".DS_Store") && !template.EndsWith("LICENSE") && !template.EndsWith("Thumbs.db")) { FileUpdateInfo check = bsdb.FileUpdateInfo.FirstOrDefault(m => m.Path == Path && m.FileName == template && m.SeoKeyword == Kind); if (check == null) { check = bsdb.FileUpdateInfo.Add(new FileUpdateInfo() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, FileName = template, Path = Path, VersionNum = 0, SeoKeyword = Kind, }).Entity; bsdb.SaveChanges(); } } } List list = bsdb.FileUpdateInfo.OrderBy(m => m.Path).OrderBy(m => m.FileName).ToList(); RedisDbconn.Instance.AddList("FileUpdateInfo", list.ToArray()); return "success"; } List SystemFiles; private void GetSystemFiles(SystemSet set, string Kind = "default") { SystemFiles = new List(); string dataFilePath = function.ReadInstance("/WebRootPath.txt") + "/skin/app/" + Kind + "/"; System.IO.FileSystemInfo info = new System.IO.DirectoryInfo(dataFilePath); scan(info, set, Kind); } private void scan(System.IO.FileSystemInfo info, SystemSet set, string Kind = "default") { if (!info.Exists) return; string sPath = "/skin/app/" + Kind + "/"; System.IO.DirectoryInfo dir = info as System.IO.DirectoryInfo; //不是目录 if (dir == null) return; System.IO.FileSystemInfo[] files = dir.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++) { System.IO.FileInfo file = files[i] as System.IO.FileInfo; //是文件 if (file != null) { SystemFiles.Add(file.FullName.Substring(file.FullName.IndexOf(sPath) + sPath.Length).Replace("\\", "/")); } else scan(files[i], set, Kind); } } #endregion #region 同步数据到redis public string SyncAll(string Kind = "default") { List files = bsdb.FileUpdateInfo.Where(m => m.SeoKeyword == Kind).ToList(); RedisDbconn.Instance.Clear("FileUpdateInfo:" + Kind + ""); // RedisDbconn.Instance.AddList("FileUpdateInfo:" + Kind + "", files.ToArray()); return "success"; } #endregion } }