Explorar el Código

用户管理新增直属主管、重置密码、设置主管功能

zhontai hace 2 años
padre
commit
142f8426dc

+ 1 - 1
build/pkg.props

@@ -1,6 +1,6 @@
 <Project>
   <PropertyGroup>
-    <Version>2.3.0</Version>
+    <Version>2.3.1</Version>
 	<TargetFramework>net6.0</TargetFramework>
 	<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
 	<GenerateDocumentationFile>true</GenerateDocumentationFile>

+ 6 - 1
src/platform/ZhonTai.Admin/Domain/UserOrg/UserOrgEntity.cs

@@ -10,7 +10,7 @@ namespace ZhonTai.Admin.Domain.UserOrg;
 /// </summary>
 [Table(Name = "ad_user_org")]
 [Index("idx_{tablename}_01", nameof(UserId) + "," + nameof(OrgId), true)]
-public partial class UserOrgEntity : EntityAdd
+public partial class UserOrgEntity : EntityUpdate
 {
     /// <summary>
     /// 用户Id
@@ -31,4 +31,9 @@ public partial class UserOrgEntity : EntityAdd
     /// 部门
     /// </summary>
     public OrgEntity Org { get; set; }
+
+    /// <summary>
+    /// 是否主管
+    /// </summary>
+    public bool IsManager { get; set; } = false;
 }

+ 10 - 0
src/platform/ZhonTai.Admin/Services/User/Dto/UserAddInput.cs

@@ -55,6 +55,16 @@ public class UserAddInput
     /// </summary>
     public long OrgId { get; set; }
 
+    /// <summary>
+    /// 直属主管Id
+    /// </summary>
+    public long? ManagerUserId { get; set; }
+
+    /// <summary>
+    /// 直属主管姓名
+    /// </summary>
+    public string ManagerUserName { get; set; }
+
     /// <summary>
     /// 状态
     /// </summary>

+ 0 - 5
src/platform/ZhonTai.Admin/Services/User/Dto/UserChangePasswordInput.cs

@@ -25,9 +25,4 @@ public class UserChangePasswordInput : Entity
     /// </summary>
     [Required(ErrorMessage = "请输入确认新密码")]
     public string ConfirmPassword { get; set; }
-
-    /// <summary>
-    /// 密码
-    /// </summary>
-    public string Password { get; set; }
 }

+ 5 - 0
src/platform/ZhonTai.Admin/Services/User/Dto/UserGetPageOutput.cs

@@ -44,6 +44,11 @@ public class UserGetPageOutput
     /// </summary>
     public string[] RoleNames { get; set; }
 
+    /// <summary>
+    /// 是否主管
+    /// </summary>
+    public bool IsManager { get; set; } = false;
+
     [JsonIgnore]
     public ICollection<RoleEntity> Roles { get; set; }
 

+ 14 - 0
src/platform/ZhonTai.Admin/Services/User/Dto/UserResetPasswordInput.cs

@@ -0,0 +1,14 @@
+using ZhonTai.Admin.Core.Entities;
+
+namespace ZhonTai.Admin.Services.User.Dto;
+
+/// <summary>
+/// 重置密码
+/// </summary>
+public class UserResetPasswordInput : Entity
+{
+    /// <summary>
+    /// 密码
+    /// </summary>
+    public string Password { get; set; }
+}

+ 22 - 0
src/platform/ZhonTai.Admin/Services/User/Dto/UserSetManagerInput.cs

@@ -0,0 +1,22 @@
+namespace ZhonTai.Admin.Services.User.Dto;
+
+/// <summary>
+/// 设置主管
+/// </summary>
+public class UserSetManagerInput
+{
+    /// <summary>
+    /// 用户Id
+    /// </summary>
+    public long UserId { get; set; }
+
+    /// <summary>
+    /// 部门Id
+    /// </summary>
+	public long OrgId { get; set; }
+
+    /// <summary>
+    /// 是否主管
+    /// </summary>
+    public bool IsManager { get; set; }
+}

+ 10 - 0
src/platform/ZhonTai.Admin/Services/User/Dto/UserUpdateInput.cs

@@ -64,6 +64,16 @@ public partial class UserUpdateInput
     /// </summary>
     public long OrgId { get; set; }
 
