levelhandler添加size,level的外部设定!
framework/Directory.Build.props
diff --git a/framework/Directory.Build.props b/framework/Directory.Build.props
index fe20c8a..26b47c7 100644
--- a/framework/Directory.Build.props
+++ b/framework/Directory.Build.props
@@ -1,7 +1,7 @@
<Project>
<PropertyGroup>
- <Version>26.10.08</Version>
- <FileVersion>26.10.08</FileVersion>
- <AssemblyVersion>26.10.08</AssemblyVersion>
+ <Version>26.10.09</Version>
+ <FileVersion>26.10.09</FileVersion>
+ <AssemblyVersion>26.10.09</AssemblyVersion>
</PropertyGroup>
</Project>
\ No newline at end of file
framework/PasteApeart.Handler/common/ILevelHandler.cs
diff --git a/framework/PasteApeart.Handler/common/ILevelHandler.cs b/framework/PasteApeart.Handler/common/ILevelHandler.cs
index 9da0d24..71cf62b 100644
--- a/framework/PasteApeart.Handler/common/ILevelHandler.cs
+++ b/framework/PasteApeart.Handler/common/ILevelHandler.cs
@@ -8,15 +8,16 @@ namespace PasteApeart.Handler.Level
public interface ILevelHandler
{
/// <summary>
- ///
+ /// 新增数据后 记得要调用SaveChangesAsync()
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="Tkey"></typeparam>
/// <param name="info"></param>
/// <returns></returns>
Task AfterAddAsync<T, Tkey>(ILevelEntity<Tkey> info) where T : class, ILevelEntity<Tkey>;
+
/// <summary>
- ///
+ /// 更新数据后 记得要调用SaveChangesAsync()
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="Tkey"></typeparam>
@@ -25,15 +26,17 @@ namespace PasteApeart.Handler.Level
/// <param name="oldLevel"></param>
/// <returns></returns>
Task AfterUpdateAsync<T, Tkey>(ILevelEntity<Tkey> info, string oldFatherStr, int oldLevel) where T : class, ILevelEntity<Tkey>;
+
/// <summary>
- ///
+ /// 重新排序
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="Tkey"></typeparam>
/// <param name="entities"></param>
void AllResortByFatherIdAndSort<T, Tkey>(List<T> entities) where T : ILevelEntity<Tkey>;
+
/// <summary>
- ///
+ /// 自动排序
/// </summary>
/// <typeparam name="Tkey"></typeparam>
/// <param name="TableName"></param>
framework/PasteApeart.Handler/common/LevelHandler.cs
diff --git a/framework/PasteApeart.Handler/common/LevelHandler.cs b/framework/PasteApeart.Handler/common/LevelHandler.cs
index 9bf163d..887ad18 100644
--- a/framework/PasteApeart.Handler/common/LevelHandler.cs
+++ b/framework/PasteApeart.Handler/common/LevelHandler.cs
@@ -1,5 +1,4 @@
using Microsoft.EntityFrameworkCore;
-using PasteApeart.Domain;
using PasteApeart.Domain.Entity;
namespace PasteApeart.Handler.Level
@@ -15,21 +14,24 @@ namespace PasteApeart.Handler.Level
/// <summary>
/// 每层最大支持的排序位数 5表示00000
/// </summary>
- private const int _persize = 4;
+ private int _persize { get; set; } = 4;
/// <summary>
/// 最大层级个数,从0开始 比如4就是 0 1 2 3
/// </summary>
- private const int _maxlevel = 6;
-
+ private int _maxlevel { get; set; } = 6;
/// <summary>
///
/// </summary>
- /// <param name="dbContext"></param>
- public LevelHandler(DbContext dbContext)
+ /// <param name="dbContext">数据库链接</param>
+ /// <param name="perSize">串长度</param>
+ /// <param name="maxLevel">层级</param>
+ public LevelHandler(DbContext dbContext, int perSize = 4, int maxLevel = 6)
{
_dbContext = dbContext;
+ _persize = perSize;
+ _maxlevel = maxLevel;
}
@@ -202,7 +204,7 @@ namespace PasteApeart.Handler.Level
/// <param name="node"></param>
/// <param name="entities"></param>
/// <exception cref="Exception"></exception>
- private static void RecalculateTree<T, Tkey>(T node, List<T> entities) where T : ILevelEntity<Tkey>
+ private void RecalculateTree<T, Tkey>(T node, List<T> entities) where T : ILevelEntity<Tkey>
{
//寻找他的子集
var childs = entities
@@ -231,7 +233,7 @@ namespace PasteApeart.Handler.Level
/// </summary>
/// <param name="sort"></param>
/// <returns></returns>
- private static string FullRootSortStr(int sort)
+ private string FullRootSortStr(int sort)
{
return sort.ToString().PadLeft(_persize, '0') + "0".PadLeft((_maxlevel - 1) * _persize, '0');
}
@@ -244,7 +246,7 @@ namespace PasteApeart.Handler.Level
/// <param name="fatherSortstr">为空表示当前是顶级</param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
- private static string BuildUnRootSortStr(int currentLevel, int currentSort, string fatherSortstr = "")
+ private string BuildUnRootSortStr(int currentLevel, int currentSort, string fatherSortstr = "")
{
var fatherLevel = currentLevel - 1;
if (currentLevel < _maxlevel)
@@ -306,7 +308,7 @@ namespace PasteApeart.Handler.Level
/// </summary>
/// <param name="currentEntity"></param>
/// <param name="fatherEntity"></param>
- private static void BuildSortStr<Tkey>(ILevelEntity<Tkey> currentEntity, ILevelEntity<Tkey> fatherEntity)
+ private void BuildSortStr<Tkey>(ILevelEntity<Tkey> currentEntity, ILevelEntity<Tkey> fatherEntity)
{
if (currentEntity.Level < _maxlevel)
{
@@ -335,7 +337,7 @@ namespace PasteApeart.Handler.Level
/// </summary>
/// <param name="currentEntity"></param>
/// <param name="fatherEntity">是自己的上级或者祖级</param>
- private static void BuildFootSortStr<Tkey>(ILevelEntity<Tkey> currentEntity, ILevelEntity<Tkey> fatherEntity)
+ private void BuildFootSortStr<Tkey>(ILevelEntity<Tkey> currentEntity, ILevelEntity<Tkey> fatherEntity)
{
var _old_sort_str = currentEntity.SortStr;
currentEntity.SortStr = fatherEntity.SortStr.Substring(0, (fatherEntity.Level + 1) * _persize);