Exemplo n.º 1
0
        public List <MenuViewModel> GetAllChildrenMenuByPath(string parentId)
        {
            List <MenuViewModel> treeNodes = new List <MenuViewModel>();
            Sql sql = new Sql();

            sql.Where("Path like @0", parentId + "%");
            sql.Where("MenuId <>@0", parentId);
            sql.OrderBy("SortId ASC");   //默认ASC升序,降序为DESC
            List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            foreach (var menu in menus)
            {
                MenuViewModel treeNode = new MenuViewModel
                {
                    Id        = menu.MenuId.ToString(),
                    Text      = menu.Text,
                    IconClass = menu.IconClass,
                    ParentId  = parentId
                };
                if (menu.Url != null)
                {
                    treeNode.Attributes = new { url = menu.Url }
                }
                ;
                treeNodes.Add(menu.ToDto());
            }
            return(treeNodes);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 验证编码或菜单名称重复问题
        /// </summary>
        private void ValidateUpdateCodeRepeatAndTextRepeat(BeiDream_Menu beiDreamMenu)
        {
            Sql sqlCode = new Sql();

            sqlCode.Where("Code=@Code and MenuId<>@MenuId", new { Code = beiDreamMenu.Code, MenuId = beiDreamMenu.MenuId });
            List <BeiDream_Menu> menusCode = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sqlCode);

            if (menusCode == null || menusCode.Count == 0)
            {
                Sql sql = new Sql();
                sql.Where("Text=@Text and MenuId<>@MenuId", new { Text = beiDreamMenu.Text, MenuId = beiDreamMenu.MenuId });
                List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);
                if (menus == null || menus.Count == 0)
                {
                    return;
                }
                else
                {
                    throw new Warning(string.Format("菜单 '{0}' 已存在,请修改", "名称"));
                }
            }
            else
            {
                throw new Warning(string.Format("菜单 '{0}' 已存在,请修改", "编码"));
            }
        }
