You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
290 lines
9.8 KiB
290 lines
9.8 KiB
|
|
|
|
package com.spring.modules.sys.controller;
|
|
|
|
import com.spring.common.annotation.SysLog;
|
|
import com.spring.common.constant.SysMsgConstant;
|
|
import com.spring.common.exception.XJException;
|
|
import com.spring.common.utils.Constant;
|
|
import com.spring.common.utils.R;
|
|
import com.spring.modules.sys.entity.SysMenuEntity;
|
|
import com.spring.modules.sys.entity.SysObjectLanguageMenu;
|
|
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;
|
|
|
|
/**
|
|
* 系统菜单
|
|
*/
|
|
@RestController
|
|
@RequestMapping("/sys/menu")
|
|
public class SysMenuController extends AbstractController {
|
|
@Autowired
|
|
private SysMenuService sysMenuService;
|
|
@Autowired
|
|
private SysRoleMenuService sysRoleMenuService;
|
|
@Autowired
|
|
private ShiroService shiroService;
|
|
@Autowired
|
|
private SysObjectLanguageMenuService sysObjectLanguageMenuService;
|
|
|
|
/**
|
|
* 导航菜单
|
|
*/
|
|
@GetMapping("/nav")
|
|
public R nav(@RequestParam("l") String l, @RequestParam("menuType") String menuType) {
|
|
List<SysMenuEntity> menuList = sysMenuService.getUserMenuList(getUserId(), l, menuType);
|
|
Set<String> permissions = shiroService.getUserPermissions(getUserId());
|
|
List<String> accessField=shiroService.getAccessFieldByUserId(getUserId());
|
|
return R.ok().put("menuList", menuList).put("permissions", permissions).put("accessField", accessField);
|
|
}
|
|
|
|
/**
|
|
* 所有菜单列表
|
|
*/
|
|
@GetMapping("/list")
|
|
@RequiresPermissions("sys:menu:list")
|
|
public List<SysMenuEntity> list() {
|
|
//sysMenuService.lambdaQuery().orderBy(true,true,SysMenuEntity::getOrderNum).list();
|
|
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;
|
|
}
|
|
|
|
|
|
/**
|
|
* 所有菜单列表
|
|
*/
|
|
@GetMapping("/list/{language}")
|
|
@RequiresPermissions("sys:menu:list")
|
|
public List<SysMenuEntity> listLanguage(@PathVariable String language) {
|
|
List<SysMenuEntity> menuList = sysMenuService.listLanguage(language);
|
|
//先转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;
|
|
}
|
|
|
|
/**
|
|
* 选择菜单(添加、修改菜单)
|
|
*/
|
|
@GetMapping("/select")
|
|
@RequiresPermissions("sys:menu:select")
|
|
public R select() {
|
|
//查询列表数据
|
|
List<SysMenuEntity> menuList = sysMenuService.queryNotButtonList();
|
|
|
|
//添加顶级菜单
|
|
SysMenuEntity root = new SysMenuEntity();
|
|
root.setMenuId("0");
|
|
root.setName("一级菜单");
|
|
root.setParentId("-1");
|
|
root.setOpen(true);
|
|
menuList.add(root);
|
|
|
|
return R.ok().put("menuList", menuList);
|
|
}
|
|
|
|
/**
|
|
* 菜单信息
|
|
*/
|
|
@GetMapping("/info/{menuId}")
|
|
@RequiresPermissions("sys:menu:info")
|
|
public R info(@PathVariable("menuId") String menuId) {
|
|
SysMenuEntity menu = sysMenuService.getById(menuId);
|
|
return R.ok().put("menu", menu);
|
|
}
|
|
|
|
/**
|
|
* 保存
|
|
*/
|
|
@SysLog("保存菜单")
|
|
@PostMapping("/save")
|
|
@RequiresPermissions("sys:menu:save")
|
|
public R save(@RequestBody SysMenuEntityDto menu) {
|
|
|
|
//数据校验
|
|
verifyForm(menu);
|
|
SysMenuEntity sysMenuEntity = new SysMenuEntity();
|
|
SysObjectLanguageMenu sysObjectLanguageMenu = new SysObjectLanguageMenu();
|
|
|
|
sysObjectLanguageMenu.setLanguageCode(menu.getLanguageCode());
|
|
sysObjectLanguageMenu.setLanguageValue(menu.getName());
|
|
BeanUtils.copyProperties(menu, sysMenuEntity);
|
|
sysMenuService.save(sysMenuEntity);
|
|
// sysObjectLanguageMenu.setMenuId(sysMenuEntity.getMenuId());
|
|
// sysObjectLanguageMenuService.saveSysObjectLanguageMenu(sysObjectLanguageMenu);
|
|
return R.ok(getLanguageMsg(SysMsgConstant.OBJECT_ID_200000));
|
|
}
|
|
|
|
/**
|
|
* 修改
|
|
*/
|
|
@SysLog("修改菜单")
|
|
@PostMapping("/update")
|
|
@RequiresPermissions("sys:menu:update")
|
|
public R update(@RequestBody SysMenuEntity menu) {
|
|
//数据校验
|
|
verifyForm(menu);
|
|
sysMenuService.updateById(menu);
|
|
|
|
return R.ok(getLanguageMsg(SysMsgConstant.OBJECT_ID_200000));
|
|
}
|
|
|
|
/**
|
|
* 删除
|
|
*/
|
|
@SysLog("删除菜单")
|
|
@PostMapping("/delete/{menuId}")
|
|
@RequiresPermissions("sys:menu:delete")
|
|
public R delete(@PathVariable("menuId") String menuId) {
|
|
// if(menuId <= 31){
|
|
// return R.error("系统菜单,不能删除");
|
|
// }
|
|
|
|
//判断是否有子菜单或按钮
|
|
List<SysMenuEntity> menuList = sysMenuService.queryListParentId(menuId);
|
|
if (menuList.size() > 0) {
|
|
return R.error(getLanguageMsg(SysMsgConstant.OBJECT_ID_200209));
|
|
}
|
|
|
|
sysMenuService.delete(menuId);
|
|
|
|
return R.ok(getLanguageMsg(SysMsgConstant.OBJECT_ID_200000));
|
|
}
|
|
|
|
/**
|
|
* 验证参数是否正确
|
|
*/
|
|
private void verifyForm(SysMenuEntity menu) {
|
|
if (StringUtils.isBlank(menu.getName())) {
|
|
throw new XJException(getLanguageMsg(SysMsgConstant.OBJECT_ID_200210));
|
|
}
|
|
|
|
if (menu.getParentId() == null) {
|
|
throw new XJException(getLanguageMsg(SysMsgConstant.OBJECT_ID_200211));
|
|
}
|
|
|
|
//菜单
|
|
if (menu.getType() == Constant.MenuType.MENU.getValue()) {
|
|
if (StringUtils.isBlank(menu.getUrl())) {
|
|
throw new XJException(getLanguageMsg(SysMsgConstant.OBJECT_ID_200212));
|
|
}
|
|
}
|
|
|
|
//上级菜单类型
|
|
int parentType = Constant.MenuType.CATALOG.getValue();
|
|
if (!"0".equals(menu.getParentId())) {
|
|
SysMenuEntity parentMenu = sysMenuService.getById(menu.getParentId());
|
|
parentType = parentMenu.getType();
|
|
}
|
|
|
|
//目录、菜单
|
|
if (menu.getType() == Constant.MenuType.CATALOG.getValue() ||
|
|
menu.getType() == Constant.MenuType.MENU.getValue()) {
|
|
if (parentType != Constant.MenuType.CATALOG.getValue()) {
|
|
throw new XJException(getLanguageMsg(SysMsgConstant.OBJECT_ID_200213));
|
|
}
|
|
return;
|
|
}
|
|
|
|
//按钮
|
|
if (menu.getType() == Constant.MenuType.BUTTON.getValue()) {
|
|
if (parentType != Constant.MenuType.MENU.getValue()) {
|
|
throw new XJException(getLanguageMsg(SysMsgConstant.OBJECT_ID_200214));
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
* @Author li_she
|
|
* @Description 获取菜单集合
|
|
* @Date 2021/6/24 9:30
|
|
**/
|
|
@PostMapping("/searchMenuList")
|
|
public R searchMenuList(@RequestBody SysMenuEntity menu) {
|
|
List<SysMenuEntity> menuList = sysMenuService.searchMenuList(menu);
|
|
return R.ok().put("menuList", menuList);
|
|
}
|
|
|
|
/*
|
|
* @Author li_she
|
|
* @Description 更具id获取单个菜单的多语言
|
|
* @Date 2021/6/30 16:34
|
|
**/
|
|
@PostMapping("searchMenuLanguageById")
|
|
public R searchMenuLanguageById(@RequestBody SysObjectLanguageMenu sysObjectLanguageMenu) {
|
|
List<SysObjectLanguageMenu> list = sysMenuService.searchMenuLanguageById(sysObjectLanguageMenu);
|
|
return R.ok().put("menuLanguageList", list);
|
|
}
|
|
|
|
/*
|
|
* @Author li_she
|
|
* @Description 保存菜单语言
|
|
* @Date 2021/6/30 16:34
|
|
**/
|
|
@PostMapping("saveMenuLanguage")
|
|
public R saveMenuLanguage(@RequestBody List<SysObjectLanguageMenu> sysObjectLanguageMenu) {
|
|
if (sysMenuService.saveMenuLanguage(sysObjectLanguageMenu)) {
|
|
return R.ok(getLanguageMsg(SysMsgConstant.OBJECT_ID_200000));
|
|
}
|
|
return R.error(getLanguageMsg(SysMsgConstant.OBJECT_ID_200215));
|
|
}
|
|
|
|
|
|
}
|