using System;
using System.Collections.Generic;
using System.Common;
using System.IRepositories;
using System.Linq;
using System.Model;
using System.Security.Claims;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
using TVShoppingCallCenter_ZLJ.Models.Inputs;
namespace TVShoppingCallCenter_ZLJ.Controllers.System
{
[Authorize]
[Produces("application/json")]
[Route("api/[controller]")]
public class SysConfigController : BaseController
{
private readonly ISys_SystemConfigRepository _sys_sysconfigRepository;
public SysConfigController(ISys_SystemConfigRepository sys_sysconfigRepository)
{
_sys_sysconfigRepository = sys_sysconfigRepository;
}
///
/// 获取基础数据列表
///
///
///
[HttpGet("getlistbypage")]
public async Task GetListsByPage(string key, int pageindex = 1, int pagesize = 20)
{
List conModels = new List();
#region 条件筛选
conModels.Add(new ConditionalModel() { FieldName = "F_State", ConditionalType = ConditionalType.Equal, FieldValue = ((int)EnumDelState.Enabled).ToString() });
if (!string.IsNullOrEmpty(key))
{
conModels.Add(new ConditionalCollections()
{
ConditionalList = new List>()
{
new KeyValuePair(WhereType.And, new ConditionalModel() { FieldName = "F_ParamCode", ConditionalType = ConditionalType.Like, FieldValue = key }),
new KeyValuePair( WhereType.Or , new ConditionalModel() { FieldName = "F_ParamValue", ConditionalType = ConditionalType.Like, FieldValue = key }),
new KeyValuePair( WhereType.Or, new ConditionalModel() { FieldName = "F_ParamDes", ConditionalType = ConditionalType.Like, FieldValue = key })
}
});
}
#endregion
int recordCount = 0;
var list = await _sys_sysconfigRepository.GetListByPage(conModels, new MyPageModel() { PageIndex = pageindex, PageSize = pagesize, PageCount = recordCount }, "F_CreateOn desc");
return Success("成功", list);
}
///
/// 获取实体
///
[HttpGet("getdetails")]
public async Task GetDetails(int id)
{
if (id > 0)
{
var dModel = await _sys_sysconfigRepository.GetSingle(x => x.F_ParamId == id && x.F_State == (int)EnumDelState.Enabled);
if (dModel != null)
{
return Success("获取基础数据成功", dModel);
}
else
{
return Error("获取基础数据失败");
}
}
else
{
return Error("获取参数失败");
}
}
///
/// 添加基础数据
///
[HttpPost("add")]
public async Task Add(SysConfigInput input)
{
#region 验证
if (string.IsNullOrWhiteSpace(input.code))
{
return Error("编号不能为空");
}
if (string.IsNullOrWhiteSpace(input.value))
{
return Error("参数值不能为空");
}
if (await GetExistByCodeAsync(input.code, input.id))
return Error("基础数据编号必须唯一,请重新输入!");
#endregion
T_Sys_SystemConfig clmodel = new T_Sys_SystemConfig();
clmodel.F_ParamCode = input.code.Trim();
clmodel.F_ParamValue = input.value.Trim();
clmodel.F_ParamDes = input.des;
clmodel.F_CreateBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value; //"8000";
clmodel.F_CreateOn = DateTime.Now;
clmodel.F_State = (int)EnumDelState.Enabled;
var res = await _sys_sysconfigRepository.Add(clmodel);
if (res > 0)
return Success("基础数据保存成功");
else
{
return Error("基础数据保存失败");
}
}
///
/// 修改基础数据
///
[HttpPost("update")]
public async Task Edit(SysConfigInput input)
{
#region
if (input.id <= 0)
return Error("请选择要编辑的数据");
if (string.IsNullOrWhiteSpace(input.code))
{
return Error("编号不能为空");
}
if (string.IsNullOrWhiteSpace(input.value))
{
return Error("参数值不能为空");
}
if (await GetExistByCodeAsync(input.code, input.id))
return Error("基础数据编号必须唯一,请重新输入!");
#endregion
var clmodel = await _sys_sysconfigRepository.GetSingle(x => x.F_ParamId == input.id && x.F_State == (int)EnumDelState.Enabled);
if (clmodel == null)
return Error("信息获取失败");
clmodel.F_ParamCode = input.code.Trim();
clmodel.F_ParamValue = input.value.Trim();
clmodel.F_ParamDes = input.des;
clmodel.F_LastModifyBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
clmodel.F_LastModifyOn = DateTime.Now;
var res = await _sys_sysconfigRepository.Update(clmodel);
if (res)
return Success("基础数据保存成功");
else
{
return Error("基础数据保存失败");
}
}
[HttpPost("delete")]
public async Task Remove(int[] ids)
{
//使用逻辑删除
//物理删除的数据无法恢复
var res = 0;
if (ids != null && ids.Length > 0)
{
foreach (var item in ids)
{
var ml = await _sys_sysconfigRepository.GetSingle(x => x.F_ParamId == item);
ml.F_State = (int)EnumDelState.Delete;
ml.F_DeleteBy = User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Sid).Value;
ml.F_DeleteOn = DateTime.Now;
if (await _sys_sysconfigRepository.Update(ml))
res += 1;
}
if (res == ids.Length)
return Success("删除成功");
else if (res > 0 && res < ids.Length)
return Error("部分删除失败,请查看后重新操作");
else
return Error("删除失败,请查看后重新操作");
}
else
return Error("请选择要删除的记录");
}
#region 私有方法
///
/// 根据基础数据编号查询是否存在此基础数据编号
///
///
///
private async Task GetExistByCodeAsync(string code, int id)
{
long c = 0;
if (id > 0)
c = await _sys_sysconfigRepository.GetCount(x => x.F_ParamCode.Equals(code) && x.F_ParamId != id && x.F_State == (int)EnumDelState.Enabled);
else
c = await _sys_sysconfigRepository.GetCount(x => x.F_ParamCode.Equals(code) && x.F_State == (int)EnumDelState.Enabled);
return c > 0;
}
#endregion
}
}