Exemplo n.º 3
0
        private string GetNextParentId(string parentId)
        {
            BeiDream_Menu beiDreamMenu =
                PetaPocoHelper.GetInstance().SingleOrDefault <BeiDream_Menu>((object)parentId);

            return(beiDreamMenu != null?beiDreamMenu.ParentId.ToString() : null);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 根据导航菜单ID获取其下面的菜单树(通过查找物理路径方式)
        /// </summary>
        /// <param name="parentId"></param>
        /// <returns></returns>
        public List <ITreeNode> GetNavigationMenuTreeByPath(string parentId)
        {
            List <ITreeNode> treeNodes = new List <ITreeNode>();
            Sql sql = new Sql();

            sql.Where("Path like @0", parentId + "%");
            sql.Where("MenuId <>@0", parentId);
            sql.OrderBy("SortId ASC");   //默认ASC升序,降序为DESC
            List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            foreach (var menu in menus)
            {
                TreeNode treeNode = new TreeNode
                {
                    Id        = menu.MenuId.ToString(),
                    Text      = menu.Text,
                    IconClass = menu.IconClass,
                    ParentId  = menu.ParentId.ToString()
                };
                if (menu.Url != null)
                {
                    treeNode.Attributes = new { url = menu.Url }
                }
                ;
                treeNodes.Add(treeNode);
            }
            return(treeNodes);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 保存操作
        /// </summary>
        /// <param name="addList"></param>
        /// <param name="updateList"></param>
        /// <param name="deleteList"></param>
        /// <returns></returns>
        public List <MenuViewModel> Save(List <MenuViewModel> addList, List <MenuViewModel> updateList, List <MenuViewModel> deleteList)
        {
            SaveBefore(addList, updateList, deleteList);
            var           _addList    = addList.Select(ToEntity).Distinct().ToList();
            var           _updateList = updateList.Select(ToEntity).Distinct().ToList();
            var           _deleteList = deleteList.Select(ToEntity).Distinct().ToList();
            List <string> ids         = GetIds(_addList, _updateList, _deleteList);

            //修正增改数据的Path和level
            new TreeServiceHelper(_addList, _updateList);
            #region 保存操作数据到数据库的事,物
            var dbContext = PetaPocoHelper.GetInstance();
            dbContext.BeginTransaction();
            try
            {
                foreach (var addModel in _addList)
                {
                    AddInit(addModel);
                    dbContext.Insert(addModel);
                }
                foreach (var updateModel in _updateList)
                {
                    UpdateInit(updateModel);

                    dbContext.Update(updateModel);
                }
                foreach (var deleteModel in _deleteList)
                {
                    dbContext.Delete <BeiDream_Menu>(deleteModel.MenuId);
                    List <MenuViewModel> childrenMenus = this.GetAllChildrenMenuByPath(deleteModel.MenuId.ToString());
                    if (childrenMenus == null || childrenMenus.Count == 0)
                    {
                        continue;
                    }
                    else
                    {
                        foreach (var childrenMenu in childrenMenus)
                        {
                            dbContext.Delete <BeiDream_Menu>((object)childrenMenu.Id);
                        }
                    }
                }
                dbContext.CompleteTransaction();
            }
            catch (Exception ex)
            {
                dbContext.AbortTransaction();
                throw new Warning(ex);
            }
            #endregion
            Sql sql = new Sql();
            foreach (var id in ids)
            {
                sql.WhereOR("MenuId=@0", id);
            }
            List <BeiDream_Menu> returnList = dbContext.Fetch <BeiDream_Menu>(sql);
            return(returnList.Select(ToDto).ToList());
        }
Exemplo n.º 6
0
        /// <summary>
        /// 获取所有的菜单管理树节点
        /// </summary>
        /// <returns></returns>
        public List <MenuViewModel> GetAllTreeNodes()
        {
            Sql sql = new Sql();

            sql.OrderBy("SortId ASC");   //默认ASC升序,降序为DESC
            List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            return(menus.Select(menu => menu.ToDto()).ToList());
        }
Exemplo n.º 7
0
        public List <MenuViewModel> GetNavigationMenu()
        {
            Sql sql = new Sql();

            sql.Where("Level=@0", 1);
            sql.OrderBy("SortId ASC");   //默认ASC升序,降序为DESC
            List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            return(menus.Select(menu => menu.ToDto()).ToList());
        }
Exemplo n.º 8
0
        /// <summary>
        /// 根据父ID找到其下的菜单管理子节点
        /// </summary>
        /// <param name="parentId"></param>
        /// <returns></returns>
        public List <MenuViewModel> GetMenuManageChildrenNodes(string parentId)
        {
            Sql sql = new Sql();

            sql.Where("ParentId=@0", parentId);
            sql.OrderBy("SortId ASC");   //默认ASC升序,降序为DESC
            List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            return(menus.Select(menu => menu.ToDto()).ToList());
        }
Exemplo n.º 9
0
        /// <summary>
        /// 获取全部下级实体
        /// </summary>
        /// <param name="parent">父实体</param>
        protected virtual List <BeiDream_Menu> GetAllChilds(BeiDream_Menu parent)
        {
            Sql sql = new Sql();

            sql.Where("Path like @0", parent.Path + "%");
            sql.Where("MenuId <>@0", parent.MenuId);
            sql.OrderBy("SortId ASC");   //默认ASC升序,降序为DESC
            List <BeiDream_Menu> list = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            return(list.Where(t => !t.MenuId.Equals(parent.MenuId)).ToList());
        }
Exemplo n.º 10
0
        /// <summary>
        /// 获取新增行的此层级的排序id
        /// </summary>
        /// <param name="parentId"></param>
        /// <returns></returns>
        private int GetSortId(string parentId)
        {
            Sql sql = new Sql();

            sql.Where(string.IsNullOrEmpty(parentId) ? "ParentId is null" : "ParentId=@0", parentId);
            sql.OrderBy("SortId DESC");   //默认ASC升序,降序为DESC
            BeiDream_Menu beiDreamMenu = PetaPocoHelper.GetInstance().FirstOrDefault <BeiDream_Menu>(sql);

            if (beiDreamMenu == null)
            {
                return(0);
            }
            return(beiDreamMenu.SortId + 1);
        }
Exemplo n.º 11
0
        /// <summary>
        /// 验证编码重复问题
        /// </summary>
        private void ValidateAddCodeRepeatAndTextRepeat(BeiDream_Menu beiDreamMenu)
        {
            Sql sql = new Sql();

            sql.Where("Code=@Code  or Text=@Text", new { beiDreamMenu.Code, beiDreamMenu.Text });
            List <BeiDream_Menu> menus = PetaPocoHelper.GetInstance().Fetch <BeiDream_Menu>(sql);

            if (menus == null || menus.Count == 0)
            {
                return;
            }
            else
            {
                throw new Warning(string.Format("菜单 '{0}' 已存在,请修改", "编码"));
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 版本号,乐观离线锁通过为每行数据添加一个版本号来识别当前数据的版本,在获取数据时将版本号保存下来,
        /// 更新数据时将版本号作为Where中的过滤条件,如果该记录被更新,则版本号会发生变化,所以导致更新数据时影响行数为0,
        /// 通过引发一个并发更新异常让你了解数据已经被别人更新。
        /// </summary>
        //验证版本号
        private bool ValidateVersion(BeiDream_Menu newBeiDreamMenu)
        {
            BeiDream_Menu oldBeiDreamMenu =
                PetaPocoHelper.GetInstance().SingleOrDefault <BeiDream_Menu>(newBeiDreamMenu.MenuId);

            if (newBeiDreamMenu.Version == null)
            {
                return(false);
            }
            for (int i = 0; i < oldBeiDreamMenu.Version.Length; i++)
            {
                if (newBeiDreamMenu.Version[i] != oldBeiDreamMenu.Version[i])
                {
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 13
0
        /// <summary>
        /// 获取父节点被修改的集合
        /// </summary>
        private List <BeiDream_Menu> GetParentChanges()
        {
            var result = new List <BeiDream_Menu>();

            UpdateList.ForEach(t =>
            {
                var entity = PetaPocoHelper.GetInstance().SingleOrDefault <BeiDream_Menu>(t.MenuId);
                if (entity == null)
                {
                    return;
                }
                if (t.ParentId.Equals(entity.ParentId))
                {
                    return;
                }
                result.Add(t);
            });
            FilterByPath(result);
            return(result);
        }
Exemplo n.º 14
0
 public void Delete(BeiDream_Menu beiDreamMenu)
 {
     PetaPocoHelper.GetInstance().Delete(beiDreamMenu);
 }
Exemplo n.º 15
0
 public void Update(BeiDream_Menu beiDreamMenu)
 {
     UpdateInit(beiDreamMenu);
     PetaPocoHelper.GetInstance().Update(beiDreamMenu);
 }
Exemplo n.º 16
0
 public void Add(BeiDream_Menu beiDreamMenu)
 {
     AddInit(beiDreamMenu);
     PetaPocoHelper.GetInstance().Insert(beiDreamMenu);
 }
Exemplo n.º 17
0
        /// <summary>
        /// 获取父节点
        /// </summary>
        private BeiDream_Menu GetParent(BeiDream_Menu entity)
        {
            var result = _pathChangeList.Find(t => t.MenuId.Equals(entity.ParentId));

            return(result ?? PetaPocoHelper.GetInstance().SingleOrDefault <BeiDream_Menu>(entity.ParentId));
        }