+    /// <summary>
+    /// 直属主管Id
+    /// </summary>
+    public long? ManagerUserId { get; set; }
+
+    /// <summary>
+    /// 直属主管姓名
+    /// </summary>
+    public string ManagerUserName { get; set; }
+
     /// <summary>
     /// 状态
     /// </summary>

+ 4 - 0
src/platform/ZhonTai.Admin/Services/User/IUserService.cs

@@ -36,6 +36,10 @@ public interface IUserService
 
     Task ChangePasswordAsync(UserChangePasswordInput input);
 
+    Task<string> ResetPasswordAsync(UserResetPasswordInput input);
+
+    Task SetManagerAsync(UserSetManagerInput input);
+
     Task UpdateBasicAsync(UserUpdateBasicInput input);
 
     Task<UserUpdateBasicInput> GetBasicAsync();

+ 55 - 3
src/platform/ZhonTai.Admin/Services/User/UserService.cs

@@ -73,6 +73,8 @@ public class UserService : BaseService, IUserService, IDynamicApi
             a.Roles,
             a.Orgs,
             a.OrgId,
+            a.ManagerUserId,
+            ManagerUserName = a.ManagerUser.Name,
             Staff = new
             {
                 a.Staff.JobNumber,
@@ -103,7 +105,20 @@ public class UserService : BaseService, IUserService, IDynamicApi
         .OrderByDescending(true, a => a.Id)
         .IncludeMany(a => a.Roles.Select(b => new RoleEntity { Name = b.Name }))
         .Page(input.CurrentPage, input.PageSize)
-        .ToListAsync(a=>new UserGetPageOutput { Roles = a.Roles });
+        .ToListAsync(a => new UserGetPageOutput { Roles = a.Roles });
+
+        if(orgId.HasValue && orgId > 0)
+        {
+            var managerUserIds = await _userOrgRepository.Select.Where(a => a.OrgId == orgId && a.IsManager == true).ToListAsync(a => a.UserId);
+            if (managerUserIds.Any())
+            {
+                var managerUsers = list.Where(a => managerUserIds.Contains(a.Id));
+                foreach (var managerUser in managerUsers)
+                {
+                    managerUser.IsManager = true;
+                }
+            }
+        }
 
         var data = new PageOutput<UserGetPageOutput>()
         {
@@ -346,6 +361,11 @@ public class UserService : BaseService, IUserService, IDynamicApi
             throw ResultOutput.Exception("用户不存在");
         }
 
+        if (input.Id == input.ManagerUserId)
+        {
+            throw ResultOutput.Exception("直属主管不能是自己");
+        }
+
         if (await _userRepository.Select.AnyAsync(a => a.Id != input.Id && a.UserName == input.UserName))
         {
             throw ResultOutput.Exception($"账号已存在");
@@ -434,10 +454,42 @@ public class UserService : BaseService, IUserService, IDynamicApi
             throw ResultOutput.Exception("旧密码不正确");
         }
 
-        input.Password = MD5Encrypt.Encrypt32(input.NewPassword);
+        entity.Password = MD5Encrypt.Encrypt32(input.NewPassword);
+        await _userRepository.UpdateAsync(entity);
+    }
 
-        entity = Mapper.Map(input, entity);
+    /// <summary>
+    /// 重置密码
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task<string> ResetPasswordAsync(UserResetPasswordInput input)
+    {
+        var entity = await _userRepository.GetAsync(input.Id);
+        var password = input.Password;
+        if (password.IsNull())
+        {
+            password = _appConfig.DefaultPassword;
+        }
+        if (password.IsNull())
+        {
+            password = "111111";
+        }
+        entity.Password = MD5Encrypt.Encrypt32(password);
         await _userRepository.UpdateAsync(entity);
+        return password;
+    }
+
+    /// <summary>
+    /// 设置主管
+    /// </summary>
+    /// <param name="input"></param>
+    /// <returns></returns>
+    public async Task SetManagerAsync(UserSetManagerInput input)
+    {
+        var entity = await _userOrgRepository.Where(a => a.UserId == input.UserId && a.OrgId == input.OrgId).FirstAsync();
+        entity.IsManager = input.IsManager;
+        await _userOrgRepository.UpdateAsync(entity);
     }
 
     /// <summary>

