BaseController公共类优化

master
xiaochanghai 1 year ago
parent b463e16052
commit d951036bad
  1. 130
      Tiobon.Core.Api/Controllers/BaseController.cs
  2. 16
      Tiobon.Core.Api/Controllers/BaseControllerHelpers.cs
  3. 113
      Tiobon.Core.Api/Controllers/Ghra_GradeController.cs
  4. 89
      Tiobon.Core.Api/Tiobon.Core.xml

@ -1,4 +1,6 @@
using Tiobon.Core.Model;
using System.Collections.Generic;
using System.Reflection;
using Tiobon.Core.Model;
namespace Tiobon.Core.Controllers
{
@ -15,6 +17,132 @@ namespace Tiobon.Core.Controllers
}
#endregion
#region 基础接口
#region 查询
/// <summary>
/// Ghra_Grade -- 根据条件查询数据
/// </summary>
/// <param name="filter">条件</param>
/// <returns></returns>
[HttpGet]
public async Task<ServiceResult<PageModel<TEntityDto>>> QueryByFilter([FromFilter] QueryFilter filter)
{
//var response = await _service.QueryFilterPage(filter);
var response = (await InvokeServiceAsync("QueryFilterPage", [filter])) as PageModel<TEntityDto>;
return new ServiceResult<PageModel<TEntityDto>>() { msg = "获取成功", success = true, response = response };
}
/// <summary>
/// Ghra_Grade -- 根据Id查询数据
/// </summary>
/// <param name="Id">主键ID</param>
/// <returns></returns>
[HttpGet("{Id}")]
public async Task<ServiceResult<object>> QueryById(long Id)
{
var entity = (await InvokeServiceAsync("QueryById", [Id]));
//var entity = ObjectConverter.ConvertToEntity<TEntityDto>(obj);
//var entity = await _service.QueryById(Id);
if (entity == null)
return ServiceResult<object>.OprateFailed("获取失败");
else
return new ServiceResult<object>() { msg = "获取成功", success = true, response = entity };
}
#endregion
#region 新增
/// <summary>
/// Ghra_Grade -- 新增数据
/// </summary>
/// <param name="insertModel"></param>
/// <returns></returns>
[HttpPost]
public async Task<ServiceResult<string>> Post([FromBody] TEditDto insertModel)
{
var data = ServiceResult<string>.OprateSuccess("获取成功", null);
var id = Convert.ToInt64(await InvokeServiceAsync("Add", [insertModel]));
data.success = id > 0;
if (data.success)
data.response = id.ObjToString();
return data;
}
#endregion
#region 更新
/// <summary>
/// Ghra_Grade -- 更新数据
/// </summary>
/// <param name="Id"></param>
/// <param name="editModel"></param>
/// <returns></returns>
[HttpPut("{Id}")]
public async Task<ServiceResult> Put(long Id, [FromBody] TEditDto editModel)
{
var data = ServiceResult.OprateSuccess("更新成功");
var id = Convert.ToInt64(await InvokeServiceAsync("Update", [editModel]));
if (!data.success)
data.msg = "更新失败";
return data;
}
#endregion
#region 删除
/// <summary>
/// Ghra_Grade -- 删除数据
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
[HttpDelete("{Id}")]
public async Task<ServiceResult> Delete(long Id)
{
var data = ServiceResult.OprateSuccess("删除成功");
var entity = await QueryById(Id);
if (entity == null)
return ServiceResult.OprateFailed("删除失败");
//entity.IsEnable = 0;
data.success = Convert.ToBoolean(await InvokeServiceAsync("Update", [entity]));
if (!data.success)
data.msg = "删除失败";
return data;
}
#endregion
#endregion
/// <summary>
/// 反射调用service方法
/// </summary>
/// <param name="methodName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
private object InvokeService(string methodName, object[] parameters)
{
return _service.GetType().GetMethod(methodName).Invoke(_service, parameters);
}
/// <summary>
/// 反射调用service方法
/// </summary>
/// <param name="methodName"></param>
/// <param name="types">为要调用重载的方法参数类型:new Type[] { typeof(SaveDataModel)</param>
/// <param name="parameters"></param>
/// <returns></returns>
private object InvokeService(string methodName, Type[] types, object[] parameters) => _service.GetType().GetMethod(methodName, types).Invoke(_service, parameters);
private async Task<object> InvokeServiceAsync(string methodName, object[] parameters)
{
var task = _service.GetType().InvokeMember(methodName, BindingFlags.InvokeMethod, null, _service, parameters) as Task;
if (task != null) await task;
var result = task?.GetType().GetProperty("Result")?.GetValue(task);
return result;
}
[NonAction]
public ServiceResult<T> Success<T>(T data, string msg = "成功")
{

@ -0,0 +1,16 @@
internal static class BaseControllerHelpers
{
public static TEditDto ConvertToEntity<TEditDto>(object obj) where TEditDto : new()
{
TEditDto entity = new TEditDto();
foreach (var property in typeof(TEditDto).GetProperties())
{
var value = obj.GetType().GetProperty(property.Name)?.GetValue(obj, null);
if (value != null)
{
property.SetValue(entity, Convert.ChangeType(value, property.PropertyType), null);
}
}
return entity;
}
}

@ -1,109 +1,14 @@
namespace Tiobon.Core.Api.Controllers
namespace Tiobon.Core.Api.Controllers;
/// <summary>
/// Ghra_Grade
/// </summary>
[Route("api/[controller]")]
[ApiController, GlobalActionFilter]
[Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_Ghra)]
public class Ghra_GradeController : BaseController<IGhra_GradeServices, Ghra_Grade, Ghra_GradeDto, InsertGhra_GradeInput, EditGhra_GradeInput>
{
/// <summary>
/// Ghra_Grade
/// </summary>
[Route("api/[controller]")]
[ApiController, GlobalActionFilter]
[Authorize(Permissions.Name), ApiExplorerSettings(GroupName = Grouping.GroupName_Ghra)]
public class Ghra_GradeController : BaseController<IGhra_GradeServices, Ghra_Grade, Ghra_GradeDto, InsertGhra_GradeInput, EditGhra_GradeInput>
{
public Ghra_GradeController(IGhra_GradeServices service) : base(service)
{
}
#region 基础接口
#region 查询
/// <summary>
/// Ghra_Grade -- 根据条件查询数据
/// </summary>
/// <param name="filter">条件</param>
/// <returns></returns>
[HttpGet]
public async Task<ServiceResult<PageModel<Ghra_GradeDto>>> Get([FromFilter] QueryFilter filter)
{
var response = await _service.QueryFilterPage(filter);
return new ServiceResult<PageModel<Ghra_GradeDto>>() { msg = "获取成功", success = true, response = response };
}
/// <summary>
/// Ghra_Grade -- 根据Id查询数据
/// </summary>
/// <param name="Id">主键ID</param>
/// <returns></returns>
[HttpGet("{Id}")]
public async Task<ServiceResult<Ghra_GradeDto>> Get(string Id)
{
var entity = await _service.QueryById(Id);
if (entity == null)
return ServiceResult<Ghra_GradeDto>.OprateFailed("获取失败");
else
return new ServiceResult<Ghra_GradeDto>() { msg = "获取成功", success = true, response = entity };
}
#endregion
#region 新增
/// <summary>
/// Ghra_Grade -- 新增数据
/// </summary>
/// <param name="insertModel"></param>
/// <returns></returns>
[HttpPost]
public async Task<ServiceResult<string>> Post([FromBody] InsertGhra_GradeInput insertModel)
{
var data = ServiceResult<string>.OprateSuccess("获取成功", null);
var id = await _service.Add(insertModel);
data.success = id > 0;
if (data.success)
data.response = id.ObjToString();
return data;
}
#endregion
#region 更新
/// <summary>
/// Ghra_Grade -- 更新数据
/// </summary>
/// <param name="Id"></param>
/// <param name="editModel"></param>
/// <returns></returns>
[HttpPut("{Id}")]
public async Task<ServiceResult> Put(long Id, [FromBody] EditGhra_GradeInput editModel)
{
var data = ServiceResult.OprateSuccess("更新成功");
data.success = await _service.Update(Id, editModel);
if (!data.success)
data.msg = "更新失败";
return data;
}
#endregion
#region 删除
/// <summary>
/// Ghra_Grade -- 删除数据
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
[HttpDelete("{Id}")]
public async Task<ServiceResult> Delete(long Id)
{
var data = ServiceResult.OprateSuccess("删除成功");
var entity = await _service.QueryById(Id);
if (entity == null)
return ServiceResult.OprateFailed("删除失败");
entity.IsEnable = 0;
data.success = await _service.Update(entity);
if (!data.success)
data.msg = "删除失败";
return data;
}
#endregion
#endregion
}
}

