274 lines
11 KiB
Java
274 lines
11 KiB
Java
![]() |
package com.cim.idm.controller;
|
||
|
|
||
|
import com.alibaba.fastjson.JSONArray;
|
||
|
import com.alibaba.fastjson.JSONObject;
|
||
|
import com.cim.idm.framework.IDMFrameServiceProxy;
|
||
|
import com.cim.idm.response.BaseResponse;
|
||
|
import com.cim.idm.response.RespGenerator;
|
||
|
import com.cim.idm.service.QueryService;
|
||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||
|
import org.springframework.web.bind.annotation.RestController;
|
||
|
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.HashMap;
|
||
|
import java.util.List;
|
||
|
import java.util.Map;
|
||
|
import java.util.stream.Collectors;
|
||
|
|
||
|
@RestController
|
||
|
@EnableAutoConfiguration
|
||
|
@RequestMapping("/menu")
|
||
|
public class MenuController {
|
||
|
|
||
|
@Autowired
|
||
|
private QueryService queryServiceImpl;
|
||
|
|
||
|
@RequestMapping(value = "/getHierarchicalMenuOfPermission", method = RequestMethod.POST)
|
||
|
public BaseResponse<Map<String, Object>> getHierarchicalMenuOfPermission(@RequestBody Map<String,Object> param)
|
||
|
{
|
||
|
|
||
|
String queryId = param.get("queryId").toString();
|
||
|
String version = param.get("version").toString();
|
||
|
Map bindMap = (Map) param.get("params");
|
||
|
|
||
|
String userId = bindMap.get("USERID")== null ? null : bindMap.get("USERID").toString();
|
||
|
String platform = bindMap.get("PLATFORM")== null ? null : bindMap.get("PLATFORM").toString();
|
||
|
|
||
|
Map<String, Object> hashMap = new HashMap<String,Object> ();
|
||
|
hashMap.put("USERID", userId);
|
||
|
hashMap.put("PLATFORM", platform);
|
||
|
|
||
|
JSONObject head = new JSONObject(true);
|
||
|
try {
|
||
|
|
||
|
List<Map<String,Object>> mapList = queryServiceImpl.getQueryResult(queryId, version, hashMap);
|
||
|
// 使用Stream API按"SUPERMENUID"分组
|
||
|
Map<Object, List<Map<String, Object>>> groupedBySuperMenuId = mapList.stream()
|
||
|
.collect(Collectors.groupingBy(
|
||
|
map -> map.get("SUPERMENUID")
|
||
|
));
|
||
|
|
||
|
String superMenuId = "root";
|
||
|
List<Map<String,Object>> map1List = groupedBySuperMenuId.getOrDefault(superMenuId, new ArrayList<>());
|
||
|
JSONArray headArray = new JSONArray();
|
||
|
|
||
|
for (Map<String, Object> map1 : map1List) {
|
||
|
JSONObject boday = new JSONObject(true);
|
||
|
formatter(map1, boday);
|
||
|
|
||
|
superMenuId = map1.get("MENUID").toString();
|
||
|
List<Map<String,Object>> map2List = groupedBySuperMenuId.getOrDefault(superMenuId, new ArrayList<>());
|
||
|
JSONArray jsonArray1 = new JSONArray();
|
||
|
for (Map<String, Object> map2 : map2List) {
|
||
|
JSONObject detail1 = new JSONObject(true);
|
||
|
formatter(map2, detail1);
|
||
|
|
||
|
superMenuId = map2.get("MENUID").toString();
|
||
|
List<Map<String,Object>> map3List = groupedBySuperMenuId.getOrDefault(superMenuId, new ArrayList<>());
|
||
|
JSONArray jsonArray2 = new JSONArray();
|
||
|
for (Map<String, Object> map3 : map3List) {
|
||
|
JSONObject detail2 = new JSONObject(true);
|
||
|
formatter(map3, detail2);
|
||
|
jsonArray2.add(detail2);
|
||
|
}
|
||
|
detail1.put("children", jsonArray2);
|
||
|
jsonArray1.add(detail1);
|
||
|
}
|
||
|
boday.put("children", jsonArray1);
|
||
|
headArray.add(boday);
|
||
|
}
|
||
|
head.put("menuList", headArray);
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
BaseResponse returnOK = RespGenerator.returnOK(head);
|
||
|
return returnOK;
|
||
|
}
|
||
|
|
||
|
|
||
|
private void formatter(Map<String, Object> map, JSONObject detail) {
|
||
|
detail.put("id", map.get("MENUID"));
|
||
|
detail.put("parentId", map.get("SUPERMENUID"));
|
||
|
detail.put("routeName", map.get("ROUTENAME"));
|
||
|
detail.put("routePath", map.get("ROUTEPATH"));
|
||
|
detail.put("componentPath", map.get("COMPONENTPATH"));
|
||
|
detail.put("menuName", map.get("MENUNAME"));
|
||
|
detail.put("leafFlag", map.get("LEAFFLAG"));
|
||
|
detail.put("hiddenFlag", map.get("HIDDENFLAG"));
|
||
|
detail.put("cacheFlag", map.get("CACHEFLAG"));
|
||
|
detail.put("platform", map.get("PLATFORM"));
|
||
|
detail.put("icon", map.get("ICON"));
|
||
|
}
|
||
|
|
||
|
@RequestMapping(value = "/getHierarchicalMenuWithCheck", method = RequestMethod.POST)
|
||
|
public BaseResponse<Map<String, Object>> getHierarchicalMenuWithCheck(@RequestBody Map<String,Object> param)
|
||
|
{
|
||
|
|
||
|
String queryId = param.get("queryId").toString();
|
||
|
String version = param.get("version").toString();
|
||
|
Map bindMap = (Map) param.get("params");
|
||
|
|
||
|
String userGroupName = bindMap.get("USERGROUPNAME")== null ? null : bindMap.get("USERGROUPNAME").toString();
|
||
|
Map<String, Object> hashMap = new HashMap<String,Object> ();
|
||
|
hashMap.put("USERGROUPNAME", userGroupName);
|
||
|
|
||
|
JSONObject head = new JSONObject(true);
|
||
|
try {
|
||
|
List<Map<String,Object>> mapList = queryServiceImpl.getQueryResult(queryId, version, hashMap);
|
||
|
// 使用Stream API按"SUPERMENUID"分组
|
||
|
Map<Object, List<Map<String, Object>>> groupedBySuperMenuId = mapList.stream()
|
||
|
.collect(Collectors.groupingBy(
|
||
|
map -> map.get("SUPERMENUID")
|
||
|
));
|
||
|
|
||
|
head.put("menuList", groupedBySuperMenuId);
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
BaseResponse returnOK = RespGenerator.returnOK(head);
|
||
|
return returnOK;
|
||
|
}
|
||
|
|
||
|
@RequestMapping(value = "/getHierarchicalMenu", method = RequestMethod.POST)
|
||
|
public BaseResponse<Map<String, Object>> getHierarchicalMenu(@RequestBody Map<String,Object> param)
|
||
|
{
|
||
|
|
||
|
String queryId = param.get("queryId").toString();
|
||
|
String version = param.get("version").toString();
|
||
|
Map bindMap = (Map) param.get("params");
|
||
|
|
||
|
String userId = bindMap.get("USERID")== null ? null : bindMap.get("USERID").toString();
|
||
|
Map<String, Object> hashMap = new HashMap<String,Object> ();
|
||
|
hashMap.put("USERID", userId);
|
||
|
|
||
|
JSONObject head = new JSONObject(true);
|
||
|
try {
|
||
|
|
||
|
List<Map<String,Object>> mapList = queryServiceImpl.getQueryResult(queryId, version, hashMap);
|
||
|
// 使用Stream API按"SUPERMENUID"分组
|
||
|
Map<Object, List<Map<String, Object>>> groupedBySuperMenuId = mapList.stream()
|
||
|
.collect(Collectors.groupingBy(
|
||
|
map -> map.get("SUPERMENUID")
|
||
|
));
|
||
|
|
||
|
String superMenuId = "root";
|
||
|
List<Map<String,Object>> map1List = groupedBySuperMenuId.getOrDefault(superMenuId, new ArrayList<>());
|
||
|
JSONArray headArray = new JSONArray();
|
||
|
|
||
|
for (Map<String, Object> map1 : map1List) {
|
||
|
JSONObject boday = new JSONObject(true);
|
||
|
JSONArray jsonArray = new JSONArray();
|
||
|
formatter(map1, boday);
|
||
|
|
||
|
superMenuId = map1.get("MENUID").toString();
|
||
|
List<Map<String, Object>> map2List = groupedBySuperMenuId.getOrDefault(superMenuId, new ArrayList<>());
|
||
|
JSONArray jsonArray1 = new JSONArray();
|
||
|
for (Map<String, Object> map2 : map2List) {
|
||
|
JSONObject detail1 = new JSONObject(true);
|
||
|
formatter(map2, detail1);
|
||
|
|
||
|
superMenuId = map2.get("MENUID").toString();
|
||
|
List<Map<String, Object>> map3List = groupedBySuperMenuId.getOrDefault(superMenuId, new ArrayList<>());
|
||
|
JSONArray jsonArray2 = new JSONArray();
|
||
|
for (Map<String, Object> map3 : map3List) {
|
||
|
JSONObject detail2 = new JSONObject(true);
|
||
|
formatter(map3, detail2);
|
||
|
jsonArray2.add(detail2);
|
||
|
}
|
||
|
detail1.put("children", jsonArray2);
|
||
|
jsonArray1.add(detail1);
|
||
|
}
|
||
|
boday.put("children", jsonArray1);
|
||
|
headArray.add(boday);
|
||
|
}
|
||
|
head.put("menuList", headArray);
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
}
|
||
|
BaseResponse returnOK = RespGenerator.returnOK(head);
|
||
|
return returnOK;
|
||
|
}
|
||
|
|
||
|
@RequestMapping(value = "/addMenu", method = RequestMethod.POST)
|
||
|
public BaseResponse<Map<String, Object>> addMenu(@RequestBody Map<String,Object> param){
|
||
|
|
||
|
String id = (String)param.get("id");
|
||
|
String parentId = (String)param.get("parentId");
|
||
|
if(parentId == null) {
|
||
|
parentId = "root";
|
||
|
}
|
||
|
String routeName = (String)param.get("routeName");
|
||
|
String routePath = (String)param.get("routePath");
|
||
|
String menuName = (String)param.get("menuName");
|
||
|
String componentPath = (String)param.get("componentPath");
|
||
|
Integer leafFlag = (Integer)param.get("leafFlag");
|
||
|
Integer hiddenFlag = (Integer)param.get("hiddenFlag");
|
||
|
Integer cacheFlag = (Integer)param.get("cacheFlag");
|
||
|
String icon = (String)param.get("icon");
|
||
|
String platform = (String)param.get("platform");
|
||
|
|
||
|
String checkDuplicateSql = "SELECT COUNT(*) FROM menu WHERE menuid = ?";
|
||
|
Long count = IDMFrameServiceProxy.getSqlTemplate().queryForObject(checkDuplicateSql, Long.class, id);
|
||
|
if(count > 0) {
|
||
|
BaseResponse returnError = RespGenerator.returnError("该数据已存在!");
|
||
|
return returnError;
|
||
|
}
|
||
|
|
||
|
String sql = "INSERT INTO menu (menuid, supermenuid, routename, routepath, componentpath, " +
|
||
|
"menuname, leafflag, hiddenflag, cacheflag, platform, icon) " +
|
||
|
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||
|
|
||
|
Object[] args = new Object[]{id, parentId, routeName, routePath, componentPath,
|
||
|
menuName, leafFlag, hiddenFlag, cacheFlag, platform, icon};
|
||
|
|
||
|
IDMFrameServiceProxy.getSqlTemplate().update(sql, args);
|
||
|
BaseResponse returnOK = RespGenerator.returnOK(param);
|
||
|
return returnOK;
|
||
|
|
||
|
}
|
||
|
|
||
|
@RequestMapping(value = "/editMenu", method = RequestMethod.POST)
|
||
|
public BaseResponse<Map<String, Object>> editMenu(@RequestBody Map<String,Object> param){
|
||
|
|
||
|
String id = (String)param.get("id");
|
||
|
String parentId = (String)param.get("parentId");
|
||
|
String routeName = (String)param.get("routeName");
|
||
|
String routePath = (String)param.get("routePath");
|
||
|
String menuName = (String)param.get("menuName");
|
||
|
String componentPath = (String)param.get("componentPath");
|
||
|
Integer leafFlag = (Integer)param.get("leafFlag");
|
||
|
Integer hiddenFlag = (Integer)param.get("hiddenFlag");
|
||
|
Integer cacheFlag = (Integer)param.get("cacheFlag");
|
||
|
String icon = (String)param.get("icon");
|
||
|
String platform = (String)param.get("platform");
|
||
|
|
||
|
String sql = "UPDATE menu " +
|
||
|
"SET supermenuid = ?, routename = ?, routepath = ?, componentpath = ?, " +
|
||
|
"menuname = ?, leafflag = ?, hiddenflag = ?, cacheflag = ?, icon = ?, platform = ? " +
|
||
|
"WHERE menuid = ?";
|
||
|
|
||
|
Object[] args = new Object[]{parentId, routeName, routePath, componentPath,
|
||
|
menuName, leafFlag, hiddenFlag, cacheFlag, icon, platform, id};
|
||
|
|
||
|
IDMFrameServiceProxy.getSqlTemplate().update(sql, args);
|
||
|
BaseResponse returnOK = RespGenerator.returnOK(param);
|
||
|
return returnOK;
|
||
|
|
||
|
}
|
||
|
|
||
|
@RequestMapping(value = "/deleteMenu", method = RequestMethod.POST)
|
||
|
public BaseResponse<Map<String, Object>> deleteMenu(@RequestBody Map<String,Object> param)
|
||
|
{
|
||
|
String id = (String)param.get("id");
|
||
|
String sql = "DELETE FROM menu WHERE MENUID = ?";
|
||
|
IDMFrameServiceProxy.getSqlTemplate().update(sql, id);
|
||
|
BaseResponse returnOK = RespGenerator.returnOK(param);
|
||
|
return returnOK;
|
||
|
}
|
||
|
|
||
|
}
|