From 8eda2cd8149a19d0431f028acd3dfb8aebd56e55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sun, 19 Feb 2023 11:34:15 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=9F=BA=E7=A1=80=E8=AE=BE?= =?UTF-8?q?=E6=96=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AspNetCore/Builder/ErrorHandExtensions.cs | 10 +- .../Repositories/SqlsugarRepository.cs | 6 +- .../IPagedAndSortedResultRequestDto.cs | 5 +- .../Dtos/PagedAndSortedResultRequestDto.cs | 4 +- .../Repositories/IRepository.cs | 3 +- .../Services/ReadOnlyAppService.cs | 98 +++++-------------- .../ApplicationSwaggerDoc.xml | 7 ++ .../Identity/DeptService.cs | 38 +++---- .../Yi.RBAC.Domain/Identity/AccountManager.cs | 15 ++- 9 files changed, 75 insertions(+), 111 deletions(-) diff --git a/Yi.Framework.Net6/src/framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/ErrorHandExtensions.cs b/Yi.Framework.Net6/src/framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/ErrorHandExtensions.cs index 50f0fbc9..4a4d8b93 100644 --- a/Yi.Framework.Net6/src/framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/ErrorHandExtensions.cs +++ b/Yi.Framework.Net6/src/framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/ErrorHandExtensions.cs @@ -12,8 +12,9 @@ using Yi.Framework.Core.Exceptions; namespace Microsoft.AspNetCore.Builder { - internal class ExceptionModle + internal class ExceptionModle { + public int Code { get; set; } public string? Message { get; set; } public string? Details { get; set; } } @@ -36,10 +37,11 @@ namespace Microsoft.AspNetCore.Builder catch (BusinessException businessEx) { context.Response.ContentType = "application/json;charset=utf-8"; - context.Response.StatusCode = businessEx.Code.GetHashCode(); + //context.Response.StatusCode = businessEx.Code.GetHashCode(); var result = new ExceptionModle { + Code = businessEx.Code.GetHashCode(), Message = businessEx.Message, Details = businessEx.Details, }; @@ -57,10 +59,11 @@ namespace Microsoft.AspNetCore.Builder //系统错误,记录日志 _logger.LogError(ex, $"授权失败:{ex.Message}"); //await _errorHandle.Invoer(context, ex); - context.Response.StatusCode =(int)ex.Code; + context.Response.StatusCode = (int)ex.Code; //系统错误,需要记录 var result = new ExceptionModle { + Code = ex.Code.GetHashCode(), Message = ex.Message, Details = "授权失败", }; @@ -81,6 +84,7 @@ namespace Microsoft.AspNetCore.Builder //系统错误,需要记录 var result = new ExceptionModle { + Code = 500, Message = ex.Message, Details = "系统错误", }; diff --git a/Yi.Framework.Net6/src/framework/Yi.Framework.Core.Sqlsugar/Repositories/SqlsugarRepository.cs b/Yi.Framework.Net6/src/framework/Yi.Framework.Core.Sqlsugar/Repositories/SqlsugarRepository.cs index 0eb51e8c..d6043e94 100644 --- a/Yi.Framework.Net6/src/framework/Yi.Framework.Core.Sqlsugar/Repositories/SqlsugarRepository.cs +++ b/Yi.Framework.Net6/src/framework/Yi.Framework.Core.Sqlsugar/Repositories/SqlsugarRepository.cs @@ -43,11 +43,7 @@ namespace Yi.Framework.Core.Sqlsugar.Repositories { return await _DbQueryable.Where(whereExpression).OrderByIF(orderBy is not null, orderBy + " " + orderByType.ToString().ToLower()).ToPageListAsync(page.PageNum, page.PageSize); } - public async Task> GetPageListAsync(List whereExpression, IPagedAndSortedResultRequestDto page, string? orderBy, OrderByEnum orderByType = OrderByEnum.Asc) - { - return await _DbQueryable.Where(whereExpression).OrderByIF(orderBy is not null, orderBy + " " + orderByType.ToString().ToLower()).ToPageListAsync(page.PageNum, page.PageSize); - } - + public async Task UpdateIgnoreNullAsync(T updateObj) { diff --git a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/Abstract/IPagedAndSortedResultRequestDto.cs b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/Abstract/IPagedAndSortedResultRequestDto.cs index 2f0c8026..8f55de87 100644 --- a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/Abstract/IPagedAndSortedResultRequestDto.cs +++ b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/Abstract/IPagedAndSortedResultRequestDto.cs @@ -1,5 +1,4 @@ -using SqlSugar; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -15,7 +14,5 @@ namespace Yi.Framework.Ddd.Dtos string? SortBy { get; set; } OrderByEnum SortType { get; set; } - List Conditions { get; set; } } - } diff --git a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/PagedAndSortedResultRequestDto.cs b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/PagedAndSortedResultRequestDto.cs index 9cf2d30c..cde6606f 100644 --- a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/PagedAndSortedResultRequestDto.cs +++ b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Dtos/PagedAndSortedResultRequestDto.cs @@ -1,5 +1,4 @@ -using SqlSugar; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -14,6 +13,5 @@ namespace Yi.Framework.Ddd.Dtos public int PageSize { get; set; } = int.MaxValue; public string? SortBy { get; set; } public OrderByEnum SortType { get; set; } = OrderByEnum.Desc; - public List Conditions { get; set; } } } diff --git a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Repositories/IRepository.cs b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Repositories/IRepository.cs index 8cfd463d..b9605f86 100644 --- a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Repositories/IRepository.cs +++ b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Repositories/IRepository.cs @@ -32,8 +32,7 @@ namespace Yi.Framework.Ddd.Repositories Task> GetPageListAsync(Expression> whereExpression, IPagedAndSortedResultRequestDto page); Task> GetPageListAsync(Expression> whereExpression, IPagedAndSortedResultRequestDto page, Expression>? orderByExpression = null, OrderByEnum orderByType = OrderByEnum.Asc); Task> GetPageListAsync(Expression> whereExpression, IPagedAndSortedResultRequestDto page, string? orderBy, OrderByEnum orderByType = OrderByEnum.Asc); - Task> GetPageListAsync(List whereExpression, IPagedAndSortedResultRequestDto page, string? orderBy, OrderByEnum orderByType = OrderByEnum.Asc); - + //插入 Task InsertAsync(T insertObj); diff --git a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Services/ReadOnlyAppService.cs b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Services/ReadOnlyAppService.cs index 41e0e75e..5fac060a 100644 --- a/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Services/ReadOnlyAppService.cs +++ b/Yi.Framework.Net6/src/framework/Yi.Framework.Ddd/Services/ReadOnlyAppService.cs @@ -91,86 +91,36 @@ where TEntityDto : IEntityDto var entityDtos = new List(); bool isPageList = true; - //这里还可以追加如果是审计日志,继续拼接条件即可 - if (input is IPageTimeResultRequestDto timeInput) - { - if (timeInput.StartTime is not null) - { - timeInput.EndTime = timeInput.EndTime ?? DateTime.Now; - } - } - if (input is IPagedAndSortedResultRequestDto sortInput) - { - var dependsOnbuild = sortInput.GetType().GetCustomAttributes(typeof(QueryParameterAttribute), false).FirstOrDefault() as QueryParameterAttribute; - if (dependsOnbuild is null) + //if (totalCount > 0) + //{ + + //这里还可以追加如果是审计日志,继续拼接条件即可 + if (input is IPageTimeResultRequestDto timeInput) { - entities = await _repository.GetPageListAsync(_ => true, sortInput, sortInput.SortBy, sortInput.SortType); + if (timeInput.StartTime is not null) + { + timeInput.EndTime = timeInput.EndTime ?? DateTime.Now; + } } + + + + + if (input is IPagedAndSortedResultRequestDto sortInput) + { + entities = await _repository.GetPageListAsync(_ => true, sortInput,sortInput.SortBy, sortInput.SortType); + } + + else { - sortInput.Conditions = new List(); - System.Reflection.PropertyInfo[] properties = sortInput.GetType().GetProperties(); - foreach (System.Reflection.PropertyInfo item in properties) - { - var query = item.GetCustomAttributes(typeof(QueryParameterAttribute), false).FirstOrDefault() as QueryParameterAttribute; - if (query is not null) - { - object value = item.GetValue(sortInput, null); - if (value is not null) - { - if (value.ToString() == "0") - { - if (query.VerifyIsZero) - { - sortInput.Conditions.Add(new ConditionalModel { FieldValue = value.ToString(), FieldName = item.Name, ConditionalType = (ConditionalType)(int)query.QueryOperator }); - } - } - else { - switch (query.ColumnType) - { - case ColumnTypeEnum.datetime: - if (!string.IsNullOrEmpty(query.ColumnName)) - { - DateTime dt = DateTime.Now; - DateTime.TryParse(value.ToString(), out dt); - sortInput.Conditions.Add(new ConditionalModel { FieldValue = dt.ToString("yyyy-MM-dd HH:mm:ss"), FieldName = query.ColumnName, ConditionalType = (ConditionalType)(int)query.QueryOperator }); - } - else - { - sortInput.Conditions.Add(new ConditionalModel { FieldValue = value.ToString(), FieldName = item.Name, ConditionalType = (ConditionalType)(int)query.QueryOperator }); - } - break; - case ColumnTypeEnum.@bool: - string _Value = ""; - if ((bool)value) - { - _Value = "1"; - } - else { - _Value = "0"; - } - sortInput.Conditions.Add(new ConditionalModel { FieldValue = _Value, FieldName = item.Name, ConditionalType = (ConditionalType)(int)query.QueryOperator }); - break; - default: - sortInput.Conditions.Add(new ConditionalModel { FieldValue = value.ToString(), FieldName = item.Name, ConditionalType = (ConditionalType)(int)query.QueryOperator }); - break; - } - - } - } - } - } - entities = await _repository.GetPageListAsync(sortInput.Conditions, sortInput, sortInput.SortBy, sortInput.SortType); + isPageList = false; + entities = await _repository.GetListAsync(); } - - } - else - { - isPageList = false; - entities = await _repository.GetListAsync(); - } - entityDtos = await MapToGetListOutputDtosAsync(entities); + entityDtos = await MapToGetListOutputDtosAsync(entities); + //} + //如果是分页查询,还需要统计数量 if (isPageList) { diff --git a/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/ApplicationSwaggerDoc.xml b/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/ApplicationSwaggerDoc.xml index d1b5fb09..67079074 100644 --- a/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/ApplicationSwaggerDoc.xml +++ b/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/ApplicationSwaggerDoc.xml @@ -84,6 +84,13 @@ + + + 多查 + + + + Menu服务实现 diff --git a/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/Identity/DeptService.cs b/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/Identity/DeptService.cs index 96bd907c..624a2110 100644 --- a/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/Identity/DeptService.cs +++ b/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Application/Identity/DeptService.cs @@ -28,24 +28,24 @@ namespace Yi.RBAC.Application.Identity return await MapToGetListOutputDtosAsync(entities); } - ///// - ///// 多查 - ///// - ///// - ///// - //public override async Task> GetListAsync(DeptGetListInputVo input) - //{ - // RefAsync total = 0; - // var entities = await _DbQueryable - // .WhereIF(!string.IsNullOrEmpty(input.DeptName), u => u.DeptName.Contains(input.DeptName!)) - // .WhereIF(input.State is not null, u => u.State == input.State) - // .OrderBy(u => u.OrderNum, OrderByType.Asc) - // .ToPageListAsync(input.PageNum, input.PageSize, total); - // return new PagedResultDto - // { - // Items = await MapToGetListOutputDtosAsync(entities), - // Total = total - // }; - //} + /// + /// 多查 + /// + /// + /// + public override async Task> GetListAsync(DeptGetListInputVo input) + { + RefAsync total = 0; + var entities = await _DbQueryable + .WhereIF(!string.IsNullOrEmpty(input.DeptName), u => u.DeptName.Contains(input.DeptName!)) + .WhereIF(input.State is not null, u => u.State == input.State) + .OrderBy(u => u.OrderNum, OrderByType.Asc) + .ToPageListAsync(input.PageNum, input.PageSize, total); + return new PagedResultDto + { + Items = await MapToGetListOutputDtosAsync(entities), + Total = total + }; + } } } diff --git a/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Domain/Identity/AccountManager.cs b/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Domain/Identity/AccountManager.cs index ad438541..312fa26d 100644 --- a/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Domain/Identity/AccountManager.cs +++ b/Yi.Framework.Net6/src/project/rbac/Yi.RBAC.Domain/Identity/AccountManager.cs @@ -104,6 +104,14 @@ namespace Yi.RBAC.Domain.Identity return claims; } + /// + /// 更新密码 + /// + /// + /// + /// + /// + /// public async Task UpdatePasswordAsync(long userId, string newPassword, string oldPassword) { var user = await _repository.GetByIdAsync(userId); @@ -117,7 +125,12 @@ namespace Yi.RBAC.Domain.Identity await _repository.UpdateAsync(user); } - + /// + /// 重置密码 + /// + /// + /// + /// public async Task RestPasswordAsync(long userId, string password) { var user = await _repository.GetByIdAsync(userId);