SysMenuController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. package com.kmall.admin.fromcomm.controller;
  2. import com.kmall.common.annotation.SysLog;
  3. import com.kmall.admin.fromcomm.entity.SysMenuEntity;
  4. import com.kmall.admin.fromcomm.service.SysMenuService;
  5. import com.kmall.common.utils.*;
  6. import org.apache.commons.lang.StringUtils;
  7. import org.apache.shiro.authz.annotation.RequiresPermissions;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.web.bind.annotation.*;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * 系统菜单
  15. *
  16. * @author Scott
  17. * @email
  18. * @date 2016年10月27日 下午9:58:15
  19. */
  20. @RestController
  21. @RequestMapping("/sys/menu")
  22. public class SysMenuController extends AbstractController {
  23. @Autowired
  24. private SysMenuService sysMenuService;
  25. /**
  26. * 所有菜单列表
  27. */
  28. @RequestMapping("/list")
  29. @RequiresPermissions("sys:menu:list")
  30. public R list(@RequestParam Map<String, Object> params) {
  31. //查询列表数据
  32. Query query = new Query(params);
  33. List<SysMenuEntity> menuList = sysMenuService.queryList(query);
  34. int total = sysMenuService.queryTotal(query);
  35. PageUtils pageUtil = new PageUtils(menuList, total, query.getLimit(), query.getPage());
  36. return R.ok().put("page", pageUtil);
  37. }
  38. /**
  39. * 所有菜单列表
  40. */
  41. @RequestMapping("/queryAll")
  42. public R queryAll(@RequestParam Map<String, Object> params) {
  43. //查询列表数据
  44. List<SysMenuEntity> menuList = sysMenuService.queryList(params);
  45. return R.ok().put("list", menuList);
  46. }
  47. /**
  48. * 选择菜单(添加、修改菜单)
  49. */
  50. @RequestMapping("/select")
  51. @RequiresPermissions("sys:menu:select")
  52. public R select() {
  53. //查询列表数据
  54. List<SysMenuEntity> menuList = sysMenuService.queryNotButtonList();
  55. //添加顶级菜单
  56. SysMenuEntity root = new SysMenuEntity();
  57. root.setMenuId(0L);
  58. root.setName("一级菜单");
  59. root.setParentId(-1L);
  60. root.setOpen(true);
  61. menuList.add(root);
  62. return R.ok().put("menuList", menuList);
  63. }
  64. /**
  65. * 角色授权菜单
  66. */
  67. @RequestMapping("/perms")
  68. @RequiresPermissions("sys:menu:perms")
  69. public R perms() {
  70. //查询列表数据
  71. List<SysMenuEntity> menuList = null;
  72. //只有超级管理员,才能查看所有管理员列表
  73. if (getUserId() == Constant.SUPER_ADMIN) {
  74. menuList = sysMenuService.queryList(new HashMap<String, Object>());
  75. } else {
  76. menuList = sysMenuService.queryUserList(getUserId());
  77. }
  78. return R.ok().put("menuList", menuList);
  79. }
  80. /**
  81. * 菜单信息
  82. */
  83. @RequestMapping("/info/{menuId}")
  84. @RequiresPermissions("sys:menu:info")
  85. public R info(@PathVariable("menuId") Long menuId) {
  86. SysMenuEntity menu = sysMenuService.queryObject(menuId);
  87. return R.ok().put("menu", menu);
  88. }
  89. /**
  90. * 保存
  91. */
  92. @SysLog("保存菜单")
  93. @RequestMapping("/save")
  94. @RequiresPermissions("sys:menu:save")
  95. public R save(@RequestBody SysMenuEntity menu) {
  96. //数据校验
  97. verifyForm(menu);
  98. sysMenuService.save(menu);
  99. return R.ok();
  100. }
  101. /**
  102. * 修改
  103. */
  104. @SysLog("修改菜单")
  105. @RequestMapping("/update")
  106. @RequiresPermissions("sys:menu:update")
  107. public R update(@RequestBody SysMenuEntity menu) {
  108. //数据校验
  109. verifyForm(menu);
  110. sysMenuService.update(menu);
  111. return R.ok();
  112. }
  113. /**
  114. * 删除
  115. */
  116. @SysLog("删除菜单")
  117. @RequestMapping("/delete")
  118. @RequiresPermissions("sys:menu:delete")
  119. public R delete(@RequestBody Long[] menuIds) {
  120. for (Long menuId : menuIds) {
  121. if (menuId.longValue() <= 30) {
  122. return R.error("系统菜单,不能删除");
  123. }
  124. }
  125. sysMenuService.deleteBatch(menuIds);
  126. return R.ok();
  127. }
  128. /**
  129. * 用户菜单列表
  130. */
  131. @RequestMapping("/user")
  132. public R user() {
  133. List<SysMenuEntity> menuList = sysMenuService.getUserMenuList(getUserId());
  134. return R.ok().put("menuList", menuList);
  135. }
  136. /**
  137. * 验证参数是否正确
  138. */
  139. private void verifyForm(SysMenuEntity menu) {
  140. if (StringUtils.isBlank(menu.getName())) {
  141. throw new RRException("菜单名称不能为空");
  142. }
  143. if (menu.getParentId() == null) {
  144. throw new RRException("上级菜单不能为空");
  145. }
  146. //菜单
  147. if (menu.getType() == Constant.MenuType.MENU.getValue()) {
  148. if (StringUtils.isBlank(menu.getUrl())) {
  149. throw new RRException("菜单URL不能为空");
  150. }
  151. }
  152. //上级菜单类型
  153. int parentType = Constant.MenuType.CATALOG.getValue();
  154. if (menu.getParentId() != 0) {
  155. SysMenuEntity parentMenu = sysMenuService.queryObject(menu.getParentId());
  156. parentType = parentMenu.getType();
  157. }
  158. //目录、菜单
  159. if (menu.getType() == Constant.MenuType.CATALOG.getValue() ||
  160. menu.getType() == Constant.MenuType.MENU.getValue()) {
  161. if (parentType != Constant.MenuType.CATALOG.getValue()) {
  162. throw new RRException("上级菜单只能为目录类型");
  163. }
  164. return;
  165. }
  166. //按钮
  167. if (menu.getType() == Constant.MenuType.BUTTON.getValue()) {
  168. if (parentType != Constant.MenuType.MENU.getValue()) {
  169. throw new RRException("上级菜单只能为菜单类型");
  170. }
  171. return;
  172. }
  173. }
  174. }