public static void Filter(HttpContext context) { var localPath = context.Request.Url.LocalPath.ToLower(); var isViewsStaticFile = Regex.IsMatch(localPath, @"^/views/.*\.(js|css|jpg|png|gif|doc|docx|xls|xlsx|pdf|txt)$"); var isAreaViewsStaticFile = Regex.IsMatch(localPath, @"^/areas/\w+/views/.*\.(js|css|jpg|png|gif|doc|docx|xls|xlsx|pdf|txt)$"); if (isViewsStaticFile || isAreaViewsStaticFile) { string filePath = FileSugar.GetMapPath(localPath); var isExistFile = FileSugar.IsExistFile(filePath); if (isExistFile) { using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { long fileSize = fileStream.Length; byte[] fileBuffer = new byte[fileSize]; fileStream.Read(fileBuffer, 0, (int)fileSize); //如果不写fileStream.Close()语句,用户在下载过程中选择取消,将不能再次下载 fileStream.Close(); var fileExtension = FileSugar.GetExtension(filePath); context.Response.ContentType = fileExtension.Switch().Case(".css", "text/css").Case(".js", "text/js").Default("application/octet-stream").Break(); context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + FileSugar.GetFileName(filePath)); context.Response.AddHeader("Content-Length", fileSize.ToString()); context.Response.BinaryWrite(fileBuffer); context.Response.Flush(); context.Response.End(); } } } }
/// <summary> /// 创建SQL实体文件,指定表名 /// </summary> public void CreateClassFilesByTableNames(SqlSugarClient db, string fileDirectory, string nameSpace, params string[] tableNames) { var isLog = db.IsEnableLogEvent; db.IsEnableLogEvent = false; string sql = SqlSugarTool.GetCreateClassSql(null); var tables = db.GetDataTable(sql); if (!FileSugar.IsExistDirectory(fileDirectory)) { FileSugar.CreateDirectory(fileDirectory); } if (tables != null && tables.Rows.Count > 0) { foreach (DataRow dr in tables.Rows) { string tableName = dr["name"].ToString().ToLower(); if (tableNames.Any(it => it.ToLower() == tableName)) { var currentTable = db.GetDataTable(string.Format(SqlSugarTool.GetSelectTopSql(), GetTableNameWithSchema(db, tableName).GetTranslationSqlName())); var tableColumns = GetTableColumns(db, tableName); string className = db.GetClassTypeByTableName(tableName); var classCode = DataTableToClass(currentTable, className, nameSpace, tableColumns); FileSugar.CreateFile(fileDirectory.TrimEnd('\\') + "\\" + className + ".cs", classCode, Encoding.UTF8); } } } db.IsEnableLogEvent = isLog; }
private void BuildView(string viewPath, XDocument doc) { ConvertCshtml _cs = new ConvertCshtml(_db); int addressId = _data.Id; int languageId = _languageId; var review = _cs.ReviewModel(addressId, languageId); review.JsSrc = @"/Areas/{0}/Views/_js/{1}-{2}.js".ToFormat(_data.AreaName, _data.ControllerName.ToLower(), _data.ActionName.ToLower()); review.CssHref = @"/Areas/{0}/Views/_css/{1}-{2}.css".ToFormat(_data.AreaName, _data.ControllerName.ToLower(), _data.ActionName.ToLower()); ContainConfigToCsproj(@"Areas\{0}\Views\_css\{1}-{2}.css".ToFormat(_data.AreaName, _data.ControllerName.ToLower(), _data.ActionName.ToLower()), _solutionDir, _projectName, doc); ContainConfigToCsproj(@"Areas\{0}\Views\_js\{1}-{2}.js".ToFormat(_data.AreaName, _data.ControllerName.ToLower(), _data.ActionName.ToLower()), _solutionDir, _projectName, doc); string jsPath = FileSugar.GetMapPath(review.JsSrc); string cssPath = FileSugar.GetMapPath(review.CssHref); if (FileSugar.IsExistFile(jsPath).IsFalse()) { FileSugar.CreateFile(jsPath); FileSugar.WriteFile(jsPath, "///<reference path=\"/_theme/tool/_reference.js\" />", "utf-8"); } if (FileSugar.IsExistFile(cssPath).IsFalse()) { FileSugar.CreateFile(cssPath); } var viewCode = GetTemplateCodeByName("view.cshtml", review); var languageSuffix = string.Empty; if (languageId != 1) { languageSuffix = $"_{GetLanguageList.Single(it => it.Id == languageId).Suffix}"; } FileSugar.WriteFile(viewPath, viewCode); ContainConfigToCsproj(@"Areas\{0}\Views\{1}\{2}{3}.cshtml".ToFormat(_data.AreaName, _data.ControllerName, _data.ActionName, languageSuffix), _solutionDir, _projectName, doc); }
public ActionResult <ApiResult <bool> > CreateFileByProjectId([FromForm] ProjectViewModel2 model, bool disOpen = true) { var result = new ApiResult <bool>(); var tables = model.Tables; var project = ProjectDb.GetSingle(it => it.Id == model.ProjectId); base.Check(project == null, "请选择方案"); model.Tables = tables; var template = TemplateDb.GetById(project.TemplateId1).Content; var tableids = Newtonsoft.Json.JsonConvert.DeserializeObject <List <CodeTypeGridViewModel> >(model.Tables).Select(it => it.Id).ToList(); var tableList = CodeTableDb.GetList(it => tableids.Contains(it.Id)); int dbId = tableList.First().DbId; var connection = base.GetTryDb(dbId); List <EntitiesGen> genList = GetGenList(tableList, CodeTypeDb.GetList(), connection.CurrentConnectionConfig.DbType); string key = TemplateHelper.EntityKey + template.GetHashCode(); foreach (var item in genList) { item.name_space = GetNameSpace(project.FileModel, item.name_space); var html = TemplateHelper.GetTemplateValue(key, template, item); var fileName = GetFileName(project, item); FileSugar.CreateFileReplace(fileName, html, Encoding.UTF8); } OpenPath(disOpen, project); ProjectController_Common.CreateProject(project.Id, model.DbId.Value); result.IsSuccess = true; result.Message = "生成生功"; return(result); }
/// <summary> /// 根据配置生成对应的文件 表单生成 /// </summary> /// <param name="config"></param> public static void generateForm(GenerateFormConfig_Model config) { //2.获取html //2.1根据配置拆分 var list_afterChunk = config.columns.Chunk(config.columnsInRowNumber); //2.2声明行数据容器 List <List <FormElement> > list = new List <List <FormElement> >(); foreach (var info in list_afterChunk) { List <FormElement> row_temp = new List <FormElement>(); //遍历当前行 foreach (var item_info in info) { row_temp.Add(new generateHelp().generateHtmlByType(item_info));//取列 } //生成行html list.Add(row_temp); } //3.渲染razor模板 string templatePath = FileSugar.MergeUrl(globalProperty.templateDic, "formElement", "form.cshtml"); var tempCode = RazorEngineExtension.RazorPars(templatePath, FileSugar.FileToString(templatePath), new { FormElementTable = list }); //4.将生成的form字符串写入html文件 FileSugar.WriteFile($"../../html/{config.tableName}.html", tempCode); }
protected void Page_Load(object sender, EventArgs e) { var path = Server.MapPath(@"~\TestFIle\ok.docx"); var pathName = FileSugar.GetFileName(path); ResponseSugar.ResponseFile(path, pathName); }
public string GetControlEvent(int elementId = 0, bool isSingle = false) { //获取件动作 var eventActionTypeList = PubUiEngineGet.GetEventActionConfigList; var model = EventManager.GetInstance.GetEeventList.FindAll(it => it.Name.IsIn("getValue", "setValue").IsFalse()); foreach (var it in model) { it.ActionTypeList = eventActionTypeList; } var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEditorDir, "event.cshtml"); if (isSingle == true) { cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEditorDir, "eventSingle.cshtml"); } var html = FileSugar.FileToString(cshtmlPath); if (elementId > 0) { var events = _db.Queryable <SysBest_ElementEvent>().Where(it => it.ElementId == elementId).ToList(); var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, new { Key = model, Value = events }); return(reval); } else { var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, new { Key = model, Value = new List <SysBest_ElementEvent>() }); return(reval); } }
public JsonResult Del(string currPath) { Tools tools = new Tools(_siteConfig); FileSugar.DelFolder(tools.GetPath(currPath)); return(Json("OK")); }
public string GetTemplateCodeByName(string tempName, object model) { string dir = FileSugar.MergeUrl(_uiEngineDir, "buildCode"); string filePath = FileSugar.MergeUrl(dir, tempName); var tempCode = RazorEngineExtension.RazorPars(filePath, FileSugar.FileToString(filePath), model); return(tempCode); }
/// <summary> /// 获取事件HTML /// </summary> /// <param name="name"></param> /// <param name="pars"></param> /// <returns></returns> public string GetEventActionHtml(string name, List <EventActionTypeParas> pars, string id) { var path = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEventActionDir, name + ".cshtml"); var cshtml = FileSugar.FileToString(path); var reval = RazorEngineExtension.RazorPars(path, cshtml, new { Data = pars, id = id }); return(reval); }
/// <summary> /// 发送邮件通知 /// </summary> /// <param name="isLogin"></param> /// <param name="_userInfo"></param> /// <param name="tid"></param> /// <param name="p"></param> /// <param name="db"></param> internal void SendMail(UserInfo currentUser, int tid, BBS_Posts p, SqlSugarClient db) { //未配置邮箱不发送 if (PubGet.GetEmailUserName.IsNullOrEmpty()) { return; } var topic = db.Queryable <BBS_Topics>().Single(it => it.Tid == tid); var isOneUser = currentUser.Id == topic.Posterid; var html = FileSugar.FileToString(FileSugar.GetMapPath("~/Template/mail/Replies.html")).Replace('\r', ' ').Replace('\n', ' '); var oldHtml = html; //发贴和回贴不是同一个人 if (isOneUser.IsFalse()) { var toUser = db.Queryable <UserInfo>().Single(it => it.Id == topic.Posterid); if (toUser.Email.IsEamil()) { string toUserName = toUser.NickName; string fromUserName = currentUser.NickName; string toMail = toUser.Email; MailSmtp ms = new MailSmtp(PubGet.GetEmailSmtp, PubGet.GetEmailUserName, PubGet.GetEmailPassword); string url = RequestInfo.HttpDomain + "/Ask/{0}/{1}#btnSubmit".ToFormat(topic.Fid, topic.Tid); html = html.ToFormat(toUserName, fromUserName, topic.Title, DateTime.Now, url); var title = PubMethod.RemoveAllSpace(fromUserName + "回复了:" + StringSugar.ToCutString(topic.Title, 10, "...")); ms.Send(PubGet.GetEmailUserName, PubConst.SiteMailUserName, toMail, title, html); System.Threading.Thread.Sleep(100); } } html = oldHtml; //处理@ if (p.Message.IsValuable() && p.Message.Contains("@")) { var adUserIds = db.Queryable <BBS_Posts>().Where(it => it.Tid == tid && it.Parentid > 0).Select(it => it.Posterid).ToList(); var adUsers = db.Queryable <UserInfo>().In(adUserIds).ToList(); var matchUsers = Regex.Matches(p.Message, @"\<span style\=""color:#4f99cf""\>@(.+?)\<\/span\>"); if (matchUsers != null && matchUsers.Count > 0) { var userNames = matchUsers.Cast <Match>().Select(it => it.Groups[1].Value).ToList(); adUsers = adUsers.Where(it => userNames.Contains(it.NickName)).ToList(); foreach (var item in adUsers) { if (item.Email.IsValuable() && item.Id != currentUser.Id) { string toUserName = item.NickName; string fromUserName = currentUser.NickName; string toMail = item.Email; MailSmtp ms = new MailSmtp(PubGet.GetEmailSmtp, PubGet.GetEmailUserName, PubGet.GetEmailPassword); string url = RequestInfo.HttpDomain + "/Ask/{0}/{1}#btnSubmit".ToFormat(topic.Fid, topic.Tid); html = html.ToFormat(toUserName, fromUserName, p.Message, DateTime.Now, url); var title = PubMethod.RemoveAllSpace(fromUserName + "在【" + topic.Title.TryToString().Trim() + "】@了你"); ms.Send(PubGet.GetEmailUserName, PubConst.SiteMailUserName, toMail, title, html); System.Threading.Thread.Sleep(100); } } } } }
public JsonResult ActivateMailSend(string key, string userId, string mail) //命名反的误导黑客 { Check.Exception(mail.IsEamil().IsFalse(), "参数不合法"); var userIdInt = EncryptSugar.GetInstance().Decrypto(key).ObjToInt(); var date = EncryptSugar.GetInstance().Decrypto(userId).ObjToDate(); var model = new ResultModel <string>(); if (base.IsLogin == false) { model.ResultInfo = "登录超时请刷新页面重新登录"; return(Json(model, JsonRequestBehavior.AllowGet)); } var cm = CacheManager <DateTime> .GetInstance(); string mailTimeKey = PubConst.SessionMailTime + key.ToLower(); if (cm.ContainsKey(mailTimeKey)) { var mins = (DateTime.Now - cm[mailTimeKey]).TotalSeconds; if (mins < 60) { model.ResultInfo = "您刚才已经发送成功,如果还没有收到邮件,请等待{0}秒后重新发送。".ToFormat(Convert.ToUInt32(60 - mins)); return(Json(model, JsonRequestBehavior.AllowGet)); } } _service.Command <HomeOutsourcing>((db, o) => { var isAnyUser = db.Queryable <UserInfo>().Any(it => userIdInt == it.Id); var isOkDate = ((DateTime.Now - date).TotalDays <= 3); var isAnyMail = db.Queryable <UserInfo>().Any(it => mail.ToLower() == it.Email); if (isAnyUser && isOkDate && isAnyMail.IsFalse()) { var html = FileSugar.FileToString(FileSugar.GetMapPath("~/Template/mail/Validate.html")).Replace('\r', ' ').Replace('\n', ' '); string userName = _userInfo.NickName; string aHtml = "<a href=\"{0}\">{1}</a>".ToFormat(RequestInfo.HttpDomain + "" + Url.Action("ActivateMailSubmitSuccess", "UserCenter", new { key = key, userId = userId, mail }), "请点击这儿完成激活"); string dateString = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); MailSmtp ms = new MailSmtp(PubGet.GetEmailSmtp, PubGet.GetEmailUserName, PubGet.GetEmailPassword); html = html.ToFormat(userName, aHtml, dateString); ms.Send(PubGet.GetEmailUserName, PubConst.SiteMailUserName, mail, userName + "邮箱激活通知", html); model.ResultInfo = "发送成功,请打开邮箱完成激活!"; string uniqueKey = PubGet.GetUserKey; base.AddUpdateMailCache(uniqueKey); model.IsSuccess = true; Check.Exception(ms.Result.IsValuable(), "邮件激活失败!" + ms.Result); cm.Add(mailTimeKey, DateTime.Now, cm.Minutes); } else if (isAnyMail) { model.ResultInfo = "发送失败,该邮箱已经被激活,或已经存在。"; } else { model.ResultInfo = "发送失败"; } }); return(Json(model, JsonRequestBehavior.AllowGet)); }
public FormElement generateImg(Column col) { string templatePath = FileSugar.MergeUrl(globalProperty.templateDic, "formElement", "img", "template.cshtml"); return(new FormElement() { elementHtml = generateHelp.getParseString(templatePath, col), col = col }); }
//public void RestoreLayoutElement(string htmlId, string key, int addressId, int languageId) //{ // var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsDir, "layout", key + ".cshtml"); // var content = _.sysBest_PageContentService.GetSingle(it => it.LanguageId == languageId && it.AddressId == addressId); // var elementList = _.sysBest_ElementService.GetElementListByHtmlIdArray(new string[] { htmlId }); // content.Html = GetRestoreHtml(content.Html, elementList, htmlId); // _.sysBest_PageContentService.Update(content); //} /// <summary> /// 获取还原后的HTML /// </summary> /// <param name="html"></param> /// <param name="elementList"></param> /// <param name="htmlId"></param> /// <returns></returns> public string GetRestoreHtml(string html, List <SysBest_Element> elementList, string htmlId) { if (!elementList.Any(el => el.Html_Id == htmlId)) { return(html); } //根据htmlID查对应的元素 var ele = elementList.Single(el => el.Html_Id == htmlId); //正则匹配出对应的占位span标签 var span = Regex.Match(html, @"\<span.{1,30}?data\-id\=""" + htmlId + @""".*?\<\/span\>").Value; //正则匹配出控件类型 var categoryKey = Regex.Match(span, @"\<.*?data\-categorykey\=""(.+?)"".*?", RegexOptions.Singleline).Groups[1].Value; //正则匹配控件Key var key = Regex.Match(span, @"\<.*?data\-key\=""(.+?)"".*?").Groups[1].Value; var buildTemplatePath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsDir, categoryKey, "items", key, "build.cshtml"); if (FileSugar.IsExistFile(buildTemplatePath)) { BuildModel buildModel = new BuildModel(); buildModel.elementId = ele.Id; buildModel.addressId = ele.AddressId; var attrs = _db.Queryable <SysBest_ElementAttr>().Where(it => it.ElementId == ele.Id).ToList(); var events = _db.Queryable <SysBest_ElementEvent>().Where(it => it.ElementId == ele.Id).ToList(); buildModel.attrList = attrs.Select(attr => new KeyValuePair <string, string>(attr.Key, attr.Value)).ToDictionary(it => it.Key, it => it.Value); if (buildModel.attrList == null) { buildModel.attrList = new Dictionary <string, string>(); } buildModel.attrList.Add("name", ele.EleName); buildModel.eventList = new Dictionary <string, string>(); foreach (var eve in events) { List <EventActionTypeParas> pars = new List <EventActionTypeParas>(); if (eve.Pars.IsValuable()) { pars = eve.Pars.JsonToModel <List <EventActionTypeParas> >(); } string eveValue = GetEventActionHtml(eve.Value, pars, ele.EleName); buildModel.eventList.Add(eve.Key, eveValue); } var cshtml = FileSugar.FileToString(buildTemplatePath); buildModel.api = GetApiUrlByElement(ele); string finallyThisIsMyParsedTemplate = ""; finallyThisIsMyParsedTemplate = RazorEngineExtension.RazorPars(buildTemplatePath, cshtml, buildModel); var replaceHtml = finallyThisIsMyParsedTemplate; html = html.Replace(span, replaceHtml); } return(html); }
private string GetFileName(ProjectViewModel project, EntitiesGen item) { var p = "."; project.FileSuffix = project.FileSuffix.TrimStart('.'); if (project.FileSuffix.Contains(".")) { p = null; } return(FileSugar.MergeUrl(project.Path, item.ClassName + p + project.FileSuffix)); }
/// <summary> /// 将错误信息写入日志 /// </summary> /// <param name="ex"></param> private static void WriteExMessage(Exception ex) { var logPath = FileSugar.MergeUrl( FileSugar.GetMapPath("~/"), "log", DateTime.Now.ToString("yyyy-MM-dd.txt") ); FileSugar.AppendText(logPath, "***********{0}{1}***********".ToFormat("开始:", DateTime.Now)); FileSugar.AppendText(logPath, ex.Message); FileSugar.AppendText(logPath, "***********{0}***********\r\n".ToFormat("结束")); }
/// <summary> /// 开始生成表单 /// </summary> public static void StartGenerateForm() { //1.解析配置 string configPath = FileSugar.MergeUrl(System.Environment.CurrentDirectory, "generateFormConfig.json"); //得到配置的json字符串 string json = FileSugar.FileToString(configPath); List <GenerateFormConfig_Model> config = JsonConvert.DeserializeObject <List <GenerateFormConfig_Model> >(json); foreach (var item in config) { //根据配置生成表单 generateForm(item); } }
//获取插入ueditor里面的HTML /// <summary> /// 获取插入ueditor里面的HTML /// </summary> /// <param name="key">控件的Key</param> /// <param name="categoryKey">控件类型的Key</param> /// <param name="hasSource"></param> /// <returns></returns> public string GetEditor(string key, string categoryKey, bool?hasSource) { //控件模板地址 var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineEditorDir, "template.cshtml"); //控件图标地址 var icon = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsWebDir, categoryKey, "items", key, "icon.png"); //传给raozr的Model var model = new { categoryKey = categoryKey, key = key, icon = icon, hasSource = hasSource }; //razor模板对应的文本 var html = FileSugar.FileToString(cshtmlPath); //解析razor生成最终的文本 var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, model); return(reval); }
/// <summary> /// 获取控件信息 /// </summary> /// <returns></returns> public List <ControlType> GetControlInfoList() { List <ControlType> reval = new List <ControlType>(); //获取best平台控件目录 var typeDirList = FileSugar.GetDirectories(PubUiEngineGet.GetUiEngineControlsDir); if (typeDirList.IsValuable()) { foreach (var item in typeDirList) { reval.Add(GetControlType(item)); } } return(reval); }
public ApiResult <bool> Exportfile([FromForm] string model, [FromForm] int dbid) { ApiResult <bool> result = new ApiResult <bool>() { IsSuccess = true }; var tableDb = base.GetTryDb(dbid); var dts = Export(model, tableDb); var bytes = Table_ToExcel.ExportExcel(dts, "数据库文档.xlsx"); var url = FileSugar.MergeUrl(Startup.GetCurrentDirectory(), "excel/数据库文档" + SqlSugar.SnowFlakeSingle.Instance.getID() + ".xlsx"); FileSugar.CreateFile(url, bytes); OpenPath(url); return(result); }
public JsonResult UploadAvatar() { ResultModel <string> model = new ResultModel <string>(); if (base.IsLogin.IsFalse()) { model.ResultInfo = "您还没有登录!"; return(Json(model, JsonRequestBehavior.AllowGet)); } try { _service.Command <UserCenterOutsourcing>((db, o) => { var imgObj = new UploadImage(); var file = Request.Files[0]; if (file.ContentLength / 1024.0 / 1024.0 > 1) { model.ResultInfo = "上传图片不能超过一M!"; } else if (file.ContentType.IsIn("image/png", "image/gif", "image/jpg", "image/jpeg").IsFalse()) { model.ResultInfo = "上传失败,您的图片不是PNG GIF JPG 格式!"; } else { model.IsSuccess = true; string webPath = "/_theme/img/avatar" + _userInfo.Id + ".jpg"; string savePath = FileSugar.GetMapPath("~" + webPath); string smallPath = FileSugar.GetMapPath("~/_theme/img/_avatar" + _userInfo.Id + ".jpg"); file.SaveAs(savePath); model.ResultInfo = Url.Content("~/" + webPath) + "?r=" + Guid.NewGuid(); imgObj.CreateSmallPhoto(savePath, 100, 100, smallPath);//生成缩略图 FileSugar.DeleteFile(savePath); FileSugar.Move(smallPath, savePath); db.Update <UserInfo>(new { avatar = webPath + "?r=" + RandomSugar.GetRandomNum(5) }, it => it.Id == _userInfo.Id); RestCurrentUserCache(); } }); return(Json(model)); } catch (Exception ex) { PubMethod.WirteExp(ex); model.ResultInfo = "上传失败!"; } return(Json(model, JsonRequestBehavior.AllowGet)); }
public string GetControlAttribute(string key, string categoryKey, int elementId = 0) { var cshtmlPath = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsDir, categoryKey, "items", key, "attribute.cshtml"); var html = FileSugar.FileToString(cshtmlPath); if (elementId > 0) { var attrs = _db.Queryable <SysBest_ElementAttr>().Where(it => it.ElementId == elementId).ToList(); var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, attrs); return(reval); } else { var reval = RazorEngineExtension.RazorPars(cshtmlPath, html, new List <SysBest_ElementAttr>()); return(reval); } }
/// <summary> /// 获取UI引擎控件信息 /// </summary> /// <param name="item"></param> private ControlType GetControlType(string item) { ControlType type = new ControlType(); DirectoryInfo di = new DirectoryInfo(item); type.key = di.Name; type.icon = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsWebDir, type.key, "icon.png"); string webTypeDir = FileSugar.MergeUrl(PubUiEngineGet.GetUiEngineControlsWebDir, type.key); string configPath = FileSugar.MergeUrl(item, "config.json"); string code = FileSugar.FileToString(configPath); var controlConfig = code.JsonToModel <ControlConfig>(); type.controlConfig = controlConfig; string itemsPath = FileSugar.MergeUrl(item, "items"); type.items = GetControlList(itemsPath, webTypeDir); return(type); }
/// <summary> /// 生成controller /// </summary> private void BuildController(string controllerDir, string controllerPath, string controllerDomainPath, XDocument doc) { //写入控制器 if (!FileSugar.IsExistFile(controllerPath)) { FileSugar.CreateDirectory(controllerDir); ContainFileToCsproj(@"Areas\{0}\Controllers\{1}App\{1}Controller.cs".ToFormat(_data.AreaName, _data.ControllerName), _solutionDir, _projectName, doc); } //获取controller.cshtml的Model BuildControllerModel controllerModel = new BuildControllerModel() { areaName = _data.AreaName, controllerName = _data.ControllerName, actionName = _data.ActionName, siteName = ConfigSugar.GetAppString("siteName") }; var apiList = _db.Queryable <SysBest_DataApi>().ToList();//获取所有api int addressId = _data.Id; int languageId = _languageId; var eleList = _db.Queryable <SysBest_Element>().Where(it => it.AddressId == addressId && it.LanguageId == languageId).ToList(); var eleApidList = eleList.Where(it => it.ApiId != null && it.ApiId > 0).Select(it => it.ApiId).Distinct().ToList();//获取所有元素 //获取元素表里面的数据接口 controllerModel.apiList = apiList.Join(eleApidList, api => api.Id, ele => ele, (api, ele) => api).ToList(); //获取属性表里面的数据接口 controllerModel.apiList.AddRange(GetDataApiWithEleEventByEleId(eleList)); controllerModel.apiList = controllerModel.apiList.Distinct().ToList(); string controllerCode = GetTemplateCodeByName("controller.cshtml", controllerModel); FileSugar.WriteFile(controllerPath, controllerCode); //写入Domain if (!FileSugar.IsExistFile(controllerDomainPath)) { var domainCode = GetTemplateCodeByName("controller_domain.cshtml", new { controllerName = _data.ControllerName, areaName = _data.AreaName }); FileSugar.WriteFile(controllerDomainPath, domainCode); ContainFileToCsproj(@"Areas\{0}\Controllers\{1}App\Domain\{1}Domain.cs".ToFormat(_data.AreaName, _data.ControllerName), _solutionDir, _projectName, doc); } }
internal void SaveAvatar(SqlSugarClient db, UserInfo user) { //将远程图片下载到本地 if (user.Avatar.IsValuable() && user.Avatar.Contains("http://")) { string path = "/_theme/img/avatar{0}.jpg".ToFormat(user.Id); string savePath = FileSugar.GetMapPath("~" + path); WebClient my = new WebClient(); byte[] mybyte; mybyte = my.DownloadData(user.Avatar.Replace(@"/30", @"/100")); using (MemoryStream ms = new MemoryStream(mybyte)) { System.Drawing.Image img; img = System.Drawing.Image.FromStream(ms); img.Save(savePath, ImageFormat.Jpeg);//保存 } user.Avatar = path; db.Update <UserInfo>(new { Avatar = user.Avatar }, it => it.Id == user.Id); } }
private string GetFileName(Project project, EntitiesGen item) { var p = "."; string name = item.ClassName; project.FileSuffix = project.FileSuffix.TrimStart('.'); if (project.FileSuffix.Contains(".")) { p = null; } if (project.NameFormat != null && project.NameFormat.Contains("@(") && project.NameFormat.Contains(")")) { var format = project.NameFormat.Replace("{0}", "Model.ClassName"); name = TemplateHelper.GetTemplateValue(project.NameFormat + "format", format, item); } else if (!string.IsNullOrEmpty(project.NameFormat)) { name = string.Format(project.NameFormat, item.ClassName); } return(FileSugar.MergeUrl(project.Path, name + p + project.FileSuffix)); }
/// <summary> /// 写入日志文件 /// </summary> /// <param name="ex"></param> public static void WirteExp(Exception ex) { try { var logPath = FileSugar.MergeUrl( FileSugar.GetMapPath("~/"), "log", DateTime.Now.ToString("yyyy-MM-dd") + ".txt" ); if (FileSugar.IsExistFile(logPath).IsFalse()) { FileSugar.CreateFile(logPath); } FileSugar.AppendText(logPath, "***********{0}{1}***********".ToFormat("开始:", DateTime.Now)); FileSugar.AppendText(logPath, ex.Message); FileSugar.AppendText(logPath, "***********{0}***********\r\n".ToFormat("结束")); } catch { } }
public void Excute(int menuAddressId, int languageId, string uiEngineDir) { _uiEngineDir = uiEngineDir; var data = _db.Queryable <SysBest_MenuAddress>().FirstOrDefault(it => it.Id == menuAddressId); _data = data; _languageId = languageId; string areaBoxDir = FileSugar.MergeUrl(_solutionDir, "Areas", data.AreaName); string areaDir = FileSugar.MergeUrl(_solutionDir, "Areas", data.AreaName); string viewsDir = FileSugar.MergeUrl(areaDir, "Views"); string areaRegistrationPath = FileSugar.MergeUrl(areaDir, "{0}AreaRegistration.cs".ToFormat(data.AreaName)); string controllerDir = FileSugar.MergeUrl(areaDir, "Controllers", data.ControllerName + "App"); string controllerDomainDir = FileSugar.MergeUrl(areaDir, "Controllers", data.ControllerName + "App", "Domain"); string controllerDomainPath = FileSugar.MergeUrl(areaDir, "Controllers", data.ControllerName + "App", "Domain", data.ControllerName + "Domain.cs"); string configPath = FileSugar.MergeUrl(viewsDir, "Web.config"); string viewPath = FileSugar.MergeUrl(viewsDir, _data.ControllerName, _data.ActionName + ".cshtml"); var lan = _db.Queryable <SysBest_Language>().FirstOrDefault(it => it.Id == languageId).Suffix; if (lan.IsValuable() && lan != "zh") { viewPath = FileSugar.MergeUrl(viewsDir, _data.ControllerName, _data.ActionName + $"_{lan}.cshtml"); } string controllerPath = FileSugar.MergeUrl(controllerDir, data.ControllerName + "Controller.cs"); string path = _solutionDir + @"\" + _projectName + ".csproj"; try { XDocument doc = XDocument.Load(path); BuildArea(areaDir, viewsDir, controllerDomainDir, areaRegistrationPath, configPath, doc); BuildController(controllerDir, controllerPath, controllerDomainPath, doc); BuildView(viewPath, doc); BuildDatabaseTableTable(); doc.Save(path); } catch (Exception ex) { throw ex; } }
private List <ControlItem> GetControlList(string itemsPath, string webTypeDir) { var reval = new List <ControlItem>(); var controlsDirList = FileSugar.GetDirectories(itemsPath); if (controlsDirList.IsValuable()) { foreach (var item in controlsDirList) { ControlItem control = new ControlItem(); DirectoryInfo di = new DirectoryInfo(item); control.key = di.Name; control.icon = FileSugar.MergeUrl(webTypeDir, "items", control.key, "icon.png"); string configPath = FileSugar.MergeUrl(itemsPath, control.key, "config.json"); string code = FileSugar.FileToString(configPath); var controlConfig = code.JsonToModel <ControlConfig>(); control.controlConfig = controlConfig; reval.Add(control); } } return(reval); }
/// <summary> /// 创建实体文件 /// </summary> /// <param name="db"></param> /// <param name="fileDirectory"></param> /// <param name="nameSpace">命名空间(默认:system)</param> /// <param name="tableOrView">是生成视图文件还是表文件,null生成表和视图,true生成表,false生成视图(默认为:null)</param> /// <param name="callBack">生成文件后的处理,参数string为实体名</param> /// <param name="preAction">生成文件前的处理,参数string为表名</param> public void CreateClassFiles(SqlSugarClient db, string fileDirectory, string nameSpace = null, bool?tableOrView = null, Action <string> callBack = null, Action <string> preAction = null) { var isLog = db.IsEnableLogEvent; db.IsEnableLogEvent = false; string sql = SqlSugarTool.GetCreateClassSql(tableOrView); var tables = db.GetDataTable(sql); if (tables != null && tables.Rows.Count > 0) { foreach (DataRow dr in tables.Rows) { string tableName = dr["name"].ToString(); if (preAction != null) { preAction(tableName); } var currentTable = db.GetDataTable(string.Format(SqlSugarTool.GetSelectTopSql(), GetTableNameWithSchema(db, tableName).GetTranslationSqlName())); if (callBack != null) { var tableColumns = GetTableColumns(db, tableName); var classCode = DataTableToClass(currentTable, tableName, nameSpace, tableColumns); string className = db.GetClassTypeByTableName(tableName); classCode = classCode.Replace("class " + tableName, "class " + className); FileSugar.CreateFile(fileDirectory.TrimEnd('\\') + "\\" + className + ".cs", classCode, Encoding.UTF8); callBack(className); } else { var tableColumns = GetTableColumns(db, tableName); string className = db.GetClassTypeByTableName(tableName); var classCode = DataTableToClass(currentTable, className, nameSpace, tableColumns); FileSugar.CreateFile(fileDirectory.TrimEnd('\\') + "\\" + className + ".cs", classCode, Encoding.UTF8); } } } db.IsEnableLogEvent = isLog; }