コード例 #1
0
        public JsonResult SavePageContent(SysBest_PageContent sp)
        {
            SysBest_PageContentService service = new SysBest_PageContentService(_db);

            service.SavePageContent(sp, "聪哥");
            ActionResultModel <string> model = new ActionResultModel <string>();

            model.isSuccess = true;
            return(Json(model, JsonRequestBehavior.AllowGet));
        }
コード例 #2
0
        /// <summary>
        /// 保存 page Content
        /// </summary>
        /// <param name="sp"></param>
        /// <param name="userName"></param>
        public void SavePageContent(SysBest_PageContent sp, string userName)
        {
            var id = sp.Id;

            try
            {
                _db.BeginTran();
                Expression <Func <SysBest_PageContent, bool> > whereExpress = it => it.AddressId == sp.AddressId && it.LanguageId == sp.LanguageId;
                var isAny = _db.Queryable <SysBest_PageContent>().Any(whereExpress);
                if (isAny)
                {
                    var data = _db.Queryable <SysBest_PageContent>().Single(whereExpress);
                    data.Html         = sp.Html;
                    data.layout       = sp.layout;
                    data.ModifiedBy   = userName;
                    data.ModifiedTime = DateTime.Now;
                    _db.Update(data);
                    id = data.Id;
                }
                else
                {
                    sp.Sort       = 0;
                    sp.Founder    = userName;
                    sp.CreateTime = DateTime.Now;
                    id            = _db.Insert(sp).TryToInt();
                }
                //表单中的所有控件html id
                List <string> formHtmlIdList = GetHtmlIdListByPageContent(sp);


                //数据库中存在的html
                var dbIdList = _db.Queryable <SysBest_Element>().Where(it => it.AddressId == sp.AddressId && it.LanguageId == sp.LanguageId).ToList().Select(it => it.Html_Id).ToList();

                //在数据中,但是不在表单里面的需要删除
                var delHtmlIdList = dbIdList.Where(it => formHtmlIdList.Any(htmlId => htmlId == it).IsFalse()).ToList();//不存在content里面的元素需要删除
                foreach (var it in delHtmlIdList)
                {
                    _db.Delete <SysBest_Element>(m => m.Html_Id == it);
                }
                //插入备份
                InsertElementItemBak(sp.AddressId, sp.LanguageId, _db);

                //处理其它页面控件的HTMLID
                distinctHtmlIdList(sp, formHtmlIdList);

                _db.CommitTran();
            }
            catch (Exception ex)
            {
                _db.RollbackTran();
                throw ex;
            }
        }
コード例 #3
0
 /// <summary>
 /// 获取PageContent里面的 htmlid集合
 /// </summary>
 /// <param name="sp"></param>
 /// <returns></returns>
 public List <string> GetHtmlIdListByPageContent(SysBest_PageContent sp)
 {
     return(Regex.Matches(sp.Html.TryToString(), @"data\-id\=""(randId_.+?)""")
            .Cast <Match>()
            .Select(it => it.Groups[1].Value).ToList());
 }
コード例 #4
0
 private void distinctHtmlIdList(SysBest_PageContent sp, List <string> formHtmlIdList)
 {
     foreach (var htmlId in formHtmlIdList)
     {
         var oldList = _db.Queryable <SysBest_Element>()
                       .Where(it => it.AddressId != sp.AddressId || it.LanguageId != sp.LanguageId)
                       .Where(it => it.Html_Id == htmlId).ToList();
         if (oldList.Any())
         {
             var oldElement = oldList.Single();
             var oldAttr    = _db.Queryable <SysBest_ElementAttr>().Where(it => it.ElementId == oldElement.Id).ToList();
             var oldEvent   = _db.Queryable <SysBest_ElementEvent>().Where(it => it.ElementId == oldElement.Id).ToList();
             var newHtmlId  = "randId_" + Guid.NewGuid().ToString().Replace("-", "");
             //替换现成HTML里面的 HTMLID
             sp.Html = sp.Html.Replace(htmlId, newHtmlId);
             _db.Update <SysBest_PageContent>(new { Html = sp.Html }, it => it.AddressId == sp.AddressId && it.LanguageId == sp.LanguageId);
             var newElement = new SysBest_Element()
             {
                 AddressId  = sp.AddressId,
                 LanguageId = sp.LanguageId,
                 Html_Id    = newHtmlId,
                 //取原始属性
                 ApiId       = oldElement.ApiId,
                 CreateTime  = DateTime.Now,
                 Description = oldElement.Description,
                 ElementType = oldElement.ElementType,
                 EleName     = oldElement.EleName,
                 Founder     = oldElement.Founder,
                 Sort        = oldElement.Sort
             };
             //插入新元素
             var id = _db.Insert <SysBest_Element>(newElement).TryToInt();
             //插入新元素属性
             foreach (var it in oldAttr)
             {
                 var attr = new SysBest_ElementAttr()
                 {
                     CreateTime = DateTime.Now,
                     ElementId  = id,
                     Founder    = it.Founder,
                     Key        = it.Key,
                     Value      = it.Value,
                     LinkId     = newElement.AddressId,
                     Sort       = it.Sort
                 };
                 _db.Insert <SysBest_ElementAttr>(attr).TryToInt();
             }
             ;
             //插入新元素事件
             foreach (var it in oldEvent)
             {
                 var even = new SysBest_ElementEvent()
                 {
                     CreateTime = DateTime.Now,
                     ElementId  = id,
                     Founder    = it.Founder,
                     Key        = it.Key,
                     Value      = it.Value,
                     LinkId     = newElement.AddressId,
                     Sort       = it.Sort,
                     EventType  = it.EventType,
                     Pars       = it.Pars,
                 };
                 _db.Insert <SysBest_ElementEvent>(even).TryToInt();
             }
             ;
         }
     }
 }