using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using ZR.Model; using ZR.Model.System; using ZR.Model.System.Dto; namespace ZR.Admin.WebApi.Controllers.System { /// /// 数据字典信息 /// [Route("system/dict/data")] [ApiExplorerSettings(GroupName = "sys")] public class SysDictDataController : BaseController { private readonly ISysDictDataService SysDictDataService; private readonly ISysDictService SysDictService; public SysDictDataController(ISysDictService sysDictService, ISysDictDataService sysDictDataService) { SysDictService = sysDictService; SysDictDataService = sysDictDataService; } /// /// 搜索 /// /// /// /// [ActionPermissionFilter(Permission = "system:dict:list")] [HttpGet("list")] public IActionResult List([FromQuery] SysDictData dictData, [FromQuery] PagerInfo pagerInfo) { var list = SysDictDataService.SelectDictDataList(dictData, pagerInfo); if (dictData.DictType.StartsWith("sql_")) { var result = SysDictService.SelectDictDataByCustomSql(dictData.DictType); list.Result.AddRange(result.Adapt>()); list.TotalNum += result.Count; } return SUCCESS(list); } /// /// 根据字典类型查询字典数据信息 /// /// /// [AllowAnonymous] [HttpGet("type/{dictType}")] public IActionResult DictType(string dictType) { return SUCCESS(SysDictDataService.SelectDictDataByType(dictType)); } /// /// 根据字典类型查询字典数据信息 /// /// /// [AllowAnonymous] [HttpPost("types")] public IActionResult DictTypes([FromBody] List dto) { var list = SysDictDataService.SelectDictDataByTypes(dto.Select(f => f.DictType).ToArray()); var dataVos = GetDicts(dto.Select(f => f.DictType).ToArray()); return SUCCESS(dataVos); } /// /// 移动端使用uniapp /// /// [AllowAnonymous] [HttpPost("dicts")] public async Task GetDictTypes() { var data = await HttpContext.GetBodyAsync(); return SUCCESS(GetDicts(JsonConvert.DeserializeObject(data))); } private List GetDicts([FromBody]string[] dicts) { List dataVos = new(); var list = SysDictDataService.SelectDictDataByTypes(dicts); foreach (var dic in dicts) { SysdictDataParamDto vo = new() { DictType = dic, List = list.FindAll(f => f.DictType == dic) }; if (dic.StartsWith("cus_") || dic.StartsWith("sql_")) { vo.List.AddRange(SysDictService.SelectDictDataByCustomSql(dic)); } dataVos.Add(vo); } return dataVos; } /// /// 查询字典数据详细 /// /// /// [HttpGet("info/{dictCode}")] public IActionResult GetInfo(long dictCode) { return SUCCESS(SysDictDataService.SelectDictDataById(dictCode)); } /// /// 添加 /// /// /// [ActionPermissionFilter(Permission = "system:dict:add")] [Log(Title = "字典数据", BusinessType = BusinessType.INSERT)] [HttpPost()] public IActionResult Add([FromBody] SysDictData dict) { dict.Create_by = HttpContext.GetName(); dict.Create_time = DateTime.Now; return SUCCESS(SysDictDataService.InsertDictData(dict)); } /// /// 修改 /// /// /// [ActionPermissionFilter(Permission = "system:dict:edit")] [Log(Title = "字典数据", BusinessType = BusinessType.UPDATE)] [HttpPut()] public IActionResult Edit([FromBody] SysDictData dict) { dict.Update_by = HttpContext.GetName(); return SUCCESS(SysDictDataService.UpdateDictData(dict)); } /// /// 修改字典数据状态 /// /// /// [HttpPut("changeStatus")] [Log(Title = "修改字典数据状态", BusinessType = BusinessType.UPDATE)] [ActionPermissionFilter(Permission = "system:dict:edit")] public IActionResult ChangeStatus([FromBody] SysDictData dto) { int result = SysDictDataService.UpdateStatus(dto); return ToResponse(result); } /// /// 删除字典类型 /// /// /// [ActionPermissionFilter(Permission = "system:dict:remove")] [Log(Title = "字典类型", BusinessType = BusinessType.DELETE)] [HttpDelete("{dictCode}")] public IActionResult Remove(string dictCode) { long[] dictCodes = Common.Tools.SpitLongArrary(dictCode); return SUCCESS(SysDictDataService.DeleteDictDataByIds(dictCodes)); } } }