public ContentResult Update() { ResultData <string> rt = new ResultData <string>(); SResource resource = GetUpdate <SResource>(); //验证 if (rService.IsNotExits(resource, false)) { if (!rService.IsParentEqSelf(resource)) { rService.UpdateResource(resource); } else { rt.status = -1; rt.message = "父类资源不能是资源本身."; } } else { rt.status = -1; rt.message = "资源名称已经存在."; } return(ReturnResult(rt)); }
/// <summary> /// 递归遍历 /// </summary> /// <param name="parent"></param> /// <param name="resouses"></param> /// <param name="tn"></param> /// <param name="url"></param> /// <returns></returns> private static List <TreeNode> GetTree(SResource parent, List <SResource> resouses, TreeNode tp, string url) { List <TreeNode> tns = new List <TreeNode>(); string curUrl = url.Substring(1, url.LastIndexOf("/")); List <SResource> children = resouses.Select(r => r).Where(t => t.ParentID == parent.ID).ToList(); foreach (SResource child in children) { TreeNode tn = new TreeNode(); tn.id = "tree" + child.ID; tn.text = string.IsNullOrEmpty(child.ResourceDesc) ? "菜单" : child.ResourceDesc; tn.href = string.IsNullOrEmpty(child.ResourceURL) ? "javascript:###;" : child.ResourceURL; tn.name = child.ResourceName; tn.level = 2; tn.children = GetTree(child, resouses, tn, url); if (tn.children.Count > 0) { tn.iconCls = "iconfont icon-folder"; } else { tn.iconCls = "iconfont icon-file"; } if (tn.href.LastIndexOf(curUrl) > -1) { tn.state = "active"; tp.state = "active"; } tns.Add(tn); } return(tns); }
/// <summary> /// 添加资源 /// </summary> /// <param name="resource"></param> /// <returns></returns> public object AddResource(SResource resource) { DatabaseContext dbContext = rRepository.DbCondext; try { dbContext.BeginTransaction(); //添加资源 添加按钮 object id = rRepository.Insert(resource); foreach (SOperator o in resource.Operators) { o.ResourceID = Convert.ToInt32(id); o.OperatorDesc = o.OperatorName; oRepository.Insert(o); } dbContext.CompleteTransaction(); return(id); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } }
/// <summary> /// 判断父类组织是否等于当前组织 /// </summary> /// <param name="org"></param> /// <returns></returns> public bool IsParentEqSelf(SResource resource) { if (resource.ParentID == 0) { return(false); } return(resource.ParentID == resource.ID); }
/// <summary> /// 递归 /// </summary> /// <param name="parent"></param> /// <param name="orgs"></param> /// <returns></returns> private void GetChildTree(SResource parent, List <SResource> resources) { List <SResource> children = resources.Select(t => t).Where(o => o.ParentID == parent.ID).ToList(); foreach (SResource child in children) { parent.Children.Add(child); GetChildTree(child, resources); } }
/// <summary> /// 根据菜单获取按钮列表 /// </summary> /// <param name="parentTn"></param> /// <param name="resource"></param> public void GetOperatiors(TreeNode parentTn, SResource resource) { List <SOperator> opts = resService.GetOperatorByResource(resource.ID); foreach (SOperator opt in opts) { TreeNode tn = new TreeNode(); tn.id = "btn" + opt.ID.ToString(); //防止按钮id和菜单id冲突,所以添加btn前缀 tn.text = opt.OperatorDesc; tn.name = "btn"; parentTn.children.Add(tn); } }
/// <summary> /// 构建子节点 /// </summary> /// <param name="resource"></param> /// <param name="parentTn"></param> public void BuildChildTree(SResource resource, TreeNode parentTn) { foreach (SResource res in resource.Children) { TreeNode tn = new TreeNode(); tn.id = res.ID.ToString(); tn.text = res.ResourceDesc; tn.name = res.ResourceName; if (res.Children.Count > 0) { BuildChildTree(res, tn); } parentTn.children.Add(tn); } }
/// <summary> /// 查询所有子资源(包括本身) /// </summary> /// <param name="parent"></param> /// <param name="resources"></param> public void GetResourceWithChildren(SResource parent, List <SResource> resources) { if (parent == null) { return; } resources.Add(parent); List <SResource> children = GetChildResource(parent.ID); foreach (SResource child in children) { GetResourceWithChildren(child, resources); } }
/// <summary> /// 递归遍历 /// </summary> /// <param name="parent"></param> /// <param name="resouses"></param> /// <param name="tn"></param> /// <param name="url"></param> /// <returns></returns> public List <TreeNode> GetTree(SResource parent, List <SResource> resouses) { List <TreeNode> tns = new List <TreeNode>(); List <SResource> children = resouses.Select(r => r).Where(t => t.ParentID == parent.ID).ToList(); foreach (SResource child in children) { TreeNode tn = new TreeNode(); tn.id = "tree" + child.ID; tn.text = child.ResourceDesc; tn.href = child.ResourceURL; tn.name = child.ResourceName; tn.children = GetTree(child, resouses); tns.Add(tn); } return(tns); }
/// <summary> /// 递归 /// </summary> /// <param name="parent"></param> /// <param name="resources"></param> /// <returns></returns> private void GetResouceTree(SResource parent, List <SResource> resources) { List <SResource> children = resources.Select(t => t).Where(o => o.ParentID == parent.ID).ToList(); if (children.Count > 0) { foreach (SResource child in children) { parent.Children.Add(child); GetResouceTree(child, resources); } } else if (!string.IsNullOrWhiteSpace(parent.ResourceURL)) { List <SOperator> ops = rRepository.GetOperatorByResource(parent.ID); foreach (SOperator child in ops) { parent.Operators.Add(child); } } }
/// <summary> /// 更新 /// </summary> /// <param name="resource"></param> public void UpdateResource(SResource resource) { DatabaseContext dbContext = rRepository.DbCondext; try { dbContext.BeginTransaction(); rRepository.Update(resource); foreach (SOperator o in resource.Operators) { switch (o.CURD) { case "add": o.ResourceID = resource.ID; o.OperatorDesc = o.OperatorName; oRepository.Insert(o); break; case "delete": oRepository.Delete(o); break; default: o.OperatorDesc = o.OperatorName; oRepository.Update(o); break; } } dbContext.CompleteTransaction(); } catch (Exception ex) { dbContext.AbortTransaction(); throw ex; } }
public ContentResult SearchSingle(int Id) { SResource res = rService.GetResourcByID(Id); return(ReturnResult(res)); }
/// <summary> /// 判断是否存在 /// </summary> /// <param name="resource"></param> /// <param name="isAdd"></param> /// <returns></returns> public bool IsNotExits(SResource resource, bool isAdd) { return(rRepository.IsNotExits(resource, isAdd)); }