package com.javaweb.web.controller.system;
|
|
import java.util.List;
|
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.ui.ModelMap;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import com.javaweb.common.annotation.Log;
|
import com.javaweb.common.constant.UserConstants;
|
import com.javaweb.common.core.controller.BaseController;
|
import com.javaweb.common.core.domain.AjaxResult;
|
import com.javaweb.common.core.domain.Ztree;
|
import com.javaweb.common.enums.BusinessType;
|
import com.javaweb.framework.util.ShiroUtils;
|
import com.javaweb.system.domain.SysMenu;
|
import com.javaweb.system.domain.SysRole;
|
import com.javaweb.system.service.ISysMenuService;
|
|
/**
|
* 菜单信息
|
*
|
* @author javaweb
|
*/
|
@Controller
|
@RequestMapping("/system/menu")
|
public class SysMenuController extends BaseController
|
{
|
private String prefix = "system/menu";
|
|
@Autowired
|
private ISysMenuService menuService;
|
|
@RequiresPermissions("system:menu:view")
|
@GetMapping()
|
public String menu()
|
{
|
return prefix + "/menu";
|
}
|
|
@RequiresPermissions("system:menu:list")
|
@PostMapping("/list")
|
@ResponseBody
|
public List<SysMenu> list(SysMenu menu)
|
{
|
Long userId = ShiroUtils.getUserId();
|
List<SysMenu> menuList = menuService.selectMenuList(menu, userId);
|
return menuList;
|
}
|
|
/**
|
* 删除菜单
|
*/
|
@Log(title = "菜单管理", businessType = BusinessType.DELETE)
|
@RequiresPermissions("system:menu:remove")
|
@GetMapping("/remove/{menuId}")
|
@ResponseBody
|
public AjaxResult remove(@PathVariable("menuId") Long menuId)
|
{
|
if (menuService.selectCountMenuByParentId(menuId) > 0)
|
{
|
return AjaxResult.warn("存在子菜单,不允许删除");
|
}
|
if (menuService.selectCountRoleMenuByMenuId(menuId) > 0)
|
{
|
return AjaxResult.warn("菜单已分配,不允许删除");
|
}
|
ShiroUtils.clearCachedAuthorizationInfo();
|
return toAjax(menuService.deleteMenuById(menuId));
|
}
|
|
/**
|
* 新增
|
*/
|
@GetMapping("/add/{parentId}")
|
public String add(@PathVariable("parentId") Long parentId, ModelMap mmap)
|
{
|
SysMenu menu = null;
|
if (0L != parentId)
|
{
|
menu = menuService.selectMenuById(parentId);
|
}
|
else
|
{
|
menu = new SysMenu();
|
menu.setMenuId(0L);
|
menu.setMenuName("主目录");
|
}
|
mmap.put("menu", menu);
|
return prefix + "/add";
|
}
|
|
/**
|
* 新增保存菜单
|
*/
|
@Log(title = "菜单管理", businessType = BusinessType.INSERT)
|
@RequiresPermissions("system:menu:add")
|
@PostMapping("/add")
|
@ResponseBody
|
public AjaxResult addSave(@Validated SysMenu menu)
|
{
|
if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
|
{
|
return error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
|
}
|
menu.setCreateBy(ShiroUtils.getLoginName());
|
ShiroUtils.clearCachedAuthorizationInfo();
|
return toAjax(menuService.insertMenu(menu));
|
}
|
|
/**
|
* 修改菜单
|
*/
|
@GetMapping("/edit/{menuId}")
|
public String edit(@PathVariable("menuId") Long menuId, ModelMap mmap)
|
{
|
mmap.put("menu", menuService.selectMenuById(menuId));
|
return prefix + "/edit";
|
}
|
|
/**
|
* 修改保存菜单
|
*/
|
@Log(title = "菜单管理", businessType = BusinessType.UPDATE)
|
@RequiresPermissions("system:menu:edit")
|
@PostMapping("/edit")
|
@ResponseBody
|
public AjaxResult editSave(@Validated SysMenu menu)
|
{
|
if (UserConstants.MENU_NAME_NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
|
{
|
return error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
|
}
|
menu.setUpdateBy(ShiroUtils.getLoginName());
|
ShiroUtils.clearCachedAuthorizationInfo();
|
return toAjax(menuService.updateMenu(menu));
|
}
|
|
/**
|
* 选择菜单图标
|
*/
|
@GetMapping("/icon")
|
public String icon()
|
{
|
return prefix + "/icon";
|
}
|
|
/**
|
* 校验菜单名称
|
*/
|
@PostMapping("/checkMenuNameUnique")
|
@ResponseBody
|
public String checkMenuNameUnique(SysMenu menu)
|
{
|
return menuService.checkMenuNameUnique(menu);
|
}
|
|
/**
|
* 加载角色菜单列表树
|
*/
|
@GetMapping("/roleMenuTreeData")
|
@ResponseBody
|
public List<Ztree> roleMenuTreeData(SysRole role)
|
{
|
Long userId = ShiroUtils.getUserId();
|
List<Ztree> ztrees = menuService.roleMenuTreeData(role, userId);
|
return ztrees;
|
}
|
|
/**
|
* 加载所有菜单列表树
|
*/
|
@GetMapping("/menuTreeData")
|
@ResponseBody
|
public List<Ztree> menuTreeData()
|
{
|
Long userId = ShiroUtils.getUserId();
|
List<Ztree> ztrees = menuService.menuTreeData(userId);
|
return ztrees;
|
}
|
|
/**
|
* 选择菜单树
|
*/
|
@GetMapping("/selectMenuTree/{menuId}")
|
public String selectMenuTree(@PathVariable("menuId") Long menuId, ModelMap mmap)
|
{
|
mmap.put("menu", menuService.selectMenuById(menuId));
|
return prefix + "/tree";
|
}
|
}
|