feat 数据权限支持用户组
This commit is contained in:
@@ -37,7 +37,6 @@ public class GetDataPermissionService : IGetDataPermissions, ISingletonDependenc
|
||||
db.Ignore<ITenantId>(() =>
|
||||
{
|
||||
var userDataPermissions = db.Queryable<DataPermissionEntity>()
|
||||
.Where(x => x.AssignType == AssignTypeEnumType.User)
|
||||
.Where(x => x.AssignValue == _currentUser.GetStringSubjectId())
|
||||
.ToList();
|
||||
|
||||
@@ -49,39 +48,60 @@ public class GetDataPermissionService : IGetDataPermissions, ISingletonDependenc
|
||||
.GetProperties()
|
||||
.FirstOrDefault(x => x.IsDefined(typeof(DeviceGroupCodeAttribute), false));
|
||||
|
||||
var deviceCodes = new List<Guid>();
|
||||
var userGroupCodeProperty = typeof(T)
|
||||
.GetProperties()
|
||||
.FirstOrDefault(x => x.IsDefined(typeof(UserGroupCodeAttribute), false));
|
||||
|
||||
//先计算分组权限下的设备
|
||||
var deviceGroupCodes = userDataPermissions.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Group).Select(x => x.UniqueValue).ToList();
|
||||
if (deviceGroupCodes.Any())
|
||||
if (userGroupCodeProperty != null)
|
||||
{
|
||||
var data = db.Queryable<DeviceGroupEntity>().ToList();
|
||||
|
||||
var myDeviceGroupCodes = new List<Guid>();
|
||||
foreach (Guid deviceGroupCode in deviceGroupCodes)
|
||||
var data = db.Queryable<GainfoGroupEntity>().ToList();
|
||||
|
||||
var userGroupCodes = userDataPermissions.Where(x => x.UniqueType == DataPermissionAssignmentEnumType.UserGroup).Select(x => x.UniqueValue).ToList();
|
||||
var myCodes = new List<Guid>();
|
||||
foreach (var userGroupCode in userGroupCodes)
|
||||
{
|
||||
myDeviceGroupCodes.AddRange(RecursionHelper.HandlerDeviceGroupNextCodes(deviceGroupCode, data));
|
||||
myCodes.AddRange(RecursionHelper.HandlerGainfoGroupNextCodes(userGroupCode, data));
|
||||
}
|
||||
myCodes = myCodes.Distinct().ToList();
|
||||
|
||||
dict.Add(userGroupCodeProperty.Name, myCodes);
|
||||
}
|
||||
else
|
||||
{
|
||||
var deviceCodes = new List<Guid>();
|
||||
|
||||
//先计算分组权限下的设备
|
||||
var deviceGroupCodes = userDataPermissions.Where(x => x.UniqueType == DataPermissionAssignmentEnumType.Group).Select(x => x.UniqueValue).ToList();
|
||||
if (deviceGroupCodes.Any())
|
||||
{
|
||||
var data = db.Queryable<DeviceGroupEntity>().ToList();
|
||||
|
||||
var myCodes = new List<Guid>();
|
||||
foreach (Guid deviceGroupCode in deviceGroupCodes)
|
||||
{
|
||||
myCodes.AddRange(RecursionHelper.HandlerDeviceGroupNextCodes(deviceGroupCode, data));
|
||||
}
|
||||
|
||||
myCodes = myCodes.Distinct().ToList();
|
||||
|
||||
if (deviceCodeProperty != null)
|
||||
{
|
||||
deviceCodes = db.Queryable<DeviceGroupRelationshipEntity>().Where(x => myCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
myDeviceGroupCodes = myDeviceGroupCodes.Distinct().ToList();
|
||||
if (deviceGroupCodeProperty != null)
|
||||
{
|
||||
dict.Add(deviceGroupCodeProperty.Name, deviceGroupCodes);
|
||||
}
|
||||
|
||||
if (deviceCodeProperty != null)
|
||||
{
|
||||
deviceCodes = db.Queryable<DeviceGroupRelationshipEntity>().Where(x => myDeviceGroupCodes.Contains(x.GroupCode)).Select(x => x.DeviceCode).ToList();
|
||||
var currentDeviceCodes = userDataPermissions.Where(x => x.UniqueType == DataPermissionAssignmentEnumType.Device).Select(x => x.UniqueValue).ToList();
|
||||
deviceCodes.AddRange(currentDeviceCodes);
|
||||
dict.Add(deviceCodeProperty.Name, deviceCodes.Distinct().ToList());
|
||||
}
|
||||
}
|
||||
|
||||
if (deviceGroupCodeProperty != null)
|
||||
{
|
||||
dict.Add(deviceGroupCodeProperty.Name, deviceGroupCodes);
|
||||
}
|
||||
|
||||
if (deviceCodeProperty != null)
|
||||
{
|
||||
var currentDeviceCodes = userDataPermissions.Where(x => x.UniqueType == DeviceAssignmentTypeEnumType.Device).Select(x => x.UniqueValue).ToList();
|
||||
deviceCodes.AddRange(currentDeviceCodes);
|
||||
dict.Add(deviceCodeProperty.Name, deviceCodes.Distinct().ToList());
|
||||
}
|
||||
});
|
||||
|
||||
return dict;
|
||||
|
||||
Reference in New Issue
Block a user