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)); }
/// <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); }
/// <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()); }
/// <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)); }