using Infrastructure; using Infrastructure.Attribute; using Infrastructure.Enums; using Microsoft.AspNetCore.Mvc; using System.Collections; using ZR.Admin.WebApi.Filters; using ZR.Common; using ZR.Model.System; using ZR.Service.System.IService; namespace ZR.Admin.WebApi.Controllers.System { /// /// 部门 /// [Verify] [Route("system/dept")] public class SysDeptController : BaseController { public ISysDeptService DeptService; public ISysUserService UserService; public SysDeptController(ISysDeptService deptService , ISysUserService userService) { DeptService = deptService; UserService = userService; } /// /// 获取部门列表 /// /// [ActionPermissionFilter(Permission = "system:dept:list")] [HttpGet("list")] public IActionResult List([FromQuery] SysDept dept) { return SUCCESS(DeptService.GetSysDepts(dept), TIME_FORMAT_FULL); } /// /// 查询部门列表(排除节点) /// /// /// [HttpGet("list/exclude/{deptId}")] public IActionResult ExcludeChild(long deptId) { var depts = DeptService.GetSysDepts(new SysDept()); for (int i = 0; i < depts.Count; i++) { SysDept d = depts[i]; long[] deptIds = Tools.SpitLongArrary(d.Ancestors); if (d.DeptId == deptId || ((IList)deptIds).Contains(deptId)) { depts.Remove(d); } } return SUCCESS(depts); } /// /// 获取部门下拉树列表 /// /// /// [HttpGet("treeselect")] public IActionResult TreeSelect(SysDept dept) { var depts = DeptService.GetSysDepts(dept); return SUCCESS(DeptService.BuildDeptTreeSelect(depts), TIME_FORMAT_FULL); } /// /// 获取角色部门信息 /// 加载对应角色部门列表树 /// /// /// [HttpGet("roleDeptTreeselect/{roleId}")] public IActionResult RoleMenuTreeselect(int roleId) { var depts = DeptService.GetSysDepts(new SysDept()); var checkedKeys = DeptService.SelectRoleDepts(roleId); return SUCCESS(new { checkedKeys, depts = DeptService.BuildDeptTreeSelect(depts), }); } /// /// 根据部门编号获取详细信息 /// /// [HttpGet("{deptId}")] [ActionPermissionFilter(Permission = "system:dept:query")] public IActionResult GetInfo(long deptId) { var info = DeptService.GetFirst(f => f.DeptId == deptId); return SUCCESS(info); } /// /// 新增部门 /// /// /// [HttpPost] [Log(Title = "部门管理", BusinessType = BusinessType.INSERT)] [ActionPermissionFilter(Permission = "system:dept:add")] public IActionResult Add([FromBody] SysDept dept) { if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept))) { return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"新增部门{dept.DeptName}失败,部门名称已存在")); } dept.Create_by = User.Identity.Name; return ToResponse(ToJson(DeptService.InsertDept(dept))); } /// /// 修改部门 /// /// /// [HttpPut] [Log(Title = "部门管理", BusinessType = BusinessType.UPDATE)] [ActionPermissionFilter(Permission = "system:dept:update")] public IActionResult Update([FromBody] SysDept dept) { if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept))) { return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,部门名称已存在")); } else if (dept.ParentId.Equals(dept.DeptId)) { return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,上级部门不能是自己")); } dept.Update_by = User.Identity.Name; return ToResponse(ToJson(DeptService.UpdateDept(dept))); } /// /// 删除部门 /// /// [HttpDelete("{deptId}")] [ActionPermissionFilter(Permission = "system:dept:remove")] [Log(Title = "部门管理", BusinessType = BusinessType.DELETE)] public IActionResult Remove(long deptId) { if (DeptService.Queryable().Count(it => it.ParentId == deptId && it.DelFlag == "0") > 0) { return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"存在下级部门,不允许删除")); } if (UserService.Queryable().Count(it => it.DeptId == deptId && it.DelFlag == "0") > 0) { return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"部门存在用户,不允许删除")); } return SUCCESS(DeptService.Delete(deptId)); } } }