|
|
@ -1,15 +1,21 @@ |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Reflection; |
|
|
|
using System.Reflection; |
|
|
|
|
|
|
|
using Tiobon.Core.Model; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace Tiobon.Core.Controllers |
|
|
|
namespace Tiobon.Core.Controllers; |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
|
|
|
/// 增删改查基础服务 |
|
|
|
|
|
|
|
/// </summary> |
|
|
|
|
|
|
|
/// <typeparam name="IServiceBase"></typeparam> |
|
|
|
|
|
|
|
/// <typeparam name="TEntity"></typeparam> |
|
|
|
|
|
|
|
/// <typeparam name="TEntityDto"></typeparam> |
|
|
|
|
|
|
|
/// <typeparam name="TInsertDto"></typeparam> |
|
|
|
|
|
|
|
/// <typeparam name="TEditDto"></typeparam> |
|
|
|
public class BaseController<IServiceBase, TEntity, TEntityDto, TInsertDto, TEditDto> : Controller |
|
|
|
public class BaseController<IServiceBase, TEntity, TEntityDto, TInsertDto, TEditDto> : Controller |
|
|
|
{ |
|
|
|
{ |
|
|
|
#region 初始化 |
|
|
|
#region 初始化 |
|
|
|
protected IServiceBase _service; |
|
|
|
protected IServiceBase _service; |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// |
|
|
|
/// 初始化 (注入) |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
|
public BaseController(IServiceBase service) |
|
|
|
public BaseController(IServiceBase service) |
|
|
|
{ |
|
|
|
{ |
|
|
@ -27,10 +33,10 @@ namespace Tiobon.Core.Controllers |
|
|
|
/// <param name="filter">条件</param> |
|
|
|
/// <param name="filter">条件</param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
[HttpGet] |
|
|
|
[HttpGet] |
|
|
|
public async Task<ServiceResult<PageModel<TEntityDto>>> QueryByFilter([FromFilter] QueryFilter filter) |
|
|
|
public async Task<ServicePageResult<TEntityDto>> QueryByFilter([FromFilter] QueryFilter filter) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var response = (await InvokeServiceAsync("QueryFilterPage", [filter])) as PageModel<TEntityDto>; |
|
|
|
var data = (await InvokeServiceAsync("QueryFilterPage", [filter])) as ServicePageResult<TEntityDto>; |
|
|
|
return new ServiceResult<PageModel<TEntityDto>>() { msg = "获取成功", success = true, response = response }; |
|
|
|
return data; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
@ -41,7 +47,7 @@ namespace Tiobon.Core.Controllers |
|
|
|
[HttpGet("{Id}")] |
|
|
|
[HttpGet("{Id}")] |
|
|
|
public async Task<ServiceResult<object>> QueryById(long Id) |
|
|
|
public async Task<ServiceResult<object>> QueryById(long Id) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var entity = (await InvokeServiceAsync("QueryById", [Id])); |
|
|
|
var entity = await InvokeServiceAsync("QueryById", [Id]); |
|
|
|
if (entity == null) |
|
|
|
if (entity == null) |
|
|
|
return Failed<object>("获取失败"); |
|
|
|
return Failed<object>("获取失败"); |
|
|
|
else |
|
|
|
else |
|
|
@ -56,7 +62,7 @@ namespace Tiobon.Core.Controllers |
|
|
|
/// <param name="insertModel"></param> |
|
|
|
/// <param name="insertModel"></param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
[HttpPost] |
|
|
|
[HttpPost] |
|
|
|
public async Task<ServiceResult<string>> Post([FromBody] TEditDto insertModel) |
|
|
|
public async Task<ServiceResult<string>> Insert([FromBody] TInsertDto insertModel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var data = Success<string>(null, "新增成功"); |
|
|
|
var data = Success<string>(null, "新增成功"); |
|
|
|
var id = Convert.ToInt64(await InvokeServiceAsync("Add", [insertModel])); |
|
|
|
var id = Convert.ToInt64(await InvokeServiceAsync("Add", [insertModel])); |
|
|
@ -64,7 +70,7 @@ namespace Tiobon.Core.Controllers |
|
|
|
if (data.success) |
|
|
|
if (data.success) |
|
|
|
data.response = id.ObjToString(); |
|
|
|
data.response = id.ObjToString(); |
|
|
|
else |
|
|
|
else |
|
|
|
data.msg = "新增失败"; |
|
|
|
return Failed<string>("新增失败"); |
|
|
|
|
|
|
|
|
|
|
|
return data; |
|
|
|
return data; |
|
|
|
} |
|
|
|
} |
|
|
@ -74,17 +80,16 @@ namespace Tiobon.Core.Controllers |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// Ghra_Grade -- 更新数据 |
|
|
|
/// Ghra_Grade -- 更新数据 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
|
/// <param name="Id"></param> |
|
|
|
/// <param name="Id">主键ID</param> |
|
|
|
/// <param name="editModel"></param> |
|
|
|
/// <param name="editModel"></param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
[HttpPut("{Id}")] |
|
|
|
[HttpPut("{Id}")] |
|
|
|
public async Task<ServiceResult> Put(long Id, [FromBody] TEditDto editModel) |
|
|
|
public async Task<ServiceResult> Put(long Id, [FromBody] TEditDto editModel) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var data = Success("更新成功"); |
|
|
|
var data = Success("更新成功"); |
|
|
|
var id = Convert.ToInt64(await InvokeServiceAsync("Update", [Id, editModel])); |
|
|
|
var flag = Convert.ToBoolean(await InvokeServiceAsync("Update", [Id, editModel])); |
|
|
|
if (!data.success) |
|
|
|
if (!flag) |
|
|
|
data.msg = "更新失败"; |
|
|
|
return Failed("更新失败"); |
|
|
|
|
|
|
|
|
|
|
|
return data; |
|
|
|
return data; |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion |
|
|
|
#endregion |
|
|
@ -93,20 +98,18 @@ namespace Tiobon.Core.Controllers |
|
|
|
/// <summary> |
|
|
|
/// <summary> |
|
|
|
/// Ghra_Grade -- 删除数据 |
|
|
|
/// Ghra_Grade -- 删除数据 |
|
|
|
/// </summary> |
|
|
|
/// </summary> |
|
|
|
/// <param name="Id"></param> |
|
|
|
/// <param name="Id">主键ID</param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
[HttpDelete("{Id}")] |
|
|
|
[HttpDelete("{Id}")] |
|
|
|
public async Task<ServiceResult> Delete(long Id) |
|
|
|
public async Task<ServiceResult> Delete(long Id) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var data = Success("删除成功"); |
|
|
|
var data = Success("删除成功"); |
|
|
|
var entity = await QueryById(Id); |
|
|
|
var isExist = Convert.ToBoolean(await InvokeServiceAsync("AnyAsync", [Id])); |
|
|
|
if (entity == null) |
|
|
|
if (!isExist) |
|
|
|
return Failed("删除失败"); |
|
|
|
return Failed("删除失败"); |
|
|
|
|
|
|
|
data.success = Convert.ToBoolean(await InvokeServiceAsync("DeleteById1", [Id])); |
|
|
|
//entity.IsEnable = 0; |
|
|
|
|
|
|
|
data.success = Convert.ToBoolean(await InvokeServiceAsync("Update", [entity])); |
|
|
|
|
|
|
|
if (!data.success) |
|
|
|
if (!data.success) |
|
|
|
data.msg = "删除失败"; |
|
|
|
return Failed("删除失败"); |
|
|
|
return data; |
|
|
|
return data; |
|
|
|
} |
|
|
|
} |
|
|
|
#endregion |
|
|
|
#endregion |
|
|
@ -119,6 +122,7 @@ namespace Tiobon.Core.Controllers |
|
|
|
/// <param name="methodName"></param> |
|
|
|
/// <param name="methodName"></param> |
|
|
|
/// <param name="parameters"></param> |
|
|
|
/// <param name="parameters"></param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
[NonAction] |
|
|
|
private object InvokeService(string methodName, object[] parameters) |
|
|
|
private object InvokeService(string methodName, object[] parameters) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return _service.GetType().GetMethod(methodName).Invoke(_service, parameters); |
|
|
|
return _service.GetType().GetMethod(methodName).Invoke(_service, parameters); |
|
|
@ -130,9 +134,11 @@ namespace Tiobon.Core.Controllers |
|
|
|
/// <param name="types">为要调用重载的方法参数类型:new Type[] { typeof(SaveDataModel)</param> |
|
|
|
/// <param name="types">为要调用重载的方法参数类型:new Type[] { typeof(SaveDataModel)</param> |
|
|
|
/// <param name="parameters"></param> |
|
|
|
/// <param name="parameters"></param> |
|
|
|
/// <returns></returns> |
|
|
|
/// <returns></returns> |
|
|
|
|
|
|
|
[NonAction] |
|
|
|
private object InvokeService(string methodName, Type[] types, object[] parameters) => _service.GetType().GetMethod(methodName, types).Invoke(_service, parameters); |
|
|
|
private object InvokeService(string methodName, Type[] types, object[] parameters) => _service.GetType().GetMethod(methodName, types).Invoke(_service, parameters); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[NonAction] |
|
|
|
private async Task<object> InvokeServiceAsync(string methodName, object[] parameters) |
|
|
|
private async Task<object> InvokeServiceAsync(string methodName, object[] parameters) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var task = _service.GetType().InvokeMember(methodName, BindingFlags.InvokeMethod, null, _service, parameters) as Task; |
|
|
|
var task = _service.GetType().InvokeMember(methodName, BindingFlags.InvokeMethod, null, _service, parameters) as Task; |
|
|
@ -187,4 +193,3 @@ namespace Tiobon.Core.Controllers |
|
|
|
return new ServiceResult<PageModel<T>>() { success = true, msg = msg, response = pageModel }; |
|
|
|
return new ServiceResult<PageModel<T>>() { success = true, msg = msg, response = pageModel }; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|