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);
        }
Exemple #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            var path     = Server.MapPath(@"~\TestFIle\ok.docx");
            var pathName = FileSugar.GetFileName(path);

            ResponseSugar.ResponseFile(path, pathName);
        }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
        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);
        }
Exemple #10
0
        /// <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
            });
        }
Exemple #14
0
        //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);
        }
Exemple #15
0
        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));
        }
Exemple #16
0
        /// <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);
            }
        }
Exemple #18
0
        //获取插入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);
        }
Exemple #19
0
        /// <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));
        }
Exemple #22
0
        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);
            }
        }
Exemple #23
0
        /// <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);
     }
 }
Exemple #26
0
        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));
        }
Exemple #27
0
 /// <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;
            }
        }
Exemple #29
0
        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);
        }
Exemple #30
0
        /// <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;
        }