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