/* * 页面模板更新信息 */ 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 PageUpdateInfoController : BaseController { public PageUpdateInfoController(IHttpContextAccessor accessor, ILogger logger, IOptions setting) : base(accessor, logger, setting) { OtherMySqlConn.connstr = ConfigurationManager.AppSettings["BsSqlConnStr"].ToString(); } #region 页面模板更新信息列表 /// /// 根据条件查询页面模板更新信息列表 /// /// public IActionResult Index(PageUpdateInfo 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(PageUpdateInfo data, string Kind = "default", string VerNo = "", int page = 1, int limit = 30) { Dictionary Fields = new Dictionary(); if(!string.IsNullOrEmpty(VerNo)) { Kind += "/" + VerNo; } string condition = " and SeoKeyword='" + Kind + "'"; Dictionary obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).IndexData("PageUpdateInfo", Fields, "ModulePath asc, Id desc", "False", page, limit, condition); //List> diclist = obj["data"] as List>; //foreach (Dictionary dic in diclist) //{ //} return Json(obj); } #endregion #region 增加页面模板更新信息 /// /// 增加或修改页面模板更新信息信息 /// /// public IActionResult Add() { ViewBag.right = _accessor.HttpContext.Request.Query["right"]; return View(); } #endregion #region 增加页面模板更新信息 /// /// 增加或修改页面模板更新信息信息 /// /// [HttpPost] public string Add(PageUpdateInfo data) { Dictionary Fields = new Dictionary(); Fields.Add("ModuleVersion", data.ModuleVersion); //模板更新版本 Fields.Add("ModulePath", data.ModulePath); //模板路径 Fields.Add("BgColor", data.BgColor); //背景色 Fields.Add("TextColor", data.TextColor); //前景色 Fields.Add("StatusBarStyle", data.StatusBarStyle); //苹果状态栏 Fields.Add("ShowTitle", data.ShowTitle); //是否显示头部 Fields.Add("Title", data.Title); //顶部标题 Fields.Add("IsScrollBar", data.IsScrollBar); //是否显示滚动条 Fields.Add("IsSkid", data.IsSkid); //是否侧滑返回 Fields.Add("LeftBtn1", data.LeftBtn1); //左侧按钮1 Fields.Add("LeftBtn2", data.LeftBtn2); //左侧按钮2 Fields.Add("RightBtn1", data.RightBtn1); //右侧按钮1 Fields.Add("RightBtn2", data.RightBtn2); //右侧按钮2 Fields.Add("LeftAction1", data.LeftAction1); //左侧按钮1点击事件 Fields.Add("LeftAction2", data.LeftAction2); //左侧按钮2点击事件 Fields.Add("RightAction1", data.RightAction1); //右侧按钮1点击事件 Fields.Add("RightAction2", data.RightAction2); //右侧按钮2点击事件 Fields.Add("GotoPages", data.GotoPages); //下级页面 Fields.Add("MustUpdate", data.MustUpdate); //是否强制更新 Fields.Add("SeoTitle", data.SeoTitle); // Fields.Add("SeoKeyword", data.SeoKeyword); Fields.Add("SeoDescription", data.SeoDescription); int Id = new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Add("PageUpdateInfo", Fields, 0); AddSysLog(data.Id.ToString(), "PageUpdateInfo", "add"); bsdb.SaveChanges(); return "success"; } #endregion #region 修改页面模板更新信息 /// /// 增加或修改页面模板更新信息信息 /// /// public IActionResult Edit(int Id = 0) { ViewBag.right = _accessor.HttpContext.Request.Query["right"]; PageUpdateInfo editData = bsdb.PageUpdateInfo.FirstOrDefault(m => m.Id == Id) ?? new PageUpdateInfo(); ViewBag.data = editData; return View(); } #endregion #region 修改页面模板更新信息 /// /// 增加或修改页面模板更新信息信息 /// /// [HttpPost] public string Edit(PageUpdateInfo data) { Dictionary Fields = new Dictionary(); Fields.Add("ModuleVersion", data.ModuleVersion); //模板更新版本 Fields.Add("ModulePath", data.ModulePath); //模板路径 Fields.Add("BgColor", data.BgColor); //背景色 Fields.Add("TextColor", data.TextColor); //前景色 Fields.Add("StatusBarStyle", data.StatusBarStyle); //苹果状态栏 Fields.Add("ShowTitle", data.ShowTitle); //是否显示头部 Fields.Add("Title", data.Title); //顶部标题 Fields.Add("IsScrollBar", data.IsScrollBar); //是否显示滚动条 Fields.Add("IsSkid", data.IsSkid); //是否侧滑返回 Fields.Add("LeftBtn1", data.LeftBtn1); //左侧按钮1 Fields.Add("LeftBtn2", data.LeftBtn2); //左侧按钮2 Fields.Add("RightBtn1", data.RightBtn1); //右侧按钮1 Fields.Add("RightBtn2", data.RightBtn2); //右侧按钮2 Fields.Add("LeftAction1", data.LeftAction1); //左侧按钮1点击事件 Fields.Add("LeftAction2", data.LeftAction2); //左侧按钮2点击事件 Fields.Add("RightAction1", data.RightAction1); //右侧按钮1点击事件 Fields.Add("RightAction2", data.RightAction2); //右侧按钮2点击事件 Fields.Add("GotoPages", data.GotoPages); //下级页面 Fields.Add("MustUpdate", data.MustUpdate); //是否强制更新 Fields.Add("SeoTitle", data.SeoTitle); // Fields.Add("SeoKeyword", data.SeoKeyword); Fields.Add("SeoDescription", data.SeoDescription); new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Edit("PageUpdateInfo", Fields, data.Id); AddSysLog(data.Id.ToString(), "PageUpdateInfo", "update"); bsdb.SaveChanges(); return "success"; } #endregion #region 删除页面模板更新信息信息 /// /// 删除页面模板更新信息信息 /// /// public string Delete(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "PageUpdateInfo", "del"); foreach (string subid in idlist) { int id = int.Parse(subid); new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Delete("PageUpdateInfo", id); } bsdb.SaveChanges(); return "success"; } #endregion #region 开启 /// /// 开启 /// /// public string Open(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "PageUpdateInfo", "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("PageUpdateInfo", Fields, id); } bsdb.SaveChanges(); return "success"; } #endregion #region 关闭 /// /// 关闭 /// /// public string Close(string Id) { string[] idlist = Id.Split(new char[] { ',' }); AddSysLog(Id, "PageUpdateInfo", "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("PageUpdateInfo", Fields, id); } bsdb.SaveChanges(); return "success"; } #endregion #region 排序 /// /// 排序 /// /// public string Sort(int Id, int Sort) { new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).Sort("PageUpdateInfo", Sort, Id); AddSysLog(Id.ToString(), "PageUpdateInfo", "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.PageUpdateInfo.Add(new PageUpdateInfo() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, }); bsdb.SaveChanges(); } AddSysLog("0", "PageUpdateInfo", "Import"); return "success"; } #endregion #region 导出Excel /// /// 导出Excel /// /// public JsonResult ExportExcel(PageUpdateInfo data) { Dictionary Fields = new Dictionary(); Dictionary obj = new AdminContentOther(_accessor.HttpContext, PublicFunction.BsTables).IndexData("PageUpdateInfo", 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", "PageUpdateInfo", "ExportExcel"); return Json(result); } #endregion #region 更新版本 /// /// 更新版本 /// /// public string UpdateVersion(int Id) { PageUpdateInfo info = bsdb.PageUpdateInfo.FirstOrDefault(m => m.Id == Id); if (info != null) { info.ModuleVersion += 1; bsdb.SaveChanges(); } return "success"; } #endregion #region 刷新文件 /// /// 刷新文件 /// /// public string UpdateTemplate(string Kind = "default", string VerNo = "") { if(!string.IsNullOrEmpty(VerNo)) { Kind += "/" + VerNo; } SystemSet set = bsdb.SystemSet.FirstOrDefault() ?? new SystemSet(); GetSystemFiles(set, Kind); foreach (string filename in SystemFiles) { string template = filename.Substring(filename.LastIndexOf("/") + 1); if (template.EndsWith(".html")) { PageUpdateInfo check = bsdb.PageUpdateInfo.FirstOrDefault(m => m.ModulePath == template && m.SeoKeyword == Kind); if (check == null) { string ModuleContent = PublicFunction.GetNetFileContent(OssHost + "template/app/" + Kind + "/" + template); if (!string.IsNullOrEmpty(ModuleContent)) { string admintitle = ""; string title = ""; Match match = Regex.Match(ModuleContent, ".*?", RegexOptions.IgnoreCase); if (match.Success) { admintitle = match.Value.Replace("", "").Replace("", ""); if (admintitle.Contains("-")) { title = admintitle.Substring(admintitle.LastIndexOf("-") + 1); } else { title = admintitle; } } check = bsdb.PageUpdateInfo.Add(new PageUpdateInfo() { CreateDate = DateTime.Now, UpdateDate = DateTime.Now, SeoTitle = admintitle, SeoKeyword = Kind, LeftAction1 = "{\"Url\":\"GoBack#{\\\"Level\\\":\\\"1\\\"}\",\"Jump\":\"1\",\"Kind\":\"2\"}", LeftBtn1 = "static/images/left.png", IsSkid = 1, IsScrollBar = 0, Title = title, ShowTitle = 1, StatusBarStyle = "default", TextColor = "FFFFFF", BgColor = "FD7538", ModulePath = template, ModuleVersion = 1, }).Entity; bsdb.SaveChanges(); } } } } return "success"; } List SystemFiles; private void GetSystemFiles(SystemSet set, string Kind = "default") { SystemFiles = new List(); string dataFilePath = function.ReadInstance("/WebRootPath.txt") + "/template/app/" + Kind + "/"; System.IO.FileSystemInfo info = new System.IO.DirectoryInfo(dataFilePath); scan(info); } private void scan(System.IO.FileSystemInfo info) { if (!info.Exists) return; 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("template")).Replace("\\", "/")); } else scan(files[i]); } } #endregion #region 同步数据到redis public string SyncAll(string Kind = "default", string VerNo = "") { if(!string.IsNullOrEmpty(VerNo)) { Kind += "/" + VerNo; } SystemSet set = bsdb.SystemSet.FirstOrDefault() ?? new SystemSet(); RedisDbconn.Instance.Set("SystemSet", set); List pages = bsdb.PageUpdateInfo.Where(m => m.SeoKeyword == Kind).ToList(); RedisDbconn.Instance.Clear("PageUpdateInfo:" + Kind + "*"); // RedisDbconn.Instance.AddList("PageUpdateInfo:" + Kind + "", pages.ToArray()); // foreach (PageUpdateInfo page in pages) // { // RedisDbconn.Instance.Set("PageUpdateInfo:" + Kind + ":" + page.ModulePath.Split('.')[0], page); // } return "success"; } #endregion } }