SysDictDataController.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using Microsoft.AspNetCore.Mvc;
  2. using Newtonsoft.Json;
  3. using ZR.Model;
  4. using ZR.Model.System;
  5. using ZR.Model.System.Dto;
  6. namespace ZR.Admin.WebApi.Controllers.System
  7. {
  8. /// <summary>
  9. /// 数据字典信息
  10. /// </summary>
  11. [Route("system/dict/data")]
  12. [ApiExplorerSettings(GroupName = "sys")]
  13. public class SysDictDataController : BaseController
  14. {
  15. private readonly ISysDictDataService SysDictDataService;
  16. private readonly ISysDictService SysDictService;
  17. public SysDictDataController(ISysDictService sysDictService, ISysDictDataService sysDictDataService)
  18. {
  19. SysDictService = sysDictService;
  20. SysDictDataService = sysDictDataService;
  21. }
  22. /// <summary>
  23. /// 搜索
  24. /// </summary>
  25. /// <param name="dictData"></param>
  26. /// <param name="pagerInfo"></param>
  27. /// <returns></returns>
  28. [ActionPermissionFilter(Permission = "system:dict:list")]
  29. [HttpGet("list")]
  30. public IActionResult List([FromQuery] SysDictData dictData, [FromQuery] PagerInfo pagerInfo)
  31. {
  32. var list = SysDictDataService.SelectDictDataList(dictData, pagerInfo);
  33. if (dictData.DictType.StartsWith("sql_"))
  34. {
  35. var result = SysDictService.SelectDictDataByCustomSql(dictData.DictType);
  36. list.Result.AddRange(result.Adapt<List<SysDictData>>());
  37. list.TotalNum += result.Count;
  38. }
  39. return SUCCESS(list);
  40. }
  41. /// <summary>
  42. /// 根据字典类型查询字典数据信息
  43. /// </summary>
  44. /// <param name="dictType"></param>
  45. /// <returns></returns>
  46. [AllowAnonymous]
  47. [HttpGet("type/{dictType}")]
  48. public IActionResult DictType(string dictType)
  49. {
  50. return SUCCESS(SysDictDataService.SelectDictDataByType(dictType));
  51. }
  52. /// <summary>
  53. /// 根据字典类型查询字典数据信息
  54. /// </summary>
  55. /// <param name="dto"></param>
  56. /// <returns></returns>
  57. [AllowAnonymous]
  58. [HttpPost("types")]
  59. public IActionResult DictTypes([FromBody] List<SysdictDataParamDto> dto)
  60. {
  61. var list = SysDictDataService.SelectDictDataByTypes(dto.Select(f => f.DictType).ToArray());
  62. var dataVos = GetDicts(dto.Select(f => f.DictType).ToArray());
  63. return SUCCESS(dataVos);
  64. }
  65. /// <summary>
  66. /// 移动端使用uniapp
  67. /// </summary>
  68. /// <returns></returns>
  69. [AllowAnonymous]
  70. [HttpPost("dicts")]
  71. public async Task<IActionResult> GetDictTypes()
  72. {
  73. var data = await HttpContext.GetBodyAsync();
  74. return SUCCESS(GetDicts(JsonConvert.DeserializeObject<string[]>(data)));
  75. }
  76. private List<SysdictDataParamDto> GetDicts([FromBody]string[] dicts)
  77. {
  78. List<SysdictDataParamDto> dataVos = new();
  79. var list = SysDictDataService.SelectDictDataByTypes(dicts);
  80. foreach (var dic in dicts)
  81. {
  82. SysdictDataParamDto vo = new()
  83. {
  84. DictType = dic,
  85. List = list.FindAll(f => f.DictType == dic)
  86. };
  87. if (dic.StartsWith("cus_") || dic.StartsWith("sql_"))
  88. {
  89. vo.List.AddRange(SysDictService.SelectDictDataByCustomSql(dic));
  90. }
  91. dataVos.Add(vo);
  92. }
  93. return dataVos;
  94. }
  95. /// <summary>
  96. /// 查询字典数据详细
  97. /// </summary>
  98. /// <param name="dictCode"></param>
  99. /// <returns></returns>
  100. [HttpGet("info/{dictCode}")]
  101. public IActionResult GetInfo(long dictCode)
  102. {
  103. return SUCCESS(SysDictDataService.SelectDictDataById(dictCode));
  104. }
  105. /// <summary>
  106. /// 添加
  107. /// </summary>
  108. /// <param name="dict"></param>
  109. /// <returns></returns>
  110. [ActionPermissionFilter(Permission = "system:dict:add")]
  111. [Log(Title = "字典数据", BusinessType = BusinessType.INSERT)]
  112. [HttpPost()]
  113. public IActionResult Add([FromBody] SysDictData dict)
  114. {
  115. dict.Create_by = HttpContext.GetName();
  116. dict.Create_time = DateTime.Now;
  117. return SUCCESS(SysDictDataService.InsertDictData(dict));
  118. }
  119. /// <summary>
  120. /// 修改
  121. /// </summary>
  122. /// <param name="dict"></param>
  123. /// <returns></returns>
  124. [ActionPermissionFilter(Permission = "system:dict:edit")]
  125. [Log(Title = "字典数据", BusinessType = BusinessType.UPDATE)]
  126. [HttpPut()]
  127. public IActionResult Edit([FromBody] SysDictData dict)
  128. {
  129. dict.Update_by = HttpContext.GetName();
  130. return SUCCESS(SysDictDataService.UpdateDictData(dict));
  131. }
  132. /// <summary>
  133. /// 修改字典数据状态
  134. /// </summary>
  135. /// <param name="dto"></param>
  136. /// <returns></returns>
  137. [HttpPut("changeStatus")]
  138. [Log(Title = "修改字典数据状态", BusinessType = BusinessType.UPDATE)]
  139. [ActionPermissionFilter(Permission = "system:dict:edit")]
  140. public IActionResult ChangeStatus([FromBody] SysDictData dto)
  141. {
  142. int result = SysDictDataService.UpdateStatus(dto);
  143. return ToResponse(result);
  144. }
  145. /// <summary>
  146. /// 删除字典类型
  147. /// </summary>
  148. /// <param name="dictCode"></param>
  149. /// <returns></returns>
  150. [ActionPermissionFilter(Permission = "system:dict:remove")]
  151. [Log(Title = "字典类型", BusinessType = BusinessType.DELETE)]
  152. [HttpDelete("{dictCode}")]
  153. public IActionResult Remove(string dictCode)
  154. {
  155. long[] dictCodes = Common.Tools.SpitLongArrary(dictCode);
  156. return SUCCESS(SysDictDataService.DeleteDictDataByIds(dictCodes));
  157. }
  158. }
  159. }