From 6129a283ad5497bc23dce42b84d95567ca7fde8f Mon Sep 17 00:00:00 2001 From: houjishuang <46269784@qq.com> Date: Wed, 11 Jun 2025 16:46:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BB=E9=99=86=E4=BB=A3=E7=A0=81=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../menu/controller/SysMenuController.java | 6 +++ .../ebtp/project/menu/dao/SysMenuMapper.java | 3 ++ .../project/menu/dao/mapper/SysMenuMapper.xml | 27 +++++++++- .../project/menu/dto/BaseFuncTabulation.java | 43 ++++++++++++++++ .../project/menu/dto/BaseRoleTabulation.java | 45 ++++++++++++++++ .../project/menu/service/ISysMenuService.java | 3 ++ .../menu/service/impl/SysMenuServiceImpl.java | 51 +++++++++++++++++++ .../project/menu/vo/RoleTabulationVo.java | 50 ++++++++++++++++++ 8 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseFuncTabulation.java create mode 100644 src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseRoleTabulation.java create mode 100644 src/main/java/com/coscoshipping/ebtp/project/menu/vo/RoleTabulationVo.java diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/controller/SysMenuController.java b/src/main/java/com/coscoshipping/ebtp/project/menu/controller/SysMenuController.java index 7976a8d..bff6d54 100644 --- a/src/main/java/com/coscoshipping/ebtp/project/menu/controller/SysMenuController.java +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/controller/SysMenuController.java @@ -4,6 +4,7 @@ package com.coscoshipping.ebtp.project.menu.controller; import com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants; import com.chinaunicom.mall.ebtp.common.base.controller.BaseController; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; +import com.coscoshipping.ebtp.project.menu.dto.BaseRoleTabulation; import com.coscoshipping.ebtp.project.menu.entity.SysMenu; import com.coscoshipping.ebtp.project.menu.service.ISysMenuService; import org.apache.commons.lang3.StringUtils; @@ -126,4 +127,9 @@ public class SysMenuController extends BaseController } return BaseResponse.success(menuService.deleteMenuById(menuId)); } + @GetMapping(value = "/expert/role/menu") + public BaseResponse> getBaseRoleTabulation(@RequestParam String userId) + { + return BaseResponse.success(menuService.getBaseRoleTabulation(userId)); + } } diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/dao/SysMenuMapper.java b/src/main/java/com/coscoshipping/ebtp/project/menu/dao/SysMenuMapper.java index bd28b5a..4e7a284 100644 --- a/src/main/java/com/coscoshipping/ebtp/project/menu/dao/SysMenuMapper.java +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/dao/SysMenuMapper.java @@ -1,6 +1,7 @@ package com.coscoshipping.ebtp.project.menu.dao; import com.coscoshipping.ebtp.project.menu.entity.SysMenu; +import com.coscoshipping.ebtp.project.menu.vo.RoleTabulationVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -122,4 +123,6 @@ public interface SysMenuMapper * @return 结果 */ public SysMenu checkMenuNameUnique(@Param("menuName") String menuName, @Param("parentId") Long parentId); + + List getBaseRoleTabulation(String userId); } diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/dao/mapper/SysMenuMapper.xml b/src/main/java/com/coscoshipping/ebtp/project/menu/dao/mapper/SysMenuMapper.xml index 1e2d03d..f47ba68 100644 --- a/src/main/java/com/coscoshipping/ebtp/project/menu/dao/mapper/SysMenuMapper.xml +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/dao/mapper/SysMenuMapper.xml @@ -131,8 +131,31 @@ where menu_name=#{menuName} and parent_id = #{parentId} limit 1 - - + + + update sys_menu menu_name = #{menuName}, diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseFuncTabulation.java b/src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseFuncTabulation.java new file mode 100644 index 0000000..30a474d --- /dev/null +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseFuncTabulation.java @@ -0,0 +1,43 @@ +package com.coscoshipping.ebtp.project.menu.dto; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** +* 实体类 BaseFunc-菜单功能表 +* +* @author yss +*/ +@Data +@Accessors(chain = true) +@ApiModel(value = "菜单列表", description = "菜单列表") +public class BaseFuncTabulation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "索引id") + private String id; + + @ApiModelProperty(value = "父id.表内关联") + private String pid; + + @ApiModelProperty(value = "功能名") + private String name; + + @ApiModelProperty(value = "链接地址.即iframe内页的地址") + private String url; + + @ApiModelProperty(value = "排序") + private Integer sort; + + @ApiModelProperty(value = "子菜单") + List baseFuncTabulationList; + +} diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseRoleTabulation.java b/src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseRoleTabulation.java new file mode 100644 index 0000000..396a13f --- /dev/null +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/dto/BaseRoleTabulation.java @@ -0,0 +1,45 @@ +package com.coscoshipping.ebtp.project.menu.dto; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** +* 实体类 BaseRole-角色表 +* +* @author yss +*/ +@Data +@Accessors(chain = true) +@ApiModel(value = "BaseRole对象", description = "角色列表表") +public class BaseRoleTabulation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "id") + private String id; + + @ApiModelProperty(value = "角色名称") + private String name; + + @ApiModelProperty(value = "") + private String intro; + + @ApiModelProperty(value = "角色标识") + private String tag; + + @ApiModelProperty(value = "序号") + private Integer sort; + + @ApiModelProperty(value = "菜单列表") + List baseFuncTabulationList; + + @ApiModelProperty(value = "菜单列表") + List funcList; +} diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/service/ISysMenuService.java b/src/main/java/com/coscoshipping/ebtp/project/menu/service/ISysMenuService.java index 2288f23..0ee433c 100644 --- a/src/main/java/com/coscoshipping/ebtp/project/menu/service/ISysMenuService.java +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/service/ISysMenuService.java @@ -1,6 +1,7 @@ package com.coscoshipping.ebtp.project.menu.service; +import com.coscoshipping.ebtp.project.menu.dto.BaseRoleTabulation; import com.coscoshipping.ebtp.project.menu.entity.SysMenu; import com.coscoshipping.ebtp.project.menu.entity.TreeSelect; @@ -145,4 +146,6 @@ public interface ISysMenuService * @return 结果 */ public boolean checkMenuNameUnique(SysMenu menu); + + List getBaseRoleTabulation(String userId); } diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/service/impl/SysMenuServiceImpl.java b/src/main/java/com/coscoshipping/ebtp/project/menu/service/impl/SysMenuServiceImpl.java index cfc58c9..58a631b 100644 --- a/src/main/java/com/coscoshipping/ebtp/project/menu/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/service/impl/SysMenuServiceImpl.java @@ -1,9 +1,13 @@ package com.coscoshipping.ebtp.project.menu.service.impl; +import cn.hutool.core.bean.BeanUtil; import com.coscoshipping.ebtp.project.menu.dao.SysMenuMapper; +import com.coscoshipping.ebtp.project.menu.dto.BaseFuncTabulation; +import com.coscoshipping.ebtp.project.menu.dto.BaseRoleTabulation; import com.coscoshipping.ebtp.project.menu.entity.SysMenu; import com.coscoshipping.ebtp.project.menu.entity.TreeSelect; import com.coscoshipping.ebtp.project.menu.service.ISysMenuService; +import com.coscoshipping.ebtp.project.menu.vo.RoleTabulationVo; import com.coscoshipping.ebtp.project.role.dao.SysRoleMapper; import com.coscoshipping.ebtp.project.role.dao.SysRoleMenuMapper; import com.coscoshipping.ebtp.project.role.entity.SysRole; @@ -535,4 +539,51 @@ public class SysMenuServiceImpl implements ISysMenuService // return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" }, // new String[] { "", "", "", "/", "/" }); // } + + @Override + public List getBaseRoleTabulation(String userId){ + + List roleTabulationVoList = menuMapper.getBaseRoleTabulation(userId); + + List brlist = new ArrayList<>(); + roleTabulationVoList.forEach(ft->{ + BaseRoleTabulation br = new BaseRoleTabulation(); + BeanUtil.copyProperties(ft, br); + brlist.add(br); + }); + + List diBrlist = brlist.stream().distinct().collect(Collectors.toList()); + + diBrlist.forEach(dbr->{ + List bfList = getRoleTabulationVo(roleTabulationVoList,dbr.getId(),"0"); + //dbr.setBaseFuncTabulationList(bfList); + List funcList = bfList.stream().map(BaseFuncTabulation::getUrl).distinct().collect(Collectors.toList()); + dbr.setFuncList(funcList); + }); + + return diBrlist; + } + public List getRoleTabulationVo(List list,String id,String pid){ + List bfList = new ArrayList<>(); + List pIdVoList = list.stream().filter(r->r.getId().equals(id)&&pid.equals(r.getPid())).distinct().collect(Collectors.toList()); + + if(pIdVoList!=null&&pIdVoList.size()>0){ + pIdVoList.forEach(p->{ + BaseFuncTabulation bf = new BaseFuncTabulation(); + bf.setId(p.getFuncId()); + bf.setName(p.getFuncName()); + bf.setPid(p.getPid()); + bf.setUrl(p.getUrl()); + bf.setSort(Integer.valueOf(p.getFuncSort())); + + List bbfList = getRoleTabulationVo(list,id,bf.getId()); + + bf.setBaseFuncTabulationList(bbfList); + bfList.add(bf); + }); + return bfList; + }else{ + return bfList; + } + } } diff --git a/src/main/java/com/coscoshipping/ebtp/project/menu/vo/RoleTabulationVo.java b/src/main/java/com/coscoshipping/ebtp/project/menu/vo/RoleTabulationVo.java new file mode 100644 index 0000000..428f71f --- /dev/null +++ b/src/main/java/com/coscoshipping/ebtp/project/menu/vo/RoleTabulationVo.java @@ -0,0 +1,50 @@ +package com.coscoshipping.ebtp.project.menu.vo; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +/** +* 实体类 BaseRole-角色表 +* +* @author yss +*/ +@Data +@Accessors(chain = true) +@ApiModel(value = "BaseRole对象", description = "角色列表表") +public class RoleTabulationVo implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId + @ApiModelProperty(value = "id") + private String id; + + @ApiModelProperty(value = "角色名称") + private String name; + + @ApiModelProperty(value = "角色标识") + private String tag; + + @ApiModelProperty(value = "序号") + private Integer sort; + + @ApiModelProperty(value = "菜单id") + private String funcId; + + @ApiModelProperty(value = "菜单pid") + private String pid; + + @ApiModelProperty(value = "菜单名称") + private String funcName; + + @ApiModelProperty(value = "菜单路径") + private String url; + + @ApiModelProperty(value = "菜单序号") + private String funcSort; +}