SysMenuController.java 6.9 KB

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