From 9e7797362c4dd81d6dfdb0a1b39433aaa4282ab5 Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Tue, 16 Apr 2024 14:33:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tiobon.Core.Api/Controllers/BaseController.cs | 377 +++++++++--------- Tiobon.Core.Api/Tiobon.Core.Model.xml | 20 +- Tiobon.Core.Api/Tiobon.Core.xml | 18 +- .../ServiceExtensions/AuthorizationSetup.cs | 2 +- Tiobon.Core.IServices/BASE/IBaseServices.cs | 6 +- Tiobon.Core.Model/ServiceResult.cs | 6 +- Tiobon.Core.Repository/BASE/BaseRepository.cs | 4 +- .../BASE/IBaseRepository.cs | 2 +- Tiobon.Core.Services/BASE/BaseServices.cs | 21 +- 9 files changed, 237 insertions(+), 219 deletions(-) diff --git a/Tiobon.Core.Api/Controllers/BaseController.cs b/Tiobon.Core.Api/Controllers/BaseController.cs index d29771af..123efede 100644 --- a/Tiobon.Core.Api/Controllers/BaseController.cs +++ b/Tiobon.Core.Api/Controllers/BaseController.cs @@ -1,190 +1,195 @@ -using System.Collections.Generic; -using System.Reflection; -using Tiobon.Core.Model; - -namespace Tiobon.Core.Controllers +using System.Reflection; + +namespace Tiobon.Core.Controllers; + +/// +/// 增删改查基础服务 +/// +/// +/// +/// +/// +/// +public class BaseController : Controller { - public class BaseController : Controller + #region 初始化 + protected IServiceBase _service; + /// + /// 初始化 (注入) + /// + public BaseController(IServiceBase service) + { + _service = service; + } + #endregion + + + #region 基础接口 + + #region 查询 + /// + /// Ghra_Grade -- 根据条件查询数据 + /// + /// 条件 + /// + [HttpGet] + public async Task> QueryByFilter([FromFilter] QueryFilter filter) + { + var data = (await InvokeServiceAsync("QueryFilterPage", [filter])) as ServicePageResult; + return data; + } + + /// + /// Ghra_Grade -- 根据Id查询数据 + /// + /// 主键ID + /// + [HttpGet("{Id}")] + public async Task> QueryById(long Id) + { + var entity = await InvokeServiceAsync("QueryById", [Id]); + if (entity == null) + return Failed("获取失败"); + else + return Success(entity, "获取成功"); + } + #endregion + + #region 新增 + /// + /// Ghra_Grade -- 新增数据 + /// + /// + /// + [HttpPost] + public async Task> Insert([FromBody] TInsertDto insertModel) + { + var data = Success(null, "新增成功"); + var id = Convert.ToInt64(await InvokeServiceAsync("Add", [insertModel])); + data.success = id > 0; + if (data.success) + data.response = id.ObjToString(); + else + return Failed("新增失败"); + + return data; + } + #endregion + + #region 更新 + /// + /// Ghra_Grade -- 更新数据 + /// + /// 主键ID + /// + /// + [HttpPut("{Id}")] + public async Task Put(long Id, [FromBody] TEditDto editModel) + { + var data = Success("更新成功"); + var flag = Convert.ToBoolean(await InvokeServiceAsync("Update", [Id, editModel])); + if (!flag) + return Failed("更新失败"); + return data; + } + #endregion + + #region 删除 + /// + /// Ghra_Grade -- 删除数据 + /// + /// 主键ID + /// + [HttpDelete("{Id}")] + public async Task Delete(long Id) + { + var data = Success("删除成功"); + var isExist = Convert.ToBoolean(await InvokeServiceAsync("AnyAsync", [Id])); + if (!isExist) + return Failed("删除失败"); + data.success = Convert.ToBoolean(await InvokeServiceAsync("DeleteById1", [Id])); + if (!data.success) + return Failed("删除失败"); + return data; + } + #endregion + + #endregion + + /// + /// 反射调用service方法 + /// + /// + /// + /// + [NonAction] + private object InvokeService(string methodName, object[] parameters) + { + return _service.GetType().GetMethod(methodName).Invoke(_service, parameters); + } + /// + /// 反射调用service方法 + /// + /// + /// 为要调用重载的方法参数类型:new Type[] { typeof(SaveDataModel) + /// + /// + [NonAction] + private object InvokeService(string methodName, Type[] types, object[] parameters) => _service.GetType().GetMethod(methodName, types).Invoke(_service, parameters); + + + [NonAction] + private async Task 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 Success(T data, string msg = "成功") + { + return new ServiceResult() { success = true, msg = msg, response = data, }; + } + + // [NonAction] + //public ServiceResult Success(T data, string msg = "成功",bool success = true) + //{ + // return new ServiceResult() + // { + // success = success, + // msg = msg, + // response = data, + // }; + //} + [NonAction] + public ServiceResult Success(string msg = "成功") + { + return new ServiceResult() { success = true, msg = msg, response = null, }; + } + + [NonAction] + public ServiceResult Failed(string msg = "失败", int status = 500) + { + return new ServiceResult() { success = false, status = status, msg = msg, response = null, }; + } + + [NonAction] + public ServiceResult Failed(string msg = "失败", int status = 500) + { + return new ServiceResult() { success = false, status = status, msg = msg, response = default, }; + } + + [NonAction] + public ServiceResult> SuccessPage(int page, int dataCount, int pageSize, List data, int pageCount, string msg = "获取成功") + { + return new ServiceResult>() { success = true, msg = msg, response = new PageModel(page, dataCount, pageSize, data) }; + } + + [NonAction] + public ServiceResult> SuccessPage(PageModel pageModel, string msg = "获取成功") { - #region 初始化 - protected IServiceBase _service; - /// - /// - /// - public BaseController(IServiceBase service) - { - _service = service; - } - #endregion - - - #region 基础接口 - - #region 查询 - /// - /// Ghra_Grade -- 根据条件查询数据 - /// - /// 条件 - /// - [HttpGet] - public async Task>> QueryByFilter([FromFilter] QueryFilter filter) - { - var response = (await InvokeServiceAsync("QueryFilterPage", [filter])) as PageModel; - return new ServiceResult>() { msg = "获取成功", success = true, response = response }; - } - - /// - /// Ghra_Grade -- 根据Id查询数据 - /// - /// 主键ID - /// - [HttpGet("{Id}")] - public async Task> QueryById(long Id) - { - var entity = (await InvokeServiceAsync("QueryById", [Id])); - if (entity == null) - return Failed("获取失败"); - else - return Success(entity, "获取成功"); - } - #endregion - - #region 新增 - /// - /// Ghra_Grade -- 新增数据 - /// - /// - /// - [HttpPost] - public async Task> Post([FromBody] TEditDto insertModel) - { - var data = Success(null, "新增成功"); - var id = Convert.ToInt64(await InvokeServiceAsync("Add", [insertModel])); - data.success = id > 0; - if (data.success) - data.response = id.ObjToString(); - else - data.msg = "新增失败"; - - return data; - } - #endregion - - #region 更新 - /// - /// Ghra_Grade -- 更新数据 - /// - /// - /// - /// - [HttpPut("{Id}")] - public async Task Put(long Id, [FromBody] TEditDto editModel) - { - var data = Success("更新成功"); - var id = Convert.ToInt64(await InvokeServiceAsync("Update", [Id, editModel])); - if (!data.success) - data.msg = "更新失败"; - - return data; - } - #endregion - - #region 删除 - /// - /// Ghra_Grade -- 删除数据 - /// - /// - /// - [HttpDelete("{Id}")] - public async Task Delete(long Id) - { - var data = Success("删除成功"); - var entity = await QueryById(Id); - if (entity == null) - return Failed("删除失败"); - - //entity.IsEnable = 0; - data.success = Convert.ToBoolean(await InvokeServiceAsync("Update", [entity])); - if (!data.success) - data.msg = "删除失败"; - return data; - } - #endregion - - #endregion - - /// - /// 反射调用service方法 - /// - /// - /// - /// - private object InvokeService(string methodName, object[] parameters) - { - return _service.GetType().GetMethod(methodName).Invoke(_service, parameters); - } - /// - /// 反射调用service方法 - /// - /// - /// 为要调用重载的方法参数类型:new Type[] { typeof(SaveDataModel) - /// - /// - private object InvokeService(string methodName, Type[] types, object[] parameters) => _service.GetType().GetMethod(methodName, types).Invoke(_service, parameters); - - - private async Task 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 Success(T data, string msg = "成功") - { - return new ServiceResult() { success = true, msg = msg, response = data, }; - } - - // [NonAction] - //public ServiceResult Success(T data, string msg = "成功",bool success = true) - //{ - // return new ServiceResult() - // { - // success = success, - // msg = msg, - // response = data, - // }; - //} - [NonAction] - public ServiceResult Success(string msg = "成功") - { - return new ServiceResult() { success = true, msg = msg, response = null, }; - } - - [NonAction] - public ServiceResult Failed(string msg = "失败", int status = 500) - { - return new ServiceResult() { success = false, status = status, msg = msg, response = null, }; - } - - [NonAction] - public ServiceResult Failed(string msg = "失败", int status = 500) - { - return new ServiceResult() { success = false, status = status, msg = msg, response = default, }; - } - - [NonAction] - public ServiceResult> SuccessPage(int page, int dataCount, int pageSize, List data, int pageCount, string msg = "获取成功") - { - return new ServiceResult>() { success = true, msg = msg, response = new PageModel(page, dataCount, pageSize, data) }; - } - - [NonAction] - public ServiceResult> SuccessPage(PageModel pageModel, string msg = "获取成功") - { - return new ServiceResult>() { success = true, msg = msg, response = pageModel }; - } + return new ServiceResult>() { success = true, msg = msg, response = pageModel }; } } \ No newline at end of file diff --git a/Tiobon.Core.Api/Tiobon.Core.Model.xml b/Tiobon.Core.Api/Tiobon.Core.Model.xml index f2915d11..658cd595 100644 --- a/Tiobon.Core.Api/Tiobon.Core.Model.xml +++ b/Tiobon.Core.Api/Tiobon.Core.Model.xml @@ -2232,47 +2232,47 @@ - + - 通用分页信息类 + 服务层分页响应实体(泛型) - + 状态码 - + 操作是否成功 - + 返回信息 - + 当前页标 - + 总页数 - + 数据总数 - + 每页大小 - + 返回数据 diff --git a/Tiobon.Core.Api/Tiobon.Core.xml b/Tiobon.Core.Api/Tiobon.Core.xml index cb460096..628d91ba 100644 --- a/Tiobon.Core.Api/Tiobon.Core.xml +++ b/Tiobon.Core.Api/Tiobon.Core.xml @@ -4,9 +4,19 @@ Tiobon.Core.Api + + + 增删改查基础服务 + + + + + + + - + 初始化 (注入) @@ -23,7 +33,7 @@ 主键ID - + Ghra_Grade -- 新增数据 @@ -34,7 +44,7 @@ Ghra_Grade -- 更新数据 - + 主键ID @@ -42,7 +52,7 @@ Ghra_Grade -- 删除数据 - + 主键ID diff --git a/Tiobon.Core.Extensions/ServiceExtensions/AuthorizationSetup.cs b/Tiobon.Core.Extensions/ServiceExtensions/AuthorizationSetup.cs index cf1d4f1c..dc5a77ae 100644 --- a/Tiobon.Core.Extensions/ServiceExtensions/AuthorizationSetup.cs +++ b/Tiobon.Core.Extensions/ServiceExtensions/AuthorizationSetup.cs @@ -61,7 +61,7 @@ namespace Tiobon.Core.Extensions Issuer,//发行人 Audience,//听众 signingCredentials,//签名凭据 - expiration: TimeSpan.FromSeconds(60 * 60)//接口的过期时间 + expiration: TimeSpan.FromSeconds(240 * 60)//接口的过期时间 ); #endregion // 3、自定义复杂的策略授权 diff --git a/Tiobon.Core.IServices/BASE/IBaseServices.cs b/Tiobon.Core.IServices/BASE/IBaseServices.cs index 4e087f80..613eb556 100644 --- a/Tiobon.Core.IServices/BASE/IBaseServices.cs +++ b/Tiobon.Core.IServices/BASE/IBaseServices.cs @@ -21,7 +21,7 @@ namespace Tiobon.Core.IServices.BASE Task DeleteById(object id); Task Delete(TEntity model); - + Task DeleteByIds(object[] ids); Task Update(TEntity model); @@ -52,7 +52,6 @@ namespace Tiobon.Core.IServices.BASE Task> QueryPage(Expression> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFields = null); - Task> QueryFilterPage([FromFilter] QueryFilter filter); Task> QueryMuch( Expression> joinExpression, @@ -97,6 +96,7 @@ namespace Tiobon.Core.IServices.BASE Task> Add(List listEntity); Task DeleteById(object id); + Task DeleteById1(object id); Task Delete(TEntity model); @@ -130,7 +130,7 @@ namespace Tiobon.Core.IServices.BASE Task> QueryPage(Expression> whereExpression, int pageIndex = 1, int pageSize = 20, string orderByFields = null); - Task> QueryFilterPage([FromFilter] QueryFilter filter); + Task> QueryFilterPage([FromFilter] QueryFilter filter); Task> QueryMuch( Expression> joinExpression, diff --git a/Tiobon.Core.Model/ServiceResult.cs b/Tiobon.Core.Model/ServiceResult.cs index bf87cd79..dae711d2 100644 --- a/Tiobon.Core.Model/ServiceResult.cs +++ b/Tiobon.Core.Model/ServiceResult.cs @@ -138,7 +138,7 @@ public class ServiceResult /// /// 服务层分页响应实体(泛型) /// -public class ServicPageeResult +public class ServicePageResult { /// /// 状态码 @@ -173,9 +173,9 @@ public class ServicPageeResult /// public List Data { get; set; } - public ServicPageeResult() { } + public ServicePageResult() { } - public ServicPageeResult(int page, int totalCount, int pageSize, List data) + public ServicePageResult(int page, int totalCount, int pageSize, List data) { this.Page = page; this.TotalCount = totalCount; diff --git a/Tiobon.Core.Repository/BASE/BaseRepository.cs b/Tiobon.Core.Repository/BASE/BaseRepository.cs index 89d5f6ce..c6b8db3c 100644 --- a/Tiobon.Core.Repository/BASE/BaseRepository.cs +++ b/Tiobon.Core.Repository/BASE/BaseRepository.cs @@ -451,7 +451,7 @@ namespace Tiobon.Core.Repository.Base /// 页大小 /// 排序字段,如name asc,age desc /// - public async Task> QueryFilterPage([FromFilter] QueryFilter filter) + public async Task> QueryFilterPage([FromFilter] QueryFilter filter) { RefAsync totalCount = 0; var query = _db.Queryable(); @@ -463,7 +463,7 @@ namespace Tiobon.Core.Repository.Base .OrderByIF(!string.IsNullOrEmpty(filter.Sorting), filter.Sorting) .ToPageListAsync(filter.PageIndex, filter.PageSize, totalCount); - return new PageModel(filter.PageIndex, totalCount, filter.PageSize, list); + return new ServicePageResult(filter.PageIndex, totalCount, filter.PageSize, list); } diff --git a/Tiobon.Core.Repository/BASE/IBaseRepository.cs b/Tiobon.Core.Repository/BASE/IBaseRepository.cs index d1126c74..66e9d0ab 100644 --- a/Tiobon.Core.Repository/BASE/IBaseRepository.cs +++ b/Tiobon.Core.Repository/BASE/IBaseRepository.cs @@ -169,7 +169,7 @@ namespace Tiobon.Core.IRepository.Base /// /// /// - Task> QueryFilterPage([FromFilter] QueryFilter filter); + Task> QueryFilterPage([FromFilter] QueryFilter filter); /// /// 三表联查 diff --git a/Tiobon.Core.Services/BASE/BaseServices.cs b/Tiobon.Core.Services/BASE/BaseServices.cs index 103c195f..0890a64b 100644 --- a/Tiobon.Core.Services/BASE/BaseServices.cs +++ b/Tiobon.Core.Services/BASE/BaseServices.cs @@ -3,6 +3,7 @@ using System.Linq.Expressions; using System.Reflection; using AgileObjects.AgileMapper; using Microsoft.AspNetCore.Http; +using OfficeOpenXml.FormulaParsing.Excel.Functions.Math; using SqlSugar; using Tiobon.Core.Common; using Tiobon.Core.Common.Extensions; @@ -294,12 +295,6 @@ namespace Tiobon.Core.Services.BASE { return await BaseDal.QueryPage(whereExpression, pageIndex, pageSize, orderByFileds); } - - public async Task> QueryFilterPage([FromFilter] QueryFilter filter) - { - return await BaseDal.QueryFilterPage(filter); - } - public async Task> QueryMuch(Expression> joinExpression, Expression> selectExpression, Expression> whereLambda = null) where T : class, new() { return await BaseDal.QueryMuch(joinExpression, selectExpression, whereLambda); @@ -409,7 +404,7 @@ namespace Tiobon.Core.Services.BASE /// /// 写入实体数据 /// - /// 博文实体类 + /// 实体类 /// public async Task Add(TInsertDto entity) { @@ -530,6 +525,14 @@ namespace Tiobon.Core.Services.BASE return await BaseDal.DeleteById(id); } + public async Task DeleteById1(object id) + { + var entity = await BaseDal.QueryById(id); + BasePoco ent = entity as BasePoco; + ent.IsEnable = 0; + return await BaseDal.Update(entity); + } + /// /// 删除指定ID集合的数据(批量删除) /// @@ -698,11 +701,11 @@ namespace Tiobon.Core.Services.BASE return await BaseDal.QueryPage(whereExpression, pageIndex, pageSize, orderByFileds); } - public async Task> QueryFilterPage([FromFilter] QueryFilter filter) + public async Task> QueryFilterPage([FromFilter] QueryFilter filter) { var data = await BaseDal.QueryFilterPage(filter); - return new PageModel(filter.PageIndex, data.dataCount, filter.PageSize, Mapper.Map(data.data).ToANew>()); + return new ServicePageResult(filter.PageIndex, data.TotalCount, filter.PageSize, Mapper.Map(data.Data).ToANew>()); }