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));
}
}
}