0
0
Преглед на файлове

新增组织机构,员工
权限管理增加管理api查询

zhontai преди 3 години
родител
ревизия
f1d77d1a63
променени са 22 файла, в които са добавени 612 реда и са изтрити 22 реда
  1. 35 0
      Admin.Core.Model/Admin/EmployeeEntity.cs
  2. 0 7
      Admin.Core.Model/Admin/PermissionEntity.cs
  3. 1 1
      Admin.Core.Repository/Admin/Api/Output/ApiDataOutput.cs
  4. 8 0
      Admin.Core.Repository/Admin/Organization/IOrganizationRepository.cs
  5. 11 0
      Admin.Core.Repository/Admin/Organization/OrganizationRepository.cs
  6. 57 0
      Admin.Core.Repository/Admin/Organization/Output/OrganizationDataOutput.cs
  7. 0 5
      Admin.Core.Repository/Admin/Permission/Output/PermissionDataOutput.cs
  8. 1 1
      Admin.Core.Repository/Base/Data.cs
  9. 22 0
      Admin.Core.Repository/Base/DbHelper.cs
  10. 23 0
      Admin.Core.Service/Admin/Organization/IOrganizationService.cs
  11. 38 0
      Admin.Core.Service/Admin/Organization/Input/OrganizationAddInput.cs
  12. 18 0
      Admin.Core.Service/Admin/Organization/Input/OrganizationUpdateInput.cs
  13. 89 0
      Admin.Core.Service/Admin/Organization/OrganizationService.cs
  14. 8 0
      Admin.Core.Service/Admin/Organization/Output/OrganizationGetOutput.cs
  15. 47 0
      Admin.Core.Service/Admin/Organization/Output/OrganizationListOutput.cs
  16. 18 0
      Admin.Core.Service/Admin/Organization/_MapConfig.cs
  17. 1 1
      Admin.Core.Service/Admin/Permission/Output/PermissionListOutput.cs
  18. 1 1
      Admin.Core.Service/Admin/Permission/PermissionService.cs
  19. 20 5
      Admin.Core/Admin.Core.Model.xml
  20. 96 1
      Admin.Core/Admin.Core.Service.xml
  21. 40 0
      Admin.Core/Admin.Core.xml
  22. 78 0
      Admin.Core/Controllers/Admin/OrganizationController.cs

+ 35 - 0
Admin.Core.Model/Admin/EmployeeEntity.cs

@@ -0,0 +1,35 @@
+using Admin.Core.Common.BaseModel;
+using FreeSql.DataAnnotations;
+using System;
+using System.Collections.Generic;
+
+namespace Admin.Core.Model.Admin
+{
+    /// <summary>
+    /// 员工
+    /// </summary>
+	[Table(Name = "ad_employee")]
+    [Index("idx_{tablename}_01", nameof(EmpNo) + "," + nameof(TenantId), true)]
+    public class EmployeeEntity : EntityFull, ITenant
+    {
+        /// <summary>
+        /// 租户Id
+        /// </summary>
+        [Column(Position = -10)]
+        public long? TenantId { get; set; }
+
+        public TenantEntity Tenant { get; set; }
+
+        /// <summary>
+        /// 工号
+        /// </summary>
+        public string EmpNo { get; set; }
+
+        /// <summary>
+        /// 部门Id
+        /// </summary>
+        public long OrganizationId { get; set; }
+
+        public OrganizationEntity Organization { get; set; }
+    }
+}

+ 0 - 7
Admin.Core.Model/Admin/PermissionEntity.cs

@@ -44,13 +44,6 @@ namespace Admin.Core.Model.Admin
 
         public ViewEntity View { get; set; }
 
-        /// <summary>
-        /// 接口
-        /// </summary>
-        public long? ApiId { get; set; }
-
-        public ApiEntity Api { get; set; }
-
         /// <summary>
         /// 菜单访问地址
         /// </summary>

+ 1 - 1
Admin.Core.Repository/Admin/Api/Output/ApiDataOutput.cs

@@ -15,7 +15,7 @@ namespace Admin.Core.Repository.Admin.Output
         public long Id { get; set; }
 
         /// <summary>
-        /// 接口父级
+        /// 父级Id
         /// </summary>
         public long? ParentId { get; set; }
 

+ 8 - 0
Admin.Core.Repository/Admin/Organization/IOrganizationRepository.cs

@@ -0,0 +1,8 @@
+using Admin.Core.Model.Admin;
+
+namespace Admin.Core.Repository.Admin
+{
+    public partial interface IOrganizationRepository : IRepositoryBase<OrganizationEntity>
+    {
+    }
+}

