/// <summary> /// 页面对应的审核用户树 /// </summary> /// <param name="pid"></param> /// <returns></returns> public static List <EasyUiTreeNode> GetPageAuditUsersTree(int pid) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { int friend = proxy.GetValue <int>($"audit:page:link:{pid}"); if (friend > 0) { pid = friend; } var page = PageItemLogical.GetPageItem(pid); if (page == null) { return(new List <EasyUiTreeNode>()); } int level; if (!page.LevelAudit) { level = 0;//BusinessContext.Current.LoginUser.DepartmentId; } else { level = BusinessContext.Current.LoginUser.DepartmentLevel - 1; if (level < 1) { level = 1; } else if (level > 2) { level = 2; } } return(proxy.Get <List <EasyUiTreeNode> >($"audit:page:users:nodes:{pid}:{level}")); } }
/// <summary> /// 得到缓存页面的编辑用户 /// </summary> public static List <int> GetEditUsers() { using (var proxy = new RedisProxy(RedisProxy.DbAuthority)) { return(proxy.Get <List <int> >($"users:edit:{typeof(TData).FullName}")); } }
/// <summary> /// 载入角色菜单 /// </summary> public static List <EasyUiTreeNode> LoadRoleMenu(int roleId) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get <List <EasyUiTreeNode> >(ToRolePageKey(roleId, 0, "menu"))); } }
/// <summary> /// 载入页面权限树形基础数据 /// </summary> public static EasyUiTreeNode LoadPowerTree() { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get <EasyUiTreeNode>("role:power:tree")); } }
/// <summary> /// 通过ID取得页面信息 /// </summary> /// <param name="pid"></param> /// <returns></returns> public static PageItemData GetPageItem(long pid) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get <PageItemData>(ToPageKey(pid)) ?? new PageItemData()); } }
/// <summary> /// 还原调用上下文 /// </summary> private int RevertCallContext(HttpRequestMessage request, string token) { //if (request.Headers.UserAgent.ToString() != "Yizuan.Service.WebApi.WebApiCaller") // return ErrorCode.DenyAccess; //for (var index = 1; index < token.Length; index++) //{ // var ch = token[index]; // if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z') || ch == '-') // continue; // return ErrorCode.DenyAccess; //} ApiContext context; using (var proxy = new RedisProxy()) { var key = ApiContext.GetCacheKey(token); context = proxy.Get <ApiContext>(key); proxy.RemoveKey(key); } if (context?.Request == null || context.LoginUser == null) { //return ErrorCode.DenyAccess; ApiContext.TryCheckByAnymouse(); return(0); } var checker = IocHelper.Create <IBearValidater>(); var result = checker.ValidateServiceKey(context.Request.ServiceKey); if (!result.Result) { return(result.Status.ErrorCode); } ApiContext.SetContext(context); return(0); }
/// <summary> /// 取更高一级提交者 /// </summary> private int[] GetUpAuditUsers(int level) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get($"audit:page:users:ids:{BusinessContext.Current.PageItem.Id}:{level}").ToIntegers()); } }
/// <summary> /// 载入页面关联的按钮配置 /// </summary> /// <param name="pageId">页面,不能为空</param> /// <returns>按钮配置集合</returns> public static List <string> LoadPageButtons(long pageId) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get <List <string> >(ToPageKey("btns"))); } }
/// <summary> /// 取用户的名字 /// </summary> /// <param name="id"></param> public static string GetName(int id) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get(BuildDataKey("name", id))?.Trim('"')); } }
/// <summary> /// 载入角色菜单 /// </summary> public static List <EasyUiTreeNode> LoadRoleMenu() { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get <List <EasyUiTreeNode> >(DataKeyBuilder.ToKey("auth", "menu", 0)) ?? CreateMenu(proxy)); } }
/// <summary> /// 取用户的名字 /// </summary> /// <param name="id"></param> internal static string GetUserName(int id) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get(DataKeyBuilder.ToKey("user", "name", id))?.Trim('"')); } }
/// <summary> /// 得到缓存页面的审批用户 /// </summary> public static List <int> GetAuditUsers(Type type) { using (var proxy = new RedisProxy(RedisProxy.DbAuthority)) { return(proxy.Get <List <int> >($"users:audit:{type.FullName}")); } }
/// <summary> /// 载入页面关联的按钮配置 /// </summary> /// <param name="roleId">角色ID</param> /// <param name="pageId">页面ID</param> /// <returns>按钮配置集合</returns> public static List <string> LoadButtons(int roleId, int pageId) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { if (BusinessContext.Current.IsSystemMode || roleId == 1 || roleId == Int32.MaxValue) { roleId = 0; } return(proxy.Get <List <string> >(ToRolePageKey(roleId, pageId, "btns"))); } }
/// <summary> /// 载入用户的单页角色权限 /// </summary> /// <param name="roleId">角色ID</param> /// <param name="pageId">页面ID</param> /// <returns></returns> public static IRolePower LoadPagePower(int roleId, int pageId) { if (roleId == 1) { roleId = 0; } using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(proxy.Get <RolePowerData>(ToRolePageKey(roleId, pageId, "page"))); } }
/// <summary> /// 取一个类型对应的页面,如果找不到,返回默认值 /// </summary> public static PageItemData GetPageByDataType(Type type) { using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { var id = proxy.GetValue <int>(ToPageKey(type.FullName)); if (id == 0) { return(new PageItemData()); } return(proxy.Get <PageItemData>(ToPageKey(id)) ?? new PageItemData()); } }
public static void TestFind() { //DependencyHelper.AddScoped<IRedis, StackExchangeRedis>(); //删除Redis缓存,让前台自动更新 using var proxy = new RedisProxy(0); proxy.Set("a:idx", "test", DateTime.Now.AddMinutes(5)); var csr = proxy.Redis.Original <CSRedisClient>(); Console.WriteLine(proxy.Get("a:idx")); Console.ReadKey(); }
/// <summary> /// 载入完整的组织结构树(包含职位) /// </summary> /// <returns></returns> public static List <EasyUiTreeNode> LoadPostTreeForUi(int oid) { if (oid < 1) { oid = 1; } using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { return(new List <EasyUiTreeNode> { proxy.Get <EasyUiTreeNode>("ui:org:PostTree:" + oid) }); } }
/// <summary> /// 通过URL取得页面信息 /// </summary> /// <param name="url"></param> /// <returns></returns> public static PageItemData GetPageItem(string url) { if (string.Equals(url, "/Index.aspx", StringComparison.OrdinalIgnoreCase)) { return(new PageItemData()); } PageItemData page; using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { page = proxy.Get <PageItemData>(ToUrlKey(url)); } return(page ?? new PageItemData()); }
/// <summary> /// 读取用户的查询历史 /// </summary> /// <param name="userId">用户</param> /// <param name="pageId">关联页面</param> /// <returns>返回的是参数字典的JSON格式的文本</returns> public static string LoadQueryHistory(long userId, long pageId) { if (userId == 0 || pageId == 0) { return("{'page': 0,'order':'asc','size':20}"); } using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { var key = DataKeyBuilder.ToKey("qh", pageId, userId); return(proxy.Get(key) ?? "{'page': 0,'order':'asc','size':20}"); } //PageDataDataAccess pdAccess = new PageDataDataAccess(); //return pdAccess.LoadValue(p => p.PageData, p => p.PageId == page.ID && p.UserId == loginUser.Id); }
/// <summary> /// 登录 /// </summary> /// <param name="userHostAddress"></param> /// <param name="userName">用户名</param> /// <param name="pwd">密码</param> /// <returns></returns> public static Guid WebLogin(string userHostAddress, string userName, string pwd) { if (string.IsNullOrWhiteSpace(userName) || string.IsNullOrWhiteSpace(pwd)) { LogRecorder.RecordLoginLog($@"用户名({userName})或密码{pwd}为空,来自{userHostAddress}"); return(Guid.Empty); } Guid token; int uid; using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { var pwd2 = proxy.Get(DataKeyBuilder.ToKey("user", userName, "pwd")); if (pwd2 == null || !string.Equals(pwd, pwd2)) { LogRecorder.RecordLoginLog($@"{userName}密码不对{pwd2}-[测试]{pwd},来自{userHostAddress}"); return(Guid.Empty); } uid = proxy.GetValue <int>(DataKeyBuilder.ToKey("user", userName, "id")); if (uid == 0) { LogRecorder.RecordLoginLog($@"{userName}用户不存在,来自{userHostAddress}"); return(Guid.Empty); } } using (var proxy = new RedisProxy(RedisProxy.DbAuthority)) { var tk = DataKeyBuilder.ToKey("login", userName, "token"); token = proxy.GetValue <Guid>(tk); if (token == Guid.Empty) { token = Guid.NewGuid(); proxy.SetValue(tk, token); } proxy.Set(DataKeyBuilder.ToKey("login", token), new LoginToken { UserId = uid, Address = userHostAddress == "::1" ? "127.0.0.1" : userHostAddress, Token = token, LoginDateTime = DateTime.Now, LastDateTime = DateTime.Now, TimeOut = DateTime.Now.AddMinutes(30) }); } BusinessContext.Current.Tooken = token; BusinessContext.Current.PowerChecker.ReloadLoginUserInfo(token); return(token); }
/// <summary> /// 取机构职位设置的下拉列表数据 /// </summary> public static List <EasyComboValues> GetOrganizePosition(int oid) { using (var proxy = new RedisProxy(RedisProxy.DbComboCache)) { var result = proxy.Get <List <EasyComboValues> >(comboKey); if (result != null) { return(result); } var access = new OrganizePositionDataAccess(); var list = oid == 0 ? access.All() : access.All(p => p.OrganizationId == oid); result = list.Select(p => new EasyComboValues(p.Id, p.Department + p.Position)).ToList(); result.Insert(0, EasyComboValues.Empty); proxy.Set(comboKey, result); return(result); } }
/// <summary> /// 取得下拉列表值 /// </summary> /// <returns></returns> public static List <EasyComboValues> GetComboValues() { using (var proxy = new RedisProxy(RedisProxy.DbComboCache)) { var result = proxy.Get <List <EasyComboValues> >(comboKey); if (result == null) { var access = new PersonnelDataAccess(); var datas = access.All(p => p.DataState == DataStateType.Enable); result = new List <EasyComboValues> { EasyComboValues.Empty }; result.AddRange(datas.Select(p => new EasyComboValues(p.Id, p.FullName))); proxy.Set(comboKey, result); } return(result); } }
/// <summary> /// 取得下拉列表值 /// </summary> /// <returns></returns> public static List <EasyComboValues> GetComboValues() { using (var proxy = new RedisProxy(RedisProxy.DbComboCache)) { var result = proxy.Get <List <EasyComboValues> >(comboKey); if (result != null) { return(result); } var access = new AreaDataAccess(); var datas = access.All(); result = new List <EasyComboValues> { EasyComboValues.Empty }; result.AddRange(datas.Select(p => new EasyComboValues(p.Id, p.ShortName))); proxy.Set(comboKey, result); return(result); } }
/// <summary> /// 载入用户 /// </summary> /// <returns></returns> public static bool Logout(string userHostAddress, Guid token) { using (var proxy = new RedisProxy(RedisProxy.DbAuthority)) { var ik = DataKeyBuilder.ToKey("login", token); var info = proxy.Get(ik); if (info == null) { return(true); } var strs = info.Split(','); var ip = strs[1]; if (ip != userHostAddress) { return(false); } proxy.Client.Remove(ik); } return(true); }
/// <summary> /// 取机构的下拉列表数据 /// </summary> public static List <EasyComboValues> GetOrganization() { List <EasyComboValues> result; using (var proxy = new RedisProxy(RedisProxy.DbSystem)) { result = proxy.Get <List <EasyComboValues> >(comboKey2); if (result == null) { var access = new OrganizationDataAccess(); List <OrganizationData> datas = access.All(); result = new List <EasyComboValues> { EasyComboValues.Empty }; FormatOrganizationTree(result, datas, 0, 0); proxy.Set(comboKey2, result); } } return(result); }
/// <summary> /// 还原调用上下文 /// </summary> private int RevertCallContext(HttpRequestMessage request, string token) { ApiContext context; using (var proxy = new RedisProxy()) { context = proxy.Get <ApiContext>(ApiContext.GetCacheKey(token)); } if (context?.Request == null || context.LoginUser == null) { return(ErrorCode.DenyAccess); } var checker = IocHelper.Create <IBearValidater>(); var result = checker.ValidateServiceKey(context.Request.ServiceKey); if (!result.Result) { return(result.Status.ErrorCode); } ApiContext.SetContext(context); return(0); }
/// <summary> /// 还原调用上下文 /// </summary> private int RevertCallContext(string token) { GlobalContext context; using (RedisProxy proxy = new RedisProxy()) { context = proxy.Get <GlobalContext>(BusinessContext.GetCacheKey(token)); } if (context?.Request == null || context.User == null) { GlobalContext.TryCheckByAnymouse(); return(ErrorCode.Success); } ApiResult result = IocHelper.Create <IBearValidater>().ValidateServiceKey(context.Request.ServiceKey); if (!result.Success) { return(result.Status.ErrorCode); } GlobalContext.SetContext(context); BusinessContext.Context.Cache(); return(ErrorCode.Success); }
/// <summary> /// 取得下拉树值 /// </summary> /// <returns></returns> public static List <EasyUiTreeNode> GetTreeValues() { using (var proxy = new RedisProxy(RedisProxy.DbComboCache)) { var result = proxy.Get <List <EasyUiTreeNode> >(treeKey); if (result == null) { var access = new PersonnelDataAccess(); var datas = access.All(p => p.DataState == DataStateType.Enable); result = new List <EasyUiTreeNode> { EasyUiTreeNode.EmptyNode }; result.AddRange(datas.Select(p => new EasyUiTreeNode { ID = p.Id, Text = p.FullName, Title = p.FullName, IsOpen = true })); proxy.Set(treeKey, result); } return(result); } }
/// <summary> /// 获取键值 /// </summary> /// <param name="key">key</param> /// <returns>string</returns> public string Get(string key) { return(RedisProxy.Get(_redisName, _redisName, key)); }
/// <summary> /// 获取键值 /// </summary> /// <typeparam name="T">T</typeparam> /// <param name="key">key</param> /// <returns>TT</returns> public T Get <T>(string key) { return(RedisProxy.Get <T>(_redisName, _redisName, key)); }