public void DistributedTransactionTest()
        {
            //失败事务
            BaseBusiness <Base_UnitTest> _bus1 = new BaseBusiness <Base_UnitTest>();
            BaseBusiness <Base_UnitTest> _bus2 = new BaseBusiness <Base_UnitTest>("BaseDb_Test");

            _bus1.DeleteAll();
            _bus2.DeleteAll();
            Base_UnitTest data1 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "1",
                UserName = Guid.NewGuid().ToString()
            };
            Base_UnitTest data2 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "1",
                UserName = Guid.NewGuid().ToString()
            };
            Base_UnitTest data3 = new Base_UnitTest
            {
                Id       = Guid.NewGuid().ToString(),
                UserId   = "2",
                UserName = Guid.NewGuid().ToString()
            };
            DistributedTransaction distributedTransaction = new DistributedTransaction(_bus1.Service, _bus2.Service);

            distributedTransaction.BeginTransaction();
            _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') ");
            _bus1.Insert(data1);
            _bus1.Insert(data3);
            _bus2.Insert(data1);
            _bus2.Insert(data2);
            bool succcess = distributedTransaction.EndTransaction();
            int  count1   = _bus1.GetIQueryable().Count();
            int  count2   = _bus2.GetIQueryable().Count();

            Assert.AreEqual(succcess, false);
            Assert.AreEqual(count1, 0);
            Assert.AreEqual(count2, 0);

            //成功事务
            _bus1.DeleteAll();
            _bus2.DeleteAll();
            distributedTransaction = new DistributedTransaction(_bus1.Service, _bus2.Service);
            distributedTransaction.BeginTransaction();
            _bus1.ExecuteSql("insert into Base_UnitTest(Id) values('10') ");
            _bus1.Insert(data1);
            _bus1.Insert(data3);
            _bus2.Insert(data1);
            _bus2.Insert(data3);
            succcess = distributedTransaction.EndTransaction();
            count1   = _bus1.GetIQueryable().Count();
            count2   = _bus2.GetIQueryable().Count();
            Assert.AreEqual(succcess, true);
            Assert.AreEqual(count1, 3);
            Assert.AreEqual(count2, 2);
        }
        /// <summary>
        /// 获取角色权限模块
        /// </summary>
        /// <param name="roleId"></param>
        /// <returns></returns>
        public static List <PermissionModule> GetRolePermissionModules(string roleId)
        {
            BaseBusiness <Base_PermissionRole> _db = new BaseBusiness <Base_PermissionRole>();
            var hasPermissions = _db.GetIQueryable().Where(x => x.RoleId == roleId).Select(x => x.PermissionValue).ToList();

            return(GetPermissionModules(hasPermissions));
        }
Esempio n. 3
0
        /// <summary>
        /// 更新用户权限缓存
        /// </summary>
        /// <param name="userId"><用户Id/param>
        public void UpdateUserPermissionCache(string userId)
        {
            string        cacheKey    = BuildCacheKey(userId);
            List <string> permissions = new List <string>();

            BaseBusiness <Base_PermissionUser> _db = new BaseBusiness <Base_PermissionUser>();
            var userPermissions   = _db.GetIQueryable().Where(x => x.UserId == userId).Select(x => x.PermissionValue).ToList();
            var theUser           = _db.Service.GetIQueryable <Base_User>().Where(x => x.Id == userId).FirstOrDefault();
            var roleIdList        = _sysUserBus.GetUserRoleIds(userId);
            var rolePermissions   = _db.Service.GetIQueryable <Base_PermissionRole>().Where(x => roleIdList.Contains(x.RoleId)).GroupBy(x => x.PermissionValue).Select(x => x.Key).ToList();
            var existsPermissions = userPermissions.Concat(rolePermissions).Distinct();

            permissions = existsPermissions.ToList();
            CacheHelper.Cache.SetCache(cacheKey, permissions);
        }
Esempio n. 4
0
        /// <summary>
        /// 获取AppId权限值
        /// </summary>
        /// <param name="appId"></param>
        /// <returns></returns>
        public List <string> GetAppIdPermissionValues(string appId)
        {
            string cacheKey    = BuildCacheKey(appId);
            var    permissions = CacheHelper.Cache.GetCache <List <string> >(cacheKey);

            if (permissions == null)
            {
                BaseBusiness <Base_PermissionAppId> _db = new BaseBusiness <Base_PermissionAppId>();
                permissions = _db.GetIQueryable().Where(x => x.AppId == appId).Select(x => x.PermissionValue).ToList();

                CacheHelper.Cache.SetCache(cacheKey, permissions);
            }

            return(permissions.DeepClone());
        }
Esempio n. 5
0
        /// <summary>
        /// 获取角色权限模块
        /// </summary>
        /// <param name="roleId"></param>
        /// <returns></returns>
        public List <PermissionModule> GetRolePermissionModules(string roleId)
        {
            BaseBusiness <Base_PermissionRole> _db = new BaseBusiness <Base_PermissionRole>();
            List <string> permissions = new List <string>();
            var           theRoleInfo = RoleBus.GetTheInfo(roleId);

            if (theRoleInfo.RoleType == EnumType.RoleType.超级管理员)
            {
                permissions = _allPermissionValues.DeepClone();
            }
            else
            {
                permissions = _db.GetIQueryable().Where(x => x.RoleId == roleId).Select(x => x.PermissionValue).ToList();
            }

            return(GetPermissionModules(permissions));
        }