Ejemplo n.º 1
0
        /// <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}"));
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 ///     得到缓存页面的编辑用户
 /// </summary>
 public static List <int> GetEditUsers()
 {
     using (var proxy = new RedisProxy(RedisProxy.DbAuthority))
     {
         return(proxy.Get <List <int> >($"users:edit:{typeof(TData).FullName}"));
     }
 }
Ejemplo n.º 3
0
 /// <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")));
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 ///     载入页面权限树形基础数据
 /// </summary>
 public static EasyUiTreeNode LoadPowerTree()
 {
     using (var proxy = new RedisProxy(RedisProxy.DbSystem))
     {
         return(proxy.Get <EasyUiTreeNode>("role:power:tree"));
     }
 }
Ejemplo n.º 5
0
 /// <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());
     }
 }
Ejemplo n.º 6
0
        /// <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);
        }
Ejemplo n.º 7
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());
     }
 }
Ejemplo n.º 8
0
 /// <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")));
     }
 }
Ejemplo n.º 9
0
 /// <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('"'));
     }
 }
Ejemplo n.º 10
0
 /// <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));
     }
 }
Ejemplo n.º 11
0
 /// <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('"'));
     }
 }
Ejemplo n.º 12
0
 /// <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}"));
     }
 }
Ejemplo n.º 13
0
 /// <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")));
     }
 }
Ejemplo n.º 14
0
 /// <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")));
     }
 }
Ejemplo n.º 15
0
 /// <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());
     }
 }
Ejemplo n.º 16
0
        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();
        }
Ejemplo n.º 17
0
 /// <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)
         });
     }
 }
Ejemplo n.º 18
0
        /// <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());
        }
Ejemplo n.º 19
0
 /// <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);
 }
Ejemplo n.º 20
0
        /// <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);
        }
Ejemplo n.º 21
0
 /// <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);
     }
 }
Ejemplo n.º 22
0
 /// <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);
     }
 }
Ejemplo n.º 23
0
 /// <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);
     }
 }
Ejemplo n.º 24
0
 /// <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);
 }
Ejemplo n.º 25
0
        /// <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);
        }
Ejemplo n.º 26
0
        /// <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);
        }
Ejemplo n.º 27
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);
        }
Ejemplo n.º 28
0
 /// <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);
     }
 }
Ejemplo n.º 29
0
 /// <summary>
 /// 获取键值
 /// </summary>
 /// <param name="key">key</param>
 /// <returns>string</returns>
 public string Get(string key)
 {
     return(RedisProxy.Get(_redisName, _redisName, key));
 }
Ejemplo n.º 30
0
 /// <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));
 }