|
@@ -1,4 +1,4 @@
|
|
|
-using System;
|
|
|
+锘縰sing System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Linq;
|
|
|
using System.Threading.Tasks;
|
|
@@ -25,7 +25,7 @@ using ZhonTai.Admin.Core.Db;
|
|
|
namespace ZhonTai.Admin.Services.Permission
|
|
|
{
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
[DynamicApi(Area = "admin")]
|
|
|
public class PermissionService : BaseService, IPermissionService, IDynamicApi
|
|
@@ -58,7 +58,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -76,7 +76,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -88,7 +88,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -99,7 +99,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -110,7 +110,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -121,7 +121,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -136,7 +136,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -160,7 +160,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
public async Task<IResultOutput> GetPermissionList()
|
|
@@ -193,7 +193,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -207,7 +207,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -221,7 +221,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -234,7 +234,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -247,7 +247,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -260,7 +260,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -280,7 +280,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -298,7 +298,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -316,7 +316,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -334,7 +334,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -349,7 +349,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
var entity = await _permissionRepository.GetAsync(input.Id);
|
|
|
if (!(entity?.Id > 0))
|
|
|
{
|
|
|
- return ResultOutput.NotOk("权限点不存在!");
|
|
|
+ return ResultOutput.NotOk("鏉冮檺鐐逛笉瀛樺湪锛�");
|
|
|
}
|
|
|
|
|
|
Mapper.Map(input, entity);
|
|
@@ -363,90 +363,90 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
await _permissionApiRepository.InsertAsync(permissionApis);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
await ClearUserPermissionsAsync(new List<long> { entity.Id });
|
|
|
|
|
|
return ResultOutput.Ok();
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
[Transaction]
|
|
|
public async Task<IResultOutput> DeleteAsync(long id)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
var ids = _permissionRepository.Select
|
|
|
.Where(a => a.Id == id)
|
|
|
.AsTreeCte()
|
|
|
.ToList(a => a.Id);
|
|
|
|
|
|
-
|
|
|
+
|
|
|
await _permissionApiRepository.DeleteAsync(a => ids.Contains(a.PermissionId));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
await _permissionRepository.DeleteAsync(a => ids.Contains(a.Id));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
await ClearUserPermissionsAsync(ids);
|
|
|
|
|
|
return ResultOutput.Ok();
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<IResultOutput> SoftDeleteAsync(long id)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
var ids = _permissionRepository.Select
|
|
|
.Where(a => a.Id == id)
|
|
|
.AsTreeCte()
|
|
|
.ToList(a => a.Id);
|
|
|
|
|
|
-
|
|
|
+
|
|
|
await _permissionRepository.SoftDeleteAsync(a => ids.Contains(a.Id));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
await ClearUserPermissionsAsync(ids);
|
|
|
|
|
|
return ResultOutput.Ok();
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
[Transaction]
|
|
|
public async Task<IResultOutput> AssignAsync(PermissionAssignInput input)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
var exists = await _roleRepository.Select.DisableGlobalFilter("Tenant").WhereDynamic(input.RoleId).AnyAsync();
|
|
|
if (!exists)
|
|
|
{
|
|
|
- return ResultOutput.NotOk("该角色不存在或已被删除!");
|
|
|
+ return ResultOutput.NotOk("璇ヨ�鑹蹭笉瀛樺湪鎴栧凡琚�垹闄わ紒");
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var permissionIds = await _rolePermissionRepository.Select.Where(d => d.RoleId == input.RoleId).ToListAsync(m => m.PermissionId);
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var deleteIds = permissionIds.Where(d => !input.PermissionIds.Contains(d));
|
|
|
if (deleteIds.Any())
|
|
|
{
|
|
|
await _rolePermissionRepository.DeleteAsync(m => m.RoleId == input.RoleId && deleteIds.Contains(m.PermissionId));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var insertRolePermissions = new List<RolePermissionEntity>();
|
|
|
var insertPermissionIds = input.PermissionIds.Where(d => !permissionIds.Contains(d));
|
|
|
|
|
|
-
|
|
|
+
|
|
|
if (_appConfig.Tenant && User.TenantType == TenantType.Tenant)
|
|
|
{
|
|
|
var masterDb = ServiceProvider.GetRequiredService<IFreeSql>();
|
|
@@ -467,7 +467,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
await _rolePermissionRepository.InsertAsync(insertRolePermissions);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var userIds = await _userRoleRepository.Select.Where(a => a.RoleId == input.RoleId).ToListAsync(a => a.UserId);
|
|
|
foreach (var userId in userIds)
|
|
|
{
|
|
@@ -478,30 +478,30 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
[Transaction]
|
|
|
public async Task<IResultOutput> SaveTenantPermissionsAsync(PermissionSaveTenantPermissionsInput input)
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
var ib = ServiceProvider.GetRequiredService<IdleBus<IFreeSql>>();
|
|
|
var tenantDb = ib.GetTenantFreeSql(ServiceProvider, input.TenantId);
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var permissionIds = await _tenantPermissionRepository.Select.Where(d => d.TenantId == input.TenantId).ToListAsync(m => m.PermissionId);
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var deleteIds = permissionIds.Where(d => !input.PermissionIds.Contains(d));
|
|
|
if (deleteIds.Any())
|
|
|
{
|
|
|
await _tenantPermissionRepository.DeleteAsync(m => m.TenantId == input.TenantId && deleteIds.Contains(m.PermissionId));
|
|
|
-
|
|
|
+
|
|
|
await tenantDb.GetRepositoryBase<RolePermissionEntity>().DeleteAsync(a => deleteIds.Contains(a.PermissionId));
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var tenatPermissions = new List<TenantPermissionEntity>();
|
|
|
var insertPermissionIds = input.PermissionIds.Where(d => !permissionIds.Contains(d));
|
|
|
if (insertPermissionIds.Any())
|
|
@@ -517,7 +517,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
await _tenantPermissionRepository.InsertAsync(tenatPermissions);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
+
|
|
|
var userIds = await tenantDb.GetRepositoryBase<UserEntity>().Select.Where(a => a.TenantId == input.TenantId).ToListAsync(a => a.Id);
|
|
|
if(userIds.Any())
|
|
|
{
|