+ 11 - 0
Admin.Core.Repository/Admin/Organization/OrganizationRepository.cs

@@ -0,0 +1,11 @@
+using Admin.Core.Model.Admin;
+
+namespace Admin.Core.Repository.Admin
+{
+    public class OrganizationRepository : RepositoryBase<OrganizationEntity>, IOrganizationRepository
+    {
+        public OrganizationRepository(MyUnitOfWorkManager muowm) : base(muowm)
+        {
+        }
+    }
+}

+ 57 - 0
Admin.Core.Repository/Admin/Organization/Output/OrganizationDataOutput.cs

@@ -0,0 +1,57 @@
+using System.Collections.Generic;
+
+namespace Admin.Core.Repository.Admin.Output
+{
+    /// <summary>
+    /// 组织机构数据导出
+    /// </summary>
+    public class OrganizationDataOutput
+    {
+        /// <summary>
+        /// 租户Id
+        /// </summary>
+        public long? TenantId { get; set; }
+
+        /// <summary>
+        /// 组织机构Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 接口父级
+        /// </summary>
+        public long? ParentId { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 编码
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 值
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 启用
+        /// </summary>
+		public bool Enabled { get; set; } = true;
+
+        /// <summary>
+        /// 排序
+        /// </summary>
+		public int Sort { get; set; }
+
+        public List<OrganizationDataOutput> Childs { get; set; }
+    }
+}

+ 0 - 5
Admin.Core.Repository/Admin/Permission/Output/PermissionDataOutput.cs

@@ -40,11 +40,6 @@ namespace Admin.Core.Repository.Admin.Permission.Output
         /// </summary>
         public long? ViewId { get; set; }
 
-        /// <summary>
-        /// 接口
-        /// </summary>
-        public long? ApiId { get; set; }
-
         /// <summary>
         /// 访问地址
         /// </summary>

+ 1 - 1
Admin.Core.Repository/Base/Data.cs

@@ -9,10 +9,10 @@ namespace Admin.Core.Repository
     {
         //public DictionaryEntity[] Dictionaries { get; set; }
         public ApiEntity[] Apis { get; set; }
-
         public ApiEntity[] ApiTree { get; set; }
         public ViewEntity[] ViewTree { get; set; }
         public PermissionEntity[] PermissionTree { get; set; }
+        public OrganizationEntity[] OrganizationTree { get; set; }
         public UserEntity[] Users { get; set; }
         public RoleEntity[] Roles { get; set; }
         public UserRoleEntity[] UserRoles { get; set; }

+ 22 - 0
Admin.Core.Repository/Base/DbHelper.cs

@@ -415,6 +415,7 @@ namespace Admin.Core.Repository
                     await InitDtDataAsync(db, uow, tran, data.ApiTree, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.ViewTree, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.PermissionTree, dbConfig);
+                    await InitDtDataAsync(db, uow, tran, data.OrganizationTree, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.Users, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.Roles, dbConfig);
                     await InitDtDataAsync(db, uow, tran, data.UserRoles, dbConfig);
@@ -523,6 +524,25 @@ namespace Admin.Core.Repository
 
                 #endregion
 
+                #region 组织机构
+
+                var organizations = await db.Queryable<OrganizationEntity>().ToListAsync<OrganizationDataOutput>();
+                var organizationTree = organizations.ToTree((r, c) =>
+                {
+                    return c.ParentId == 0;
+                },
+                (r, c) =>
+                {
+                    return r.Id == c.ParentId;
+                },
+                (r, datalist) =>
+                {
+                    r.Childs ??= new List<OrganizationDataOutput>();
+                    r.Childs.AddRange(datalist);
+                });
+
+                #endregion
+
                 #region 用户
 
                 var users = await db.Queryable<UserEntity>().ToListAsync(a => new
@@ -564,6 +584,8 @@ namespace Admin.Core.Repository
 
                 #endregion
 
+               
+
                 #region 角色权限
 
                 var rolePermissions = await db.Queryable<RolePermissionEntity>().ToListAsync(a => new

+ 23 - 0
Admin.Core.Service/Admin/Organization/IOrganizationService.cs

@@ -0,0 +1,23 @@
+using Admin.Core.Common.Input;
+using Admin.Core.Common.Output;
+using Admin.Core.Model.Admin;
+using Admin.Core.Service.Admin.Organization.Input;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Service.Admin.Organization
+{
+    public partial interface IOrganizationService
+    {
+        Task<IResponseOutput> GetAsync(long id);
+
+        Task<IResponseOutput> PageAsync(PageInput<OrganizationEntity> model);
+
+        Task<IResponseOutput> AddAsync(OrganizationAddInput input);
+
+        Task<IResponseOutput> UpdateAsync(OrganizationUpdateInput input);
+
+        Task<IResponseOutput> DeleteAsync(long id);
+
+        Task<IResponseOutput> SoftDeleteAsync(long id);
+    }
+}

+ 38 - 0
Admin.Core.Service/Admin/Organization/Input/OrganizationAddInput.cs

@@ -0,0 +1,38 @@
+namespace Admin.Core.Service.Admin.Organization.Input
+{
+    /// <summary>
+    /// 添加
+    /// </summary>
+    public class OrganizationAddInput
+    {
+        /// <summary>
+        /// 父级
+        /// </summary>
+		public long ParentId { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 编码
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 值
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 启用
+        /// </summary>
+		public bool Enabled { get; set; }
+    }
+}

+ 18 - 0
Admin.Core.Service/Admin/Organization/Input/OrganizationUpdateInput.cs

@@ -0,0 +1,18 @@
+namespace Admin.Core.Service.Admin.Organization.Input
+{
+    /// <summary>
+    /// 修改
+    /// </summary>
+    public class OrganizationUpdateInput : OrganizationAddInput
+    {
+        /// <summary>
+        /// 主键Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 版本
+        /// </summary>
+        public long Version { get; set; }
+    }
+}

+ 89 - 0
Admin.Core.Service/Admin/Organization/OrganizationService.cs

@@ -0,0 +1,89 @@
+using Admin.Core.Common.Input;
+using Admin.Core.Common.Output;
+using Admin.Core.Model.Admin;
+using Admin.Core.Repository.Admin;
+using Admin.Core.Service.Admin.Organization.Input;
+using Admin.Core.Service.Admin.Organization.Output;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Service.Admin.Organization
+{
+    public class OrganizationService : BaseService, IOrganizationService
+    {
+        private readonly IOrganizationRepository _organizationRepository;
+
+        public OrganizationService(IOrganizationRepository organizationRepository)
+        {
+            _organizationRepository = organizationRepository;
+        }
+
+        public async Task<IResponseOutput> GetAsync(long id)
+        {
+            var result = await _organizationRepository.GetAsync<OrganizationGetOutput>(id);
+            return ResponseOutput.Ok(result);
+        }
+
+        public async Task<IResponseOutput> PageAsync(PageInput<OrganizationEntity> input)
+        {
+            var key = input.Filter?.Name;
+
+            var list = await _organizationRepository.Select
+            .WhereIf(key.NotNull(), a => a.Name.Contains(key) || a.Code.Contains(key))
+            .Count(out var total)
+            .OrderByDescending(true, c => c.Id)
+            .Page(input.CurrentPage, input.PageSize)
+            .ToListAsync<OrganizationListOutput>();
+
+            var data = new PageOutput<OrganizationListOutput>()
+            {
+                List = list,
+                Total = total
+            };
+
+            return ResponseOutput.Ok(data);
+        }
+
+        public async Task<IResponseOutput> AddAsync(OrganizationAddInput input)
+        {
+            var dictionary = Mapper.Map<OrganizationEntity>(input);
+            var id = (await _organizationRepository.InsertAsync(dictionary)).Id;
+            return ResponseOutput.Result(id > 0);
+        }
+
+        public async Task<IResponseOutput> UpdateAsync(OrganizationUpdateInput input)
+        {
+            if (!(input?.Id > 0))
+            {
+                return ResponseOutput.NotOk();
+            }
+
+            var entity = await _organizationRepository.GetAsync(input.Id);
+            if (!(entity?.Id > 0))
+            {
+                return ResponseOutput.NotOk("数据字典不存在!");
+            }
+
+            Mapper.Map(input, entity);
+            await _organizationRepository.UpdateAsync(entity);
+            return ResponseOutput.Ok();
+        }
+
+        public async Task<IResponseOutput> DeleteAsync(long id)
+        {
+            var result = false;
+            if (id > 0)
+            {
+                result = (await _organizationRepository.DeleteAsync(m => m.Id == id)) > 0;
+            }
+
+            return ResponseOutput.Result(result);
+        }
+
+        public async Task<IResponseOutput> SoftDeleteAsync(long id)
+        {
+            var result = await _organizationRepository.SoftDeleteAsync(id);
+
+            return ResponseOutput.Result(result);
+        }
+    }
+}

+ 8 - 0
Admin.Core.Service/Admin/Organization/Output/OrganizationGetOutput.cs

@@ -0,0 +1,8 @@
+using Admin.Core.Service.Admin.Organization.Input;
+
+namespace Admin.Core.Service.Admin.Organization.Output
+{
+    public class OrganizationGetOutput : OrganizationUpdateInput
+    {
+    }
+}

+ 47 - 0
Admin.Core.Service/Admin/Organization/Output/OrganizationListOutput.cs

@@ -0,0 +1,47 @@
+using System;
+
+namespace Admin.Core.Service.Admin.Organization.Output
+{
+    public class OrganizationListOutput
+    {
+        /// <summary>
+        /// 主键Id
+        /// </summary>
+        public long Id { get; set; }
+
+        /// <summary>
+        /// 父级
+        /// </summary>
+		public long ParentId { get; set; }
+
+        /// <summary>
+        /// 名称
+        /// </summary>
+        public string Name { get; set; }
+
+        /// <summary>
+        /// 编码
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 值
+        /// </summary>
+        public string Value { get; set; }
+
+        /// <summary>
+        /// 描述
+        /// </summary>
+        public string Description { get; set; }
+
+        /// <summary>
+        /// 启用
+        /// </summary>
+		public bool Enabled { get; set; }
+
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        public DateTime? CreatedTime { get; set; }
+    }
+}

+ 18 - 0
Admin.Core.Service/Admin/Organization/_MapConfig.cs

@@ -0,0 +1,18 @@
+using Admin.Core.Model.Admin;
+using Admin.Core.Service.Admin.Organization.Input;
+using AutoMapper;
+
+namespace Admin.Core.Service.Admin.Organization
+{
+    /// <summary>
+    /// 映射配置
+    /// </summary>
+    public class MapConfig : Profile
+    {
+        public MapConfig()
+        {
+            CreateMap<OrganizationAddInput, OrganizationEntity>();
+            CreateMap<OrganizationUpdateInput, OrganizationEntity>();
+        }
+    }
+}

+ 1 - 1
Admin.Core.Service/Admin/Permission/Output/PermissionListOutput.cs

@@ -32,7 +32,7 @@ namespace Admin.Core.Service.Admin.Permission.Output
         /// <summary>
         /// 接口路径
         /// </summary>
-        public string ApiPath { get; set; }
+        public string ApiPaths { get; set; }
 
         /// <summary>
         /// 描述

+ 1 - 1
Admin.Core.Service/Admin/Permission/PermissionService.cs

@@ -94,7 +94,7 @@ namespace Admin.Core.Service.Admin.Permission
                 .WhereIf(start.HasValue && end.HasValue, a => a.CreatedTime.Value.BetweenEnd(start.Value, end.Value))
                 .OrderBy(a => a.ParentId)
                 .OrderBy(a => a.Sort)
-                .ToListAsync(a => new PermissionListOutput { ApiPath = a.Api.Path });
+                .ToListAsync(a=> new PermissionListOutput { ApiPaths = string.Join(";", _permissionApiRepository.Where(b=>b.PermissionId == a.Id).ToList(b => b.Api.Path)) });
 
             return ResponseOutput.Ok(data);
         }

+ 20 - 5
Admin.Core/Admin.Core.Model.xml

@@ -194,6 +194,26 @@
             主键Id
             </summary>
         </member>
+        <member name="T:Admin.Core.Model.Admin.EmployeeEntity">
+            <summary>
+            员工
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Model.Admin.EmployeeEntity.TenantId">
+            <summary>
+            租户Id
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Model.Admin.EmployeeEntity.EmpNo">
+            <summary>
+            工号
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Model.Admin.EmployeeEntity.OrganizationId">
+            <summary>
+            部门Id
+            </summary>
+        </member>
         <member name="T:Admin.Core.Model.Admin.LogAbstract">
             <summary>
             日志
@@ -384,11 +404,6 @@
             视图
             </summary>
         </member>
-        <member name="P:Admin.Core.Model.Admin.PermissionEntity.ApiId">
-            <summary>
-            接口
-            </summary>
-        </member>
         <member name="P:Admin.Core.Model.Admin.PermissionEntity.Path">
             <summary>
             菜单访问地址

+ 96 - 1
Admin.Core/Admin.Core.Service.xml

@@ -930,6 +930,101 @@
             映射配置
             </summary>
         </member>
+        <member name="T:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput">
+            <summary>
+            添加
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput.ParentId">
+            <summary>
+            父级
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput.Name">
+            <summary>
+            名称
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput.Code">
+            <summary>
+            编码
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput.Value">
+            <summary>
+            值
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput.Description">
+            <summary>
+            描述
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput.Enabled">
+            <summary>
+            启用
+            </summary>
+        </member>
+        <member name="T:Admin.Core.Service.Admin.Organization.Input.OrganizationUpdateInput">
+            <summary>
+            修改
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationUpdateInput.Id">
+            <summary>
+            主键Id
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Input.OrganizationUpdateInput.Version">
+            <summary>
+            版本
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.Id">
+            <summary>
+            主键Id
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.ParentId">
+            <summary>
+            父级
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.Name">
+            <summary>
+            名称
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.Code">
+            <summary>
+            编码
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.Value">
+            <summary>
+            值
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.Description">
+            <summary>
+            描述
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.Enabled">
+            <summary>
+            启用
+            </summary>
+        </member>
+        <member name="P:Admin.Core.Service.Admin.Organization.Output.OrganizationListOutput.CreatedTime">
+            <summary>
+            创建时间
+            </summary>
+        </member>
+        <member name="T:Admin.Core.Service.Admin.Organization.MapConfig">
+            <summary>
+            映射配置
+            </summary>
+        </member>
         <member name="P:Admin.Core.Service.Admin.Permission.Input.PermissionAddApiInput.Type">
             <summary>
             权限类型
@@ -1155,7 +1250,7 @@
             访问地址
             </summary>
         </member>
-        <member name="P:Admin.Core.Service.Admin.Permission.Output.PermissionListOutput.ApiPath">
+        <member name="P:Admin.Core.Service.Admin.Permission.Output.PermissionListOutput.ApiPaths">
             <summary>
             接口路径
             </summary>

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

@@ -375,6 +375,46 @@
             <param name="model"></param>
             <returns></returns>
         </member>
+        <member name="T:Admin.Core.Controllers.Admin.OrganizationController">
+            <summary>
+            组织机构
+            </summary>
+        </member>
+        <member name="M:Admin.Core.Controllers.Admin.OrganizationController.Get(System.Int64)">
+            <summary>
+            查询单条组织机构
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.Core.Controllers.Admin.OrganizationController.GetPage(Admin.Core.Common.Input.PageInput{Admin.Core.Model.Admin.OrganizationEntity})">
+            <summary>
+            查询分页组织机构
+            </summary>
+            <param name="model"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.Core.Controllers.Admin.OrganizationController.Add(Admin.Core.Service.Admin.Organization.Input.OrganizationAddInput)">
+            <summary>
+            新增组织机构
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.Core.Controllers.Admin.OrganizationController.Update(Admin.Core.Service.Admin.Organization.Input.OrganizationUpdateInput)">
+            <summary>
+            修改组织机构
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:Admin.Core.Controllers.Admin.OrganizationController.SoftDelete(System.Int64)">
+            <summary>
+            删除组织机构
+            </summary>
+            <param name="id"></param>
+            <returns></returns>
+        </member>
         <member name="T:Admin.Core.Controllers.Admin.PermissionController">
             <summary>
             权限管理

+ 78 - 0
Admin.Core/Controllers/Admin/OrganizationController.cs

@@ -0,0 +1,78 @@
+using Admin.Core.Common.Input;
+using Admin.Core.Common.Output;
+using Admin.Core.Model.Admin;
+using Admin.Core.Service.Admin.Organization;
+using Admin.Core.Service.Admin.Organization.Input;
+using Microsoft.AspNetCore.Mvc;
+using System.Threading.Tasks;
+
+namespace Admin.Core.Controllers.Admin
+{
+    /// <summary>
+    /// 组织机构
+    /// </summary>
+    public class OrganizationController : AreaController
+    {
+        private readonly IOrganizationService _organizationServices;
+
+        public OrganizationController(IOrganizationService organizationServices)
+        {
+            _organizationServices = organizationServices;
+        }
+
+        /// <summary>
+        /// 查询单条组织机构
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpGet]
+        public async Task<IResponseOutput> Get(long id)
+        {
+            return await _organizationServices.GetAsync(id);
+        }
+
+        /// <summary>
+        /// 查询分页组织机构
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IResponseOutput> GetPage(PageInput<OrganizationEntity> model)
+        {
+            return await _organizationServices.PageAsync(model);
+        }
+
+        /// <summary>
+        /// 新增组织机构
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPost]
+        public async Task<IResponseOutput> Add(OrganizationAddInput input)
+        {
+            return await _organizationServices.AddAsync(input);
+        }
+
+        /// <summary>
+        /// 修改组织机构
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpPut]
+        public async Task<IResponseOutput> Update(OrganizationUpdateInput input)
+        {
+            return await _organizationServices.UpdateAsync(input);
+        }
+
+        /// <summary>
+        /// 删除组织机构
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete]
+        public async Task<IResponseOutput> SoftDelete(long id)
+        {
+            return await _organizationServices.SoftDeleteAsync(id);
+        }
+    }
+}