【8.0】【权限】更新菜单排序算法

pull/57/head
fengshuonan 2023-07-07 17:18:57 +08:00
parent b951f6a01b
commit 9c08e2504c
1 changed files with 17 additions and 21 deletions

View File

@ -19,38 +19,34 @@ public class MenuTreeFactory {
/** /**
* *
* *
* @param tree * @param tree
* @param level level1 * @param baseNumber 101
* @author fengshuonan * @author fengshuonan
* @since 2023/6/15 14:30 * @since 2023/6/15 14:30
*/ */
public static void updateSort(List<SysMenu> tree, Integer level) { public static void updateSort(List<SysMenu> tree, Integer baseNumber) {
// 初始的排序值 if (baseNumber == null || baseNumber == 0) {
int i = 1; baseNumber = 1;
// 倍数第1层级从100开始排列
// 第2层是1000开始
int beishu = 10;
for (int integer = 0; integer < level; integer++) {
beishu = beishu * 10;
} }
// 第1层级是110120130 // 当前树的顺序计算逻辑:
// 第2层级是101010201030 // baseNumber * 100 + 1
// 第3层级是100101002010030 // baseNumber * 100 + 2
// baseNumber * 100 + 3
// 以此类推...
BigDecimal newBaseNumber = new BigDecimal(baseNumber * 100);
for (SysMenu sysMenu : tree) { for (SysMenu sysMenu : tree) {
BigDecimal bigDecimal = new BigDecimal(1);
bigDecimal = bigDecimal.multiply(new BigDecimal(beishu)); // 树形基础值 + 1
bigDecimal = bigDecimal.add(new BigDecimal(i * 10)); newBaseNumber = newBaseNumber.add(new BigDecimal(1));
sysMenu.setMenuSort(bigDecimal); sysMenu.setMenuSort(newBaseNumber);
i++;
// 递归修改子树 // 递归修改子树
List<SysMenu> children = sysMenu.getChildren(); List<SysMenu> children = sysMenu.getChildren();
if (children != null && children.size() > 0) { if (children != null && children.size() > 0) {
updateSort(children, level + 1); updateSort(children, newBaseNumber.intValue());
} }
} }
} }