///<summary>组合菜单全路径</summary> ///<param name="param">菜单信息</param> ///<returns></returns> public string CombineFullPath(ApplicationMenuInfo param) { string fullPath = string.Empty; fullPath = param.Name; ApplicationMenuInfo parent = param.Parent; int depthCount = 0; while (parent != null) { fullPath = string.Format("{0}\\{1}", parent.Name, fullPath); parent = parent.Parent; // 如果深度超过50层,则跳出循环。(可能陷入死循环) if (depthCount++ > 50) { break; } } if (param.MenuType == "ApplicationMenu") { fullPath = string.Format("{0}\\{1}", param.ApplicationDisplayName, fullPath); } else { fullPath = string.Format("{0}\\{1}", param.MenuTypeView, fullPath); } return(fullPath); }
///<summary>同步信息</summary> ///<param name="param">应用菜单信息</param> public void SyncFromPackPage(ApplicationMenuInfo param) { param.FullPath = CombineFullPath(param); this.provider.SyncFromPackPage(param); this.BindAuthorizationScopeObjects(param.Id, "应用_通用_查看权限", param.AuthorizationReadScopeObjectText); }
// ------------------------------------------------------- // 查询 // ------------------------------------------------------- #region 函数:FindOne(string id) /// <summary>查询某条记录</summary> /// <param name="id">标识</param> /// <returns>返回实例<see cref="ApplicationMenuInfo"/>的详细信息</returns> public ApplicationMenuInfo FindOne(string id) { Dictionary <string, object> args = new Dictionary <string, object>(); args.Add("Id", StringHelper.ToSafeSQL(id)); ApplicationMenuInfo param = this.ibatisMapper.QueryForObject <ApplicationMenuInfo>(StringHelper.ToProcedurePrefix(string.Format("{0}_FindOne", tableName)), args); return(param); }
// ------------------------------------------------------- // 添加 删除 修改 // ------------------------------------------------------- #region 函数:Save(ApplicationMenuInfo param) /// <summary>保存记录</summary> /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param> /// <returns>实例<see cref="ApplicationMenuInfo"/>详细信息</returns> public ApplicationMenuInfo Save(ApplicationMenuInfo param) { if (!IsExist(param.Id)) { Insert(param); } else { Update(param); } return((ApplicationMenuInfo)param); }
// ------------------------------------------------------- // 查询 // ------------------------------------------------------- #region 函数:FindOne(XmlDocument doc) /// <summary>获取详细信息</summary> /// <param name="doc">Xml 文档对象</param> /// <returns>返回操作结果</returns> public string FindOne(XmlDocument doc) { StringBuilder outString = new StringBuilder(); string id = XmlHelper.Fetch("id", doc); ApplicationMenuInfo param = this.service.FindOne(id); outString.Append("{\"data\":" + AjaxUtil.Parse <ApplicationMenuInfo>(param) + ","); outString.Append(MessageObject.Stringify("0", I18n.Strings["msg_query_success"], true) + "}"); return(outString.ToString()); }
// ------------------------------------------------------- // 保存 删除 // ------------------------------------------------------- #region 函数:Save(XmlDocument doc) /// <summary>保存记录</summary> /// <param name="doc">Xml 文档对象</param> /// <returns>返回操作结果</returns> public string Save(XmlDocument doc) { ApplicationMenuInfo param = new ApplicationMenuInfo(); string authorizationReadScopeObjectText = XmlHelper.Fetch("authorizationReadScopeObjectText", doc); param = (ApplicationMenuInfo)AjaxUtil.Deserialize(param, doc); this.service.Save(param); this.service.BindAuthorizationScopeObjects(param.Id, "应用_通用_查看权限", authorizationReadScopeObjectText); return(MessageObject.Stringify("0", I18n.Strings["msg_save_success"])); }
/// <summary>表单</summary> /// <returns></returns> public ActionResult Form(string options) { // 所属应用信息 ApplicationInfo application = ViewBag.application = AppsContext.Instance.ApplicationService[APPLICATION_NAME]; // ------------------------------------------------------- // 身份验证 // ------------------------------------------------------- if (!AppsSecurity.IsAdministrator(KernelContext.Current.User, application.ApplicationName)) { ApplicationError.Write(401); } // ------------------------------------------------------- // 数据加载 // ------------------------------------------------------- JsonData request = JsonMapper.ToObject(options); string id = JsonHelper.GetDataValue(request, "id"); ApplicationMenuInfo param = new ApplicationMenuInfo(); if (string.IsNullOrEmpty(id)) { string applicationId = JsonHelper.GetDataValue(request, "applicationId", "00000000-0000-0000-0000-000000000001"); string menuId = JsonHelper.GetDataValue(request, "menuId", "00000000-0000-0000-0000-000000000000"); string menuType = JsonHelper.GetDataValue(request, "menuType", "00000000-0000-0000-0000-000000000000"); param.Id = DigitalNumberContext.Generate("Key_Guid"); param.ApplicationId = applicationId; param.ParentId = menuId; param.MenuType = menuType; param.Status = 1; } else { param = AppsContext.Instance.ApplicationMenuService.FindOne(id); } ViewBag.param = param; return(View("/views/main/applications/application-menu-form.cshtml")); }
// ------------------------------------------------------- // 权限 // ------------------------------------------------------- #region 私有函数:GetAuthorizationReadObject(ApplicationMenuInfo param) ///<summary>验证对象的权限</summary> ///<param name="param">需验证的对象</param> ///<returns>对象</returns> private ApplicationMenuInfo GetAuthorizationReadObject(ApplicationMenuInfo param) { IAccountInfo account = KernelContext.Current.User; if (AppsSecurity.IsAdministrator(account, AppsConfiguration.ApplicationName)) { return(param); } else { if (MembershipAuthorizationScopeManagement.Authenticate(param.AuthorizationReadScopeObjects, account)) { return(param); } return(null); } }
// ------------------------------------------------------- // 保存 删除 // ------------------------------------------------------- #region 函数:Save(ApplicationMenuInfo param) /// <summary>保存记录</summary> /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param> /// <returns>实例<see cref="ApplicationMenuInfo"/>详细信息</returns> public ApplicationMenuInfo Save(ApplicationMenuInfo param) { param.FullPath = CombineFullPath(param); return(this.provider.Save(param)); }
// ------------------------------------------------------- // 同步管理 // ------------------------------------------------------- #region 函数:SyncFromPackPage(ApplicationMenuInfo param) ///<summary>同步信息</summary> ///<param name="param">应用菜单信息</param> public void SyncFromPackPage(ApplicationMenuInfo param) { ibatisMapper.Insert(StringHelper.ToProcedurePrefix(string.Format("{0}_SyncFromPackPage", tableName)), param); }
/// <summary>修改记录</summary> /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param> public void Update(ApplicationMenuInfo param) { this.ibatisMapper.Update(StringHelper.ToProcedurePrefix(string.Format("{0}_Update", tableName)), param); }
/// <summary>添加记录</summary> /// <param name="param">实例<see cref="ApplicationMenuInfo"/>详细信息</param> public void Insert(ApplicationMenuInfo param) { param.Code = DigitalNumberContext.Generate("Table_Application_Menu_Key_Code"); this.ibatisMapper.Insert(StringHelper.ToProcedurePrefix(string.Format("{0}_Insert", tableName)), param); }