Просмотр исходного кода

😂恢复仓储注入模式,去掉延时加载模式

zuohuaijun 1 год назад
Родитель
Сommit
48d388ff61

+ 13 - 21
Admin.NET/Admin.NET.Core/Service/Auth/SysLdapService.cs

@@ -14,19 +14,11 @@ namespace Admin.NET.Core;
 [ApiDescriptionSettings(Order = 496)]
 public class SysLdapService : IDynamicApiController, ITransient
 {
-    private SqlSugarRepository<SysLdap> sysLdapRep = null;
+    private readonly SqlSugarRepository<SysLdap> _sysLdapRep;
 
-    public SysLdapService()
+    public SysLdapService(SqlSugarRepository<SysLdap> sysLdapRep)
     {
-    }
-
-    public SqlSugarRepository<SysLdap> SysLdapRep
-    {
-        get
-        {
-            sysLdapRep ??= App.GetRequiredService<SqlSugarRepository<SysLdap>>();
-            return sysLdapRep;
-        }
+        _sysLdapRep = sysLdapRep;
     }
 
     /// <summary>
@@ -37,7 +29,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     [DisplayName("获取系统域登录配置分页列表")]
     public async Task<SqlSugarPagedList<SysLdap>> Page(SysLdapInput input)
     {
-        return await SysLdapRep.AsQueryable()
+        return await _sysLdapRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.SearchKey), u => u.Host.Contains(input.SearchKey.Trim()))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Host), u => u.Host.Contains(input.Host.Trim()))
             .OrderBy(u => u.CreateTime, OrderByType.Desc)
@@ -55,7 +47,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     {
         var entity = input.Adapt<SysLdap>();
         entity.BindPass = CryptogramUtil.Encrypt(input.BindPass);
-        await SysLdapRep.InsertAsync(entity);
+        await _sysLdapRep.InsertAsync(entity);
         return entity.Id;
     }
 
@@ -74,7 +66,7 @@ public class SysLdapService : IDynamicApiController, ITransient
             entity.BindPass = CryptogramUtil.Encrypt(input.BindPass); // 加密
         }
 
-        await SysLdapRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+        await _sysLdapRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -86,8 +78,8 @@ public class SysLdapService : IDynamicApiController, ITransient
     [DisplayName("删除系统域登录配置")]
     public async Task Delete(DeleteSysLdapInput input)
     {
-        var entity = await SysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
-        await SysLdapRep.FakeDeleteAsync(entity); // 假删除
+        var entity = await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        await _sysLdapRep.FakeDeleteAsync(entity); // 假删除
         //await _rep.DeleteAsync(entity); // 真删除
     }
 
@@ -99,7 +91,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     [DisplayName("获取系统域登录配置详情")]
     public async Task<SysLdap> GetDetail([FromQuery] DetailSysLdapInput input)
     {
-        return await SysLdapRep.GetFirstAsync(u => u.Id == input.Id);
+        return await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id);
     }
 
     /// <summary>
@@ -109,7 +101,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     [DisplayName("获取系统域登录配置列表")]
     public async Task<List<SysLdap>> GetList()
     {
-        return await SysLdapRep.AsQueryable().Select<SysLdap>().ToListAsync();
+        return await _sysLdapRep.AsQueryable().Select<SysLdap>().ToListAsync();
     }
 
     /// <summary>
