Merge pull request 'HJ:1如果有软删除,使用软删除 2树型结构可以自动生成子列表,无需自己写了 3优化树型接口查询' (#381) from HJ20250723 into v2

Reviewed-on: https://code.adminnet.top/Admin.NET/Admin.NET.Pro/pulls/381
This commit is contained in:
zuohuaijun 2025-07-23 15:02:36 +08:00
commit 42dfb4da4b
3 changed files with 38 additions and 43 deletions

View File

@ -71,7 +71,14 @@ public partial class @(@Model.ClassName)Mid
@:.WhereIF(input.@(@column.PropertyName).HasValue, u => u.@(@column.PropertyName) @column.QueryType input.@(@column.PropertyName))
}
}
if(@column.PropertyName == "IsDelete") {
@:.Where( u => u.IsDelete == false)
}
}
@if (Model.TableField.Any(c => c.PropertyName == "OrderNo"))
{
@:.OrderBy(u => u.OrderNo)
}
.Select<@(@Model.ClassName)Output>()
@if(!string.IsNullOrEmpty(Model.TreeName)){

View File

@ -7,11 +7,13 @@
namespace @Model.NameSpace;
/// <summary>
/// HJ:这里做优化 如果是富文本不传入
/// @(@Model.BusName)输出参数
/// </summary>
public partial class @(@Model.ClassName)Output
{
@foreach (var column in Model.TableField){
@:/// <summary>
@:/// @column.ColumnComment
@:/// </summary>
@ -31,9 +33,17 @@ if(column.EffectType == "ForeignKey")
@:public @column.NetType @column.PropertyName { get; set; }
@:
@:/// <summary>
@:/// @(column.ColumnComment) 描述
@:/// 树型@(column.ColumnComment) 描述
@:/// </summary>
@:public string? @(@column.PropertyName)@(@column.DisplayColumn) { get; set; }
@:
@:/// <summary>
@:/// 树型分类子项
@:/// </summary>
@:public List<@(@Model.ClassName)Output> Children { get; set; } = [];
}else if(column.EffectType == "RichTextEditor"){
@:/// HJ:富文本不传,提高性能
}else{
@:public @column.NetType @(@column.PropertyName) { get; set; }
}
@ -62,3 +72,7 @@ if (@column.EffectType == "ApiTreeSelector"){
@:*/
}
}

View File

@ -86,11 +86,8 @@ public partial class @(@Model.ClassName)Service : IDynamicApiController, ITransi
[DisplayName("分页查询@(@Model.BusName)")]
public async Task<SqlSugarPagedList<@(@Model.ClassName)Output>> Page(Page@(@Model.ClassName)Input input)
{
//var query= @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input);
//var list = await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).MergeTable().ToPagedListAsync(input.Page, input.PageSize);
var list = await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
return list;
}
/// <summary>
@ -129,8 +126,16 @@ if (@column.ColumnKey == "True"){
@:var entity = await _@(@Model.LowerClassName)Rep.GetFirstAsync(u => u.@(@column.PropertyName) == input.@(@column.PropertyName)) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
}
}
//await _@(@Model.LowerClassName)Rep.FakeDeleteAsync(entity); // 假删除
await _@(@Model.LowerClassName)Rep.DeleteAsync(entity); // 真删除
//HJ:通过模板判断是否存在IsDelete字段决定删除方式
@if (Model.TableField.Any(c => c.PropertyName == "IsDelete"))
{
@:await _@(Model.LowerClassName)Rep.FakeDeleteAsync(entity); // 假删除存在IsDelete字段
}
else
{
@:await _@(Model.LowerClassName)Rep.DeleteAsync(entity); // 真删除不存在IsDelete字段
}
}
/// <summary>
@ -156,7 +161,7 @@ if (@column.ColumnKey == "True"){
}
/// <summary>
/// 获取@(@Model.BusName)
/// 获取@(@Model.BusName)详情
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
@ -375,43 +380,12 @@ if(@column.EffectType == "ApiTreeSelector" && !definedObjects.ContainsKey("@(@co
@:if (isSearch||!string.IsNullOrEmpty(input.SearchKey?.Trim()))
@:{
@:return await _@(@Model.LowerClassName)Rep.AsQueryable()
@{string conditionFlag = "";}
@if (haveLikeCdt) {
@:.WhereIF(!string.IsNullOrEmpty(input.SearchKey?.Trim()), u =>
@foreach (var columnTree in Model.TableField){
if (@columnTree.QueryWhether == "Y" && columnTree.QueryType == "like"){
@:@(conditionFlag)u.@(@columnTree.PropertyName).Contains(input.SearchKey.Trim())
conditionFlag="|| ";
}
}
@:)
}
foreach (var columnTree in Model.TableField){
if (@columnTree.QueryWhether == "Y"){if (@columnTree.NetType?.TrimEnd('?') == "string"){if(@columnTree.QueryType == "like"){
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@columnTree.PropertyName), u => u.@(@columnTree.PropertyName).Contains(input.@(@columnTree.PropertyName).Trim()))
}else{
@:.WhereIF(!string.IsNullOrWhiteSpace(input.@columnTree.PropertyName), u => u.@(@columnTree.PropertyName) @columnTree.QueryType input.@(@columnTree.PropertyName))
}}else if(@columnTree.NetType?.TrimEnd('?') == "int" || @columnTree.NetType?.TrimEnd('?') == "long"){
@:.WhereIF(input.@columnTree.PropertyName>0, u => (int)u.@(@columnTree.PropertyName) @columnTree.QueryType input.@(@columnTree.PropertyName))
}else if(@columnTree.NetType?.TrimEnd('?') == "DateTime" && @columnTree.QueryType == "~"){
@:.WhereIF(input.@(@columnTree.PropertyName)Range != null && input.@(@columnTree.PropertyName)Range.Length == 2, u => u.@(@columnTree.PropertyName) >= input.@(@columnTree.PropertyName)Range[0] && u.@(@columnTree.PropertyName) <= input.@(@columnTree.PropertyName)Range[1])
}else if(@columnTree.NetType?.TrimEnd('?').EndsWith("Enum") == true) {
@:.WhereIF(input.@(@columnTree.PropertyName).HasValue, u => u.@(@columnTree.PropertyName) @columnTree.QueryType input.@(@columnTree.PropertyName))
}}}
//HJ @:.OrderBy(u => u.OrderNo)
@:.OrderByDescending(u => u.Id)
@:.Distinct().ToListAsync();
@:// 有筛选条件时返回列表
@:return await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).OrderBuilder(input).Distinct().ToListAsync();
@:}
@:// 无筛选条件时返回树列表
@:return await _@(@Model.LowerClassName)Rep.AsQueryable()
//HJ @:.OrderBy(u => u.OrderNo)
@:.OrderByDescending(u => u.Id)
@:.ToTreeAsync(u => u.Children, u => u.Pid, 0, u => u.Id);
@:return await @(@Model.ClassName)Mid.GetQuery(_@(@Model.LowerClassName)Rep, input).OrderBuilder(input).ToTreeAsync(u => u.Children, u => u.Pid, 0, u => u.Id);
@:}
}
}