using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using MadRunFabric.Common; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using AutoMapper.Configuration; using ConfigurationApi.IRepositories; using MadRunFabric.Model; using System.Security.Claims; using ConfigurationApi.Models; namespace ConfigurationApi.Controllers { /// /// 部门 本接口应该没有用 张琨20201115鉴定 /// [Authorize] [ApiVersion("6.0")] [Produces("application/json")] [Route("api/[controller]")] public class DepartmentBaseController : BaseController { private readonly ILogger _logger; private readonly ISys_User_AccountRepository _sys_user_accountRepository; private readonly ISys_DepartmentBaseRepository _sys_departmentbaserepository; public DepartmentBaseController( ILogger logger, ISys_User_AccountRepository sys_user_accountRepository, ISys_DepartmentBaseRepository sys_departmentbaserepository ) { _logger = logger; _sys_user_accountRepository = sys_user_accountRepository; _sys_departmentbaserepository = sys_departmentbaserepository; } /// /// 获取树结构 /// [HttpGet("gettreelist")] public async Task GetTreeListAsync() { var list = (await _sys_departmentbaserepository.Get(p => p.isdelete == 0)).ToList(); return Success("获取成功", GetTreeList(list, null)); } /// /// 循环获取树结构 /// /// /// /// public object GetTreeList(List list, string pid) { var children = list.Where(p => p.parentid == pid).Select(p => new { p.id, p.departmenname, p.sortnum, p.parentid, children = GetTreeList(list, p.id) }); return children; } /// /// 获取详情 /// [HttpGet("getsingle")] public async Task GetTypeSingleAsync(string id) { var model = await _sys_departmentbaserepository.GetSingle(id); var names = await GetNameListAsync(model.id, "tts"); //获取名称 var ids = await GetNameListAsync(model.id, "ids"); //获取ids var obj = new { model, depids = ids.Split(","), depnames = names.Split(",") }; return Success("获取成功", obj); } /// /// 循环获取分类名称和id ("部门1", "部门2") /// /// /// type:tts获取名称,ids获取id /// public async Task GetNameListAsync(string id, string type) { string str = string.Empty; var depinfo = await _sys_departmentbaserepository.GetSingle(id); if (depinfo != null) { if (depinfo.parentid != null) { str = await GetNameListAsync(depinfo.parentid, type); } if (string.IsNullOrEmpty(str)) { if (type == "tts") str = depinfo.departmenname; else str = depinfo.id; } else { if (type == "tts") str += "," + depinfo.departmenname; else str += "," + depinfo.id; } } return str; } /// /// 添加 /// [HttpPost("add")] public async Task AddAsync(DepartmentBaseInput input) { string optuser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; string optusername = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value; if (string.IsNullOrEmpty(input.departmenname)) { return Error("名称不能为空"); } var model = new Sys_DepartmentBase(); model.departmenname = input.departmenname; model.code = input.code; model.parentid = input.parentid; model.mobile = input.mobile; model.telephone = input.telephone; model.remark = input.remark; model.sortnum = input.sortnum; model.createtby = optuser; model.createbyname = optusername; model.createtime = DateTime.Now; bool bl = await _sys_departmentbaserepository.Add(model); if (bl) { return Success("保存成功"); } else return Error("保存失败"); } /// /// 修改 /// [HttpPost("update")] public async Task UpdateTypeAsync(DepartmentBaseInput input) { string optuser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; string optusername = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value; if (string.IsNullOrEmpty(input.departmenname)) { return Error("名称不能为空"); } var model = await _sys_departmentbaserepository.GetSingle(p => p.id == input.id && p.isdelete == 0); model.departmenname = input.departmenname; model.code = input.code; model.parentid = input.parentid; model.mobile = input.mobile; model.telephone = input.telephone; model.remark = input.remark; model.sortnum = input.sortnum; model.updateby = optuser; model.updatetime = DateTime.Now; bool bl = await _sys_departmentbaserepository.UpdateOne(model); if (bl) { return Success("保存成功"); } else return Error("保存失败"); } /// /// 删除 /// /// /// [HttpPost("delete")] public async Task RemoveTypeAsync(string[] ids, int channel = 1) { string optuser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; string optusername = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value; //使用逻辑删除 //物理删除的数据无法恢复 var res = 0; if (ids != null && ids.Length > 0) { foreach (var id in ids) { if (await DeleteTypeAsync(id, optuser)) { res += 1; } } if (res == ids.Length) return Success("删除成功"); else if (res > 0 && res < ids.Length) return Error("部分删除失败"); else return Error("删除失败"); } else return Error("请选择要删除的记录"); } /// /// 循环删除分类 /// /// /// public async Task DeleteTypeAsync(string id, string usercode) { bool bl = false; var model = await _sys_departmentbaserepository.GetSingle(id); if (model != null) { var zlist = await _sys_departmentbaserepository.Get(p => p.parentid == model.id && p.isdelete == 0); foreach (var z in zlist) { await DeleteTypeAsync(z.id, usercode); } model.isdelete = 1; model.deleteby = usercode; model.deletetime = DateTime.Now; bl = await _sys_departmentbaserepository.UpdateOne(model); } return bl; } } }