PageService.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package com.roma.romaapi.service;
  2. import com.roma.romaapi.dao.PageDao;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import java.util.*;
  6. @Service
  7. public class PageService {
  8. @Autowired
  9. PageDao pageDao; // 引入dao层
  10. public Map getPageJsonByCode(String pageCode){
  11. Map ret = pageDao.dbQueryForMap(pageCode);
  12. return ret;
  13. }
  14. // 整理返回菜单
  15. public List menu(){
  16. List<Map<String, Object>> menuData = pageDao.getMenuForList(); // 获取全部菜单数据
  17. List<Map<String, Object>> renderMenu = this.renderMenu(menuData);// 根据选项渲染节点内容
  18. List<Map<String, Object>> treeMenu = this.treeMenu(renderMenu); // 生成树结构
  19. return treeMenu;
  20. }
  21. // 渲染节点内容
  22. private List<Map<String, Object>> renderMenu(List<Map<String, Object>> menuData){
  23. List<Map<String, Object>> retList = new ArrayList<Map<String, Object>>();
  24. for (int i = 0; i < menuData.size(); i++) {
  25. Map map = menuData.get(i);
  26. String menuType = (String) map.get("object_type");
  27. Map tempMap = new HashMap<>();
  28. tempMap.put("id", map.get("id"));
  29. tempMap.put("parent_id", map.get("parent_id"));
  30. tempMap.put("label", (String) map.get("label"));
  31. tempMap.put("icon", (String) map.get("icon"));
  32. boolean visible = true;
  33. if (!map.containsKey("is_visible")) {
  34. } else {
  35. Object objectVisible = map.get("is_visible");
  36. String stringVisible = objectVisible.toString();
  37. visible = stringVisible.equals("1");
  38. }
  39. tempMap.put("visible", visible);
  40. switch (menuType) {
  41. case "page": // 菜单
  42. // 判断,如果是menu,但是value是空的,即path.则表名为目录,且不需要添加url和path
  43. String path = (String) map.get("path");
  44. if(path == null || path.equals("")) {
  45. } else {
  46. tempMap.put("url", (String) map.get("url"));
  47. tempMap.put("schemaApi", "/page/"+path);
  48. }
  49. break;
  50. case "dir":
  51. break;
  52. case "link":
  53. tempMap.put("link", (String) map.get("path"));
  54. break;
  55. }
  56. retList.add(tempMap);
  57. }
  58. return retList;
  59. }
  60. // 转换tree结构数据
  61. private List<Map<String, Object>> treeMenu(List<Map<String, Object>> renderMenu){
  62. // 处理的数据存在
  63. List<Map<String, Object>> pList = new ArrayList<Map<String, Object>>();// eTree
  64. // 获取父节点
  65. for (Map<String, Object> tmp : renderMenu) {
  66. Object parentId = tmp.get("parent_id");
  67. String stringParentId = parentId.toString();// 上级id
  68. Object dataId = tmp.get("id");
  69. String stringDataId = dataId.toString();// 主键id
  70. if (stringParentId.equals("0")) {
  71. // 组装子节点,开始循环去获取子节点
  72. List<?> children = menuChild(stringDataId, renderMenu);
  73. if(children == null || children.size() == 0) {
  74. tmp.put("leaf", true); // 如果不存在子元素
  75. } else {
  76. tmp.put("children", children); // 存在子元素,则添加
  77. }
  78. pList.add(tmp);
  79. }
  80. }
  81. return pList;
  82. }
  83. /**
  84. * 处理子节点
  85. * @param id
  86. * @param data
  87. * @return
  88. */
  89. private List<?> menuChild(String id, List<Map<String, Object>> data) {
  90. List<Object> lists = new ArrayList<Object>();
  91. for (Map<String, Object> map : data) {
  92. Object parentId = map.get("parent_id");
  93. String stringParentId = parentId.toString(); // 上级id
  94. Object dataId = map.get("id");
  95. String stringDataId = dataId.toString(); // 主键id
  96. if (stringParentId.equals(id)) {
  97. // 组装子节点,开始循环去获取子节点
  98. List<?> children = menuChild(stringDataId, data);
  99. if(children == null || children.size() == 0) {
  100. map.put("leaf", true); // 如果不存在子元素
  101. } else {
  102. map.put("children", children); // 存在子元素,则添加
  103. }
  104. lists.add(map);
  105. }
  106. }
  107. return lists;
  108. }
  109. }