赫艾后端
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.

257 lines
7.0 KiB

5 years ago
4 years ago
5 years ago
  1. package com.heai.modules.sys.controller;
  2. import com.heai.common.annotation.SysLog;
  3. import com.heai.common.exception.RRException;
  4. import com.heai.common.utils.Constant;
  5. import com.heai.common.utils.R;
  6. import com.heai.modules.sys.entity.SysMenuEntity;
  7. import com.heai.modules.sys.entity.SysObjectLanguageMenu;
  8. import com.heai.modules.sys.entity.dto.SysMenuEntityDto;
  9. import com.heai.modules.sys.service.ShiroService;
  10. import com.heai.modules.sys.service.SysMenuService;
  11. import com.heai.modules.sys.service.SysObjectLanguageMenuService;
  12. import org.apache.commons.lang.StringUtils;
  13. import org.apache.shiro.authz.annotation.RequiresPermissions;
  14. import org.springframework.beans.BeanUtils;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.*;
  17. import java.util.List;
  18. import java.util.Set;
  19. /**
  20. * 系统菜单
  21. *
  22. *
  23. */
  24. @RestController
  25. @RequestMapping("/sys/menu")
  26. public class SysMenuController extends AbstractController {
  27. @Autowired
  28. private SysMenuService sysMenuService;
  29. @Autowired
  30. private ShiroService shiroService;
  31. @Autowired
  32. private SysObjectLanguageMenuService sysObjectLanguageMenuService;
  33. /**
  34. * 导航菜单
  35. */
  36. @GetMapping("/nav")
  37. public R nav(@RequestParam("l") String l,@RequestParam("menuType") String menuType){
  38. List<SysMenuEntity> menuList = sysMenuService.getUserMenuList(getUserId(),l,menuType);
  39. Set<String> permissions = shiroService.getUserPermissions(getUserId());
  40. return R.ok().put("menuList", menuList).put("permissions", permissions);
  41. }
  42. /**
  43. * 所有菜单列表
  44. */
  45. @GetMapping("/list")
  46. @RequiresPermissions("sys:menu:list")
  47. public List<SysMenuEntity> list(){
  48. // List<SysMenuEntity> menuList = sysMenuService.list();
  49. List<SysMenuEntity> menuList =sysMenuService.lambdaQuery().orderBy(true,true,SysMenuEntity::getOrderNum).list();
  50. for(SysMenuEntity sysMenuEntity : menuList){
  51. SysMenuEntity parentMenuEntity = sysMenuService.getById(sysMenuEntity.getParentId());
  52. if(parentMenuEntity != null){
  53. sysMenuEntity.setParentName(parentMenuEntity.getName());
  54. }
  55. }
  56. return menuList;
  57. }
  58. /**
  59. * 所有菜单列表
  60. */
  61. @GetMapping("/list/{language}")
  62. @RequiresPermissions("sys:menu:list")
  63. public List<SysMenuEntity> listLanguage(@PathVariable String language){
  64. List<SysMenuEntity> menuList = sysMenuService.listLanguage(language);;
  65. for(SysMenuEntity sysMenuEntity : menuList){
  66. System.out.println(sysMenuEntity.getParentId());
  67. SysMenuEntity parentMenuEntity = sysMenuService.getByIdLanguage(sysMenuEntity.getParentId(),language);
  68. if(parentMenuEntity != null){
  69. sysMenuEntity.setParentName(parentMenuEntity.getName());
  70. }
  71. }
  72. return menuList;
  73. }
  74. /**
  75. * 选择菜单(添加修改菜单)
  76. */
  77. @GetMapping("/select")
  78. @RequiresPermissions("sys:menu:select")
  79. public R select(){
  80. //查询列表数据
  81. List<SysMenuEntity> menuList = sysMenuService.queryNotButtonList();
  82. //添加顶级菜单
  83. SysMenuEntity root = new SysMenuEntity();
  84. root.setMenuId(0L);
  85. root.setName("一级菜单");
  86. root.setParentId(-1L);
  87. root.setOpen(true);
  88. menuList.add(root);
  89. return R.ok().put("menuList", menuList);
  90. }
  91. /**
  92. * 菜单信息
  93. */
  94. @GetMapping("/info/{menuId}")
  95. @RequiresPermissions("sys:menu:info")
  96. public R info(@PathVariable("menuId") Long menuId){
  97. SysMenuEntity menu = sysMenuService.getById(menuId);
  98. return R.ok().put("menu", menu);
  99. }
  100. /**
  101. * 保存
  102. */
  103. @SysLog("保存菜单")
  104. @PostMapping("/save")
  105. @RequiresPermissions("sys:menu:save")
  106. public R save(@RequestBody SysMenuEntityDto menu){
  107. //数据校验
  108. verifyForm(menu);
  109. SysMenuEntity sysMenuEntity = new SysMenuEntity();
  110. SysObjectLanguageMenu sysObjectLanguageMenu = new SysObjectLanguageMenu();
  111. sysObjectLanguageMenu.setLanguageCode(menu.getLanguageCode());
  112. sysObjectLanguageMenu.setLanguageValue(menu.getName());
  113. BeanUtils.copyProperties(menu,sysMenuEntity);
  114. sysMenuService.save(sysMenuEntity);
  115. // sysObjectLanguageMenu.setMenuId(sysMenuEntity.getMenuId());
  116. // sysObjectLanguageMenuService.saveSysObjectLanguageMenu(sysObjectLanguageMenu);
  117. return R.ok();
  118. }
  119. /**
  120. * 修改
  121. */
  122. @SysLog("修改菜单")
  123. @PostMapping("/update")
  124. @RequiresPermissions("sys:menu:update")
  125. public R update(@RequestBody SysMenuEntity menu){
  126. //数据校验
  127. verifyForm(menu);
  128. sysMenuService.updateById(menu);
  129. return R.ok();
  130. }
  131. /**
  132. * 删除
  133. */
  134. @SysLog("删除菜单")
  135. @PostMapping("/delete/{menuId}")
  136. @RequiresPermissions("sys:menu:delete")
  137. public R delete(@PathVariable("menuId") long menuId){
  138. if(menuId <= 31){
  139. return R.error("系统菜单,不能删除");
  140. }
  141. //判断是否有子菜单或按钮
  142. List<SysMenuEntity> menuList = sysMenuService.queryListParentId(menuId);
  143. if(menuList.size() > 0){
  144. return R.error("请先删除子菜单或按钮");
  145. }
  146. sysMenuService.delete(menuId);
  147. return R.ok();
  148. }
  149. /**
  150. * 验证参数是否正确
  151. */
  152. private void verifyForm(SysMenuEntity menu){
  153. if(StringUtils.isBlank(menu.getName())){
  154. throw new RRException("菜单名称不能为空");
  155. }
  156. if(menu.getParentId() == null){
  157. throw new RRException("上级菜单不能为空");
  158. }
  159. //菜单
  160. if(menu.getType() == Constant.MenuType.MENU.getValue()){
  161. if(StringUtils.isBlank(menu.getUrl())){
  162. throw new RRException("菜单URL不能为空");
  163. }
  164. }
  165. //上级菜单类型
  166. int parentType = Constant.MenuType.CATALOG.getValue();
  167. if(menu.getParentId() != 0){
  168. SysMenuEntity parentMenu = sysMenuService.getById(menu.getParentId());
  169. parentType = parentMenu.getType();
  170. }
  171. //目录、菜单
  172. if(menu.getType() == Constant.MenuType.CATALOG.getValue() ||
  173. menu.getType() == Constant.MenuType.MENU.getValue()){
  174. if(parentType != Constant.MenuType.CATALOG.getValue()){
  175. throw new RRException("上级菜单只能为目录类型");
  176. }
  177. return ;
  178. }
  179. //按钮
  180. if(menu.getType() == Constant.MenuType.BUTTON.getValue()){
  181. if(parentType != Constant.MenuType.MENU.getValue()){
  182. throw new RRException("上级菜单只能为菜单类型");
  183. }
  184. return ;
  185. }
  186. }
  187. /*
  188. * @Author li_she
  189. * @Description 获取菜单集合
  190. * @Date 2021/6/24 9:30
  191. **/
  192. @PostMapping("/searchMenuList")
  193. public R searchMenuList(@RequestBody SysMenuEntity menu){
  194. List<SysMenuEntity> menuList = sysMenuService.searchMenuList(menu);
  195. return R.ok().put("menuList", menuList);
  196. }
  197. /*
  198. * @Author li_she
  199. * @Description 更具id获取单个菜单的多语言
  200. * @Date 2021/6/30 16:34
  201. **/
  202. @PostMapping("searchMenuLanguageById")
  203. public R searchMenuLanguageById(@RequestBody SysObjectLanguageMenu sysObjectLanguageMenu){
  204. List<SysObjectLanguageMenu> list = sysMenuService.searchMenuLanguageById(sysObjectLanguageMenu);
  205. return R.ok().put("menuLanguageList",list);
  206. }
  207. /*
  208. * @Author li_she
  209. * @Description 保存菜单语言
  210. * @Date 2021/6/30 16:34
  211. **/
  212. @PostMapping("saveMenuLanguage")
  213. public R saveMenuLanguage(@RequestBody SysObjectLanguageMenu sysObjectLanguageMenu){
  214. if(sysMenuService.saveMenuLanguage(sysObjectLanguageMenu)){
  215. return R.ok("添加语言成功");
  216. }
  217. return R.error("添加语言失败");
  218. }
  219. }