diff --git a/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/action/buipubbpc1/BuiMenuNavAction.java b/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/action/buipubbpc1/BuiMenuNavAction.java index c8d0bc37..0c5d7724 100644 --- a/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/action/buipubbpc1/BuiMenuNavAction.java +++ b/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/action/buipubbpc1/BuiMenuNavAction.java @@ -1,5 +1,6 @@ package com.murong.ecp.netpay.mbu.web.pub.action.buipubbpc1; +import com.alibaba.fastjson.JSON; import com.murong.ecp.netpay.mbu.web.common.utils.*; import com.murong.ecp.netpay.mbu.web.pub.common.PUBUtils; import com.murong.ecp.netpay.mbu.web.pub.dal.dao.BuiMenuMapper; @@ -7,6 +8,7 @@ import com.murong.ecp.netpay.mbu.web.pub.dal.entity.BuiMenuDO; import com.murong.ecp.netpay.mbu.web.pub.model.BuiMenuDTO; import com.murong.ecp.netpay.mbu.web.pub.model.BuiMenuNavRspBO; import com.murong.ecp.netpay.mbu.web.pub.model.BuiOperDTO; +import com.yuangou.ecp.biz.transengine.sqlsession.YGPageEntity; import com.yuangou.ecp.bp.core.common.exception.YGException; import com.yuangou.ecp.bp.core.common.message.YGBizMessage; import com.yuangou.ecp.bp.core.common.message.YGBizMessageContext; @@ -14,10 +16,12 @@ import com.yuangou.ecp.bp.core.common.message.YGEDB; import com.yuangou.ecp.bp.core.common.yglog4j.Logger; import com.yuangou.ecp.bp.core.common.yglog4j.YGLogger; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.*; /** * 菜单管理管理服务 @@ -45,9 +49,42 @@ public class BuiMenuNavAction extends BaseAction { buiOperDTO.setOperId(buiOperDTO.getOperId()); + YGPageEntity pageEntity = new YGPageEntity(); + pageEntity.setPag_no(1); + pageEntity.setLimit(9999); + BuiMenuDO menuDO = new BuiMenuDO(); + List list = buiMenuMapper.selectPage(pageEntity, menuDO); + + List list2 = PUBUtils.menuProc1(list); + List list1 = buiMenuMapper.selectByOperId(buiOperDTO.getOperId()); - BuiMenuNavRspBO rspBO = PUBUtils.menuProc(list1); + Set authMenuIdSet = new HashSet(); + for( BuiMenuDO menuDO1: list1 ) { + authMenuIdSet.add(menuDO1.getMenuId()); + } + + Set permissions = new HashSet(); + for( BuiMenuDO menuDO1: list1 ) { + String perms = menuDO1.getPerms(); + if (StringUtils.isNotBlank(perms)) { + String[] values = StringUtils.split(perms, ","); + for (String value : values) { + if (!permissions.contains(value)) { + permissions.add(value); + } + } + } + } + + walkMenuTree(list2, authMenuIdSet); + + msgLog.info("list2:" + JSON.toJSONString(list2)); + + BuiMenuNavRspBO rspBO = new BuiMenuNavRspBO(); + rspBO.setMenulist(list2); + rspBO.setPermissions(StringUtils.join(permissions, "|")); + ResultT resultT = new ResultT(); resultT.setMsgCod(CommonMessageCode.SUCC); @@ -56,5 +93,28 @@ public class BuiMenuNavAction extends BaseAction { return resultT; } + private boolean walkMenuTree(List list, Set authMenuIdSet) { + boolean flag = false; + + for( Iterator iter = list.iterator(); iter.hasNext(); ) { + BuiMenuDTO menuDTO = (BuiMenuDTO)iter.next(); + if( authMenuIdSet.contains(menuDTO.getMenuId())) { + menuDTO.setFlag("Y"); + flag = true; + } + if( !menuDTO.getList().isEmpty() ) { + boolean flag1 = walkMenuTree(menuDTO.getList(), authMenuIdSet); + if( flag1 ) { + menuDTO.setFlag("Y"); + flag = true; + } + } + if( "N".equals(menuDTO.getFlag())) { + iter.remove(); + } + } + return flag; + } + } diff --git a/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/common/PUBUtils.java b/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/common/PUBUtils.java index a0a610d9..119895ff 100644 --- a/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/common/PUBUtils.java +++ b/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/common/PUBUtils.java @@ -26,6 +26,45 @@ import java.util.List; * copyright @2018 北京沐融信息科技股份有限公司 */ public class PUBUtils { + public static List menuProc1(List menus) + throws YGException { + + List list = new ArrayList(); + + for (BuiMenuDO menuDO : menus) { + Long menuId = menuDO.getMenuId(); + Long parentId = menuDO.getParentId(); + if (2 == menuDO.getType()) { + continue; + } + BuiMenuDTO menuDTO = new BuiMenuDTO(); + BeanUtils.copyProperties(menuDO, menuDTO); + if( "0".equals(menuDTO.getMenuId())) { + list.add(menuDTO); + continue; + } + + BuiMenuDTO parentMenuDTO = getParentMenuDTO(list, parentId); + if (parentMenuDTO == null) { + BuiMenuDO parentMenuDO = geParentMenuDO(menus, parentId); + if (parentMenuDO == null) { + // root + list.add(menuDTO); + continue; + } else { + parentMenuDTO = new BuiMenuDTO(); + BeanUtils.copyProperties(parentMenuDO, parentMenuDTO); + list.add(parentMenuDTO); + } + } + + List list1 = parentMenuDTO.getList(); + list1.add(menuDTO); + } + + return list; + } + /** * 菜单处理 * diff --git a/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/model/BuiMenuDTO.java b/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/model/BuiMenuDTO.java index 788174e5..109d0440 100644 --- a/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/model/BuiMenuDTO.java +++ b/ecp-mbu-web/src/main/java/com/murong/ecp/netpay/mbu/web/pub/model/BuiMenuDTO.java @@ -45,6 +45,10 @@ public class BuiMenuDTO extends BaseDO { * 授权(多个用逗号分隔,如:user:list,user:create) */ private String perms = ""; + /** + * 是否有权限 + */ + private String flag = "N"; /** * 类型 0:目录 1:菜单 2:按钮 */ @@ -140,4 +144,12 @@ public class BuiMenuDTO extends BaseDO { public void setList(List list) { this.list = list; } + + public String getFlag() { + return flag; + } + + public void setFlag(String flag) { + this.flag = flag; + } } diff --git a/ecp-mbu-web/src/main/resources/app/mbu/etc/pub/mapper/BuiMenuMapper.xml b/ecp-mbu-web/src/main/resources/app/mbu/etc/pub/mapper/BuiMenuMapper.xml index 0f968f2e..320d192d 100644 --- a/ecp-mbu-web/src/main/resources/app/mbu/etc/pub/mapper/BuiMenuMapper.xml +++ b/ecp-mbu-web/src/main/resources/app/mbu/etc/pub/mapper/BuiMenuMapper.xml @@ -141,4 +141,5 @@ delete from t_bui_menu where menu_id in (select menu_id from t_bui_menu start with menu_id=${menuId} connect by prior menu_id = parent_id) +