BaseController公共类优化

master
xiaochanghai 1 year ago
parent 9dc2c3c83f
commit d7a3d9f768
  1. 117
      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. 126
      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 namespace Tiobon.Core.Controllers
{ {
public class BaseApiController : Controller public class BaseApiController : Controller
{ {
[NonAction] [NonAction]
public MessageModel<T> Success<T>(T data, string msg = "成功") public MessageModel<T> Success<T>(T data, string msg = "成功")
{ {
return new MessageModel<T>() return new MessageModel<T>() { success = true, msg = msg, response = data, };
{ }
success = true,
msg = msg,
response = data,
};
}
// [NonAction] // [NonAction]
//public MessageModel<T> Success<T>(T data, string msg = "成功",bool success = true) //public MessageModel<T> Success<T>(T data, string msg = "成功",bool success = true)
//{ //{
// return new MessageModel<T>() // return new MessageModel<T>()
// { // {
// success = success, // success = success,
// msg = msg, // msg = msg,
// response = data, // response = data,
// }; // };
//} //}
[NonAction] [NonAction]
public MessageModel Success(string msg = "成功") public MessageModel Success(string msg = "成功")
{ {
return new MessageModel() return new MessageModel() { success = true, msg = msg, response = null, };
{ }
success = true,
msg = msg,
response = null,
};
}
[NonAction] [NonAction]
public MessageModel<string> Failed(string msg = "失败", int status = 500) public MessageModel<string> Failed(string msg = "失败", int status = 500)
{ {
return new MessageModel<string>() return new MessageModel<string>() { success = false, status = status, msg = msg, response = null, };
{ }
success = false,
status = status,
msg = msg,
response = null,
};
}
[NonAction] [NonAction]
public MessageModel<T> Failed<T>(string msg = "失败", int status = 500) public MessageModel<T> Failed<T>(string msg = "失败", int status = 500)
{ {
return new MessageModel<T>() return new MessageModel<T>() { success = false, status = status, msg = msg, response = default, };
{ }
success = false,
status = status,
msg = msg,
response = default,
};
}
[NonAction] [NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(int page, int dataCount, int pageSize, List<T> data, public MessageModel<PageModel<T>> SuccessPage<T>(int page, int dataCount, int pageSize, List<T> data, int pageCount, string msg = "获取成功")
int pageCount, string msg = "获取成功") {
{ return new MessageModel<PageModel<T>>() { success = true, msg = msg, response = new PageModel<T>(page, dataCount, pageSize, data) };
return new MessageModel<PageModel<T>>() }
{
success = true,
msg = msg,
response = new PageModel<T>(page, dataCount, pageSize, data)
};
}
[NonAction] [NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(PageModel<T> pageModel, string msg = "获取成功") public MessageModel<PageModel<T>> SuccessPage<T>(PageModel<T> pageModel, string msg = "获取成功")
{ {
return new MessageModel<PageModel<T>>() return new MessageModel<PageModel<T>>() { success = true, msg = msg, response = pageModel };
{ }
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]")] [Route("api/[controller]")]
[ApiController, GlobalActionFilter] [ApiController, GlobalActionFilter]
[Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_Ghra)] [Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_Ghra)]
public class Ghra_GradeController : ControllerBase public class Ghra_GradeController : BaseController<IGhra_GradeServices>
{ {
#region 初始化 public Ghra_GradeController(IGhra_GradeServices service) : base(service)
/// <summary>
/// 服务器接口,因为是模板生成,所以首字母是大写的,自己可以重构下
/// </summary>
private readonly IGhra_GradeServices _ghra_GradeServices;
public Ghra_GradeController(IGhra_GradeServices Ghra_GradeServices)
{ {
_ghra_GradeServices = Ghra_GradeServices;
} }
#endregion
#region 基础接口 #region 基础接口
@ -31,7 +23,7 @@
[HttpGet] [HttpGet]
public async Task<MessageModel<PageModel<Ghra_GradeDto>>> Get([FromFilter] QueryFilter filter) 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 }; return new MessageModel<PageModel<Ghra_GradeDto>>() { msg = "获取成功", success = true, response = response };
} }
@ -43,7 +35,7 @@
[HttpGet("{Id}")] [HttpGet("{Id}")]
public async Task<MessageModel<Ghra_GradeDto>> Get(string 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) if (entity == null)
return MessageModel<Ghra_GradeDto>.Fail("获取失败"); return MessageModel<Ghra_GradeDto>.Fail("获取失败");
else else
@ -62,7 +54,7 @@
{ {
var data = MessageModel<string>.Success("获取成功", null); var data = MessageModel<string>.Success("获取成功", null);
var id = await _ghra_GradeServices.Add(insertModel); var id = await _service.Add(insertModel);
data.success = id > 0; data.success = id > 0;
if (data.success) if (data.success)
data.response = id.ObjToString(); data.response = id.ObjToString();
@ -82,7 +74,7 @@
public async Task<MessageModel> Put(long Id, [FromBody] EditGhra_GradeInput editModel) public async Task<MessageModel> Put(long Id, [FromBody] EditGhra_GradeInput editModel)
{ {
var data = MessageModel.Success("更新成功"); var data = MessageModel.Success("更新成功");
data.success = await _ghra_GradeServices.Update(Id, editModel); data.success = await _service.Update(Id, editModel);
if (!data.success) if (!data.success)
data.msg = "更新失败"; data.msg = "更新失败";
@ -100,12 +92,12 @@
public async Task<MessageModel> Delete(long Id) public async Task<MessageModel> Delete(long Id)
{ {
var data = MessageModel.Success("删除成功"); var data = MessageModel.Success("删除成功");
var entity = await _ghra_GradeServices.QueryById(Id); var entity = await _service.QueryById(Id);
if (entity == null) if (entity == null)
return MessageModel.Fail("删除失败"); return MessageModel.Fail("删除失败");
entity.IsEnable = 0; entity.IsEnable = 0;
data.success = await _ghra_GradeServices.Update(entity); data.success = await _service.Update(entity);
if (!data.success) if (!data.success)
data.msg = "删除失败"; data.msg = "删除失败";
return data; return data;

@ -4,6 +4,11 @@
<name>Tiobon.Core.Api</name> <name>Tiobon.Core.Api</name>
</assembly> </assembly>
<members> <members>
<member name="M:Tiobon.Core.Controllers.BaseController`1.#ctor(`0)">
<summary>
</summary>
</member>
<member name="T:Tiobon.Core.Controllers.TiobonController"> <member name="T:Tiobon.Core.Controllers.TiobonController">
<summary> <summary>
博客管理 博客管理
@ -1221,11 +1226,6 @@
Ghra_Grade Ghra_Grade
</summary> </summary>
</member> </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)"> <member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Get(Tiobon.Core.Common.QueryFilter)">
<summary> <summary>
Ghra_Grade -- 根据条件查询数据 Ghra_Grade -- 根据条件查询数据

@ -1,89 +1,61 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
namespace Tiobon.Core.Common namespace Tiobon.Core.Common;
/// <summary>
/// 动态查询条件
/// </summary>
public class QueryFilter
{ {
private int _pageIndex;
/// <summary> /// <summary>
/// 动态查询条件 /// 起始位置(e.g. 0)
/// </summary> /// </summary>
public class QueryFilter [Required]
public int PageIndex
{ {
private int _pageIndex; get { return _pageIndex; }
/// <summary> set
/// 起始位置(e.g. 0)
/// </summary>
[Required]
public int PageIndex
{ {
get { return _pageIndex; } //前端默认从分页显示默认1开始,所以后端需要-1
set if (value >= 1)
{ value -= 1;
//前端默认从分页显示默认1开始,所以后端需要-1 _pageIndex = value;
if (value >= 1)
value -= 1;
_pageIndex = value;
}
} }
/// <summary> }
/// 每页数量(e.g. 10) /// <summary>
/// </summary> /// 每页数量(e.g. 10)
[Required] /// </summary>
public int PageSize { get; set; } [Required]
private string _predicate; public int PageSize { get; set; }
/// <summary> private string _conditions;
/// 查询条件表达式(e.g. LoginName.Contains(@0)) /// <summary>
/// </summary> /// 查询条件( 例如:id = 1 and name = 小明)
public string Predicate /// </summary>
public string Conditions
{
get { return _conditions; }
set
{ {
get { return _predicate; } //前端默认从分页显示默认1开始,所以后端需要-1
set if (value == "1=1")
{ value = null;
//前端默认从分页显示默认1开始,所以后端需要-1 _conditions = value;
if (value == "1=1")
value = null;
_predicate = 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; RefAsync<int> totalCount = 0;
var query = _db.Queryable<TEntity>(); var query = _db.Queryable<TEntity>();
if (!filter.Predicate.IsNullOrEmpty()) if (!filter.Conditions.IsNullOrEmpty())
{ query = query.Where(filter.Conditions);
for (int i = 0; i < filter.PredicateValues.Length; i++)
{
filter.Predicate = filter.Predicate.Replace($"@{i}", filter.PredicateValues[i].ToString());
}
query = query.Where(filter.Predicate);
}
var list = await query var list = await query
.OrderByIF(!string.IsNullOrEmpty(filter.Sorting), filter.Sorting) .OrderByIF(!string.IsNullOrEmpty(filter.Sorting), filter.Sorting)

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

Loading…
Cancel
Save