+ 79 - 5
src/platform/ZhonTai.Admin/ZhonTai.Admin.xml

@@ -2579,6 +2579,11 @@
             部门
             </summary>
         </member>
+        <member name="P:ZhonTai.Admin.Domain.UserOrg.UserOrgEntity.IsManager">
+            <summary>
+            是否主管
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Domain.UserRole.UserRoleEntity">
             <summary>
             用户角色
@@ -5486,6 +5491,16 @@
             主属部门Id
             </summary>
         </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserAddInput.ManagerUserId">
+            <summary>
+            直属主管Id
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserAddInput.ManagerUserName">
+            <summary>
+            直属主管姓名
+            </summary>
+        </member>
         <member name="P:ZhonTai.Admin.Services.User.Dto.UserAddInput.Status">
             <summary>
             状态
@@ -5516,11 +5531,6 @@
             确认新密码
             </summary>
         </member>
-        <member name="P:ZhonTai.Admin.Services.User.Dto.UserChangePasswordInput.Password">
-            <summary>
-            密码
-            </summary>
-        </member>
         <member name="P:ZhonTai.Admin.Services.User.Dto.UserGetPageOutput.Id">
             <summary>
             主键Id
@@ -5556,11 +5566,46 @@
             角色
             </summary>
         </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserGetPageOutput.IsManager">
+            <summary>
+            是否主管
+            </summary>
+        </member>
         <member name="P:ZhonTai.Admin.Services.User.Dto.UserGetPageOutput.CreatedTime">
             <summary>
             创建时间
             </summary>
         </member>
+        <member name="T:ZhonTai.Admin.Services.User.Dto.UserResetPasswordInput">
+            <summary>
+            重置密码
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserResetPasswordInput.Password">
+            <summary>
+            密码
+            </summary>
+        </member>
+        <member name="T:ZhonTai.Admin.Services.User.Dto.UserSetManagerInput">
+            <summary>
+            设置主管
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserSetManagerInput.UserId">
+            <summary>
+            用户Id
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserSetManagerInput.OrgId">
+            <summary>
+            部门Id
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserSetManagerInput.IsManager">
+            <summary>
+            是否主管
+            </summary>
+        </member>
         <member name="T:ZhonTai.Admin.Services.User.Dto.UserUpdateBasicInput">
             <summary>
             更新基本信息
@@ -5641,6 +5686,16 @@
             主属部门Id
             </summary>
         </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserUpdateInput.ManagerUserId">
+            <summary>
+            直属主管Id
+            </summary>
+        </member>
+        <member name="P:ZhonTai.Admin.Services.User.Dto.UserUpdateInput.ManagerUserName">
+            <summary>
+            直属主管姓名
+            </summary>
+        </member>
         <member name="P:ZhonTai.Admin.Services.User.Dto.UserUpdateInput.Status">
             <summary>
             状态
@@ -5728,6 +5783,20 @@
             <param name="input"></param>
             <returns></returns>
         </member>
+        <member name="M:ZhonTai.Admin.Services.User.UserService.ResetPasswordAsync(ZhonTai.Admin.Services.User.Dto.UserResetPasswordInput)">
+            <summary>
+            重置密码
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:ZhonTai.Admin.Services.User.UserService.SetManagerAsync(ZhonTai.Admin.Services.User.Dto.UserSetManagerInput)">
+            <summary>
+            设置主管
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
         <member name="M:ZhonTai.Admin.Services.User.UserService.DeleteAsync(System.Int64)">
             <summary>
             彻底删除用户
@@ -6257,6 +6326,11 @@
             任务处理器
             </summary>
         </member>
+        <member name="P:ZhonTai.Admin.Tools.TaskScheduler.TaskSchedulerOptions.CustomTaskHandler">
+            <summary>
+            自定义任务处理器
+            </summary>
+        </member>
         <member name="M:ZhonTai.Admin.Tools.TaskScheduler.TaskSchedulerServiceExtensions.AddTaskScheduler(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{ZhonTai.Admin.Tools.TaskScheduler.TaskSchedulerOptions})">
             <summary>
             添加任务调度