using Attribute; using Common; using Dto; using Enums; using Extensions; using Filters; using Infrastructure; using Mapster; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Middleware; using Model; using Model.Base; using Services; using System.Collections; using Util; using Vo; namespace Controllers { /// /// 部门 /// [Verify] public class SysDeptController : BaseController { public ISysDeptService DeptService; public ISysUserService UserService; public SysDeptController(ISysDeptService deptService , ISysUserService userService) { DeptService = deptService; UserService = userService; } /// /// 获取部门列表 /// /// [HttpGet("list")] public IActionResult List([FromQuery] SysDeptQueryDto dept) { return SUCCESS(DeptService.GetSysDepts(dept), TIME_FORMAT_FULL); } /// /// 获取所有部门列表 /// /// [HttpGet("/v1/tel/sysServer/dept/list")] public IActionResult AllList() { return SUCCESS(DeptService.GetList(), TIME_FORMAT_FULL); } [AllowAnonymous] [HttpGet("/feign/dept/query")] public DeptFeignVo Query([FromQuery] long id) { var info = DeptService.GetFirst(m => m.deptId == id).Adapt(); return info; } /// /// 查询部门列表(排除节点) /// /// /// [HttpGet("list/exclude/{deptId}")] public IActionResult ExcludeChild(long deptId) { var depts = DeptService.GetSysDepts(new SysDeptQueryDto()); // 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("/v1/tel/sysServer/dept/tree")] public IActionResult TreeSelect(SysDeptQueryDto 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 SysDeptQueryDto()); 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("/v1/tel/sysServer/dept/add")] public IActionResult Add([FromBody] SysDept dept) { if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept))) { return ToResponse(ResultCode.CUSTOM_ERROR, $"新增部门{dept.name}失败,部门名称已存在"); } TokenModel loginUser = JwtUtil.GetLoginUser(HttpContext); dept.CreateBy = loginUser.username; dept.UpdateBy = loginUser.username; dept.DelFlag = "0"; return SUCCESS(DeptService.InsertDept(dept)); } /// /// 修改部门 /// /// /// [HttpPut("/v1/tel/sysServer/dept/update")] public IActionResult Update([FromBody] SysDept dept) { if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept))) { return ToResponse(ResultCode.CUSTOM_ERROR, $"修改部门{dept.name}失败,部门名称已存在"); } else if (dept.parentId.Equals(dept.deptId)) { return ToResponse(ResultCode.CUSTOM_ERROR, $"修改部门{dept.name}失败,上级部门不能是自己"); } TokenModel loginUser = JwtUtil.GetLoginUser(HttpContext); dept.UpdateBy = loginUser.username; return SUCCESS(DeptService.UpdateDept(dept)); } /// /// 删除部门 /// /// [HttpDelete("/v1/tel/sysServer/dept/removeById/{id}")] public IActionResult Remove(int id) { if (DeptService.Queryable().Count(it => it.parentId == id && it.DelFlag == "0") > 0) { return ToResponse(ResultCode.CUSTOM_ERROR, $"存在下级部门,不允许删除"); } if (UserService.Queryable().Count(it => it.deptId == id && it.DelFlag == "0") > 0) { return ToResponse(ResultCode.CUSTOM_ERROR, $"部门存在用户,不允许删除"); } return SUCCESS(DeptService.Delete(id)); } } }