コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: MenuSet.cs プロジェクト: zeroyou/FapCore3.0
        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);
        }
コード例 #4
0
ファイル: MenuSet.cs プロジェクト: zeroyou/FapCore3.0
        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);
        }
コード例 #5
0
        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);
        }