颐和api

DepartmentBaseController.cs 8.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using Microsoft.AspNetCore.Mvc;
  6. using MadRunFabric.Common;
  7. using Microsoft.AspNetCore.Authorization;
  8. using Microsoft.Extensions.Logging;
  9. using AutoMapper.Configuration;
  10. using ConfigurationApi.IRepositories;
  11. using MadRunFabric.Model;
  12. using System.Security.Claims;
  13. using ConfigurationApi.Models;
  14. namespace ConfigurationApi.Controllers
  15. {
  16. /// <summary>
  17. /// 部门 本接口应该没有用 张琨20201115鉴定
  18. /// </summary>
  19. [Authorize]
  20. [ApiVersion("6.0")]
  21. [Produces("application/json")]
  22. [Route("api/[controller]")]
  23. public class DepartmentBaseController : BaseController
  24. {
  25. private readonly ILogger<DepartmentBaseController> _logger;
  26. private readonly ISys_User_AccountRepository _sys_user_accountRepository;
  27. private readonly ISys_DepartmentBaseRepository _sys_departmentbaserepository;
  28. public DepartmentBaseController(
  29. ILogger<DepartmentBaseController> logger,
  30. ISys_User_AccountRepository sys_user_accountRepository,
  31. ISys_DepartmentBaseRepository sys_departmentbaserepository
  32. )
  33. {
  34. _logger = logger;
  35. _sys_user_accountRepository = sys_user_accountRepository;
  36. _sys_departmentbaserepository = sys_departmentbaserepository;
  37. }
  38. /// <summary>
  39. /// 获取树结构
  40. /// </summary>
  41. [HttpGet("gettreelist")]
  42. public async Task<IActionResult> GetTreeListAsync()
  43. {
  44. var list = (await _sys_departmentbaserepository.Get(p => p.isdelete == 0)).ToList();
  45. return Success("获取成功", GetTreeList(list, null));
  46. }
  47. /// <summary>
  48. /// 循环获取树结构
  49. /// </summary>
  50. /// <param name="list"></param>
  51. /// <param name="pid"></param>
  52. /// <returns></returns>
  53. public object GetTreeList(List<Sys_DepartmentBase> list, string pid)
  54. {
  55. var children = list.Where(p => p.parentid == pid).Select(p => new
  56. {
  57. p.id,
  58. p.departmenname,
  59. p.sortnum,
  60. p.parentid,
  61. children = GetTreeList(list, p.id)
  62. });
  63. return children;
  64. }
  65. /// <summary>
  66. /// 获取详情
  67. /// </summary>
  68. [HttpGet("getsingle")]
  69. public async Task<IActionResult> GetTypeSingleAsync(string id)
  70. {
  71. var model = await _sys_departmentbaserepository.GetSingle(id);
  72. var names = await GetNameListAsync(model.id, "tts"); //获取名称
  73. var ids = await GetNameListAsync(model.id, "ids"); //获取ids
  74. var obj = new
  75. {
  76. model,
  77. depids = ids.Split(","),
  78. depnames = names.Split(",")
  79. };
  80. return Success("获取成功", obj);
  81. }
  82. /// <summary>
  83. /// 循环获取分类名称和id ("部门1", "部门2")
  84. /// </summary>
  85. /// <param name="id"></param>
  86. /// <param name="type">type:tts获取名称,ids获取id</param>
  87. /// <returns></returns>
  88. public async Task<string> GetNameListAsync(string id, string type)
  89. {
  90. string str = string.Empty;
  91. var depinfo = await _sys_departmentbaserepository.GetSingle(id);
  92. if (depinfo != null)
  93. {
  94. if (depinfo.parentid != null)
  95. {
  96. str = await GetNameListAsync(depinfo.parentid, type);
  97. }
  98. if (string.IsNullOrEmpty(str))
  99. {
  100. if (type == "tts")
  101. str = depinfo.departmenname;
  102. else
  103. str = depinfo.id;
  104. }
  105. else
  106. {
  107. if (type == "tts")
  108. str += "," + depinfo.departmenname;
  109. else
  110. str += "," + depinfo.id;
  111. }
  112. }
  113. return str;
  114. }
  115. /// <summary>
  116. /// 添加
  117. /// </summary>
  118. [HttpPost("add")]
  119. public async Task<IActionResult> AddAsync(DepartmentBaseInput input)
  120. {
  121. string optuser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  122. string optusername = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  123. if (string.IsNullOrEmpty(input.departmenname))
  124. {
  125. return Error("名称不能为空");
  126. }
  127. var model = new Sys_DepartmentBase();
  128. model.departmenname = input.departmenname;
  129. model.code = input.code;
  130. model.parentid = input.parentid;
  131. model.mobile = input.mobile;
  132. model.telephone = input.telephone;
  133. model.remark = input.remark;
  134. model.sortnum = input.sortnum;
  135. model.createtby = optuser;
  136. model.createbyname = optusername;
  137. model.createtime = DateTime.Now;
  138. bool bl = await _sys_departmentbaserepository.Add(model);
  139. if (bl)
  140. {
  141. return Success("保存成功");
  142. }
  143. else
  144. return Error("保存失败");
  145. }
  146. /// <summary>
  147. /// 修改
  148. /// </summary>
  149. [HttpPost("update")]
  150. public async Task<IActionResult> UpdateTypeAsync(DepartmentBaseInput input)
  151. {
  152. string optuser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  153. string optusername = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  154. if (string.IsNullOrEmpty(input.departmenname))
  155. {
  156. return Error("名称不能为空");
  157. }
  158. var model = await _sys_departmentbaserepository.GetSingle(p => p.id == input.id && p.isdelete == 0);
  159. model.departmenname = input.departmenname;
  160. model.code = input.code;
  161. model.parentid = input.parentid;
  162. model.mobile = input.mobile;
  163. model.telephone = input.telephone;
  164. model.remark = input.remark;
  165. model.sortnum = input.sortnum;
  166. model.updateby = optuser;
  167. model.updatetime = DateTime.Now;
  168. bool bl = await _sys_departmentbaserepository.UpdateOne(model);
  169. if (bl)
  170. {
  171. return Success("保存成功");
  172. }
  173. else
  174. return Error("保存失败");
  175. }
  176. /// <summary>
  177. /// 删除
  178. /// </summary>
  179. /// <param name="ids"></param>
  180. /// <returns></returns>
  181. [HttpPost("delete")]
  182. public async Task<IActionResult> RemoveTypeAsync(string[] ids, int channel = 1)
  183. {
  184. string optuser = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
  185. string optusername = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name).Value;
  186. //使用逻辑删除
  187. //物理删除的数据无法恢复
  188. var res = 0;
  189. if (ids != null && ids.Length > 0)
  190. {
  191. foreach (var id in ids)
  192. {
  193. if (await DeleteTypeAsync(id, optuser))
  194. {
  195. res += 1;
  196. }
  197. }
  198. if (res == ids.Length)
  199. return Success("删除成功");
  200. else if (res > 0 && res < ids.Length)
  201. return Error("部分删除失败");
  202. else
  203. return Error("删除失败");
  204. }
  205. else
  206. return Error("请选择要删除的记录");
  207. }
  208. /// <summary>
  209. /// 循环删除分类
  210. /// </summary>
  211. /// <param name="id"></param>
  212. /// <returns></returns>
  213. public async Task<bool> DeleteTypeAsync(string id, string usercode)
  214. {
  215. bool bl = false;
  216. var model = await _sys_departmentbaserepository.GetSingle(id);
  217. if (model != null)
  218. {
  219. var zlist = await _sys_departmentbaserepository.Get(p => p.parentid == model.id && p.isdelete == 0);
  220. foreach (var z in zlist)
  221. {
  222. await DeleteTypeAsync(z.id, usercode);
  223. }
  224. model.isdelete = 1;
  225. model.deleteby = usercode;
  226. model.deletetime = DateTime.Now;
  227. bl = await _sys_departmentbaserepository.UpdateOne(model);
  228. }
  229. return bl;
  230. }
  231. }
  232. }