public override void AfterDynamicObjectInsert(FapDynamicObject fapDynamicData) { FapMenu menu = ToFapMenu(fapDynamicData); _dbContext.Insert(new FapMultiLanguage { Qualifier = MultiLanguageOriginEnum.Menu.ToString(), LangKey = menu.Fid, LangValue = menu.MenuName }); RefreshCache(); }
public override void BeforeDynamicObjectUpdate(FapDynamicObject fapDynamicData) { FapMenu menu = ToFapMenu(fapDynamicData); FapMenu oriMenu = _dbContext.Get <FapMenu>(menu.Fid); if (!menu.MenuName.Equals(oriMenu.MenuName)) { string langkey = menu.Fid; string updateMultisql = $"Update {nameof(FapMultiLanguage)} set {nameof(FapMultiLanguage.LangValue)}=@LangValue where Qualifier=@Qualifier and LangKey=@LangKey"; var param = new Dapper.DynamicParameters(new { Qualifier = MultiLanguageOriginEnum.Menu.ToString(), LangKey = langkey, LangValue = menu.MenuName }); _dbContext.Execute(updateMultisql, param); } RefreshCache(); }
public bool TryGetValueByPath(string path, out FapMenu fapMenu) { if (!_initialized) { Init(); } var result = _allMenus.FirstOrDefault <FapMenu>(f => f.MenuUrl == path); if (result != null) { fapMenu = result; return(true); } fapMenu = null; return(false); }
public bool TryGetValue(string fid, out FapMenu fapMenu) { if (!_initialized) { Init(); } var result = _allMenus.FirstOrDefault <FapMenu>(f => f.Fid == fid); if (result != null) { fapMenu = result; return(true); } fapMenu = null; return(false); }
public List <MenuItem> BuildMenus() { string ceoModuleUid = "f4ce11e59cad54031d2f"; //经理自主模块Fid string mgrModuleUid = "23b611e6b65e40b5abc8"; List <MenuItem> menus = new List <MenuItem>(); List <FapMenu> threeLevel = new List <FapMenu>(); List <FapModule> modules = new List <FapModule>(); bool isDeptManager = _rbacService.IsDeptManager(); bool isCEO = _rbacService.IsCEO(); //获取权限菜单 IEnumerable <FapRoleMenu> roleMenuUids = _rbacService.GetRoleMenuList(_applicationContext.CurrentRoleUid); if (roleMenuUids.Any()) { List <FapMenu> roleMenus = new List <FapMenu>(); foreach (var rm in roleMenuUids) { FapMenu fm; if (_platformDomain.MenuSet.TryGetValue(rm.MenuUid, out fm)) { //经理自助菜单权限 只有部门经理或者负责人具有 if (!isDeptManager && fm.ModuleUid == mgrModuleUid) { continue; } if (!isCEO && fm.ModuleUid == ceoModuleUid) { continue; } if (fm.MenuCode.Length > 5) { //如果没有二级菜单授权,这里要加上。 string parentCode = fm.MenuCode.Substring(0, 5); if (!roleMenus.Exists(m => m.MenuCode == parentCode)) { var pmenu = _platformDomain.MenuSet.FirstOrDefault <FapMenu>(m => m.MenuCode == parentCode); if (pmenu != null) { roleMenus.Add(pmenu); } } } if (!roleMenus.Contains(fm)) { roleMenus.Add(fm); } } } var roleMenusOrder = roleMenus.OrderBy(m => m.MenuOrder); foreach (var fm in roleMenusOrder) { //仅仅处理二级菜单 if (fm.MenuUrl.IsMissing()) { continue; } if (fm.ActiveFlag == 0) { continue; } if (fm.MenuCode.Length > 5) { threeLevel.Add(fm); continue; } string menuText = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Menu, fm.Fid); MenuItem fmm = new MenuItem { Text = menuText, Value = fm.MenuCode, NavigateUrl = fm.MenuUrl, ToolTip = fm.BadgePlusClass }; FapModule fmd; //是模块的时候 if (_platformDomain.ModuleSet.TryGetValue(fm.ModuleUid, out fmd)) { MenuItem mmd = null; menuText = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Module, fmd.Fid); if (!modules.Contains(fmd)) { modules.Add(fmd); mmd = new MenuItem { Text = menuText, NavigateUrl = "", Value = fmd.ModuleCode, ImageUrl = fmd.Icon, Target = fmd.ModuleOrder.ToString() }; mmd.ChildItems.Add(fmm); menus.Add(mmd); } else { mmd = menus.Find(m => m.Text == menuText); mmd.ChildItems.Add(fmm); } } } } //管理员账号 增加系统管理菜单 if (_applicationContext.UserName == FapPlatformConstants.Administrator) { //检查系统菜单,如果有就移除 var sysModule = _platformDomain.ModuleSet.FirstOrDefault(m => m.ModuleCode == "099"); if (sysModule != null) { var sysMenu = menus.Find(m => m.Value == sysModule.ModuleCode); if (sysMenu != null) { menus.Remove(sysMenu); modules.Remove(sysModule); } } //重新增加系统菜单 IEnumerator <FapMenu> ms = _platformDomain.MenuSet.Where(m => m.MenuCode.StartsWith("099", System.StringComparison.OrdinalIgnoreCase)).OrderBy(m => m.MenuOrder).GetEnumerator(); while (ms.MoveNext()) { FapMenu fm = ms.Current; if (fm.ActiveFlag == 0) { continue; } //仅仅处理二级菜单 if (fm.MenuUrl.IsMissing()) { continue; } if (fm.MenuCode.Length > 5) { threeLevel.Add(fm); continue; } string mx = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Menu, fm.Fid); //菜单 MenuItem fmm = new MenuItem { Text = mx, NavigateUrl = fm.MenuUrl, Value = fm.MenuCode, ToolTip = fm.BadgePlusClass }; FapModule fmd; if (_platformDomain.ModuleSet.TryGetValue(fm.ModuleUid, out fmd)) { mx = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Module, fmd.Fid); if (!modules.Contains(fmd)) { modules.Add(fmd); //模块 MenuItem mmd = new MenuItem { Text = mx, NavigateUrl = "", ImageUrl = fmd.Icon, Value = fmd.ModuleCode, Target = fmd.ModuleOrder.ToString() }; mmd.ChildItems.Add(fmm); menus.Add(mmd); } else { menus.Find(m => m.Text == mx).ChildItems.Add(fmm); } } } } //处理三级菜单 if (threeLevel.Any()) { var threeMenus = threeLevel.OrderBy(m => m.MenuOrder); foreach (var menu in threeMenus) { //找到所在的模块 var module = menus.Find(m => menu.MenuCode.StartsWith(m.Value, System.StringComparison.OrdinalIgnoreCase)); if (module != null && module.ChildItems != null && module.ChildItems.Count > 0) { foreach (MenuItem item in module.ChildItems) { if (menu.MenuCode.StartsWith(item.Value, System.StringComparison.OrdinalIgnoreCase) && item.Value.Length == 5) { string mx = _multiLangService.GetMultiLangValue(MultiLanguageOriginEnum.Menu, menu.Fid); MenuItem fmm = new MenuItem { Text = mx, Value = menu.MenuCode, NavigateUrl = menu.MenuUrl, ToolTip = menu.BadgePlusClass }; item.ChildItems.Add(fmm); break; } } } } } return(menus); }