Explorar o código

fixed: user query paged

xf %!s(int64=2) %!d(string=hai) anos
pai
achega
3b02f968a2

+ 4 - 2
src/Hotline.Api/Controllers/UserController.cs

@@ -15,6 +15,7 @@ using Hotline.Share.Dtos.Users;
 using Hotline.Share.Enums.Order;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.Extensions.Options;
+using SqlSugar;
 using XF.Domain.Options;
 using XF.Utility.EnumExtensions;
 
@@ -100,12 +101,13 @@ public class UserController : BaseController
     public async Task<PagedDto<UserDto>> QueryPaged([FromQuery] UserPagedDto dto)
     {
         var (total, items) = await _userRepository.Queryable(includeDeleted: true)
-             .Includes(d => d.Account, x => x.Roles)
+             .Includes(d => d.Account)
+             .Includes(d=>d.Roles)
              .Includes(d => d.Organization)
              .WhereIF(!string.IsNullOrEmpty(dto.Keyword),
                  d => d.Name.Contains(dto.Keyword!) || d.PhoneNo.Contains(dto.Keyword!))
              .WhereIF(!string.IsNullOrEmpty(dto.OrgCode), d => d.OrgCode == dto.OrgCode)
-             .WhereIF(!string.IsNullOrEmpty(dto.Role), d => d.Account.Roles.Any(x => x.Id == dto.Role))
+             .WhereIF(!string.IsNullOrEmpty(dto.Role), d => d.Roles.Any(x => x.Id == dto.Role))
              .OrderBy(d => d.Account.Status)
              .OrderBy(d => d.Organization.OrgCode)
              .OrderByDescending(d => d.CreationTime)

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

@@ -27,11 +27,12 @@ namespace Hotline.Application.Mappers
                 .Map(d => d.Name, x => x.Name ?? x.UserName);
 
             config.NewConfig<User, UserDto>()
-                .IgnoreIf((s, d) => s.Account == null, d => d.UserName, d => d.Roles)
+                .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)
                 .Map(d => d.UserName, x => x.Account.UserName)
                 .Map(d => d.OrgName, x => x.Organization.OrgName)
-                .Map(d => d.Roles, x => string.Join(',', x.Account.Roles.Select(d => d.DisplayName)))
+                .Map(d => d.Roles, x => string.Join(',', x.Roles.Select(d => d.DisplayName)))
                 .Map(d => d.State, x => x.IsDeleted ? "已删除" : "正常")
                 .IgnoreNullValues(true);
 

+ 3 - 0
src/Hotline/Users/User.cs

@@ -61,5 +61,8 @@ namespace Hotline.Users
 
         [Navigate(NavigateType.OneToOne, nameof(Id))]
         public Account Account { get; set; }
+
+        [Navigate(typeof(AccountRole), nameof(AccountRole.AccountId), nameof(AccountRole.RoleId))]
+        public List<Role> Roles { get; set; }
     }
 }