@@ -122,7 +114,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     [NonAction]
     public async Task<bool> AuthAccount(long tenantId, string account, string password)
     {
-        var sysLdap = await SysLdapRep.GetFirstAsync(u => u.TenantId == tenantId) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        var sysLdap = await _sysLdapRep.GetFirstAsync(u => u.TenantId == tenantId) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
         var ldapConn = new LdapConnection();
         try
         {
@@ -170,7 +162,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     [DisplayName("同步域用户")]
     public async Task SyncUser(SyncSysLdapInput input)
     {
-        var sysLdap = await SysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        var sysLdap = await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
         var ldapConn = new LdapConnection();
         try
         {
@@ -302,7 +294,7 @@ public class SysLdapService : IDynamicApiController, ITransient
     [DisplayName("同步域组织")]
     public async Task SyncDept(SyncSysLdapInput input)
     {
-        var sysLdap = await SysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        var sysLdap = await _sysLdapRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
         var ldapConn = new LdapConnection();
         try
         {

+ 19 - 26
Admin.NET/Admin.NET.Core/Service/Config/SysConfigService.cs

@@ -13,20 +13,13 @@ namespace Admin.NET.Core.Service;
 public class SysConfigService : IDynamicApiController, ITransient
 {
     private readonly SysCacheService _sysCacheService;
-    private SqlSugarRepository<SysConfig> sysConfigRep = null;
+    private readonly SqlSugarRepository<SysConfig> _sysConfigRep;
 
-    public SysConfigService(SysCacheService sysCacheService)
+    public SysConfigService(SysCacheService sysCacheService,
+        SqlSugarRepository<SysConfig> sysConfigRep)
     {
         _sysCacheService = sysCacheService;
-    }
-
-    public SqlSugarRepository<SysConfig> SysConfigRep
-    {
-        get
-        {
-            sysConfigRep ??= App.GetRequiredService<SqlSugarRepository<SysConfig>>();
-            return sysConfigRep;
-        }
+        _sysConfigRep = sysConfigRep;
     }
 
     /// <summary>
@@ -37,7 +30,7 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("获取参数配置分页列表")]
     public async Task<SqlSugarPagedList<SysConfig>> Page(PageConfigInput input)
     {
-        return await SysConfigRep.AsQueryable()
+        return await _sysConfigRep.AsQueryable()
             .Where(u => u.GroupCode != "WebConfig") // 不显示 WebConfig 分组
             .WhereIF(!string.IsNullOrWhiteSpace(input.Name?.Trim()), u => u.Name.Contains(input.Name))
             .WhereIF(!string.IsNullOrWhiteSpace(input.Code?.Trim()), u => u.Code.Contains(input.Code))
@@ -53,7 +46,7 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("获取参数配置列表")]
     public async Task<List<SysConfig>> GetList()
     {
-        return await SysConfigRep.GetListAsync();
+        return await _sysConfigRep.GetListAsync();
     }
 
     /// <summary>
@@ -65,11 +58,11 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("增加参数配置")]
     public async Task AddConfig(AddConfigInput input)
     {
-        var isExist = await SysConfigRep.IsAnyAsync(u => u.Name == input.Name || u.Code == input.Code);
+        var isExist = await _sysConfigRep.IsAnyAsync(u => u.Name == input.Name || u.Code == input.Code);
         if (isExist)
             throw Oops.Oh(ErrorCodeEnum.D9000);
 
-        await SysConfigRep.InsertAsync(input.Adapt<SysConfig>());
+        await _sysConfigRep.InsertAsync(input.Adapt<SysConfig>());
     }
 
     /// <summary>
@@ -81,12 +74,12 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("更新参数配置")]
     public async Task UpdateConfig(UpdateConfigInput input)
     {
-        var isExist = await SysConfigRep.IsAnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
+        var isExist = await _sysConfigRep.IsAnyAsync(u => (u.Name == input.Name || u.Code == input.Code) && u.Id != input.Id);
         if (isExist)
             throw Oops.Oh(ErrorCodeEnum.D9000);
 
         var config = input.Adapt<SysConfig>();
-        await SysConfigRep.AsUpdateable(config).IgnoreColumns(true).ExecuteCommandAsync();
+        await _sysConfigRep.AsUpdateable(config).IgnoreColumns(true).ExecuteCommandAsync();
 
         _sysCacheService.Remove($"{CacheConst.KeyConfig}{config.Code}");
     }
@@ -100,11 +93,11 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("删除参数配置")]
     public async Task DeleteConfig(DeleteConfigInput input)
     {
-        var config = await SysConfigRep.GetFirstAsync(u => u.Id == input.Id);
+        var config = await _sysConfigRep.GetFirstAsync(u => u.Id == input.Id);
         if (config.SysFlag == YesNoEnum.Y) // 禁止删除系统参数
             throw Oops.Oh(ErrorCodeEnum.D9001);
 
-        await SysConfigRep.DeleteAsync(config);
+        await _sysConfigRep.DeleteAsync(config);
 
         _sysCacheService.Remove($"{CacheConst.KeyConfig}{config.Code}");
     }
@@ -120,11 +113,11 @@ public class SysConfigService : IDynamicApiController, ITransient
     {
         foreach (var id in ids)
         {
-            var config = await SysConfigRep.GetFirstAsync(u => u.Id == id);
+            var config = await _sysConfigRep.GetFirstAsync(u => u.Id == id);
             if (config.SysFlag == YesNoEnum.Y) // 禁止删除系统参数
                 continue;
 
-            await SysConfigRep.DeleteAsync(config);
+            await _sysConfigRep.DeleteAsync(config);
 
             _sysCacheService.Remove($"{CacheConst.KeyConfig}{config.Code}");
         }
@@ -138,7 +131,7 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("获取参数配置详情")]
     public async Task<SysConfig> GetDetail([FromQuery] ConfigInput input)
     {
-        return await SysConfigRep.GetFirstAsync(u => u.Id == input.Id);
+        return await _sysConfigRep.GetFirstAsync(u => u.Id == input.Id);
     }
 
     /// <summary>
@@ -154,7 +147,7 @@ public class SysConfigService : IDynamicApiController, ITransient
         var value = _sysCacheService.Get<string>($"{CacheConst.KeyConfig}{code}");
         if (string.IsNullOrEmpty(value))
         {
-            var config = await SysConfigRep.GetFirstAsync(u => u.Code == code);
+            var config = await _sysConfigRep.GetFirstAsync(u => u.Code == code);
             value = config != null ? config.Value : default;
             _sysCacheService.Set($"{CacheConst.KeyConfig}{code}", value);
         }
@@ -171,11 +164,11 @@ public class SysConfigService : IDynamicApiController, ITransient
     [NonAction]
     public async Task UpdateConfigValue(string code, string value)
     {
-        var config = await SysConfigRep.GetFirstAsync(u => u.Code == code);
+        var config = await _sysConfigRep.GetFirstAsync(u => u.Code == code);
         if (config == null) return;
 
         config.Value = value;
-        await SysConfigRep.AsUpdateable(config).ExecuteCommandAsync();
+        await _sysConfigRep.AsUpdateable(config).ExecuteCommandAsync();
 
         _sysCacheService.Remove($"{CacheConst.KeyConfig}{config.Code}");
     }
@@ -187,7 +180,7 @@ public class SysConfigService : IDynamicApiController, ITransient
     [DisplayName("获取分组列表")]
     public async Task<List<string>> GetGroupList()
     {
-        return await SysConfigRep.AsQueryable()
+        return await _sysConfigRep.AsQueryable()
             .Where(u => u.GroupCode != "WebConfig") // 不显示 WebConfig 分组
             .GroupBy(u => u.GroupCode)
             .Select(u => u.GroupCode).ToListAsync();

+ 9 - 16
Admin.NET/Admin.NET.Core/Service/OnlineUser/SysOnlineUserService.cs

@@ -16,22 +16,15 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
 {
     private readonly SysConfigService _sysConfigService;
     private readonly IHubContext<OnlineUserHub, IOnlineUserHub> _onlineUserHubContext;
-    private SqlSugarRepository<SysOnlineUser> sysOnlineUerRep = null;
+    private readonly SqlSugarRepository<SysOnlineUser> _sysOnlineUerRep;
 
     public SysOnlineUserService(SysConfigService sysConfigService,
-        IHubContext<OnlineUserHub, IOnlineUserHub> onlineUserHubContext)
+        IHubContext<OnlineUserHub, IOnlineUserHub> onlineUserHubContext,
+        SqlSugarRepository<SysOnlineUser> sysOnlineUerRep)
     {
         _sysConfigService = sysConfigService;
         _onlineUserHubContext = onlineUserHubContext;
-    }
-
-    public SqlSugarRepository<SysOnlineUser> SysOnlineUerRep
-    {
-        get
-        {
-            sysOnlineUerRep ??= App.GetRequiredService<SqlSugarRepository<SysOnlineUser>>();
-            return sysOnlineUerRep;
-        }
+        _sysOnlineUerRep = sysOnlineUerRep;
     }
 
     /// <summary>
@@ -41,7 +34,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
     [DisplayName("获取在线用户分页列表")]
     public async Task<SqlSugarPagedList<SysOnlineUser>> Page(PageOnlineUserInput input)
     {
-        return await SysOnlineUerRep.AsQueryable()
+        return await _sysOnlineUerRep.AsQueryable()
             .WhereIF(!string.IsNullOrWhiteSpace(input.UserName), u => u.UserName.Contains(input.UserName))
             .WhereIF(!string.IsNullOrWhiteSpace(input.RealName), u => u.RealName.Contains(input.RealName))
             .ToPagedListAsync(input.Page, input.PageSize);
@@ -57,7 +50,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
     public async Task ForceOffline(SysOnlineUser user)
     {
         await _onlineUserHubContext.Clients.Client(user.ConnectionId).ForceOffline("强制下线");
-        await SysOnlineUerRep.DeleteAsync(user);
+        await _sysOnlineUerRep.DeleteAsync(user);
     }
 
     /// <summary>
@@ -69,7 +62,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
     [NonAction]
     public async Task PublicNotice(SysNotice notice, List<long> userIds)
     {
-        var userList = await SysOnlineUerRep.GetListAsync(u => userIds.Contains(u.UserId));
+        var userList = await _sysOnlineUerRep.GetListAsync(u => userIds.Contains(u.UserId));
         if (userList.Count == 0) return;
 
         foreach (var item in userList)
@@ -87,7 +80,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
     {
         if (await _sysConfigService.GetConfigValue<bool>(CommonConst.SysSingleLogin))
         {
-            var users = await SysOnlineUerRep.GetListAsync(u => u.UserId == userId);
+            var users = await _sysOnlineUerRep.GetListAsync(u => u.UserId == userId);
             foreach (var user in users)
             {
                 await ForceOffline(user);
@@ -103,7 +96,7 @@ public class SysOnlineUserService : IDynamicApiController, ITransient
     [NonAction]
     public async Task ForceOffline(long userId)
     {
-        var users = await SysOnlineUerRep.GetListAsync(u => u.UserId == userId);
+        var users = await _sysOnlineUerRep.GetListAsync(u => u.UserId == userId);
         foreach (var user in users)
         {
             await ForceOffline(user);

+ 25 - 32
Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs

@@ -17,28 +17,21 @@ public class SysOrgService : IDynamicApiController, ITransient
     private readonly SysUserExtOrgService _sysUserExtOrgService;
     private readonly SysUserRoleService _sysUserRoleService;
     private readonly SysRoleOrgService _sysRoleOrgService;
-    private SqlSugarRepository<SysOrg> sysOrgRep = null;
+    private readonly SqlSugarRepository<SysOrg> _sysOrgRep;
 
     public SysOrgService(UserManager userManager,
         SysCacheService sysCacheService,
         SysUserExtOrgService sysUserExtOrgService,
         SysUserRoleService sysUserRoleService,
-        SysRoleOrgService sysRoleOrgService)
+        SysRoleOrgService sysRoleOrgService,
+        SqlSugarRepository<SysOrg> sysOrgRep)
     {
         _userManager = userManager;
         _sysCacheService = sysCacheService;
         _sysUserExtOrgService = sysUserExtOrgService;
         _sysUserRoleService = sysUserRoleService;
         _sysRoleOrgService = sysRoleOrgService;
-    }
-
-    public SqlSugarRepository<SysOrg> SysOrgRep
-    {
-        get
-        {
-            sysOrgRep ??= App.GetRequiredService<SqlSugarRepository<SysOrg>>();
-            return sysOrgRep;
-        }
+        _sysOrgRep = sysOrgRep;
     }
 
     /// <summary>
@@ -51,7 +44,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         // 获取拥有的机构Id集合
         var userOrgIdList = await GetUserOrgIdList();
 
-        var iSugarQueryable = SysOrgRep.AsQueryable().OrderBy(u => u.OrderNo);
+        var iSugarQueryable = _sysOrgRep.AsQueryable().OrderBy(u => u.OrderNo);
 
         // 带条件筛选时返回列表数据
         if (!string.IsNullOrWhiteSpace(input.Name) || !string.IsNullOrWhiteSpace(input.Code) || !string.IsNullOrWhiteSpace(input.Type))
@@ -75,7 +68,7 @@ public class SysOrgService : IDynamicApiController, ITransient
             HandlerOrgTree(orgTree, userOrgIdList);
         }
 
-        var sysOrg = await SysOrgRep.GetSingleAsync(u => u.Id == input.Id);
+        var sysOrg = await _sysOrgRep.GetSingleAsync(u => u.Id == input.Id);
         if (sysOrg != null)
         {
             sysOrg.Children = orgTree;
@@ -111,7 +104,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         if (!_userManager.SuperAdmin && input.Pid == 0)
             throw Oops.Oh(ErrorCodeEnum.D2009);
 
-        if (await SysOrgRep.IsAnyAsync(u => u.Name == input.Name && u.Code == input.Code))
+        if (await _sysOrgRep.IsAnyAsync(u => u.Name == input.Name && u.Code == input.Code))
             throw Oops.Oh(ErrorCodeEnum.D2002);
 
         if (!_userManager.SuperAdmin && input.Pid != 0)
@@ -130,12 +123,12 @@ public class SysOrgService : IDynamicApiController, ITransient
         }
         else
         {
-            var pOrg = await SysOrgRep.GetFirstAsync(u => u.Id == input.Pid);
+            var pOrg = await _sysOrgRep.GetFirstAsync(u => u.Id == input.Pid);
             if (pOrg != null)
                 DeleteAllUserOrgCache(pOrg.Id, pOrg.Pid);
         }
 
-        var newOrg = await SysOrgRep.AsInsertable(input.Adapt<SysOrg>()).ExecuteReturnEntityAsync();
+        var newOrg = await _sysOrgRep.AsInsertable(input.Adapt<SysOrg>()).ExecuteReturnEntityAsync();
         return newOrg.Id;
     }
 
@@ -148,8 +141,8 @@ public class SysOrgService : IDynamicApiController, ITransient
     public async Task BatchAddOrgs(List<SysOrg> orgs)
     {
         DeleteAllUserOrgCache(0, 0);
-        await SysOrgRep.AsDeleteable().ExecuteCommandAsync();
-        await SysOrgRep.AsInsertable(orgs).ExecuteCommandAsync();
+        await _sysOrgRep.AsDeleteable().ExecuteCommandAsync();
+        await _sysOrgRep.AsInsertable(orgs).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -171,7 +164,7 @@ public class SysOrgService : IDynamicApiController, ITransient
             //_ = pOrg ?? throw Oops.Oh(ErrorCodeEnum.D2000);
 
             // 若父机构发生变化则清空用户机构缓存
-            var sysOrg = await SysOrgRep.GetFirstAsync(u => u.Id == input.Id);
+            var sysOrg = await _sysOrgRep.GetFirstAsync(u => u.Id == input.Id);
             if (sysOrg != null && sysOrg.Pid != input.Pid)
             {
                 // 删除与此机构、新父机构有关的用户机构缓存
@@ -181,7 +174,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         if (input.Id == input.Pid)
             throw Oops.Oh(ErrorCodeEnum.D2001);
 
-        if (await SysOrgRep.IsAnyAsync(u => u.Name == input.Name && u.Code == input.Code && u.Id != input.Id))
+        if (await _sysOrgRep.IsAnyAsync(u => u.Name == input.Name && u.Code == input.Code && u.Id != input.Id))
             throw Oops.Oh(ErrorCodeEnum.D2002);
 
         // 父Id不能为自己的子节点
@@ -197,7 +190,7 @@ public class SysOrgService : IDynamicApiController, ITransient
                 throw Oops.Oh(ErrorCodeEnum.D2003);
         }
 
-        await SysOrgRep.AsUpdateable(input.Adapt<SysOrg>()).IgnoreColumns(true).ExecuteCommandAsync();
+        await _sysOrgRep.AsUpdateable(input.Adapt<SysOrg>()).IgnoreColumns(true).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -210,7 +203,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     [DisplayName("删除机构")]
     public async Task DeleteOrg(DeleteOrgInput input)
     {
-        var sysOrg = await SysOrgRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        var sysOrg = await _sysOrgRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
 
         // 是否有权限操作此机构
         if (!_userManager.SuperAdmin)
@@ -221,13 +214,13 @@ public class SysOrgService : IDynamicApiController, ITransient
         }
 
         // 若机构为租户默认机构禁止删除
-        var isTenantOrg = await SysOrgRep.ChangeRepository<SqlSugarRepository<SysTenant>>()
+        var isTenantOrg = await _sysOrgRep.ChangeRepository<SqlSugarRepository<SysTenant>>()
             .IsAnyAsync(u => u.OrgId == input.Id);
         if (isTenantOrg)
             throw Oops.Oh(ErrorCodeEnum.D2008);
 
         // 若机构有用户则禁止删除
-        var orgHasEmp = await SysOrgRep.ChangeRepository<SqlSugarRepository<SysUser>>()
+        var orgHasEmp = await _sysOrgRep.ChangeRepository<SqlSugarRepository<SysUser>>()
             .IsAnyAsync(u => u.OrgId == input.Id);
         if (orgHasEmp)
             throw Oops.Oh(ErrorCodeEnum.D2004);
@@ -238,11 +231,11 @@ public class SysOrgService : IDynamicApiController, ITransient
             throw Oops.Oh(ErrorCodeEnum.D2005);
 
         // 若子机构有用户则禁止删除
-        var childOrgTreeList = await SysOrgRep.AsQueryable().ToChildListAsync(u => u.Pid, input.Id, true);
+        var childOrgTreeList = await _sysOrgRep.AsQueryable().ToChildListAsync(u => u.Pid, input.Id, true);
         var childOrgIdList = childOrgTreeList.Select(u => u.Id).ToList();
 
         // 若子机构有用户则禁止删除
-        var cOrgHasEmp = await SysOrgRep.ChangeRepository<SqlSugarRepository<SysUser>>()
+        var cOrgHasEmp = await _sysOrgRep.ChangeRepository<SqlSugarRepository<SysUser>>()
             .IsAnyAsync(u => childOrgIdList.Contains(u.OrgId));
         if (cOrgHasEmp)
             throw Oops.Oh(ErrorCodeEnum.D2007);
@@ -251,7 +244,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         DeleteAllUserOrgCache(sysOrg.Id, sysOrg.Pid);
 
         // 级联删除机构子节点
-        await SysOrgRep.DeleteAsync(u => childOrgIdList.Contains(u.Id));
+        await _sysOrgRep.DeleteAsync(u => childOrgIdList.Contains(u.Id));
 
         // 级联删除角色机构数据
         await _sysRoleOrgService.DeleteRoleOrgByOrgIdList(childOrgIdList);
@@ -276,14 +269,14 @@ public class SysOrgService : IDynamicApiController, ITransient
                 var userId = long.Parse(userOrgKey.Substring(CacheConst.KeyUserOrg));
                 if (userOrgs != null && (userOrgs.Contains(orgId) || userOrgs.Contains(orgPid)))
                 {
-                    SqlSugarFilter.DeleteUserOrgCache(userId, SysOrgRep.Context.CurrentConnectionConfig.ConfigId.ToString());
+                    SqlSugarFilter.DeleteUserOrgCache(userId, _sysOrgRep.Context.CurrentConnectionConfig.ConfigId.ToString());
                 }
                 if (orgPid == 0)
                 {
                     var dataScope = _sysCacheService.Get<int>($"{CacheConst.KeyRoleMaxDataScope}{userId}");
                     if (dataScope == (int)DataScopeEnum.All)
                     {
-                        SqlSugarFilter.DeleteUserOrgCache(userId, SysOrgRep.Context.CurrentConnectionConfig.ConfigId.ToString());
+                        SqlSugarFilter.DeleteUserOrgCache(userId, _sysOrgRep.Context.CurrentConnectionConfig.ConfigId.ToString());
                     }
                 }
             }
@@ -313,7 +306,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         if (orgIdList == null || orgIdList.Count < 1)
         {
             // 本人创建机构集合
-            var orgList0 = await SysOrgRep.AsQueryable().Where(u => u.CreateUserId == userId).Select(u => u.Id).ToListAsync();
+            var orgList0 = await _sysOrgRep.AsQueryable().Where(u => u.CreateUserId == userId).Select(u => u.Id).ToListAsync();
             // 扩展机构集合
             var orgList1 = await _sysUserExtOrgService.GetUserExtOrgList(userId);
             // 角色机构集合
@@ -403,7 +396,7 @@ public class SysOrgService : IDynamicApiController, ITransient
         // 若数据范围是全部,则获取所有机构Id集合
         if (dataScope == (int)DataScopeEnum.All)
         {
-            orgIdList = await SysOrgRep.AsQueryable().Select(u => u.Id).ToListAsync();
+            orgIdList = await _sysOrgRep.AsQueryable().Select(u => u.Id).ToListAsync();
         }
         // 若数据范围是本部门及以下,则获取本节点和子节点集合
         else if (dataScope == (int)DataScopeEnum.DeptChild)
@@ -426,7 +419,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     [NonAction]
     public async Task<List<long>> GetChildIdListWithSelfById(long pid)
     {
-        var orgTreeList = await SysOrgRep.AsQueryable().ToChildListAsync(u => u.Pid, pid, true);
+        var orgTreeList = await _sysOrgRep.AsQueryable().ToChildListAsync(u => u.Pid, pid, true);
         return orgTreeList.Select(u => u.Id).ToList();
     }
 }

+ 8 - 16
Admin.NET/Admin.NET.Core/Service/Role/SysRoleOrgService.cs

@@ -11,19 +11,11 @@ namespace Admin.NET.Core.Service;
 /// </summary>
 public class SysRoleOrgService : ITransient
 {
-    private SqlSugarRepository<SysRoleOrg> sysRoleOrgRep = null;
+    private readonly SqlSugarRepository<SysRoleOrg> _sysRoleOrgRep;
 
-    public SysRoleOrgService()
+    public SysRoleOrgService(SqlSugarRepository<SysRoleOrg> sysRoleOrgRep)
     {
-    }
-
-    public SqlSugarRepository<SysRoleOrg> SysRoleOrgRep
-    {
-        get
-        {
-            sysRoleOrgRep ??= App.GetRequiredService<SqlSugarRepository<SysRoleOrg>>();
-            return sysRoleOrgRep;
-        }
+        _sysRoleOrgRep = sysRoleOrgRep;
     }
 
     /// <summary>
@@ -33,7 +25,7 @@ public class SysRoleOrgService : ITransient
     /// <returns></returns>
     public async Task GrantRoleOrg(RoleOrgInput input)
     {
-        await SysRoleOrgRep.DeleteAsync(u => u.RoleId == input.Id);
+        await _sysRoleOrgRep.DeleteAsync(u => u.RoleId == input.Id);
         if (input.DataScope == (int)DataScopeEnum.Define)
         {
             var roleOrgs = input.OrgIdList.Select(u => new SysRoleOrg
@@ -41,7 +33,7 @@ public class SysRoleOrgService : ITransient
                 RoleId = input.Id,
                 OrgId = u
             }).ToList();
-            await SysRoleOrgRep.InsertRangeAsync(roleOrgs);
+            await _sysRoleOrgRep.InsertRangeAsync(roleOrgs);
         }
     }
 
@@ -54,7 +46,7 @@ public class SysRoleOrgService : ITransient
     {
         if (roleIdList?.Count > 0)
         {
-            return await SysRoleOrgRep.AsQueryable()
+            return await _sysRoleOrgRep.AsQueryable()
                 .Where(u => roleIdList.Contains(u.RoleId))
                 .Select(u => u.OrgId).ToListAsync();
         }
@@ -68,7 +60,7 @@ public class SysRoleOrgService : ITransient
     /// <returns></returns>
     public async Task DeleteRoleOrgByOrgIdList(List<long> orgIdList)
     {
-        await SysRoleOrgRep.DeleteAsync(u => orgIdList.Contains(u.OrgId));
+        await _sysRoleOrgRep.DeleteAsync(u => orgIdList.Contains(u.OrgId));
     }
 
     /// <summary>
@@ -78,6 +70,6 @@ public class SysRoleOrgService : ITransient
     /// <returns></returns>
     public async Task DeleteRoleOrgByRoleId(long roleId)
     {
-        await SysRoleOrgRep.DeleteAsync(u => u.RoleId == roleId);
+        await _sysRoleOrgRep.DeleteAsync(u => u.RoleId == roleId);
     }
 }

+ 10 - 18
Admin.NET/Admin.NET.Core/Service/User/SysUserExtOrgService.cs

@@ -11,19 +11,11 @@ namespace Admin.NET.Core.Service;
 /// </summary>
 public class SysUserExtOrgService : ITransient
 {
-    private SqlSugarRepository<SysUserExtOrg> sysUserExtOrgRep = null;
+    private readonly SqlSugarRepository<SysUserExtOrg> _sysUserExtOrgRep;
 
-    public SysUserExtOrgService()
+    public SysUserExtOrgService(SqlSugarRepository<SysUserExtOrg> sysUserExtOrgRep)
     {
-    }
-
-    public SqlSugarRepository<SysUserExtOrg> SysUserExtOrgRep
-    {
-        get
-        {
-            sysUserExtOrgRep ??= App.GetRequiredService<SqlSugarRepository<SysUserExtOrg>>();
-            return sysUserExtOrgRep;
-        }
+        _sysUserExtOrgRep = sysUserExtOrgRep;
     }
 
     /// <summary>
@@ -33,7 +25,7 @@ public class SysUserExtOrgService : ITransient
     /// <returns></returns>
     public async Task<List<SysUserExtOrg>> GetUserExtOrgList(long userId)
     {
-        return await SysUserExtOrgRep.GetListAsync(u => u.UserId == userId);
+        return await _sysUserExtOrgRep.GetListAsync(u => u.UserId == userId);
     }
 
     /// <summary>
@@ -44,14 +36,14 @@ public class SysUserExtOrgService : ITransient
     /// <returns></returns>
     public async Task UpdateUserExtOrg(long userId, List<SysUserExtOrg> extOrgList)
     {
-        await SysUserExtOrgRep.DeleteAsync(u => u.UserId == userId);
+        await _sysUserExtOrgRep.DeleteAsync(u => u.UserId == userId);
 
         if (extOrgList == null || extOrgList.Count < 1) return;
         extOrgList.ForEach(u =>
         {
             u.UserId = userId;
         });
-        await SysUserExtOrgRep.InsertRangeAsync(extOrgList);
+        await _sysUserExtOrgRep.InsertRangeAsync(extOrgList);
     }
 
     /// <summary>
@@ -61,7 +53,7 @@ public class SysUserExtOrgService : ITransient
     /// <returns></returns>
     public async Task DeleteUserExtOrgByOrgIdList(List<long> orgIdList)
     {
-        await SysUserExtOrgRep.DeleteAsync(u => orgIdList.Contains(u.OrgId));
+        await _sysUserExtOrgRep.DeleteAsync(u => orgIdList.Contains(u.OrgId));
     }
 
     /// <summary>
@@ -71,7 +63,7 @@ public class SysUserExtOrgService : ITransient
     /// <returns></returns>
     public async Task DeleteUserExtOrgByUserId(long userId)
     {
-        await SysUserExtOrgRep.DeleteAsync(u => u.UserId == userId);
+        await _sysUserExtOrgRep.DeleteAsync(u => u.UserId == userId);
     }
 
     /// <summary>
@@ -81,7 +73,7 @@ public class SysUserExtOrgService : ITransient
     /// <returns></returns>
     public async Task<bool> HasUserOrg(long orgId)
     {
-        return await SysUserExtOrgRep.IsAnyAsync(u => u.OrgId == orgId);
+        return await _sysUserExtOrgRep.IsAnyAsync(u => u.OrgId == orgId);
     }
 
     /// <summary>
@@ -91,6 +83,6 @@ public class SysUserExtOrgService : ITransient
     /// <returns></returns>
     public async Task<bool> HasUserPos(long posId)
     {
-        return await SysUserExtOrgRep.IsAnyAsync(u => u.PosId == posId);
+        return await _sysUserExtOrgRep.IsAnyAsync(u => u.PosId == posId);
     }
 }

+ 10 - 18
Admin.NET/Admin.NET.Core/Service/User/SysUserLdapService.cs

@@ -11,19 +11,11 @@ namespace Admin.NET.Core.Service;
 /// </summary>
 public class SysUserLdapService : ITransient
 {
-    private SqlSugarRepository<SysUserLdap> sysUserLdapRep = null;
+    private readonly SqlSugarRepository<SysUserLdap> _sysUserLdapRep;
 
-    public SysUserLdapService()
+    public SysUserLdapService(SqlSugarRepository<SysUserLdap> sysUserLdapRep)
     {
-    }
-
-    public SqlSugarRepository<SysUserLdap> SysUserLdapRep
-    {
-        get
-        {
-            sysUserLdapRep ??= App.GetRequiredService<SqlSugarRepository<SysUserLdap>>();
-            return sysUserLdapRep;
-        }
+        _sysUserLdapRep = sysUserLdapRep;
     }
 
     /// <summary>
@@ -34,11 +26,11 @@ public class SysUserLdapService : ITransient
     /// <returns></returns>
     public async Task InsertUserLdaps(long tenantId, List<SysUserLdap> sysUserLdaps)
     {
-        await SysUserLdapRep.DeleteAsync(u => u.TenantId == tenantId);
+        await _sysUserLdapRep.DeleteAsync(u => u.TenantId == tenantId);
 
-        await SysUserLdapRep.InsertRangeAsync(sysUserLdaps);
+        await _sysUserLdapRep.InsertRangeAsync(sysUserLdaps);
 
-        await SysUserLdapRep.AsUpdateable()
+        await _sysUserLdapRep.AsUpdateable()
             .InnerJoin<SysUser>((l, u) => l.EmployeeId == u.Account && u.Status == StatusEnum.Enable && u.IsDelete == false && l.IsDelete == false)
             .SetColumns((l, u) => new SysUserLdap { UserId = u.Id })
             .ExecuteCommandAsync();
@@ -54,12 +46,12 @@ public class SysUserLdapService : ITransient
     /// <returns></returns>
     public async Task AddUserLdap(long tenantId, long userId, string account, string domainAccount)
     {
-        var userLdap = await SysUserLdapRep.GetFirstAsync(u => u.TenantId == tenantId && u.IsDelete == false && (u.Account == account || u.UserId == userId || u.EmployeeId == domainAccount));
+        var userLdap = await _sysUserLdapRep.GetFirstAsync(u => u.TenantId == tenantId && u.IsDelete == false && (u.Account == account || u.UserId == userId || u.EmployeeId == domainAccount));
         if (userLdap != null)
-            await SysUserLdapRep.DeleteByIdAsync(userLdap.Id);
+            await _sysUserLdapRep.DeleteByIdAsync(userLdap.Id);
 
         if (!string.IsNullOrWhiteSpace(domainAccount))
-            await SysUserLdapRep.InsertAsync(new SysUserLdap { EmployeeId = account, TenantId = tenantId, UserId = userId, Account = domainAccount });
+            await _sysUserLdapRep.InsertAsync(new SysUserLdap { EmployeeId = account, TenantId = tenantId, UserId = userId, Account = domainAccount });
     }
 
     /// <summary>
@@ -69,6 +61,6 @@ public class SysUserLdapService : ITransient
     /// <returns></returns>
     public async Task DeleteUserLdapByUserId(long userId)
     {
-        await SysUserLdapRep.DeleteAsync(u => u.UserId == userId);
+        await _sysUserLdapRep.DeleteAsync(u => u.UserId == userId);
     }
 }

+ 12 - 19
Admin.NET/Admin.NET.Core/Service/User/SysUserRoleService.cs

@@ -12,20 +12,13 @@ namespace Admin.NET.Core.Service;
 public class SysUserRoleService : ITransient
 {
     private readonly SysCacheService _sysCacheService;
-    private SqlSugarRepository<SysUserRole> sysUserRoleRep = null;
+    private readonly SqlSugarRepository<SysUserRole> _sysUserRoleRep;
 
-    public SysUserRoleService(SysCacheService sysCacheService)
+    public SysUserRoleService(SysCacheService sysCacheService,
+        SqlSugarRepository<SysUserRole> sysUserRoleRep)
     {
         _sysCacheService = sysCacheService;
-    }
-
-    public SqlSugarRepository<SysUserRole> SysUserRoleRep
-    {
-        get
-        {
-            sysUserRoleRep ??= App.GetRequiredService<SqlSugarRepository<SysUserRole>>();
-            return sysUserRoleRep;
-        }
+        _sysUserRoleRep = sysUserRoleRep;
     }
 
     /// <summary>
@@ -35,7 +28,7 @@ public class SysUserRoleService : ITransient
     /// <returns></returns>
     public async Task GrantUserRole(UserRoleInput input)
     {
-        await SysUserRoleRep.DeleteAsync(u => u.UserId == input.UserId);
+        await _sysUserRoleRep.DeleteAsync(u => u.UserId == input.UserId);
 
         if (input.RoleIdList == null || input.RoleIdList.Count < 1) return;
         var roles = input.RoleIdList.Select(u => new SysUserRole
@@ -43,7 +36,7 @@ public class SysUserRoleService : ITransient
             UserId = input.UserId,
             RoleId = u
         }).ToList();
-        await SysUserRoleRep.InsertRangeAsync(roles);
+        await _sysUserRoleRep.InsertRangeAsync(roles);
         _sysCacheService.Remove(CacheConst.KeyUserButton + input.UserId);
     }
 
@@ -54,7 +47,7 @@ public class SysUserRoleService : ITransient
     /// <returns></returns>
     public async Task DeleteUserRoleByRoleId(long roleId)
     {
-        await SysUserRoleRep.AsQueryable()
+        await _sysUserRoleRep.AsQueryable()
              .Where(u => u.RoleId == roleId)
              .Select(u => u.UserId)
              .ForEachAsync(userId =>
@@ -62,7 +55,7 @@ public class SysUserRoleService : ITransient
                  _sysCacheService.Remove(CacheConst.KeyUserButton + userId);
              });
 
-        await SysUserRoleRep.DeleteAsync(u => u.RoleId == roleId);
+        await _sysUserRoleRep.DeleteAsync(u => u.RoleId == roleId);
     }
 
     /// <summary>
@@ -72,7 +65,7 @@ public class SysUserRoleService : ITransient
     /// <returns></returns>
     public async Task DeleteUserRoleByUserId(long userId)
     {
-        await SysUserRoleRep.DeleteAsync(u => u.UserId == userId);
+        await _sysUserRoleRep.DeleteAsync(u => u.UserId == userId);
         _sysCacheService.Remove(CacheConst.KeyUserButton + userId);
     }
 
@@ -83,7 +76,7 @@ public class SysUserRoleService : ITransient
     /// <returns></returns>
     public async Task<List<SysRole>> GetUserRoleList(long userId)
     {
-        var sysUserRoleList = await SysUserRoleRep.AsQueryable()
+        var sysUserRoleList = await _sysUserRoleRep.AsQueryable()
             .Includes(u => u.SysRole)
             .Where(u => u.UserId == userId).ToListAsync();
         return sysUserRoleList.Where(u => u.SysRole != null).Select(u => u.SysRole).ToList();
@@ -96,7 +89,7 @@ public class SysUserRoleService : ITransient
     /// <returns></returns>
     public async Task<List<long>> GetUserRoleIdList(long userId)
     {
-        return await SysUserRoleRep.AsQueryable()
+        return await _sysUserRoleRep.AsQueryable()
             .Where(u => u.UserId == userId).Select(u => u.RoleId).ToListAsync();
     }
 
@@ -107,7 +100,7 @@ public class SysUserRoleService : ITransient
     /// <returns></returns>
     public async Task<List<long>> GetUserIdList(long roleId)
     {
-        return await SysUserRoleRep.AsQueryable()
+        return await _sysUserRoleRep.AsQueryable()
             .Where(u => u.RoleId == roleId).Select(u => u.UserId).ToListAsync();
     }
 }

+ 22 - 29
Admin.NET/Admin.NET.Core/Service/User/SysUserService.cs

@@ -20,7 +20,7 @@ public class SysUserService : IDynamicApiController, ITransient
     private readonly SysOnlineUserService _sysOnlineUserService;
     private readonly SysCacheService _sysCacheService;
     private readonly SysUserLdapService _sysUserLdapService;
-    private SqlSugarRepository<SysUser> sysUserRep = null;
+    private readonly SqlSugarRepository<SysUser> _sysUserRep;
 
     public SysUserService(UserManager userManager,
         SysOrgService sysOrgService,
@@ -29,7 +29,8 @@ public class SysUserService : IDynamicApiController, ITransient
         SysConfigService sysConfigService,
         SysOnlineUserService sysOnlineUserService,
         SysCacheService sysCacheService,
-        SysUserLdapService sysUserLdapService)
+        SysUserLdapService sysUserLdapService,
+        SqlSugarRepository<SysUser> sysUserRep)
     {
         _userManager = userManager;
         _sysOrgService = sysOrgService;
@@ -39,15 +40,7 @@ public class SysUserService : IDynamicApiController, ITransient
         _sysOnlineUserService = sysOnlineUserService;
         _sysCacheService = sysCacheService;
         _sysUserLdapService = sysUserLdapService;
-    }
-
-    public SqlSugarRepository<SysUser> SysUserRep
-    {
-        get
-        {
-            sysUserRep ??= App.GetRequiredService<SqlSugarRepository<SysUser>>();
-            return sysUserRep;
-        }
+        _sysUserRep = sysUserRep;
     }
 
     /// <summary>
@@ -71,7 +64,7 @@ public class SysUserService : IDynamicApiController, ITransient
             orgList = _userManager.SuperAdmin ? null : userOrgIdList;
         }
 
-        return await SysUserRep.AsQueryable()
+        return await _sysUserRep.AsQueryable()
             .LeftJoin<SysOrg>((u, a) => u.OrgId == a.Id)
             .LeftJoin<SysPos>((u, a, b) => u.PosId == b.Id)
             .Where(u => u.AccountType != AccountTypeEnum.SuperAdmin)
@@ -100,14 +93,14 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("增加用户")]
     public virtual async Task<long> AddUser(AddUserInput input)
     {
-        var isExist = await SysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account);
+        var isExist = await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account);
         if (isExist) throw Oops.Oh(ErrorCodeEnum.D1003);
 
         var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
 
         var user = input.Adapt<SysUser>();
         user.Password = CryptogramUtil.Encrypt(password);
-        var newUser = await SysUserRep.AsInsertable(user).ExecuteReturnEntityAsync();
+        var newUser = await _sysUserRep.AsInsertable(user).ExecuteReturnEntityAsync();
 
         input.Id = newUser.Id;
         await UpdateRoleAndExtOrg(input);
@@ -129,19 +122,19 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("更新用户")]
     public virtual async Task UpdateUser(UpdateUserInput input)
     {
-        if (await SysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account && u.Id != input.Id))
+        if (await _sysUserRep.AsQueryable().ClearFilter().AnyAsync(u => u.Account == input.Account && u.Id != input.Id))
             throw Oops.Oh(ErrorCodeEnum.D1003);
 
-        await SysUserRep.AsUpdateable(input.Adapt<SysUser>()).IgnoreColumns(true)
+        await _sysUserRep.AsUpdateable(input.Adapt<SysUser>()).IgnoreColumns(true)
             .IgnoreColumns(u => new { u.Password, u.Status }).ExecuteCommandAsync();
 
         await UpdateRoleAndExtOrg(input);
 
         // 删除用户机构缓存
-        SqlSugarFilter.DeleteUserOrgCache(input.Id, SysUserRep.Context.CurrentConnectionConfig.ConfigId.ToString());
+        SqlSugarFilter.DeleteUserOrgCache(input.Id, _sysUserRep.Context.CurrentConnectionConfig.ConfigId.ToString());
 
         // 若账号的角色和组织架构发生变化,则强制下线账号进行权限更新
-        var user = await SysUserRep.AsQueryable().ClearFilter().FirstAsync(u => u.Id == input.Id);
+        var user = await _sysUserRep.AsQueryable().ClearFilter().FirstAsync(u => u.Id == input.Id);
         var roleIds = await GetOwnRoleList(input.Id);
         if (input.OrgId != user.OrgId || !input.RoleIdList.OrderBy(u => u).SequenceEqual(roleIds.OrderBy(u => u)))
             await _sysOnlineUserService.ForceOffline(input.Id);
@@ -171,7 +164,7 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("删除用户")]
     public virtual async Task DeleteUser(DeleteUserInput input)
     {
-        var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
+        var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         if (user.AccountType == AccountTypeEnum.SuperAdmin)
             throw Oops.Oh(ErrorCodeEnum.D1014);
         if (user.Id == _userManager.UserId)
@@ -180,7 +173,7 @@ public class SysUserService : IDynamicApiController, ITransient
         // 强制下线
         await _sysOnlineUserService.ForceOffline(user.Id);
 
-        await SysUserRep.DeleteAsync(user);
+        await _sysUserRep.DeleteAsync(user);
 
         // 删除用户角色
         await _sysUserRoleService.DeleteUserRoleByUserId(input.Id);
@@ -199,7 +192,7 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("查看用户基本信息")]
     public virtual async Task<SysUser> GetBaseInfo()
     {
-        return await SysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);
+        return await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId);
     }
 
     /// <summary>
