xf 2 years ago
parent
commit
a86a0cc1bf

+ 6 - 0
src/Hotline.Api/Controllers/UserController.cs

@@ -166,6 +166,9 @@ public class UserController : BaseController
 
             //initial pwd
             await _accountDomainService.InitialPasswordAsync(account, HttpContext.RequestAborted);
+
+            //set roles
+            await _accountRepository.SetAccountRolesAsync(account.Id, dto.RoleIds, HttpContext.RequestAborted);
             return account.Id;
         }
         else
@@ -173,6 +176,9 @@ public class UserController : BaseController
             if (_accountDomainService.IsLockedOut(account))
                 throw UserFriendlyException.SameMessage("该账号已被锁定,请联系管理员");
 
+            //set roles
+            await _accountRepository.SetAccountRolesAsync(account.Id, dto.RoleIds, HttpContext.RequestAborted);
+
             var user = await _userRepository.GetAsync(account.Id, HttpContext.RequestAborted);
             if (user is null)
             {

+ 2 - 2
src/Hotline.Application/Mappers/MapperConfigs.cs

@@ -29,10 +29,10 @@ namespace Hotline.Application.Mappers
             config.NewConfig<User, UserDto>()
                 .IgnoreIf((s, d) => s.Account == null, d => d.UserName)
                 .IgnoreIf((s, d) => s.Organization == null, d => d.OrgName)
-                .IgnoreIf((s, d) => s.Roles == null, d => d.Roles)
+                .IgnoreIf((s, d) => s.Roles == null, d => d.RoleNames)
                 .Map(d => d.UserName, x => x.Account.UserName)
                 .Map(d => d.OrgName, x => x.Organization.OrgName)
-                .Map(d => d.Roles, x => string.Join(',', x.Roles.Select(d => d.DisplayName)))
+                .Map(d => d.RoleNames, x => string.Join(',', x.Roles.Select(d => d.DisplayName)))
                 .Map(d => d.State, x => x.IsDeleted ? "已删除" : "正常")
                 .IgnoreNullValues(true);
 

+ 12 - 2
src/Hotline.Share/Dtos/Users/UserDto.cs

@@ -1,4 +1,5 @@
-using Hotline.Share.Enums.Order;
+using Hotline.Share.Dtos.Roles;
+using Hotline.Share.Enums.Order;
 using XF.Utility.EnumExtensions;
 
 namespace Hotline.Share.Dtos.Users;
@@ -14,13 +15,18 @@ public record UserDto : AddUserDto
 
     public string OrgName { get; set; }
 
-    public string Roles { get; set; }
+    public string RoleNames { get; set; }
     
     public string State { get; set; }
+
+    public IReadOnlyList<RoleDto> Roles { get; set; }
 }
 
 public record AddUserDto
 {
+    /// <summary>
+    /// 账号
+    /// </summary>
     public string UserName { get; set; }
 
     /// <summary>
@@ -56,6 +62,8 @@ public record AddUserDto
     public string? DefaultTelNo { get; set; }
 
     public string Email { get; set; }
+
+    public ICollection<string> RoleIds { get; set; }
 }
 
 public record UpdateUserDto
@@ -95,4 +103,6 @@ public record UpdateUserDto
     public string? DefaultTelNo { get; set; }
 
     public string Email { get; set; }
+
+    public ICollection<string> RoleIds { get; set; }
 }