fix:修改菜单管理兼容多系统
This commit is contained in:
@@ -23,6 +23,10 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.ResultBean;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.sso.system.service.MenuService;
|
||||
import org.nl.sso.system.service.dto.MenuDto;
|
||||
import org.nl.sso.tools.SecurityUtils;
|
||||
@@ -33,6 +37,7 @@ import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -51,10 +56,16 @@ public class MenuController {
|
||||
|
||||
@GetMapping(value = "/build")
|
||||
@ApiOperation("根据用户获取菜单")
|
||||
public ResponseEntity<Object> buildMenus() {
|
||||
List<MenuDto> menuDtoList = menuService.findByUser(String.valueOf(SecurityUtils.getCurrentUserId()));
|
||||
public ResponseEntity<Object> buildMenus(@Validated String system_type) {
|
||||
//校验系统表是否存在该系统类型
|
||||
JSONObject systemDict = WQLObject.getWQLObject("sys_dict").query("code = 'system_type' and value = '" + system_type + "'").uniqueResult(0);
|
||||
if (systemDict == null || StringUtils.isEmpty(systemDict.getString("para1"))){
|
||||
throw new BadRequestException("获取对应的系统菜单不存在");
|
||||
}
|
||||
String pid = systemDict.getString("para1");
|
||||
List<MenuDto> menuDtoList = menuService.findByUser(String.valueOf(SecurityUtils.getCurrentUserId()),system_type);
|
||||
List<MenuDto> menuDtos = menuService.buildTree(menuDtoList);
|
||||
return new ResponseEntity<>(menuService.buildMenus(menuDtos),HttpStatus.OK);
|
||||
return new ResponseEntity<>(menuService.buildMenus(menuDtos,pid),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@ApiOperation("返回全部的菜单")
|
||||
@@ -89,6 +100,14 @@ public class MenuController {
|
||||
@ApiOperation("查询菜单")
|
||||
@SaCheckPermission("menu:list")
|
||||
public ResponseEntity<Object> pageQuery(@RequestParam Map whereJson, Pageable page) throws Exception {
|
||||
Object system_type = whereJson.get("system_type");
|
||||
if (system_type!=null && whereJson.get("pid") == null){
|
||||
JSONObject jsonObject = WQLObject.getWQLObject("sys_dict").query("code = 'system_type' and value = '" + system_type + "'").uniqueResult(0);
|
||||
if (jsonObject==null || jsonObject.getString("para1") ==null){
|
||||
throw new BadRequestException("字典表没有配置system_type系统相关参数");
|
||||
}
|
||||
whereJson.put("pid",jsonObject.getString("para1"));
|
||||
}
|
||||
JSONObject param = JSONObject.parseObject(JSON.toJSONString(whereJson));
|
||||
JSONObject menuDtoList = menuService.queryAll(param, page);
|
||||
return new ResponseEntity<>(menuDtoList, HttpStatus.OK);
|
||||
|
||||
@@ -100,7 +100,7 @@ public interface MenuService {
|
||||
* @param menuDtos /
|
||||
* @return /
|
||||
*/
|
||||
Object buildMenus(List<MenuDto> menuDtos);
|
||||
Object buildMenus(List<MenuDto> menuDtos,String pid);
|
||||
|
||||
|
||||
/**
|
||||
@@ -128,10 +128,10 @@ public interface MenuService {
|
||||
List<MenuDto> getSuperior(MenuDto menuDto, List<MenuDto> objects);
|
||||
|
||||
/**
|
||||
* 根据当前用户获取菜单
|
||||
* 根据当前用户对应系统菜单
|
||||
*
|
||||
* @param currentUserId /
|
||||
* @return /
|
||||
*/
|
||||
List<MenuDto> findByUser(String currentUserId);
|
||||
List<MenuDto> findByUser(String currentUserId,String system_type);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class MenuServiceImpl implements MenuService {
|
||||
|
||||
@Override
|
||||
public JSONObject queryAll(JSONObject param, Pageable page) throws Exception {
|
||||
JSONObject json = WQL.getWO("QSYS_MENU01").addParam("flag", "1").addParam("pid", param.getString("pid")).pageQuery(WqlUtil.getHttpContext(page), "");
|
||||
JSONObject json = WQL.getWO("QSYS_MENU01").addParam("flag", "1").addParam("system_type",param.getString("system_type")).addParam("pid", param.getString("pid")).pageQuery(WqlUtil.getHttpContext(page), "");
|
||||
|
||||
JSONArray content = json.getJSONArray("content");
|
||||
JSONArray res = new JSONArray();
|
||||
@@ -113,8 +113,8 @@ public class MenuServiceImpl implements MenuService {
|
||||
* @return /
|
||||
*/
|
||||
@Override
|
||||
public List<MenuDto> findByUser(String currentUserId) {
|
||||
JSONArray arr = WQL.getWO("QSYS_MENU01").addParam("flag", "4").addParam("user_id", String.valueOf(currentUserId)).process().getResultJSONArray(0);
|
||||
public List<MenuDto> findByUser(String currentUserId,String system_type) {
|
||||
JSONArray arr = WQL.getWO("QSYS_MENU01").addParam("flag", "4").addParam("user_id", String.valueOf(currentUserId)).addParam("system_type",system_type).process().getResultJSONArray(0);
|
||||
List<MenuDto> list = new ArrayList<>();
|
||||
for (int i = 0; i < arr.size(); i++) {
|
||||
JSONObject json = arr.getJSONObject(i);
|
||||
@@ -316,7 +316,7 @@ public class MenuServiceImpl implements MenuService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MenuVo> buildMenus(List<MenuDto> menuDtos) {
|
||||
public List<MenuVo> buildMenus(List<MenuDto> menuDtos,String pid) {
|
||||
List<MenuVo> list = new LinkedList<>();
|
||||
menuDtos.forEach(menuDTO -> {
|
||||
if (menuDTO != null) {
|
||||
@@ -324,13 +324,13 @@ public class MenuServiceImpl implements MenuService {
|
||||
MenuVo menuVo = new MenuVo();
|
||||
menuVo.setName(ObjectUtil.isNotEmpty(menuDTO.getComponent_name()) ? menuDTO.getComponent_name() : menuDTO.getTitle());
|
||||
// 一级目录需要加斜杠,不然会报警告
|
||||
menuVo.setPath(StrUtil.isEmpty(menuDTO.getPid()) ? "/" + menuDTO.getPath() : menuDTO.getPath());
|
||||
menuVo.setPath(pid.equals(menuDTO.getPid())? "/" + menuDTO.getPath() : menuDTO.getPath());
|
||||
menuVo.setHidden(menuDTO.getHidden());
|
||||
// 如果不是外链
|
||||
if (!menuDTO.getI_frame()) {
|
||||
if (StrUtil.isEmpty(menuDTO.getPid())) {
|
||||
if (pid.equals(menuDTO.getPid())) {
|
||||
menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "Layout" : menuDTO.getComponent());
|
||||
} else if (!StrUtil.isEmpty(menuDTO.getPid()) && menuDTO.getType() == 0) {
|
||||
} else if (!pid.equals(menuDTO.getPid()) && menuDTO.getType() == 0) {
|
||||
menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent()) ? "ParentView" : menuDTO.getComponent());
|
||||
|
||||
} else if (!StrUtil.isEmpty(menuDTO.getComponent())) {
|
||||
@@ -341,7 +341,7 @@ public class MenuServiceImpl implements MenuService {
|
||||
if (menuDtoList != null && menuDtoList.size() != 0) {
|
||||
menuVo.setAlwaysShow(true);
|
||||
menuVo.setRedirect("noredirect");
|
||||
menuVo.setChildren(buildMenus(menuDtoList));
|
||||
menuVo.setChildren(buildMenus(menuDtoList,pid));
|
||||
// 处理是一级菜单并且没有子菜单的情况
|
||||
} else if (StrUtil.isEmpty(menuDTO.getPid())) {
|
||||
MenuVo menuVo1 = new MenuVo();
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
输入.flag TYPEAS s_string
|
||||
输入.system_type TYPEAS s_string
|
||||
输入.category TYPEAS s_string
|
||||
输入.system_type TYPEAS s_string
|
||||
输入.user_id TYPEAS s_string
|
||||
输入.pid TYPEAS s_string
|
||||
|
||||
@@ -51,6 +52,9 @@
|
||||
FROM
|
||||
sys_menu
|
||||
where 1=1
|
||||
OPTION 输入.system_type <> ""
|
||||
system_type = 输入.system_type
|
||||
ENDOPTION
|
||||
OPTION 输入.pid <> ""
|
||||
pid = 输入.pid
|
||||
ENDOPTION
|
||||
@@ -105,6 +109,7 @@
|
||||
sys_menu
|
||||
WHERE
|
||||
type <> '2'
|
||||
and system_type = 输入.system_type
|
||||
and
|
||||
menu_id IN (
|
||||
SELECT
|
||||
|
||||
Reference in New Issue
Block a user