using System; using System.Collections.Generic; using System.Linq; using Infrastructure; using Infrastructure.Helpers; using OpenAuth.App; using OpenAuth.App.Interface; using OpenAuth.App.Response; using OpenAuth.Repository.Domain; namespace OpenAuth.Mvc.Controllers { public class UserSessionController : BaseController { private readonly AuthStrategyContext _authStrategyContext; public UserSessionController(IAuth authUtil) : base(authUtil) { _authStrategyContext = _authUtil.GetCurrentUser(); } /// /// 获取用户资料 /// /// public string GetUserProfile() { var resp = new Response(); try { resp.Result = _authStrategyContext.User.MapTo(); } catch (Exception e) { resp.Code = 500; resp.Message = e.Message; } return JsonHelper.Instance.Serialize(resp); } public string GetUserName() { return _authUtil.GetUserName(); } /// /// 获取登录用户可访问的所有模块,及模块的操作菜单 /// public string GetModulesTree() { var moduleTree = _authStrategyContext.Modules.GenerateTree(u => u.Id, u => u.ParentId); return JsonHelper.Instance.Serialize(moduleTree); } /// /// datatable结构的模块列表 /// /// /// public string GetModulesTable(long pId) { string cascadeId = ".0."; if (pId != 0) { var obj = _authStrategyContext.Modules.SingleOrDefault(u => u.Id == pId); if (obj == null) throw new Exception("未能找到指定对象信息"); cascadeId = obj.CascadeId; } var query = _authStrategyContext.Modules.Where(u => u.CascadeId.Contains(cascadeId)); return JsonHelper.Instance.Serialize(new TableData { data = query.ToList(), count = query.Count(), }); } /// /// 获取用户可访问的模块列表 /// public string GetModules() { var resp = new Response>(); try { resp.Result = _authStrategyContext.Modules; } catch (Exception e) { resp.Code = 500; resp.Message = e.Message; } return JsonHelper.Instance.Serialize(resp); } /// /// 获取登录用户可访问的所有部门 /// 用于树状结构 /// public string GetOrgs() { var resp = new Response>(); try { resp.Result = _authStrategyContext.Orgs; } catch (Exception e) { resp.Code = 500; resp.Message = e.Message; } return JsonHelper.Instance.Serialize(resp); } /// /// 加载机构的全部下级机构 /// /// 机构ID /// public string GetSubOrgs(long orgId) { string cascadeId = ".0."; if (orgId != 0) { var org = _authStrategyContext.Orgs.SingleOrDefault(u => u.Id == orgId); if (org == null) { return JsonHelper.Instance.Serialize(new TableData { msg = "未找到指定的节点", code = 500, }); } cascadeId = org.CascadeId; } var query = _authStrategyContext.Orgs.Where(u => u.CascadeId.Contains(cascadeId)); return JsonHelper.Instance.Serialize(new TableData { data = query.ToList(), count = query.Count(), }); } } }