@ -9,6 +9,59 @@
</summary>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.QueryByFilter(Tiobon.Core.Common.QueryFilter)">
<summary>
Ghra_Grade -- 根据条件查询数据
</summary>
<param name="filter">条件</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.QueryById(System.Int64)">
<summary>
Ghra_Grade -- 根据Id查询数据
</summary>
<param name="Id">主键ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.Post(`4)">
<summary>
Ghra_Grade -- 新增数据
</summary>
<param name="insertModel"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.Put(System.Int64,`4)">
<summary>
Ghra_Grade -- 更新数据
</summary>
<param name="Id"></param>
<param name="editModel"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.Delete(System.Int64)">
<summary>
Ghra_Grade -- 删除数据
</summary>
<param name="Id"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.InvokeService(System.String,System.Object[])">
<summary>
反射调用service方法
</summary>
<param name="methodName"></param>
<param name="parameters"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Controllers.BaseController`5.InvokeService(System.String,System.Type[],System.Object[])">
<summary>
反射调用service方法
</summary>
<param name="methodName"></param>
<param name="types">为要调用重载的方法参数类型:new Type[] { typeof(SaveDataModel)</param>
<param name="parameters"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Controllers.TiobonController">
<summary>
博客管理
@ -1226,42 +1279,6 @@
Ghra_Grade
</summary>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Get(Tiobon.Core.Common.QueryFilter)">
<summary>
Ghra_Grade -- 根据条件查询数据
</summary>
<param name="filter">条件</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Get(System.String)">
<summary>
Ghra_Grade -- 根据Id查询数据
</summary>
<param name="Id">主键ID</param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Post(Tiobon.Core.Model.Models.InsertGhra_GradeInput)">
<summary>
Ghra_Grade -- 新增数据
</summary>
<param name="insertModel"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Put(System.Int64,Tiobon.Core.Model.Models.EditGhra_GradeInput)">
<summary>
Ghra_Grade -- 更新数据
</summary>
<param name="Id"></param>
<param name="editModel"></param>
<returns></returns>
</member>
<member name="M:Tiobon.Core.Api.Controllers.Ghra_GradeController.Delete(System.Int64)">
<summary>
Ghra_Grade -- 删除数据
</summary>
<param name="Id"></param>
<returns></returns>
</member>
<member name="T:Tiobon.Core.Api.Controllers.NacosController">
<summary>
服务管理

Loading…
Cancel
Save