From 731e8f74385a6cf6345fc0a9883b19af34da334b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E7=8E=89=E4=B8=9C?= <129883742+liyudong2018@users.noreply.github.com> Date: Wed, 16 Jul 2025 12:53:00 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 1 + .../com/hshh/nation/menu/entity/Menu.java | 2 +- .../menu/service/impl/MenuServiceImpl.java | 109 ++++++++++-------- src/main/resources/application.yaml | 16 ++- src/main/resources/mapper/CodeDictMapper.xml | 67 +++++++---- .../resources/mapper/TransportBoatMapper.xml | 29 +++-- 6 files changed, 139 insertions(+), 85 deletions(-) diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 566a13f..6e0c7f4 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -2,6 +2,7 @@ + diff --git a/src/main/java/com/hshh/nation/menu/entity/Menu.java b/src/main/java/com/hshh/nation/menu/entity/Menu.java index 3fdb683..421535c 100644 --- a/src/main/java/com/hshh/nation/menu/entity/Menu.java +++ b/src/main/java/com/hshh/nation/menu/entity/Menu.java @@ -50,7 +50,7 @@ public class Menu implements Serializable { /** * 顺序 */ - private Integer menuOrder; + private Integer menuOrder ; @TableField(exist = false) private List children = new ArrayList<>(); diff --git a/src/main/java/com/hshh/nation/menu/service/impl/MenuServiceImpl.java b/src/main/java/com/hshh/nation/menu/service/impl/MenuServiceImpl.java index fbc3a14..32f43d1 100644 --- a/src/main/java/com/hshh/nation/menu/service/impl/MenuServiceImpl.java +++ b/src/main/java/com/hshh/nation/menu/service/impl/MenuServiceImpl.java @@ -1,16 +1,15 @@ package com.hshh.nation.menu.service.impl; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hshh.nation.menu.entity.Menu; import com.hshh.nation.menu.mapper.MenuMapper; import com.hshh.nation.menu.service.MenuService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hshh.nation.user.entity.User; -import org.springframework.stereotype.Service; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import org.springframework.stereotype.Service; /** *

@@ -22,55 +21,67 @@ import java.util.Map; */ @Service public class MenuServiceImpl extends ServiceImpl implements MenuService { - /** - * 获取用户菜单列表 - * - * @param user 用户 - * @return 用户菜单列表 - */ - @Override - public List

getMenuByUserId(User user) { - //根据用户ID查询所有菜单 - List originalmenuList = this.baseMapper.getMenuByUser(user); - if(originalmenuList.isEmpty()){ - return new ArrayList<>(); + + /** + * 获取用户菜单列表 + * + * @param user 用户 + * @return 用户菜单列表 + */ + @Override + public List getMenuByUserId(User user) { + //根据用户ID查询所有菜单 + List originalmenuList = this.baseMapper.getMenuByUser(user); + if (originalmenuList.isEmpty()) { + return new ArrayList<>(); + } + //key为父ID,value为所有一致父ID的集合 + Map> parentMenuMap = new HashMap<>(); + originalmenuList.forEach(originalmenu -> { + if (originalmenu.getParentId() == null) { + originalmenu.setParentId(0); + } + if (!parentMenuMap.containsKey(originalmenu.getParentId())) { + List innerList = new ArrayList<>(); + innerList.add(originalmenu); + parentMenuMap.put(originalmenu.getParentId(), innerList); + } else { + parentMenuMap.get(originalmenu.getParentId()).add(originalmenu); + } + }); + //获取顶级菜单 + List topMenuList = parentMenuMap.get(0); + + for (Menu menu : topMenuList) { + //递归设置子菜单 + setChildren(menu, parentMenuMap); + } + topMenuList.sort((a, b) -> { + if (a.getMenuOrder() == null) { + a.setMenuOrder(Integer.MAX_VALUE); + } + if (b.getMenuOrder() == null) { + b.setMenuOrder(Integer.MAX_VALUE); + } + return Integer.compare(a.getMenuOrder(), b.getMenuOrder()); } - //key为父ID,value为所有一致父ID的集合 - Map> parentMenuMap = new HashMap<>(); - originalmenuList.forEach(originalmenu -> { - if (originalmenu.getParentId() == null) { - originalmenu.setParentId(0); - } - if (!parentMenuMap.containsKey(originalmenu.getParentId())) { - List innerList = new ArrayList<>(); - innerList.add(originalmenu); - parentMenuMap.put(originalmenu.getParentId(), innerList); - } else { - parentMenuMap.get(originalmenu.getParentId()).add(originalmenu); - } - }); - //获取顶级菜单 - List topMenuList = parentMenuMap.get(0); + ); + return topMenuList; + } - for (Menu menu : topMenuList) { - //递归设置子菜单 - setChildren(menu,parentMenuMap); - } - return topMenuList; + private void setChildren(Menu menu, Map> parentMenuMap) { + + if (parentMenuMap.containsKey(menu.getId())) { + menu.getChildren().addAll(parentMenuMap.get(menu.getId())); + menu.getChildren().forEach(child -> { + setChildren(child, parentMenuMap); + }); } - private void setChildren(Menu menu,Map> parentMenuMap) { + } - if(parentMenuMap.containsKey(menu.getId())) { - menu.getChildren().addAll(parentMenuMap.get(menu.getId())); - menu.getChildren().forEach(child -> { - setChildren(child,parentMenuMap); - }); - } - } + @Override + public List getAllMenu() { - @Override - public List getAllMenu() { - - return this.list(); - } + return this.list(); + } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 4e77042..f2854a8 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -15,10 +15,15 @@ spring: min-idle: 0 max-wait: -1ms datasource: - url: jdbc:mysql://localhost:3306/nation_defence?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC - username: root - password: 123456 - driver-class-name: com.mysql.cj.jdbc.Driver + # mysql +# url: jdbc:mysql://localhost:3306/nation_defence?allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC +# username: root +# password: 123456 +# driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:dm://localhost:5236/NATION_DEFENCE + username: nation + password: Hshh123456 + driver-class-name: dm.jdbc.driver.DmDriver hikari: minimum-idle: 5 maximum-pool-size: 20 @@ -34,7 +39,8 @@ spring: mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml - + configuration: + database-id: dm type-aliases-package: com.example.demo.system.**.entity global-config: diff --git a/src/main/resources/mapper/CodeDictMapper.xml b/src/main/resources/mapper/CodeDictMapper.xml index da5c0cd..8d29041 100644 --- a/src/main/resources/mapper/CodeDictMapper.xml +++ b/src/main/resources/mapper/CodeDictMapper.xml @@ -1,44 +1,65 @@ - + - - - - - - - + + + + + + + - - - id, code_name_cn, code_name_en, code_desc - + + + id, code_name_cn, code_name_en, code_desc + - SELECT @rownum := @rownum + 1 AS seq, t.* FROM ( SELECT * FROM sys_code_dict - - code_name_cn LIKE CONCAT('%', #{model.codeNameCn}, '%') - + + code_name_cn LIKE CONCAT('%', #{model.codeNameCn}, '%') + - order by id asc ) t, ( SELECT @rownum := #{model.start} ) r limit #{model.start},#{model.pageSize} - + order by id asc ) t, ( SELECT @rownum := #{model.start} ) r limit + #{model.start},#{model.pageSize} + + - select count(id) from sys_code_dict - - code_name_cn LIKE CONCAT('%', #{model.codeNameCn}, '%') - + + code_name_cn LIKE CONCAT('%', #{model.codeNameCn}, '%') + - + diff --git a/src/main/resources/mapper/TransportBoatMapper.xml b/src/main/resources/mapper/TransportBoatMapper.xml index ab62dba..8d7e510 100644 --- a/src/main/resources/mapper/TransportBoatMapper.xml +++ b/src/main/resources/mapper/TransportBoatMapper.xml @@ -34,7 +34,7 @@ - SELECT @rownum := @rownum + 1 AS seq, t.* @@ -47,14 +47,29 @@ order by id asc ) t, ( SELECT @rownum := #{model.start} ) r limit #{model.start},#{model.pageSize} +