Commit fb2286ad by zhangxingmin

Merge remote-tracking branch 'origin/dev' into prod

parents 1ca2959a f436f64d
......@@ -6,8 +6,10 @@ import com.yd.user.api.service.ApiRelProjectRoleService;
import com.yd.user.feign.client.relprojectrole.ApiRelProjectRoleFeignClient;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListAddRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleMenuListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleMenuListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
......@@ -15,6 +17,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 项目-角色关系信息(项目管理-角色配置)
......@@ -41,6 +44,16 @@ public class ApiRelProjectRoleController implements ApiRelProjectRoleFeignClient
}
/**
* 项目角色关系菜单列表查询
* @param request
* @return
*/
@Override
public Result<ApiRelProjectRoleMenuListPageResponse> list(ApiRelProjectRoleMenuListPageRequest request) {
return apiRelProjectRoleService.list(request);
}
/**
* 添加项目和角色列表关系
* @param request
* @return
......
......@@ -4,14 +4,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListAddRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleMenuListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleMenuListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse;
public interface ApiRelProjectRoleService {
Result<IPage<ApiRelProjectRoleListPageResponse>> page(ApiRelProjectRoleListPageRequest request);
Result<ApiRelProjectRoleMenuListPageResponse> list(ApiRelProjectRoleMenuListPageRequest request);
Result addRoleList(ApiRelProjectRoleListAddRequest request);
Result del(Long id);
......
......@@ -5,14 +5,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.ResultCode;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.TreeUtils;
import com.yd.user.api.service.ApiRelProjectRoleService;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListAddRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleMenuListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleMenuListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleListPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuTreeListResponse;
import com.yd.user.service.model.RelProjectRole;
import com.yd.user.service.model.RelTenantRole;
import com.yd.user.service.service.IRelProjectRoleService;
......@@ -21,6 +26,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
......@@ -44,6 +50,45 @@ public class ApiRelProjectRoleServiceImpl implements ApiRelProjectRoleService {
}
/**
* 项目角色关系菜单列表查询
* @param request
* @return
*/
@Override
public Result<ApiRelProjectRoleMenuListPageResponse> list(ApiRelProjectRoleMenuListPageRequest request) {
ApiRelProjectRoleMenuListPageResponse response = new ApiRelProjectRoleMenuListPageResponse();
// 查询角色列表
List<ApiRelProjectRoleListPageResponse> roleList = iRelProjectRoleService.list(request.getRelProjectRoleIdList());
response.setRoleList(roleList);
// 查询多个角色绑定合集菜单列表
List<ApiSysMenuDetailResponse> menuDetailResponseList = iRelProjectRoleService.menuList(request.getRelProjectRoleIdList());
// 根据 menuBizId 去重
List<ApiSysMenuDetailResponse> treeMenu = new ArrayList<>();
if (!CollectionUtils.isEmpty(menuDetailResponseList)) {
List<ApiSysMenuDetailResponse> distinctMenuList = menuDetailResponseList.stream()
.collect(Collectors.toMap(
ApiSysMenuDetailResponse::getMenuBizId,
menu -> menu,
(existing, replacement) -> existing // 保留第一个
))
.values().stream()
.sorted(Comparator.comparing(ApiSysMenuDetailResponse::getOrderNum, Comparator.nullsLast(Integer::compareTo)))
.collect(Collectors.toList());
//构建菜单树形结构
treeMenu = TreeUtils.buildTree(
distinctMenuList,
ApiSysMenuDetailResponse::getMenuBizId, // 获取节点ID
ApiSysMenuDetailResponse::getParentBizId, // 获取父节点ID
(parent, children) -> parent.setChildren(children), // 设置子节点
"0" // 根节点的父ID值
);
}
response.setMenuList(treeMenu);
return Result.success(response);
}
/**
* 添加项目和角色列表关系
* @param request
* @return
......
......@@ -5,7 +5,9 @@ import com.yd.common.result.Result;
import com.yd.user.feign.fallback.relprojectrole.ApiRelProjectRoleFeignFallbackFactory;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListAddRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleMenuListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleMenuListPageResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -13,6 +15,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 用户服务:项目-角色关系信息Feign客户端
......@@ -29,6 +32,14 @@ public interface ApiRelProjectRoleFeignClient {
Result page(@Validated @RequestBody ApiRelProjectRoleListPageRequest request);
/**
* 项目角色关系菜单列表查询
* @param request
* @return
*/
@PostMapping("/menu/list")
Result<ApiRelProjectRoleMenuListPageResponse> list(@Validated @RequestBody ApiRelProjectRoleMenuListPageRequest request);
/**
* 添加项目和角色列表关系
* @param request
* @return
......
......@@ -4,11 +4,15 @@ import com.yd.common.result.Result;
import com.yd.user.feign.client.relprojectrole.ApiRelProjectRoleFeignClient;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListAddRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleMenuListPageRequest;
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleMenuListPageResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 用户服务:项目-角色关系信息Feign降级处理
*/
......@@ -24,6 +28,11 @@ public class ApiRelProjectRoleFeignFallbackFactory implements FallbackFactory<Ap
}
@Override
public Result<ApiRelProjectRoleMenuListPageResponse> list(ApiRelProjectRoleMenuListPageRequest request) {
return null;
}
@Override
public Result addRoleList(ApiRelProjectRoleListAddRequest request) {
return null;
}
......
package com.yd.user.feign.request.relprojectrole;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiRelProjectRoleMenuListPageRequest {
/**
* 租户项目角色ID列表
*/
@NotEmpty(message = "租户项目角色ID列表不能为空")
private List<Long> relProjectRoleIdList;
}
......@@ -14,6 +14,11 @@ public class ApiRelProjectRoleListPageResponse {
private Long id;
/**
* 租户唯一标识(业务ID)
*/
private String tenantBizId;
/**
* 项目ID(业务id)
*/
private String projectBizId;
......
package com.yd.user.feign.response.relprojectrole;
import com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse;
import lombok.Data;
import java.util.List;
@Data
public class ApiRelProjectRoleMenuListPageResponse {
/**
* 租户项目角色列表
*/
private List<ApiRelProjectRoleListPageResponse> roleList;
/**
* 租户项目角色菜单列表(角色菜单合并集)
*/
private List<ApiSysMenuDetailResponse> menuList;
}
......@@ -2,6 +2,7 @@ package com.yd.user.feign.response.sysmenu;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* 获取菜单详情出参
......@@ -9,9 +10,6 @@ import java.time.LocalDateTime;
@Data
public class ApiSysMenuDetailResponse {
/**
* 菜单主键id
*/
private Long id;
/**
......@@ -20,14 +18,24 @@ public class ApiSysMenuDetailResponse {
private String menuBizId;
/**
* 父菜单ID
*/
private String parentBizId;
/**
* 父ID(树绑定的父id, 展示作用)
*/
private String parentId;
/**
* 父菜单ID
* 所属租户名称
*/
private String parentBizId;
private String tenantName;
/**
* 所属项目名称
*/
private String projectName;
/**
* 菜单名称
......@@ -35,6 +43,16 @@ public class ApiSysMenuDetailResponse {
private String menuName;
/**
* 菜单背景图片
*/
private String menuBgImage;
/**
* 菜单背景颜色
*/
private String menuBgColor;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
private Integer menuType;
......@@ -65,6 +83,21 @@ public class ApiSysMenuDetailResponse {
private String icon;
/**
* 图标背景颜色
*/
private String iconBgColor;
/**
* 图标颜色
*/
private String iconColor;
/**
* 模块类型
*/
private String moudleType;
/**
* 是否外链(0:否 1:是)
*/
private Integer isExternal;
......@@ -80,6 +113,11 @@ public class ApiSysMenuDetailResponse {
private Integer isVisible;
/**
* 是否登录(0-否 1-是)
*/
private Integer isLogin;
/**
* 菜单编码
*/
private String menuCode;
......@@ -110,21 +148,11 @@ public class ApiSysMenuDetailResponse {
private String tenantBizId;
/**
* 所属租户名称
*/
private String tenantName;
/**
* 所属项目ID(业务id)
*/
private String projectBizId;
/**
* 所属项目名称
*/
private String projectName;
/**
* 通用备注
*/
private String remark;
......@@ -153,4 +181,10 @@ public class ApiSysMenuDetailResponse {
* 更新时间
*/
private LocalDateTime updateTime;
/**
* 子节点
*/
private List<ApiSysMenuDetailResponse> children;
}
......@@ -10,9 +10,12 @@ import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageRespon
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleListPageResponse;
import com.yd.user.feign.response.reltenantrole.ApiRelTenantRoleSelectPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse;
import com.yd.user.service.model.RelProjectRole;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) Mapper 接口
......@@ -26,6 +29,10 @@ public interface RelProjectRoleMapper extends BaseMapper<RelProjectRole> {
IPage<ApiRelProjectRoleListPageResponse> page(@Param("page") IPage<ApiRelProjectRoleListPageResponse> page,
@Param("request") ApiRelProjectRoleListPageRequest request);
List<ApiRelProjectRoleListPageResponse> list(@Param("relProjectRoleIdList") List<Long> relProjectRoleIdList);
List<ApiSysMenuDetailResponse> menuList(@Param("relProjectRoleIdList") List<Long> relProjectRoleIdList);
/**
* 导入-选择角色分页查询(查询当前项目级(当前所属项目绑定的角色)或者系统级(全局角色在任何地方都适用导入绑定)的角色表数据)
* @param page
......
......@@ -49,6 +49,18 @@ public class SysMenu implements Serializable {
private String menuName;
/**
* 菜单背景图片
*/
@TableField("menu_bg_image")
private String menuBgImage;
/**
* 菜单背景颜色
*/
@TableField("menu_bg_color")
private String menuBgColor;
/**
* 类型(1:目录 2:菜单 3:按钮)
*/
@TableField("menu_type")
......@@ -85,6 +97,24 @@ public class SysMenu implements Serializable {
private String icon;
/**
* 图标背景颜色
*/
@TableField("icon_bg_color")
private String iconBgColor;
/**
* 图标颜色
*/
@TableField("icon_color")
private String iconColor;
/**
* 模块类型
*/
@TableField("moudle_type")
private String moudleType;
/**
* 是否外链(0:否 1:是)
*/
@TableField("is_external")
......@@ -103,6 +133,12 @@ public class SysMenu implements Serializable {
private Integer isVisible;
/**
* 是否登录(0-否 1-是)
*/
@TableField("is_login")
private Integer isLogin;
/**
* 菜单编码
*/
@TableField("menu_code")
......
......@@ -6,10 +6,13 @@ import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse;
import com.yd.user.service.model.RelProjectRole;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.user.service.model.RelTenantRole;
import java.util.List;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) 服务类
......@@ -23,6 +26,10 @@ public interface IRelProjectRoleService extends IService<RelProjectRole> {
IPage<ApiRelProjectRoleListPageResponse> page(Page<ApiRelProjectRoleListPageResponse> page,
ApiRelProjectRoleListPageRequest request);
List<ApiRelProjectRoleListPageResponse> list(List<Long> relProjectRoleIdList);
List<ApiSysMenuDetailResponse> menuList(List<Long> relProjectRoleIdList);
IPage<ApiRelProjectRoleSelectPageResponse> selectProjectPage(Page<ApiRelProjectRoleSelectPageResponse> page,
ApiRelProjectRoleSelectPageRequest request);
......
......@@ -6,6 +6,7 @@ import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleListPageRequest
import com.yd.user.feign.request.relprojectrole.ApiRelProjectRoleSelectPageRequest;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse;
import com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleSelectPageResponse;
import com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse;
import com.yd.user.service.model.RelProjectRole;
import com.yd.user.service.dao.RelProjectRoleMapper;
import com.yd.user.service.service.IRelProjectRoleService;
......@@ -13,6 +14,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 项目-角色关系表(正常来说一对多,加关系表方便扩展) 服务实现类
......@@ -35,6 +38,16 @@ public class RelProjectRoleServiceImpl extends ServiceImpl<RelProjectRoleMapper,
return baseMapper.page(page,request);
}
@Override
public List<ApiRelProjectRoleListPageResponse> list(List<Long> relProjectRoleIdList) {
return this.baseMapper.list(relProjectRoleIdList);
}
@Override
public List<ApiSysMenuDetailResponse> menuList(List<Long> relProjectRoleIdList) {
return this.baseMapper.menuList(relProjectRoleIdList);
}
/**
* 导入-选择角色分页查询(查询当前项目级(当前所属项目绑定的角色)或者系统级(全局角色在任何地方都适用导入绑定)的角色表数据)
* @param request
......
......@@ -4,7 +4,7 @@
<select id="page" resultType="com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse">
select
rpr.id,rpr.project_biz_id,rpr.role_biz_id,
rpr.id,rpr.tenant_biz_id,rpr.project_biz_id,rpr.role_biz_id,
sr.role_name,sr.scope,sr.role_type
from rel_project_role rpr
inner join sys_role sr on sr.role_biz_id = rpr.role_biz_id and sr.is_deleted = 0
......@@ -39,4 +39,40 @@
and rpr.is_deleted = 0)
</where>
</select>
<select id="list" resultType="com.yd.user.feign.response.relprojectrole.ApiRelProjectRoleListPageResponse">
select
rpr.id,rpr.tenant_biz_id,rpr.project_biz_id,rpr.role_biz_id,
sr.role_name,sr.scope,sr.role_type
from rel_project_role rpr
inner join sys_role sr on sr.role_biz_id = rpr.role_biz_id and sr.is_deleted = 0
<where>
<if test="relProjectRoleIdList != null and relProjectRoleIdList.size > 0">
and rpr.id in
<foreach collection="relProjectRoleIdList" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and rpr.is_deleted = 0
</where>
</select>
<select id="menuList" resultType="com.yd.user.feign.response.sysmenu.ApiSysMenuDetailResponse">
select
sm.*
from rel_project_role rpr
inner join rel_role_menu rrm on rpr.role_biz_id = rrm.role_biz_id
and rpr.tenant_biz_id = rrm.tenant_biz_id and rpr.project_biz_id = rrm.project_biz_id and rrm.is_deleted = 0
inner join sys_menu sm on rrm.menu_biz_id = sm.menu_biz_id and sm.is_deleted = 0
<where>
<if test="relProjectRoleIdList != null and relProjectRoleIdList.size > 0">
and rpr.id in
<foreach collection="relProjectRoleIdList" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</if>
and rpr.is_deleted = 0
</where>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment