PageService.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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("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. Object objectVisible = map.get("visible");
  33. String stringVisible = objectVisible.toString();
  34. boolean visible = stringVisible.equals("0") || stringVisible.equals("1");
  35. tempMap.put("visible", visible);
  36. switch (menuType) {
  37. case "menu": // 菜单
  38. tempMap.put("url", (String) map.get("url"));
  39. tempMap.put("schemaApi", (String) map.get("path"));
  40. break;
  41. case "dir":
  42. break;
  43. case "link":
  44. tempMap.put("link", (String) map.get("path"));
  45. break;
  46. }
  47. retList.add(tempMap);
  48. }
  49. return retList;
  50. }
  51. // 转换tree结构数据
  52. private List<Map<String, Object>> treeMenu(List<Map<String, Object>> renderMenu){
  53. // 处理的数据存在
  54. List<Map<String, Object>> pList = new ArrayList<Map<String, Object>>();// eTree
  55. // 获取父节点
  56. for (Map<String, Object> tmp : renderMenu) {
  57. Object parentId = tmp.get("parent_id");
  58. String stringParentId = parentId.toString();// 上级id
  59. Object dataId = tmp.get("id");
  60. String stringDataId = dataId.toString();// 主键id
  61. if (stringParentId.equals("0")) {
  62. // 组装子节点,开始循环去获取子节点
  63. List<?> children = menuChild(stringDataId, renderMenu);
  64. if(children == null || children.size() == 0) {
  65. tmp.put("leaf", true); // 如果不存在子元素
  66. } else {
  67. tmp.put("children", children); // 存在子元素,则添加
  68. }
  69. pList.add(tmp);
  70. }
  71. }
  72. return pList;
  73. }
  74. /**
  75. * 处理子节点
  76. * @param id
  77. * @param data
  78. * @return
  79. */
  80. private List<?> menuChild(String id, List<Map<String, Object>> data) {
  81. List<Object> lists = new ArrayList<Object>();
  82. for (Map<String, Object> map : data) {
  83. Object parentId = map.get("parent_id");
  84. String stringParentId = parentId.toString(); // 上级id
  85. Object dataId = map.get("id");
  86. String stringDataId = dataId.toString(); // 主键id
  87. if (stringParentId.equals(id)) {
  88. // 组装子节点,开始循环去获取子节点
  89. List<?> children = menuChild(stringDataId, data);
  90. if(children == null || children.size() == 0) {
  91. map.put("leaf", true); // 如果不存在子元素
  92. } else {
  93. map.put("children", children); // 存在子元素,则添加
  94. }
  95. lists.add(map);
  96. }
  97. }
  98. return lists;
  99. }
  100. }