diff --git a/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs b/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs index 67d38089..12074745 100644 --- a/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs +++ b/Src/Dlhis.Entity/Sys/Entities/MenuPermissionEntity.cs @@ -10,7 +10,7 @@ namespace Dlhis.Entity.Sys.Entities; /// 菜单权限 /// [SugarTable(TableName = "MenuPermission", TableDescription = "菜单权限")] -public class MenuPermissionEntity : SugarBaseEntity, ITenantId, ISoftDeleted +public class MenuPermissionEntity : SugarBaseEntity, ITenantId { /// /// 权限分配类型 @@ -32,6 +32,4 @@ public class MenuPermissionEntity : SugarBaseEntity, ITenantId, ISoftDeleted public string TenantId { get; set; } - - public bool IsDeleted { get; set; } } \ No newline at end of file diff --git a/Src/Dlhis.Sys/Identity/Response/UserResponse.cs b/Src/Dlhis.Sys/Identity/Response/UserResponse.cs index 8d14c7c1..d6e247f1 100644 --- a/Src/Dlhis.Sys/Identity/Response/UserResponse.cs +++ b/Src/Dlhis.Sys/Identity/Response/UserResponse.cs @@ -65,6 +65,11 @@ public class UserResponse public int AccessFailedCount { get; set; } + /// + /// 角色id + /// + public int RoleId { get; set; } + /// /// 角色 /// diff --git a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs index 2590c9e3..d46609fa 100644 --- a/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs +++ b/Src/Dlhis.Sys/Identity/Services/Implements/UserService.cs @@ -32,6 +32,7 @@ public class UserService : IUserService .Select((x, ur, r, c) => new UserResponse { Id = x.Id, + RoleId = ur.RoleId, Role = r.Name, OperatorName = c.ClaimValue, @@ -58,7 +59,21 @@ public class UserService : IUserService public async Task GetUserByIdAsync(int id) { - var user = await _dbContext.Queryable().Where(x => x.Id == id).Select().FirstAsync(); + var user = await _dbContext.Queryable() + .LeftJoin((x, ur) => x.Id == ur.UserId) + .LeftJoin((x, ur, r) => ur.RoleId == r.Id) + .LeftJoin((x, ur, r, c) => x.Id == c.UserId && c.ClaimType == "preferred_username") + .Where(x => x.Id == id) + .Select((x, ur, r, c) => new UserResponse + { + Id = x.Id, + RoleId = ur.RoleId, + Role = r.Name, + OperatorName = c.ClaimValue, + + }, true) + .FirstAsync(); + return user; } diff --git a/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs b/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs index e7ee9ddf..78dea3b9 100644 --- a/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs +++ b/Src/Dlhis.Sys/Menu/Services/Implements/MenuService.cs @@ -3,7 +3,6 @@ using Dlhis.Entity.Sys.Enums; using Dlhis.Sys.Identity.Services; using Dlhis.Sys.Menu.Request; using Dlhis.Sys.Menu.Response; -using Kurisu.AspNetCore.Scope; using Kurisu.AspNetCore.Utils.Extensions; using Kurisu.Core.User.Abstractions; using Kurisu.SqlSugar.Services; @@ -15,11 +14,13 @@ public class MenuService : IMenuService { private readonly IDbContext _dbContext; private readonly ICurrentUser _currentUser; + private readonly IUserService _userService; - public MenuService(IDbContext dbContext, ICurrentUser currentUser) + public MenuService(IDbContext dbContext, ICurrentUser currentUser, IUserService userService) { _dbContext = dbContext; _currentUser = currentUser; + _userService = userService; } public async Task> GetListAsync(PlatformEnumType platform) @@ -64,18 +65,15 @@ public class MenuService : IMenuService public async Task AssignmentAsync(MenuPermissionAssignmentRequest request) { - (request.UniqueType == AssignTypeEnumType.Role).ThrowIfTrue("暂不支持角色分配"); - //清空覆盖 var permissionsToDelete = await _dbContext.Queryable() .Where(x => x.UniqueType == request.UniqueType) .Where(x => x.UniqueValue == request.UniqueValue) .ToListAsync(); - //触发日志记录 - await _dbContext.DeleteAsync(permissionsToDelete); + await _dbContext.DeleteReallyAsync(permissionsToDelete); - var permissions = request.Codes.Select(x => new MenuPermissionEntity + var permissions = request.Codes.Distinct().Select(x => new MenuPermissionEntity { Code = x, UniqueType = request.UniqueType, @@ -83,7 +81,6 @@ public class MenuService : IMenuService }).ToList(); - await _dbContext.InsertAsync(permissions); } @@ -147,6 +144,7 @@ public class MenuService : IMenuService var allCodes = await GetAllAssignmentCodesAsync(); if (!allCodes.Any()) { + //todo 管理员 var userId = _currentUser.GetIntSubjectId(); if (userId == 1) { @@ -284,18 +282,15 @@ public class MenuService : IMenuService private async Task> GetAllAssignmentCodesAsync() { - var user = await Scoped.Request.Value.CreateAsync(sp => - { - return sp.GetService().GetUserByIdAsync(_currentUser.GetIntSubjectId()); - }); - - // var groupCodes = await GetAssignmentCodesAsync(MenuPermissionTypeEnumType.Group, manager.usergrp); + var user = await _userService.GetUserByIdAsync(_currentUser.GetIntSubjectId()); //user var userCodes = await GetAssignmentCodesAsync(AssignTypeEnumType.User, user.Id.ToString()); - var all = userCodes;// gP.Concat(uP).Distinct().ToList(); - return all; + //role + var roleCodes = await GetAssignmentCodesAsync(AssignTypeEnumType.Role, user.RoleId.ToString()); + + return userCodes.Concat(roleCodes).Distinct().ToList(); } @@ -315,6 +310,4 @@ public class MenuService : IMenuService await _dbContext.UpdateAsync(permissions); } } - - } \ No newline at end of file