inner join 全部改为 left join 应为没有聚合列的时候效率更高(不理解,也没测试),然后规范了一下方法命令

master
GPU is all you need 4 years ago
parent d35a24e6db
commit be0b14b7a1
  1. 2
      awardBE/src/main/java/edu/ncst/award/controller/LoginController.java
  2. 4
      awardBE/src/main/java/edu/ncst/award/mapper/MenuMapper.java
  3. 19
      awardBE/src/main/java/edu/ncst/award/service/IMenuService.java
  4. 32
      awardBE/src/main/java/edu/ncst/award/service/impl/system/MenuServiceImpl.java
  5. 11
      awardBE/src/main/resources/mapper/MenuMapper.xml
  6. 8
      awardBE/src/main/resources/mapper/ResourceMapper.xml
  7. 2
      awardBE/src/main/resources/mapper/RoleMapper.xml
  8. 8
      awardBE/src/main/resources/mapper/UserMapper.xml

@ -65,7 +65,7 @@ public class LoginController {
if (userId == null) {
log.error("用户id不能为空");
}
List<Menu> menus = menuService.selectMenuTreeByUserId(userId);
List<Menu> menus = menuService.selectMenuByUserId(userId);
return R.ok(menuService.buildMenus(menus));
}

@ -21,7 +21,9 @@ public interface MenuMapper extends BaseMapper<Menu> {
List<Menu> getMenuTree(@Param("parentId") Integer parentId);
List<Menu> selectMenuTreeByUserId(Integer userId);
List<Menu> selectMenuByUserId(Integer userId);
List<Menu> selectMenuListByUserId(Menu menu, Long userId);
// // 清空菜单项
// int removeAllMenuItem();

@ -11,6 +11,23 @@ import java.util.List;
*/
public interface IMenuService extends IService<Menu> {
/**
* 根据用户查询系统菜单列表
*
* @param menu 菜单信息
* @return 菜单列表
*/
List<Menu> selectMenuList(Menu menu);
/**
* 根据用户查询系统菜单列表
*
* @param menu 菜单信息
* @param userId 用户ID
* @return 菜单列表
*/
List<Menu> selectMenuList(Menu menu, Long userId);
// // 获取菜单列表
// ListResultVO<Menu> getMenuList(Query query);
//
@ -61,7 +78,7 @@ public interface IMenuService extends IService<Menu> {
* 获取当前用户能够访问的路由菜单列表
* @param userId 用户id
*/
List<Menu> selectMenuTreeByUserId(Integer userId);
List<Menu> selectMenuByUserId(Integer userId);
/**
* 构建前端路由所需要的菜单

@ -28,8 +28,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
* @param userId 用户id
*/
@Override
public List<Menu> selectMenuTreeByUserId(Integer userId) {
return menuMapper.selectMenuTreeByUserId(userId);
public List<Menu> selectMenuByUserId(Integer userId) {
return menuMapper.selectMenuByUserId(userId);
}
/**
@ -58,6 +58,32 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
* @return 菜单的所有子节点
*/
public List<Menu> getAllMenusById(Integer menuId) {
return menuMapper.selectMenuTreeByUserId(0);
return menuMapper.selectMenuByUserId(0);
}
/**
* 根据用户查询系统菜单列表
*
* @param menu 菜单信息
* @return 菜单列表
*/
@Override
public List<Menu> selectMenuList(Menu menu) {
return null;
}
/**
* 根据用户查询系统菜单列表
*
* @param menu 菜单信息
* @param userId 用户ID
* @return 菜单列表
*/
@Override
public List<Menu> selectMenuList(Menu menu, Long userId) {
return baseMapper.selectMenuListByUserId(menu,userId);
}
}

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="edu.ncst.award.mapper.MenuMapper">
<select id="selectMenuTreeByUserId" resultType="edu.ncst.award.model.system.Menu">
<select id="selectMenuByUserId" resultType="Menu">
# WITH RECURSIVE cte AS (
# SELECT *,CONCAT(id) as tree_path, 1 as level FROM sys_menu where parent_id = 0
# UNION ALL
@ -10,9 +10,12 @@
# ) select * from cte
select distinct sm.*
from sys_menu sm
inner join sys_user su on su.id = #{userId}
inner join sys_user_role ssr on su.id = ssr.user_id
inner join sys_role_menu srm on ssr.role_id = srm.role_id
left join sys_user su on su.id = #{userId}
left join sys_user_role ssr on su.id = ssr.user_id
left join sys_role_menu srm on ssr.role_id = srm.role_id
order by parent_id
</select>
<select id="selectMenuListByUserId" resultType="edu.ncst.award.model.system.Menu">
</select>
</mapper>

@ -23,15 +23,15 @@
<select id="getRolesResourceUrls" parameterType="arraylist" resultType="java.lang.String">
select resource.url
from sys_resource resource
inner join sys_role_resource srr on resource.id = srr.resource_id
inner join sys_role sr on srr.role_id = sr.id
left join sys_role_resource srr on resource.id = srr.resource_id
left join sys_role sr on srr.role_id = sr.id
where sr.name in (<foreach item="roleName" collection="list" separator=",">#{roleName}</foreach>)
</select>
<select id="getUserScopeResourceList" resultType="edu.ncst.award.model.system.Resource">
select *
from sys_resource resource
inner join sys_role_resource srr on resource.id = srr.resource_id
inner join sys_role sr on srr.role_id = sr.id
left join sys_role_resource srr on resource.id = srr.resource_id
left join sys_role sr on srr.role_id = sr.id
where sr.name in (<foreach item="roleName" collection="list" separator=",">#{roleName}</foreach>)
</select>

@ -69,7 +69,7 @@
WHERE id in (
SELECT `role_id`
FROM sys_user_role
INNER JOIN sys_user ON sys_user_role.user_id = sys_user.id
LEFT JOIN sys_user ON sys_user_role.user_id = sys_user.id
AND sys_user.id = #{id})
</select>

@ -101,8 +101,8 @@
select distinct su.id, su.nickname, su.username, su.email,
su.mobile_phone, su.enable,su.create_time
from sys_user su
inner join sys_user_role sur on su.id = sur.user_id
inner join sys_role sr on sr.id = sur.role_id
left join sys_user_role sur on su.id = sur.user_id
left join sys_role sr on sr.id = sur.role_id
where su.del_flag = '0' and sr.id = #{user.roleId}
<if test="user.userName != null and user.userName != ''">
AND su.username like concat('%', #{user.userName}, '%')
@ -115,8 +115,8 @@
select distinct su.id, su.nickname, su.username, su.email,
su.mobile_phone, su.enable,su.create_time
from sys_user su
inner join sys_user_role sur on su.id = sur.user_id
inner join sys_role sr on sr.id = sur.role_id
left join sys_user_role sur on su.id = sur.user_id
left join sys_role sr on sr.id = sur.role_id
where su.del_flag = '0' and (sr.id != #{user.roleId} or sr.id is null )
<if test="user.userName != null and user.userName != ''">
AND su.username like concat('%', #{user.userName}, '%')

Loading…
Cancel
Save