AppFunInfoController.java 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.dragoninfo.dcuc.authweb.restcontroller.auth;
  2. import com.dragoninfo.dcuc.auth.auth.entity.AppFunInfo;
  3. import com.dragoninfo.dcuc.auth.auth.vo.EventInfoVO;
  4. import com.dragoninfo.dcuc.auth.auth.vo.TreeInfoVO;
  5. import com.dragoninfo.dcuc.auth.power.facade.IAppFunInfoFacade;
  6. import com.dragoninfo.dcuc.auth.power.facade.IFunEventFacade;
  7. import com.dragoninfo.dcuc.authweb.restcontroller.auth.vo.AppFunInfoVo;
  8. import com.dragoninfo.duceap.core.response.Result;
  9. import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
  10. import com.dragonsoft.duceap.commons.util.tree.SimpleTreeNodeItemResolver;
  11. import com.dragonsoft.duceap.commons.util.tree.TreeNodeUtils;
  12. import com.dragonsoft.duceap.web.annotation.Permission;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiImplicitParam;
  15. import io.swagger.annotations.ApiImplicitParams;
  16. import io.swagger.annotations.ApiOperation;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.beans.BeanUtils;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.*;
  22. import java.util.ArrayList;
  23. import java.util.Iterator;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * 菜单功能信息
  28. *
  29. * @author Administrator
  30. */
  31. @Api(tags = {"授权模块-菜单管理接口"})
  32. @Permission(value = "power_config")
  33. @RestController
  34. @RequestMapping(value = "authsvr/v2/appfuninfo")
  35. public class AppFunInfoController {
  36. public static Logger logger = LoggerFactory.getLogger(AppFunInfoController.class);
  37. @Autowired
  38. private IAppFunInfoFacade iAppFunInfoFacade;
  39. @Autowired
  40. private IFunEventFacade iFunEventFacade;
  41. /**
  42. * 获取所有菜单信息列表
  43. *
  44. * @return
  45. */
  46. @ApiOperation(value = "获取所有菜单信息列表")
  47. @ApiImplicitParam(name = "appId", value = "应用id")
  48. @GetMapping(value = "/menuTreeList")
  49. public Result<List<Map<String, Object>>> getMenuTreeList(@RequestParam(value = "appId") String appId) {
  50. List<TreeInfoVO> funList = iAppFunInfoFacade.getAllTreeList(appId);
  51. List<Map<String, Object>> maps = TreeNodeUtils.generateTree(funList, new SimpleTreeNodeItemResolver("code", "pid"));
  52. for (Map<String, Object> map : maps) {
  53. List children = (List) map.get("children");
  54. if (CollectionUtils.isNotEmpty(children)) {
  55. map.put("isParent", true);
  56. }
  57. }
  58. return Result.success(maps);
  59. }
  60. @ApiOperation(value = "根据id获取应用的菜单")
  61. @ApiImplicitParams({@ApiImplicitParam(paramType = "path", name = "id", value = "菜单ID", required = true
  62. , example = "40288a8b699fc2500169a33b20540000")})
  63. @GetMapping(value = "/menuCode/{id}")
  64. public Result<List<AppFunInfoVo>> getMenuCode(@PathVariable("id") String codeId) {
  65. List<AppFunInfo> resultList = iAppFunInfoFacade.getCode(codeId);
  66. List<AppFunInfoVo> vos = new ArrayList<>();
  67. for (AppFunInfo source : resultList) {
  68. AppFunInfoVo vo = new AppFunInfoVo();
  69. BeanUtils.copyProperties(source, vo);
  70. vos.add(vo);
  71. }
  72. return Result.success(vos);
  73. }
  74. /**
  75. * 获取菜单、功能初始化
  76. *
  77. * @param
  78. * @return
  79. */
  80. @ApiOperation(value = "根据id获取应用的菜单")
  81. @ApiImplicitParam(name = "appId", value = "应用id")
  82. @GetMapping(value = "/menu/{appId}")
  83. public Result<List<Map<String, Object>>> getMenu(@PathVariable("appId") String appId) {
  84. //获取该应用的所有节点
  85. List<TreeInfoVO> appAllTreeList = iAppFunInfoFacade.getAllTreeList(appId);
  86. for (TreeInfoVO treeInfoVO : appAllTreeList) {
  87. getPreterMission(treeInfoVO);
  88. }
  89. List<Map<String, Object>> maps = TreeNodeUtils.generateTree(appAllTreeList, new SimpleTreeNodeItemResolver("code", "pid"));
  90. for (Map<String, Object> map : maps) {
  91. List children = (List) map.get("children");
  92. if (CollectionUtils.isNotEmpty(children)) {
  93. map.put("isParent", true);
  94. }
  95. }
  96. return Result.success(maps);
  97. }
  98. public List<TreeInfoVO> getChildTreeObjects(List<TreeInfoVO> list,
  99. String parentCode) {
  100. List<TreeInfoVO> returnList = new ArrayList<TreeInfoVO>();
  101. for (Iterator<TreeInfoVO> iterator = list.iterator(); iterator
  102. .hasNext(); ) {
  103. TreeInfoVO treeInfoVo = iterator.next();
  104. //获取指定parentCode节点的子节点列表
  105. String treePid = null;
  106. if (null == treeInfoVo.getPid()) {
  107. treePid = "";
  108. } else {
  109. treePid = treeInfoVo.getPid();
  110. }
  111. //获取指定parentCode节点的子节点列表
  112. if (parentCode.equals(treePid)) {
  113. //递归获取当前节点的子节点
  114. recursionFn(list, treeInfoVo);
  115. getPreterMission(treeInfoVo);
  116. returnList.add(treeInfoVo);
  117. }
  118. }
  119. return returnList;
  120. }
  121. public void recursionFn(List<TreeInfoVO> list, TreeInfoVO t) {
  122. //获取子节点列表
  123. List<TreeInfoVO> childsList = getChildList(list, t);
  124. // 设置子节点列表
  125. t.setChildren(childsList);
  126. for (TreeInfoVO nextChild : childsList) {
  127. // 判断子节点是否有子节点
  128. if (hasChild(list, nextChild)) {
  129. // 有子节点,递归获取
  130. recursionFn(list, nextChild);
  131. /*
  132. Iterator<TreeInfoVO> it = childsList.iterator();
  133. while (it.hasNext()) {
  134. TreeInfoVO node = it.next();
  135. //递归获取子节点
  136. recursionFn(list, node);
  137. }
  138. */
  139. }
  140. getPreterMission(nextChild);
  141. }
  142. }
  143. public static List<TreeInfoVO> getChildList(List<TreeInfoVO> list, TreeInfoVO t) {
  144. List<TreeInfoVO> childsList = new ArrayList<TreeInfoVO>();
  145. Iterator<TreeInfoVO> it = list.iterator();
  146. while (it.hasNext()) {
  147. TreeInfoVO child = it.next();
  148. if (t.getId().equals(child.getPid())) {
  149. childsList.add(child);
  150. }
  151. }
  152. return childsList;
  153. }
  154. public static boolean hasChild(List<TreeInfoVO> list, TreeInfoVO t) {
  155. return getChildList(list, t).size() > 0;
  156. }
  157. /**
  158. * 组装菜单按钮
  159. *
  160. * @param nextChild
  161. */
  162. public void getPreterMission(TreeInfoVO nextChild) {
  163. List<EventInfoVO> eventInfoVOList = iFunEventFacade.getEventByTreeId(nextChild.getId());
  164. String pretermission = "";
  165. for (EventInfoVO eventInfoVO : eventInfoVOList) {
  166. pretermission += "&nbsp;&nbsp;<input name='" + nextChild.getId() + "' type='checkbox' flag='common' value='" + eventInfoVO.getId() + "' />" + eventInfoVO.getName() + "";
  167. }
  168. nextChild.setDesc(pretermission);
  169. }
  170. }