BaseController公共类优化

master
xiaochanghai 1 year ago
parent 9dc2c3c83f
commit d7a3d9f768
  1. 119
      Tiobon.Core.Api/Controllers/BaseApiController.cs
  2. 62
      Tiobon.Core.Api/Controllers/BaseController.cs
  3. 24
      Tiobon.Core.Api/Controllers/Ghra_GradeController.cs
  4. 10
      Tiobon.Core.Api/Tiobon.Core.xml
  5. 128
      Tiobon.Core.Common/Attribute/QueryFilter.cs
  6. 11
      Tiobon.Core.Repository/BASE/BaseRepository.cs
  7. 3
      Tiobon.Core.Services/BASE/BaseServices.cs

@ -1,84 +1,51 @@
namespace Tiobon.Core.Controllers
{
public class BaseApiController : Controller
{
[NonAction]
public MessageModel<T> Success<T>(T data, string msg = "成功")
{
return new MessageModel<T>()
{
success = true,
msg = msg,
response = data,
};
}
{
[NonAction]
public MessageModel<T> Success<T>(T data, string msg = "成功")
{
return new MessageModel<T>() { success = true, msg = msg, response = data, };
}
// [NonAction]
//public MessageModel<T> Success<T>(T data, string msg = "成功",bool success = true)
//{
// return new MessageModel<T>()
// {
// success = success,
// msg = msg,
// response = data,
// };
//}
[NonAction]
public MessageModel Success(string msg = "成功")
{
return new MessageModel()
{
success = true,
msg = msg,
response = null,
};
}
[NonAction]
public MessageModel<string> Failed(string msg = "失败", int status = 500)
{
return new MessageModel<string>()
{
success = false,
status = status,
msg = msg,
response = null,
};
}
// [NonAction]
//public MessageModel<T> Success<T>(T data, string msg = "成功",bool success = true)
//{
// return new MessageModel<T>()
// {
// success = success,
// msg = msg,
// response = data,
// };
//}
[NonAction]
public MessageModel Success(string msg = "成功")
{
return new MessageModel() { success = true, msg = msg, response = null, };
}
[NonAction]
public MessageModel<T> Failed<T>(string msg = "失败", int status = 500)
{
return new MessageModel<T>()
{
success = false,
status = status,
msg = msg,
response = default,
};
}
[NonAction]
public MessageModel<string> Failed(string msg = "失败", int status = 500)
{
return new MessageModel<string>() { success = false, status = status, msg = msg, response = null, };
}
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(int page, int dataCount, int pageSize, List<T> data,
int pageCount, string msg = "获取成功")
{
return new MessageModel<PageModel<T>>()
{
success = true,
msg = msg,
response = new PageModel<T>(page, dataCount, pageSize, data)
};
}
[NonAction]
public MessageModel<T> Failed<T>(string msg = "失败", int status = 500)
{
return new MessageModel<T>() { success = false, status = status, msg = msg, response = default, };
}
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(PageModel<T> pageModel, string msg = "获取成功")
{
return new MessageModel<PageModel<T>>()
{
success = true,
msg = msg,
response = pageModel
};
}
}
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(int page, int dataCount, int pageSize, List<T> data, int pageCount, string msg = "获取成功")
{
return new MessageModel<PageModel<T>>() { success = true, msg = msg, response = new PageModel<T>(page, dataCount, pageSize, data) };
}
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(PageModel<T> pageModel, string msg = "获取成功")
{
return new MessageModel<PageModel<T>>() { success = true, msg = msg, response = pageModel };
}
}
}

@ -0,0 +1,62 @@
namespace Tiobon.Core.Controllers
{
public class BaseController<IServiceBase> : Controller
{
#region 初始化
protected IServiceBase _service;
/// <summary>
///
/// </summary>
public BaseController(IServiceBase service)
{
_service = service;
}
#endregion
[NonAction]
public MessageModel<T> Success<T>(T data, string msg = "成功")
{
return new MessageModel<T>() { success = true, msg = msg, response = data, };
}
// [NonAction]
//public MessageModel<T> Success<T>(T data, string msg = "成功",bool success = true)
//{
// return new MessageModel<T>()
// {
// success = success,
// msg = msg,
// response = data,
// };
//}
[NonAction]
public MessageModel Success(string msg = "成功")
{
return new MessageModel() { success = true, msg = msg, response = null, };
}
[NonAction]
public MessageModel<string> Failed(string msg = "失败", int status = 500)
{
return new MessageModel<string>() { success = false, status = status, msg = msg, response = null, };
}
[NonAction]
public MessageModel<T> Failed<T>(string msg = "失败", int status = 500)
{
return new MessageModel<T>() { success = false, status = status, msg = msg, response = default, };
}
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(int page, int dataCount, int pageSize, List<T> data, int pageCount, string msg = "获取成功")
{
return new MessageModel<PageModel<T>>() { success = true, msg = msg, response = new PageModel<T>(page, dataCount, pageSize, data) };
}
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(PageModel<T> pageModel, string msg = "获取成功")
{
return new MessageModel<PageModel<T>>() { success = true, msg = msg, response = pageModel };
}
}
}

