public JobHelper(IModuleCollection moduleCollection) { JobModuleDescriptors = new List <JobModuleDescriptor>(); ModuleSelect = new List <OptionResultModel>(); foreach (var module in moduleCollection) { ModuleSelect.Add(new OptionResultModel { Label = module.Name, Value = module.Id }); var jobModuleDescriptor = new JobModuleDescriptor { Id = module.Id, Descriptor = module, JobClassSelect = new List <OptionResultModel>() }; #region ==添加任务类== if (module.AssemblyDescriptor.Quartz != null) { var jobClassTypes = module.AssemblyDescriptor.Quartz.GetTypes().Where(m => typeof(IJob).IsAssignableFrom(m)); foreach (var jobClassType in jobClassTypes) { var jobClassOption = new OptionResultModel { Label = jobClassType.Name, Value = $"{jobClassType.FullName}, {jobClassType.Assembly.GetName().Name}" }; var descAttr = (DescriptionAttribute)Attribute.GetCustomAttribute(jobClassType, typeof(DescriptionAttribute)); if (descAttr != null && descAttr.Description.NotNull()) { jobClassOption.Label = descAttr.Description; } jobModuleDescriptor.JobClassSelect.Add(jobClassOption); } } #endregion JobModuleDescriptors.Add(jobModuleDescriptor); } }
public IResultModel Controllers([BindRequired] string moduleCode) { var cacheKey = "ADMIN_GET_CONTROLLERS_" + moduleCode.ToUpper(); if (!_cache.TryGetValue(cacheKey, out List <OptionResultModel> list)) { list = new List <OptionResultModel>(); var controllerFeature = new ControllerFeature(); _partManager.PopulateFeature(controllerFeature); var controllers = controllerFeature.Controllers.ToList(); foreach (var controller in controllers) { if (!controller.IsAbstract && controller.FullName != null && controller.FullName.ToLower().Contains($".{moduleCode}.")) { var option = new OptionResultModel { Value = controller.Name.Remove(controller.Name.Length - 10), Data = controller.Name }; var desc = (DescriptionAttribute)Attribute.GetCustomAttribute(controller, typeof(DescriptionAttribute)); if (desc == null || desc.Description.IsNull()) { option.Label = option.Value.ToString(); } else { option.Label = desc.Description; } list.Add(option); } } _cache.Set(cacheKey, list); } return(ResultModel.Success(list)); }
public IResultModel Actions([BindRequired] string moduleCode, [BindRequired] string controller) { var cacheKey = $"ADMIN_GET_ACTIONS_{moduleCode.ToUpper()}_{controller.ToLower()}"; if (!_cache.TryGetValue(cacheKey, out List <OptionResultModel> list)) { list = new List <OptionResultModel>(); var controllerFeature = new ControllerFeature(); _partManager.PopulateFeature(controllerFeature); var controllers = controllerFeature.Controllers.ToList(); foreach (var con in controllers) { if (con.FullName != null && con.FullName.ToLower().Contains($".{moduleCode}.") && con.Name.Remove(con.Name.Length - 10).EqualsIgnoreCase(controller)) { foreach (var method in con.DeclaredMethods) { //排除可匿名访问以及通用方法 if (method.CustomAttributes.Any(m => m.AttributeType == typeof(AllowAnonymousAttribute) || m.AttributeType == typeof(CommonAttribute))) { continue; } var option = new OptionResultModel { Value = method.Name }; var descAttr = (DescriptionAttribute)Attribute.GetCustomAttribute(method, typeof(DescriptionAttribute)); if (descAttr == null || descAttr.Description.IsNull()) { option.Label = option.Value.ToString(); } else { option.Label = descAttr.Description; } list.Add(option); } break; } } _cache.Set(cacheKey, list); } //排除已添加过得权限 var permissions = _service.QueryControllerActions(moduleCode, controller).Result; list.ForEach(m => { foreach (var permission in permissions) { if (permission.Action.EqualsIgnoreCase(m.Value.ToString())) { m.Disabled = true; break; } } }); return(ResultModel.Success(list)); }