Browse Source

新增 租户彻底删除
优化 仓储基础RepositoryBase用户信息通过构造注入更改为属性注入

zhontai 3 years ago
parent
commit
9a1b4e9a9a

+ 1 - 1
Admin.Core.Repository/Admin/Api/ApiRepository.cs

@@ -6,7 +6,7 @@ namespace Admin.Core.Repository.Admin
 
     public class ApiRepository : RepositoryBase<ApiEntity>, IApiRepository
     {
-        public ApiRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public ApiRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/Dictionary/DictionaryRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class DictionaryRepository : RepositoryBase<DictionaryEntity>, IDictionaryRepository
     {
-        public DictionaryRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public DictionaryRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/Document/DocumentRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class DocumentRepository : RepositoryBase<DocumentEntity>, IDocumentRepository
     {
-        public DocumentRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public DocumentRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/DocumentImage/DocumentImageRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class DocumentImageRepository : RepositoryBase<DocumentImageEntity>, IDocumentImageRepository
     {
-        public DocumentImageRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public DocumentImageRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/LoginLog/LoginLogRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class LoginLogRepository : RepositoryBase<LoginLogEntity>, ILoginLogRepository
     {
-        public LoginLogRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public LoginLogRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/OprationLog/OprationLogRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class OprationLogRepository : RepositoryBase<OprationLogEntity>, IOprationLogRepository
     {
-        public OprationLogRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public OprationLogRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/Permission/PermissionRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class PermissionRepository : RepositoryBase<PermissionEntity>, IPermissionRepository
     {
-        public PermissionRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public PermissionRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/Role/RoleRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {	
 	public  class RoleRepository : RepositoryBase<RoleEntity>, IRoleRepository
     {
-        public RoleRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public RoleRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/RolePermission/RolePermissionRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class RolePermissionRepository : RepositoryBase<RolePermissionEntity>, IRolePermissionRepository
     {
-        public RolePermissionRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public RolePermissionRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/Tenant/TenantRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {	
 	public  class TenantRepository : RepositoryBase<TenantEntity>, ITenantRepository
     {
-        public TenantRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public TenantRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/User/UserRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class UserRepository : RepositoryBase<UserEntity>, IUserRepository
     {
-        public UserRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public UserRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/UserRole/UserRoleRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {	
 	public class UserRoleRepository : RepositoryBase<UserRoleEntity>, IUserRoleRepository
     {
-        public UserRoleRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public UserRoleRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
         }
     }

+ 1 - 1
Admin.Core.Repository/Admin/View/ViewRepositoryRepository.cs

@@ -5,7 +5,7 @@ namespace Admin.Core.Repository.Admin
 {
     public class ViewRepository : RepositoryBase<ViewEntity>, IViewRepository
     {
-        public ViewRepository(MyUnitOfWorkManager muowm, IUser user) : base(muowm, user)
+        public ViewRepository(MyUnitOfWorkManager muowm) : base(muowm)
         {
 
         }

+ 7 - 0
Admin.Core.Repository/Base/IRepositoryBase.cs

@@ -37,6 +37,13 @@ namespace Admin.Core.Repository
         /// <returns></returns>
         Task<bool> SoftDeleteAsync(TKey id);
 
+        /// <summary>
+        /// 软删除
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        Task<bool> SoftDeleteAsync(Expression<Func<TEntity, bool>> exp, params string[] name);
+
         /// <summary>
         /// 批量删除
         /// </summary>

+ 24 - 8
Admin.Core.Repository/Base/RepositoryBase.cs

@@ -10,10 +10,11 @@ namespace Admin.Core.Repository
 {
     public abstract class RepositoryBase<TEntity, TKey> : BaseRepository<TEntity, TKey>, IRepositoryBase<TEntity, TKey> where TEntity : class,new()
     {
-        private readonly IUser _user;
-        protected RepositoryBase(IFreeSql freeSql, IUser user) : base(freeSql, null, null)
+        public IUser User { get; set; }
+
+        protected RepositoryBase(IFreeSql freeSql) : base(freeSql, null, null)
         {
-            _user = user;
+
         }
 
         public virtual Task<TDto> GetAsync<TDto>(TKey id)
@@ -36,21 +37,36 @@ namespace Admin.Core.Repository
             await UpdateDiy
                 .SetDto(new { 
                     IsDeleted = true, 
-                    ModifiedUserId = _user.Id, 
-                    ModifiedUserName = _user.Name 
+                    ModifiedUserId = User.Id, 
+                    ModifiedUserName = User.Name 
                 })
                 .WhereDynamic(id)
                 .ExecuteAffrowsAsync();
             return true;
         }
 
+        public async Task<bool> SoftDeleteAsync(Expression<Func<TEntity, bool>> exp,params  string[] name)
+        {
+            await UpdateDiy
+                .SetDto(new
+                {
+                    IsDeleted = true,
+                    ModifiedUserId = User.Id,
+                    ModifiedUserName = User.Name
+                })
+                .Where(exp)
+                .DisableGlobalFilter(name)
+                .ExecuteAffrowsAsync();
+            return true;
+        }
+
         public async Task<bool> SoftDeleteAsync(TKey[] ids)
         {
             await UpdateDiy
                 .SetDto(new { 
                     IsDeleted = true, 
-                    ModifiedUserId = _user.Id, 
-                    ModifiedUserName = _user.Name 
+                    ModifiedUserId = User.Id, 
+                    ModifiedUserName = User.Name 
                 })
                 .WhereDynamic(ids)
                 .ExecuteAffrowsAsync();
@@ -60,7 +76,7 @@ namespace Admin.Core.Repository
 
     public abstract class RepositoryBase<TEntity> : RepositoryBase<TEntity, long> where TEntity : class, new()
     {
-        protected RepositoryBase(MyUnitOfWorkManager muowm, IUser user) : base(muowm.Orm, user)
+        protected RepositoryBase(MyUnitOfWorkManager muowm) : base(muowm.Orm)
         {
             muowm.Binding(this);
         }

+ 39 - 10
Admin.Core.Services/Admin/Tenant/TenantService.cs

@@ -7,6 +7,8 @@ using Admin.Core.Service.Admin.Tenant.Input;
 using Admin.Core.Service.Admin.Tenant.Output;
 using Admin.Core.Common.Attributes;
 using Admin.Core.Common.Helpers;
+using System.Linq;
+using System.Collections.Generic;
 
 namespace Admin.Core.Service.Admin.Tenant
 {
@@ -66,15 +68,16 @@ namespace Admin.Core.Service.Admin.Tenant
             var tenant = await _tenantRepository.InsertAsync(entity);
 
             var tenantId = tenant.Id;
-            //添加角色
-            var role = new RoleEntity { TenantId = tenantId, Code = "plat_admin", Name = "平台管理员", Enabled = true };
-            await _roleRepository.InsertAsync(role);
 
             //添加用户
             var pwd = MD5Encrypt.Encrypt32("111111");
-            var user = new UserEntity { TenantId = tenantId, UserName = input.Phone, NickName= input.RealName, Password = pwd, Status = 0 };
+            var user = new UserEntity { TenantId = tenantId, UserName = input.Phone, NickName = input.RealName, Password = pwd, Status = 0 };
             await _userRepository.InsertAsync(user);
 
+            //添加角色
+            var role = new RoleEntity { TenantId = tenantId, Code = "plat_admin", Name = "平台管理员", Enabled = true };
+            await _roleRepository.InsertAsync(role);
+
             //添加用户角色
             var userRole = new UserRoleEntity() { UserId = user.Id, RoleId = role.Id };
             await _userRoleRepository.InsertAsync(userRole);
@@ -105,26 +108,52 @@ namespace Admin.Core.Service.Admin.Tenant
             return ResponseOutput.Ok();
         }
 
+        [Transaction]
         public async Task<IResponseOutput> DeleteAsync(long id)
         {
-            var result = false;
-            if (id > 0)
-            {
-                result = (await _tenantRepository.DeleteAsync(m => m.Id == id)) > 0;
-            }
+            //删除角色权限
+            await _rolePermissionRepository.Where(a => a.Role.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync();
 
-            return ResponseOutput.Result(result);
+            //删除用户角色
+            await _userRoleRepository.Where(a => a.User.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync();
+
+            //删除用户
+            await _userRepository.Where(a => a.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync();
+
+            //删除角色
+            await _roleRepository.Where(a => a.TenantId == id).DisableGlobalFilter("Tenant").ToDelete().ExecuteAffrowsAsync();
+
+            //删除租户
+            await _tenantRepository.DeleteAsync(id);
+
+            return ResponseOutput.Ok();
         }
 
+        [Transaction]
         public async Task<IResponseOutput> SoftDeleteAsync(long id)
         {
+            //删除用户
+            await _userRepository.SoftDeleteAsync(a => a.TenantId == id, "Tenant");
+
+            //删除角色
+            await _roleRepository.SoftDeleteAsync(a => a.TenantId == id, "Tenant");
+
+            //删除租户
             var result = await _tenantRepository.SoftDeleteAsync(id);
 
             return ResponseOutput.Result(result);
         }
 
+        [Transaction]
         public async Task<IResponseOutput> BatchSoftDeleteAsync(long[] ids)
         {
+            //删除用户
+            await _userRepository.SoftDeleteAsync(a => ids.Contains(a.TenantId.Value), "Tenant");
+
+            //删除角色
+            await _roleRepository.SoftDeleteAsync(a => ids.Contains(a.TenantId.Value), "Tenant");
+
+            //删除租户
             var result = await _tenantRepository.SoftDeleteAsync(ids);
 
             return ResponseOutput.Result(result);

+ 7 - 0
Admin.Core/Admin.Core.xml

@@ -580,6 +580,13 @@
             <param name="input"></param>
             <returns></returns>
         </member>
+        <member name="M:Admin.Core.Controllers.Admin.TenantController.Delete(System.Int64)">
+            <summary>
+            彻底删除租户
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
         <member name="M:Admin.Core.Controllers.Admin.TenantController.SoftDelete(System.Int64)">
             <summary>
             删除租户

+ 11 - 0
Admin.Core/Controllers/Admin/TenantController.cs

@@ -64,6 +64,17 @@ namespace Admin.Core.Controllers.Admin
             return await _roleServices.UpdateAsync(input);
         }
 
+        /// <summary>
+        /// 彻底删除租户
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete]
+        public async Task<IResponseOutput> Delete(long id)
+        {
+            return await _roleServices.DeleteAsync(id);
+        }
+
         /// <summary>
         /// 删除租户
         /// </summary>

File diff suppressed because it is too large
+ 0 - 0
Admin.Core/Db/Data/data.json


Some files were not shown because too many files changed in this diff