@@ -210,7 +203,7 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("更新用户基本信息")]
     public virtual async Task<int> UpdateBaseInfo(SysUser user)
     {
-        return await SysUserRep.AsUpdateable(user)
+        return await _sysUserRep.AsUpdateable(user)
             .IgnoreColumns(u => new { u.CreateTime, u.Account, u.Password, u.AccountType, u.OrgId, u.PosId }).ExecuteCommandAsync();
     }
 
@@ -225,7 +218,7 @@ public class SysUserService : IDynamicApiController, ITransient
         if (_userManager.UserId == input.Id)
             throw Oops.Oh(ErrorCodeEnum.D1026);
 
-        var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
+        var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         if (user.AccountType == AccountTypeEnum.SuperAdmin)
             throw Oops.Oh(ErrorCodeEnum.D1015);
 
@@ -247,7 +240,7 @@ public class SysUserService : IDynamicApiController, ITransient
         }
 
         user.Status = input.Status;
-        return await SysUserRep.AsUpdateable(user).UpdateColumns(u => new { u.Status }).ExecuteCommandAsync();
+        return await _sysUserRep.AsUpdateable(user).UpdateColumns(u => new { u.Status }).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -278,7 +271,7 @@ public class SysUserService : IDynamicApiController, ITransient
         input.PasswordOld = CryptogramUtil.SM2Decrypt(input.PasswordOld);
         input.PasswordNew = CryptogramUtil.SM2Decrypt(input.PasswordNew);
 
