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