李兴辉 8fdb3d0e90 init
2025-03-10 13:46:51 +08:00

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;
}
}