@ -6,19 +6,11 @@
[Route("api/[controller]")]
[ApiController, GlobalActionFilter]
[Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_Ghra)]
public class Ghra_GradeController : ControllerBase
public class Ghra_GradeController : BaseController<IGhra_GradeServices>
{
#region 初始化
/// <summary>
/// 服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下
/// </summary>
private readonly IGhra_GradeServices _ghra_GradeServices;
public Ghra_GradeController(IGhra_GradeServices Ghra_GradeServices)
public Ghra_GradeController(IGhra_GradeServices service) : base(service)
{
_ghra_GradeServices = Ghra_GradeServices;
}
#endregion
#region 基础接口
@ -31,7 +23,7 @@
[HttpGet]
public async Task<MessageModel<PageModel<Ghra_GradeDto>>> Get([FromFilter] QueryFilter filter)
{
var response = await _ghra_GradeServices.QueryFilterPage(filter);
var response = await _service.QueryFilterPage(filter);
return new MessageModel<PageModel<Ghra_GradeDto>>() { msg = "获取成功", success = true, response = response };
}
@ -43,7 +35,7 @@
[HttpGet("{Id}")]
public async Task<MessageModel<Ghra_GradeDto>> Get(string Id)
{
var entity = await _ghra_GradeServices.QueryById(Id);
var entity = await _service.QueryById(Id);
if (entity == null)
return MessageModel<Ghra_GradeDto>.Fail("获取失败");
else
@ -62,7 +54,7 @@
{
var data = MessageModel<string>.Success("获取成功", null);
var id = await _ghra_GradeServices.Add(insertModel);
var id = await _service.Add(insertModel);
data.success = id > 0;
if (data.success)
data.response = id.ObjToString();
@ -82,7 +74,7 @@
public async Task<MessageModel> Put(long Id, [FromBody] EditGhra_GradeInput editModel)
{
var data = MessageModel.Success("更新成功");
data.success = await _ghra_GradeServices.Update(Id, editModel);
data.success = await _service.Update(Id, editModel);
if (!data.success)
data.msg = "更新失败";
@ -100,12 +92,12 @@
public async Task<MessageModel> Delete(long Id)
{
var data = MessageModel.Success("删除成功");
var entity = await _ghra_GradeServices.QueryById(Id);
var entity = await _service.QueryById(Id);
if (entity == null)
return MessageModel.Fail("删除失败");
entity.IsEnable = 0;
data.success = await _ghra_GradeServices.Update(entity);
data.success = await _service.Update(entity);
if (!data.success)
data.msg = "删除失败";
return data;

@ -4,6 +4,11 @@
<name>Tiobon.Core.Api</name>
</assembly>
<members>
<member name="M:Tiobon.Core.Controllers.BaseController`1.#ctor(`0)">
<summary>
</summary>
</member>
<member name="T:Tiobon.Core.Controllers.TiobonController">
<summary>
博客管理
@ -1221,11 +1226,6 @@
Ghra_Grade
</summary>
</member>
<member name="F:Tiobon.Core.Api.Controllers.Ghra_GradeController._ghra_GradeServices">
<summary>
服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下
</summary>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Get(Tiobon.Core.Common.QueryFilter)">
<summary>
Ghra_Grade -- 根据条件查询数据

@ -1,89 +1,61 @@
using System.ComponentModel.DataAnnotations;
namespace Tiobon.Core.Common
namespace Tiobon.Core.Common;
/// <summary>
/// 动态查询条件
/// </summary>
public class QueryFilter
{
private int _pageIndex;
/// <summary>
/// 动态查询条件
/// 起始位置(e.g. 0)
/// </summary>
public class QueryFilter
[Required]
public int PageIndex
{
private int _pageIndex;
/// <summary>
/// 起始位置(e.g. 0)
/// </summary>
[Required]
public int PageIndex
get { return _pageIndex; }
set
{
get { return _pageIndex; }
set
{
//前端默认从分页显示默认1开始,所以后端需要-1
if (value >= 1)
value -= 1;
_pageIndex = value;
}
//前端默认从分页显示默认1开始,所以后端需要-1
if (value >= 1)
value -= 1;
_pageIndex = value;
}
/// <summary>
/// 每页数量(e.g. 10)
/// </summary>
[Required]
public int PageSize { get; set; }
private string _predicate;
/// <summary>
/// 查询条件表达式(e.g. LoginName.Contains(@0))
/// </summary>
public string Predicate
}
/// <summary>
/// 每页数量(e.g. 10)
/// </summary>
[Required]
public int PageSize { get; set; }
private string _conditions;
/// <summary>
/// 查询条件( 例如:id = 1 and name = 小明)
/// </summary>
public string Conditions
{
get { return _conditions; }
set
{
get { return _predicate; }
set
{
//前端默认从分页显示默认1开始,所以后端需要-1
if (value == "1=1")
value = null;
_predicate = value;
}
//前端默认从分页显示默认1开始,所以后端需要-1
if (value == "1=1")
value = null;
_conditions = value;
}
/// <summary>
/// 查询条件表达式参数(e.g. LoginName)
/// </summary>
public object[] PredicateValues { get; set; }
/// <summary>
/// 排序条件表达式(e.g. LoginName ASC,Name DESC)
/// </summary>
public string Sorting { get; set; }
///// <summary>
///// 患者关键字(姓名、别名、拼音、五笔)模糊查询
///// </summary>
//public string PatientKey { get; set; }
///// <summary>
///// 报表患者过滤条件
///// </summary>
//public PatientFilter PatientFilter { get; set; }
///// <summary>
///// 分组条件(e.g. [10,20,30])
///// </summary>
//public List<decimal> GroupValues { get; set; }
///// <summary>
///// 导出字段,按照顺序填写(e.g. [{ Key: 'PatientNameFull', Name: '患者姓名' }, { Key: 'DeviceCode', Name: '设备编号' }])
///// </summary>
//public List<ExportField> ExportFields { get; set; }
///// <summary>
///// 导出字段的宽度(默认20),按照顺序与字段一一对应填写(e.g. [20,50,20])
///// </summary>
//public List<int> ExportFieldsWidth { get; set; }
/// <summary>
/// 缺省值
/// </summary>
public static QueryFilter Default => new QueryFilter
{
PageIndex = 1,
PageSize = 100000,
Sorting = string.Empty,
Predicate = string.Empty,
PredicateValues = Array.Empty<object>(),
//GroupValues = new List<decimal>(),
//ExportFields = new List<ExportField>(),
//ExportFieldsWidth = new List<int>()
};
}
}
/// <summary>
/// 排序条件表达式(e.g. LoginName ASC,Name DESC)
/// </summary>
public string Sorting { get; set; }
/// <summary>
/// 缺省值
/// </summary>
public static QueryFilter Default => new QueryFilter
{
PageIndex = 1,
PageSize = 100000,
Sorting = string.Empty,
Conditions = string.Empty
};
}

@ -455,14 +455,9 @@ namespace Tiobon.Core.Repository.Base
{
RefAsync<int> totalCount = 0;
var query = _db.Queryable<TEntity>();
if (!filter.Predicate.IsNullOrEmpty())
{
for (int i = 0; i < filter.PredicateValues.Length; i++)
{
filter.Predicate = filter.Predicate.Replace($"@{i}", filter.PredicateValues[i].ToString());
}
query = query.Where(filter.Predicate);
}
if (!filter.Conditions.IsNullOrEmpty())
query = query.Where(filter.Conditions);
var list = await query
.OrderByIF(!string.IsNullOrEmpty(filter.Sorting), filter.Sorting)

@ -816,8 +816,7 @@ namespace Tiobon.Core.Services.BASE
PageIndex = 1,
PageSize = 1,
Sorting = string.Empty,
Predicate = "Id=@0",
PredicateValues = new object[] { id }
Conditions = string.Empty
};
}
#endregion

Loading…
Cancel
Save