-        var user = await SysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
+        var user = await _sysUserRep.GetFirstAsync(u => u.Id == _userManager.UserId) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         if (CryptogramUtil.CryptoType == CryptogramEnum.MD5.ToString())
         {
             if (user.Password != MD5Encryption.Encrypt(input.PasswordOld))
@@ -305,7 +298,7 @@ public class SysUserService : IDynamicApiController, ITransient
             user.Password = CryptogramUtil.Encrypt(input.PasswordNew);
         }
 
-        return await SysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
+        return await _sysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -316,10 +309,10 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("重置用户密码")]
     public virtual async Task<string> ResetPwd(ResetPwdUserInput input)
     {
-        var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
+        var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
         var password = await _sysConfigService.GetConfigValue<string>(CommonConst.SysPassword);
         user.Password = CryptogramUtil.Encrypt(password);
-        await SysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
+        await _sysUserRep.AsUpdateable(user).UpdateColumns(u => u.Password).ExecuteCommandAsync();
 
         // 清空密码错误次数
         var keyErrorPasswordCount = $"{CacheConst.KeyErrorPasswordCount}{user.Account}";
@@ -336,7 +329,7 @@ public class SysUserService : IDynamicApiController, ITransient
     [DisplayName("解除登录锁定")]
     public virtual async Task UnlockLogin(UnlockLoginInput input)
     {
-        var user = await SysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
+        var user = await _sysUserRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D0009);
 
         // 清空密码错误次数
         var keyErrorPasswordCount = $"{CacheConst.KeyErrorPasswordCount}{user.Account}";

+ 25 - 44
Admin.NET/Admin.NET.Web.Entry/wwwroot/Template/Service.cs.vm

@@ -1,9 +1,3 @@
-// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
-//
-// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
-//
-// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
-
 using Admin.NET.Core.Service;
 using @(@Model.NameSpace).Entity;
 using Microsoft.AspNetCore.Http;
@@ -18,27 +12,16 @@ using Microsoft.AspNetCore.Http;
     }
 }
 namespace @Model.NameSpace;
