荣鑫后端
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.

256 lines
6.9 KiB

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