using System; using System.Collections.Generic; using System.Linq; using Infrastructure; using Microsoft.AspNetCore.Mvc; using OpenAuth.App; using OpenAuth.App.Interface; using OpenAuth.Repository.Domain; namespace OpenAuth.WebApi.Controllers { /// /// 模块及菜单管理 /// [Route("api/[controller]/[action]")] [ApiController] [ApiExplorerSettings(GroupName = "模块菜单_Modules")] public class ModulesController : ControllerBase { private ModuleManagerApp _app; private IAuth _authUtil; public ModulesController(IAuth authUtil, ModuleManagerApp app) { _app = app; _authUtil = authUtil; } /// /// 加载角色模块 /// /// The role identifier. /// System.String. [HttpGet] public Response> LoadForRole(string firstId) { var result = new Response>(); try { result.Result = _app.LoadForRole(firstId); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 根据某角色ID获取可访问某模块的菜单项 /// /// [HttpGet] public Response> LoadMenusForRole(string moduleId, string firstId) { var result = new Response>(); try { result.Result = _app.LoadMenusForRole(moduleId, firstId); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 获取角色已经分配的字段 /// /// 角色id /// 模块代码,如Category /// [HttpGet] public Response> LoadPropertiesForRole(string roleId, string moduleCode) { var result = new Response>(); try { result.Result = _app.LoadPropertiesForRole(roleId, moduleCode); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 获取发起页面的菜单权限 /// /// System.String. [HttpGet] public Response> LoadMenus(string moduleId) { var result = new Response>(); try { var user = _authUtil.GetCurrentUser(); if (string.IsNullOrEmpty(moduleId)) { result.Result = user.ModuleElements; } else { var module = user.Modules.First(u => u.Id == moduleId); if (module == null) { throw new Exception("模块不存在"); } result.Result = module.Elements; } } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #region 添加编辑模块 //添加或修改 [HttpPost] public Response Add(Module obj) { var result = new Response(); try { _app.Add(obj); result.Result = obj; } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } //添加或修改 [HttpPost] public Response Update(Module obj) { var result = new Response(); try { _app.Update(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } [HttpPost] public Response Delete([FromBody] string[] ids) { var result = new Response(); try { _app.Delete(ids); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } #endregion 添加编辑模块 /// /// 新增菜单 /// 当前登录用户的所有角色会自动分配菜单 /// [HttpPost] public Response AddMenu(ModuleElement obj) { var result = new Response(); try { _app.AddMenu(obj); result.Result = obj; } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 修改菜单属性 /// [HttpPost] public Response UpdateMenu(ModuleElement obj) { var result = new Response(); try { _app.UpdateMenu(obj); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 删除菜单 /// [HttpPost] public Response DeleteMenu([FromBody] string[] ids) { var result = new Response(); try { _app.DelMenu(ids); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } /// /// 获取发起页面的打印方案 /// [HttpGet] public Response> LoadPrinterPlans(string moduleId) { var result = new Response>(); try { result.Result = _app.LoadPrinterPlans(moduleId).ToList(); } catch (Exception ex) { result.Code = 500; result.Message = ex.InnerException?.Message ?? ex.Message; } return result; } } }