-
 /// <summary>
 /// @(@Model.BusName)服务
 /// </summary>
 [ApiDescriptionSettings(@(@Model.ProjectLastName)Const.GroupName, Order = 100)]
-[DisplayName("@(@Model.BusName)服务")]
 public class @(@Model.ClassName)Service : IDynamicApiController, ITransient
 {
-    private SqlSugarRepository<@(@Model.ClassName)> @(@Model.LowerClassName)Rep = null;
-
-    public @(@Model.ClassName)Service()
+    private readonly SqlSugarRepository<@(@Model.ClassName)> _rep;
+    public @(@Model.ClassName)Service(SqlSugarRepository<@(@Model.ClassName)> rep)
     {
-    }
-
-    public SqlSugarRepository<@(@Model.ClassName)> @(@Model.ClassName)Rep
-    {
-        get
-        {
-            @(@Model.LowerClassName)Rep ??= App.GetRequiredService<SqlSugarRepository<@(@Model.ClassName)>>();
-            return @(@Model.LowerClassName)Rep;
-        }
+        _rep = rep;
     }
 
     /// <summary>
@@ -46,14 +29,14 @@ public class @(@Model.ClassName)Service : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [ApiDescriptionSettings(Name = "Page"), HttpPost]
-    [DisplayName("分页查询@(@Model.BusName)")]
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Page")]
     public async Task<SqlSugarPagedList<@(@Model.ClassName)Output>> Page(@(@Model.ClassName)Input input)
     {
 @if (haveLikeCdt) {
 		@:input.SearchKey = input.SearchKey?.Trim();
 }
-        var query = @(@Model.ClassName)Rep.AsQueryable()
+        var query = _rep.AsQueryable()
 @{string conditionFlag = "";}
 @if (haveLikeCdt) {
             @:.WhereIF(!string.IsNullOrEmpty(input.SearchKey), u =>
@@ -128,12 +111,12 @@ if (@column.QueryWhether == "Y"){
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [ApiDescriptionSettings(Name = "Add"), HttpPost]
-    [DisplayName("增加@(@Model.BusName)")]
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Add")]
     public async Task<long> Add(Add@(@Model.ClassName)Input input)
     {
         var entity = input.Adapt<@(@Model.ClassName)>();
-        await @(@Model.ClassName)Rep.InsertAsync(entity);
+        await _rep.InsertAsync(entity);
         return entity.Id;
     }
 
@@ -142,17 +125,17 @@ if (@column.QueryWhether == "Y"){
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [ApiDescriptionSettings(Name = "Delete"), HttpPost]
-    [DisplayName("删除@(@Model.BusName)")]
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Delete")]
     public async Task Delete(Delete@(@Model.ClassName)Input input)
     {
 @foreach (var column in Model.TableField){
 if (@column.ColumnKey == "True"){
-        @:var entity = await @(@Model.ClassName)Rep.GetFirstAsync(u => u.@(@column.PropertyName) == input.@(@column.PropertyName)) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
+        @:var entity = await _rep.GetFirstAsync(u => u.@(@column.PropertyName) == input.@(@column.PropertyName)) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
 }
 }
-        await @(@Model.ClassName)Rep.FakeDeleteAsync(entity);   //假删除
-        //await @(@Model.ClassName)Rep.DeleteAsync(entity);   //真删除
+        await _rep.FakeDeleteAsync(entity);   //假删除
+        //await _rep.DeleteAsync(entity);   //真删除
     }
 
     /// <summary>
@@ -160,12 +143,12 @@ if (@column.ColumnKey == "True"){
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [ApiDescriptionSettings(Name = "Update"), HttpPost]
-    [DisplayName("更新@(@Model.BusName)")]
+    [HttpPost]
+    [ApiDescriptionSettings(Name = "Update")]
     public async Task Update(Update@(@Model.ClassName)Input input)
     {
         var entity = input.Adapt<@(@Model.ClassName)>();
-        await @(@Model.ClassName)Rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
+        await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
     }
 
     /// <summary>
@@ -173,13 +156,13 @@ if (@column.ColumnKey == "True"){
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [ApiDescriptionSettings(Name = "Detail"), HttpGet]
-    [DisplayName("获取@(@Model.BusName)")]
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "Detail")]
     public async Task<@(@Model.ClassName)> Detail([FromQuery] QueryById@(@Model.ClassName)Input input)
     {
 @foreach (var column in Model.TableField){
 if (@column.ColumnKey == "True"){
-        @:return await @(@Model.ClassName)Rep.GetFirstAsync(u => u.@(@column.PropertyName) == input.@(@column.PropertyName));
+        @:return await _rep.GetFirstAsync(u => u.@(@column.PropertyName) == input.@(@column.PropertyName));
 }   
 }            
     }
@@ -189,11 +172,11 @@ if (@column.ColumnKey == "True"){
     /// </summary>
     /// <param name="input"></param>
     /// <returns></returns>
-    [ApiDescriptionSettings(Name = "List"), HttpGet]
-    [DisplayName("获取@(@Model.BusName)列表")]
+    [HttpGet]
+    [ApiDescriptionSettings(Name = "List")]
     public async Task<List<@(@Model.ClassName)Output>> List([FromQuery] @(@Model.ClassName)Input input)
     {
-        return await @(@Model.ClassName)Rep.AsQueryable().Select<@(@Model.ClassName)Output>().ToListAsync();
+        return await _rep.AsQueryable().Select<@(@Model.ClassName)Output>().ToListAsync();
     }
 
 @foreach (var column in Model.TableField){
@@ -204,10 +187,9 @@ if(@column.EffectType == "fk" && (@column.WhetherAddUpdate == "Y" || column.Quer
     @:/// <param name="input"></param>
     @:/// <returns></returns>
     @:[ApiDescriptionSettings(Name = "@(@column.FkEntityName)@(@column.PropertyName)Dropdown"), HttpGet]
-    @:[DisplayName("获取@(@column.ColumnComment)列表")]
     @:public async Task<dynamic> @(@column.FkEntityName)@(@column.PropertyName)Dropdown()
     @:{
-        @:return await @(@Model.ClassName)Rep.Context.Queryable<@(@column.FkEntityName)>()
+        @:return await _rep.Context.Queryable<@(@column.FkEntityName)>()
                 @:.Select(u => new
                 @:{
                     @:Label = u.@(@column.FkColumnName),
@@ -226,7 +208,6 @@ if(@column.EffectType == "Upload"){
     @:/// <param name="file"></param>
     @:/// <returns></returns>
     @:[ApiDescriptionSettings(Name = "Upload@(@column.PropertyName)"), HttpPost]
-    @:[DisplayName("上传@(@column.ColumnComment)")]
     @:public async Task<SysFile> Upload@(@column.PropertyName)([Required] IFormFile file)
     @:{
             @:var service = App.GetRequiredService<SysFileService>();
@@ -242,7 +223,7 @@ if(@column.EffectType == "ApiTreeSelect" && !definedObjects.ContainsKey("@(@colu
     @:[HttpGet("@(@column.FkEntityName)Tree")]
     @:public async Task<dynamic> @(@column.FkEntityName)Tree()
     @:{
-        @:return await @(@Model.ClassName)Rep.Context.Queryable<@(@column.FkEntityName)>().ToTreeAsync(u => u.Children, u => u.@(@column.PidColumn), 0);
+        @:return await _rep.Context.Queryable<@(@column.FkEntityName)>().ToTreeAsync(u => u.Children, u => u.@(@column.PidColumn), 0);
     @:}
 }
 }

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj

@@ -24,7 +24,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Rezero.Api" Version="1.6.2" />
+    <PackageReference Include="Rezero.Api" Version="1.6.5" />
   </ItemGroup>  
 
   <ItemGroup>