diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleMenuDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleMenuDAO.java index 7ee061ccb..d9faeaeb4 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleMenuDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/SysRoleMenuDAO.java @@ -1,7 +1,15 @@ package com.cool.store.dao; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; +import com.cool.store.entity.SysRoleMenuDO; +import com.cool.store.mapper.SysRoleMenuMapper; +import com.google.common.collect.Lists; import org.springframework.stereotype.Repository; +import javax.annotation.Resource; +import java.util.List; +import java.util.Objects; + /** * @author zhangchenbiao * @date 2023-05-19 03:01 @@ -9,4 +17,20 @@ import org.springframework.stereotype.Repository; @Repository public class SysRoleMenuDAO { + @Resource + private SysRoleMenuMapper sysRoleMenuMapper; + + /** + * 获取菜单 + * @param roleId + * @param platform + * @return + */ + public List getRoleMenuByRoleId(String roleId, String platform){ + if(Objects.isNull(roleId) || StringUtils.isBlank(platform)){ + return Lists.newArrayList(); + } + return sysRoleMenuMapper.getRoleMenuByRoleId(roleId, platform); + } + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java index 1dd78abc0..fb186ad9c 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/SysRoleMenuMapper.java @@ -3,6 +3,8 @@ package com.cool.store.mapper; import com.cool.store.entity.SysRoleMenuDO; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-19 03:01 @@ -22,4 +24,12 @@ public interface SysRoleMenuMapper { * dateTime:2023-05-19 03:01 */ int updateByPrimaryKeySelective(@Param("record") SysRoleMenuDO record); + + /** + * 根据角色获取菜单 + * @param roleId + * @param platform + * @return + */ + List getRoleMenuByRoleId(@Param("roleId")String roleId, @Param("platform")String platform); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml index 7f2e4bb07..89160a87b 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/SysRoleMenuMapper.xml @@ -4,7 +4,7 @@ - + @@ -50,4 +50,13 @@ where id = #{record.id} + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java index 3062621dd..7c85002d5 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/SysRoleMenuDO.java @@ -25,7 +25,7 @@ public class SysRoleMenuDO implements Serializable { private Long menuId; @ApiModelProperty("角色id") - private Long roleId; + private String roleId; @ApiModelProperty("菜单类型") private String platform; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java index 54143fe32..c5a8233fc 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MenuServiceImpl.java @@ -2,14 +2,20 @@ package com.cool.store.service.impl; import com.cool.store.constants.CommonConstants; import com.cool.store.dao.SysMenuDAO; +import com.cool.store.dao.SysRoleMenuDAO; import com.cool.store.entity.SysMenuDO; +import com.cool.store.entity.SysRoleMenuDO; +import com.cool.store.enums.MenuTypeEnum; import com.cool.store.enums.PlatFormTypeEnum; import com.cool.store.service.MenuService; import com.cool.store.vo.menu.MenuTreeVO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** * @author zhangchenbiao @@ -22,11 +28,35 @@ public class MenuServiceImpl implements MenuService { @Resource private SysMenuDAO sysMenuDAO; + @Resource + private SysRoleMenuDAO sysRoleMenuDAO; @Override public List getUserMenus(String userId, String roleId) { List menuList= sysMenuDAO.selectMenuAll(null, PlatFormTypeEnum.PC.getCode()); + List roleMenuList = sysRoleMenuDAO.getRoleMenuByRoleId(roleId, PlatFormTypeEnum.PC.getCode()); + List anthMenuIdList = menuList.stream().filter(o -> MenuTypeEnum.AUTH.getCode().equals(o.getMenuType())).map(SysMenuDO::getId).collect(Collectors.toList()); + List roleMenuIdList = roleMenuList.stream().map(SysRoleMenuDO::getMenuId).filter(anthMenuIdList::contains).collect(Collectors.toList()); + Set authMenuSet = new HashSet<>(); + //1倒推菜单列表 2.转换成树` + if (CollectionUtils.isEmpty(roleMenuIdList)) { + return new ArrayList<>(); + } + authMenuSet.addAll(roleMenuIdList); + Map idMap = menuList.stream().filter(a -> a.getId() != null && a.getParentId() != null).collect(Collectors.toMap(SysMenuDO::getId, SysMenuDO::getParentId)); + for (Long menuId : roleMenuIdList) { + getParentNode(menuId, idMap, authMenuSet); + } + menuList = menuList.stream().filter(data -> authMenuSet.contains(data.getId())).collect(Collectors.toList()); //根据角色获取菜单 return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList); } + + private void getParentNode(Long menuId, Map idMap, Set authMenuList) { + Long parentId = idMap.get(menuId); + authMenuList.add(parentId); + if (parentId!=null&&parentId != 0) { + getParentNode(parentId, idMap, authMenuList); + } + } } diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java index 1c3a6050b..ed5d8c3b6 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/SignValidateFilter.java @@ -51,7 +51,7 @@ public class SignValidateFilter implements Filter { "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**", "/partner/mini/program/oss/getUploadFileConfig", "/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo", - "/**/swagger*/**", "/**/webjars/**","/partner/mini/program/v1/partnerManage/openArea/areaApplyQuery"); + "/**/swagger*/**", "/**/webjars/**","/partner/mini/program/v1/partnerManage/openArea/areaApplyQuery", "/partner/mini/program/interview/appointment/submit"); /**