|
@@ -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
|
|
|
{
|
|
|
/// <summary>
|
|
|
- /// 权限服务
|
|
|
+ /// 鏉冮檺鏈嶅姟
|
|
|
/// </summary>
|
|
|
[DynamicApi(Area = "admin")]
|
|
|
public class PermissionService : BaseService, IPermissionService, IDynamicApi
|
|
@@ -58,7 +58,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 清除权限下关联的用户权限缓存
|
|
|
+ /// 娓呴櫎鏉冮檺涓嬪叧鑱旂殑鐢ㄦ埛鏉冮檺缂撳瓨
|
|
|
/// </summary>
|
|
|
/// <param name="permissionIds"></param>
|
|
|
/// <returns></returns>
|
|
@@ -76,7 +76,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询权限
|
|
|
+ /// 鏌ヨ�鏉冮檺
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
@@ -88,7 +88,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询分组
|
|
|
+ /// 鏌ヨ�鍒嗙粍
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
@@ -99,7 +99,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询菜单
|
|
|
+ /// 鏌ヨ�鑿滃崟
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
@@ -110,7 +110,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询接口
|
|
|
+ /// 鏌ヨ�鎺ュ彛
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
@@ -121,7 +121,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询权限点
|
|
|
+ /// 鏌ヨ�鏉冮檺鐐�
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
@@ -136,7 +136,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询权限列表
|
|
|
+ /// 鏌ヨ�鏉冮檺鍒楄〃
|
|
|
/// </summary>
|
|
|
/// <param name="key"></param>
|
|
|
/// <param name="start"></param>
|
|
@@ -160,7 +160,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询角色权限-权限列表
|
|
|
+ /// 鏌ヨ�瑙掕壊鏉冮檺-鏉冮檺鍒楄〃
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
public async Task<IResultOutput> GetPermissionList()
|
|
@@ -193,7 +193,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询角色权限列表
|
|
|
+ /// 鏌ヨ�瑙掕壊鏉冮檺鍒楄〃
|
|
|
/// </summary>
|
|
|
/// <param name="roleId"></param>
|
|
|
/// <returns></returns>
|
|
@@ -207,7 +207,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 查询租户权限列表
|
|
|
+ /// 鏌ヨ�绉熸埛鏉冮檺鍒楄〃
|
|
|
/// </summary>
|
|
|
/// <param name="tenantId"></param>
|
|
|
/// <returns></returns>
|
|
@@ -221,7 +221,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 新增分组
|
|
|
+ /// 鏂板�鍒嗙粍
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -234,7 +234,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 新增菜单
|
|
|
+ /// 鏂板�鑿滃崟
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -247,7 +247,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 新增接口
|
|
|
+ /// 鏂板�鎺ュ彛
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -260,7 +260,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 新增权限点
|
|
|
+ /// 鏂板�鏉冮檺鐐�
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -280,7 +280,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 修改分组
|
|
|
+ /// 淇�敼鍒嗙粍
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -298,7 +298,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 修改菜单
|
|
|
+ /// 淇�敼鑿滃崟
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -316,7 +316,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 修改接口
|
|
|
+ /// 淇�敼鎺ュ彛
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -334,7 +334,7 @@ namespace ZhonTai.Admin.Services.Permission
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 修改权限点
|
|
|
+ /// 淇�敼鏉冮檺鐐�
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
@@ -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();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 彻底删除
|
|
|
+ /// 褰诲簳鍒犻櫎
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
[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();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 删除
|
|
|
+ /// 鍒犻櫎
|
|
|
/// </summary>
|
|
|
/// <param name="id"></param>
|
|
|
/// <returns></returns>
|
|
|
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();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 保存角色权限
|
|
|
+ /// 淇濆瓨瑙掕壊鏉冮檺
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
[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
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
- /// 保存租户权限
|
|
|
+ /// 淇濆瓨绉熸埛鏉冮檺
|
|
|
/// </summary>
|
|
|
/// <param name="input"></param>
|
|
|
/// <returns></returns>
|
|
|
[Transaction]
|
|
|
public async Task<IResultOutput> SaveTenantPermissionsAsync(PermissionSaveTenantPermissionsInput input)
|
|
|
{
|
|
|
- //获得租户db
|
|
|
+ //鑾峰緱绉熸埛db
|
|
|
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())
|
|
|
{
|