Browse Source

权限优化

master
Rui_Li 1 year ago
parent
commit
f62e505a73
  1. 44
      src/main/java/com/spring/modules/sys/controller/SysMenuController.java
  2. 8
      src/main/java/com/spring/modules/sys/dao/SysMenuDao.java
  3. 7
      src/main/java/com/spring/modules/sys/service/SysMenuService.java
  4. 7
      src/main/java/com/spring/modules/sys/service/impl/SysMenuServiceImpl.java
  5. 2
      src/main/java/com/spring/modules/sys/service/impl/SysRoleServiceImpl.java
  6. 16
      src/main/resources/mapper/sys/SysMenuDao.xml
  7. 4
      src/main/resources/mapper/sys/SysUserDao.xml

44
src/main/java/com/spring/modules/sys/controller/SysMenuController.java

@ -13,13 +13,16 @@ import com.spring.modules.sys.entity.dto.SysMenuEntityDto;
import com.spring.modules.sys.service.ShiroService;
import com.spring.modules.sys.service.SysMenuService;
import com.spring.modules.sys.service.SysObjectLanguageMenuService;
import com.spring.modules.sys.service.SysRoleMenuService;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
@ -31,6 +34,8 @@ public class SysMenuController extends AbstractController {
@Autowired
private SysMenuService sysMenuService;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private ShiroService shiroService;
@Autowired
private SysObjectLanguageMenuService sysObjectLanguageMenuService;
@ -53,14 +58,32 @@ public class SysMenuController extends AbstractController {
@RequiresPermissions("sys:menu:list")
public List<SysMenuEntity> list() {
//sysMenuService.lambdaQuery().orderBy(true,true,SysMenuEntity::getOrderNum).list();
List<SysMenuEntity> menuList = sysMenuService.list();
for (SysMenuEntity sysMenuEntity : menuList) {
List<SysMenuEntity> menuList = null;
//判断是否是admin
if (getUserId() == Constant.SUPER_ADMIN) {
menuList = sysMenuService.list();
}else {
//查询当前用户的权限
menuList = sysMenuService.getUserMenuListByUserId(getUserId());
}
//先转map
Map<String,String> nameMap = new HashMap<>();
for (SysMenuEntity sysMenuEntity : menuList){
nameMap.put(sysMenuEntity.getMenuId(), sysMenuEntity.getName());
}
/* for (SysMenuEntity sysMenuEntity : menuList) {
SysMenuEntity parentMenuEntity = sysMenuService.getById(sysMenuEntity.getParentId());
if (parentMenuEntity != null) {
sysMenuEntity.setParentName(parentMenuEntity.getName());
}
}*/
for(SysMenuEntity sysMenuEntity : menuList){
String parentId = sysMenuEntity.getParentId();
//判断是否需要第二次查询数据
if (nameMap.containsKey(parentId)){
sysMenuEntity.setParentName(nameMap.get(parentId));
}
}
return menuList;
}
@ -72,12 +95,25 @@ public class SysMenuController extends AbstractController {
@RequiresPermissions("sys:menu:list")
public List<SysMenuEntity> listLanguage(@PathVariable String language) {
List<SysMenuEntity> menuList = sysMenuService.listLanguage(language);
for (SysMenuEntity sysMenuEntity : menuList) {
//先转map
Map<String,String> nameMap = new HashMap<>();
for (SysMenuEntity sysMenuEntity : menuList){
nameMap.put(sysMenuEntity.getMenuId(), sysMenuEntity.getName());
}
/*for (SysMenuEntity sysMenuEntity : menuList) {
System.out.println(sysMenuEntity.getParentId());
SysMenuEntity parentMenuEntity = sysMenuService.getByIdLanguage(sysMenuEntity.getParentId(), language);
if (parentMenuEntity != null) {
sysMenuEntity.setParentName(parentMenuEntity.getName());
}
}*/
//优化查询次数
for(SysMenuEntity sysMenuEntity : menuList){
String parentId = sysMenuEntity.getParentId();
//判断是否需要第二次查询数据
if (nameMap.containsKey(parentId)){
sysMenuEntity.setParentName(nameMap.get(parentId));
}
}
return menuList;
}

8
src/main/java/com/spring/modules/sys/dao/SysMenuDao.java

@ -48,4 +48,12 @@ public interface SysMenuDao extends BaseMapper<SysMenuEntity> {
* @return
*/
List<SysObjectLanguageMenu> searchMenuLanguageById(SysObjectLanguageMenu sysObjectLanguageMenu);
/**
* @description: 查询当前用户有的权限列表
* @author LR
* @date 2025/1/6 13:42
* @version 1.0
*/
List<SysMenuEntity> getUserMenuListByUserId(Long userId);
}

7
src/main/java/com/spring/modules/sys/service/SysMenuService.java

@ -60,4 +60,11 @@ public interface SysMenuService extends IService<SysMenuEntity> {
Boolean saveMenuLanguage(List<SysObjectLanguageMenu> sysObjectLanguageMenu);
/**
* @description: 查询菜单列表
* @author LR
* @date 2025/1/6 13:59
* @version 1.0
*/
List<SysMenuEntity> getUserMenuListByUserId(Long userId);
}

7
src/main/java/com/spring/modules/sys/service/impl/SysMenuServiceImpl.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.spring.common.utils.Constant;
import com.spring.common.utils.MapUtils;
import com.spring.modules.sys.entity.SysObjectLanguageMenu;
import com.spring.modules.sys.entity.SysRoleMenuEntity;
import com.spring.modules.sys.service.SysObjectLanguageMenuService;
import com.spring.modules.sys.service.SysRoleMenuService;
import com.spring.modules.sys.service.SysUserService;
@ -17,6 +18,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@ -148,7 +150,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuDao, SysMenuEntity> i
return sysObjectLanguageMenuService.saveSysObjectLanguageMenu(sysObjectLanguageMenu);
}
@Override
public List<SysMenuEntity> getUserMenuListByUserId(Long userId) {
return sysMenuDao.getUserMenuListByUserId(userId);
}
}

2
src/main/java/com/spring/modules/sys/service/impl/SysRoleServiceImpl.java

@ -50,7 +50,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleDao, SysRoleEntity> i
new Query<SysRoleEntity>().getPage(params),
new QueryWrapper<SysRoleEntity>()
.like(StringUtils.isNotBlank(roleName),"role_name", roleName)
//.eq(createUserId != null,"create_user_id", createUserId)
.eq(createUserId != null,"create_user_id", createUserId)
);
return new PageUtils(page);

16
src/main/resources/mapper/sys/SysMenuDao.xml

@ -86,4 +86,20 @@
</select>
<!-- 查询当前用户有的菜单权限 -->
<select id="getUserMenuListByUserId" resultType="com.spring.modules.sys.entity.SysMenuEntity">
SELECT sm.menu_id, sm.parent_id, sm.name, sm.url, sm.perms, sm.type, sm.icon, sm.order_num
FROM sys_menu sm
LEFT JOIN sys_role_menu srm ON srm.menu_id = sm.menu_id
LEFT JOIN sys_user_role sur ON sur.role_id = srm.role_id
LEFT JOIN sys_user su ON su.user_id = sur.user_id
<where>
srm.menu_id = sm.menu_id AND sur.role_id = srm.role_id AND su.user_id = sur.user_id
<if test="userId != null and userId != '' ">
AND su.user_id = #{userId}
</if>
</where>
ORDER BY sm.order_num ASC
</select>
</mapper>

4
src/main/resources/mapper/sys/SysUserDao.xml

@ -84,9 +84,9 @@
<if test="query.domainControlAccount != null and query.domainControlAccount !=''">
AND domain_Control_Account like #{query.domainControlAccount}
</if>
<!--<if test="query.createUserId != null">
<if test="query.createUserId != null">
AND create_user_id = #{query.createUserId}
</if>-->
</if>
</where>
</select>

Loading…
Cancel
Save