优化了获取角色权限的方法
This commit is contained in:
parent
9eb7ffbe02
commit
ecfe26d708
|
|
@ -58,6 +58,32 @@ public class CeneterOutboundControlelr {
|
||||||
@Resource
|
@Resource
|
||||||
private IWmsModelService wmsModelService;
|
private IWmsModelService wmsModelService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IRoleButtonMapService roleButtonMapService ;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IMenuButtonService menuButtonService;
|
||||||
|
|
||||||
|
@GetMapping("idGenery")
|
||||||
|
public ApiResult<Long> idGenery() {
|
||||||
|
return ApiResult.success(IdUtil.getSnowflakeNextId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("initrole")
|
||||||
|
public ApiResult<Void> initRole() {
|
||||||
|
List<RoleButtonMap> roleButtonMaps = new ArrayList<>();
|
||||||
|
List<MenuButton> menuButtons = menuButtonService.list();
|
||||||
|
for (MenuButton menuButton : menuButtons) {
|
||||||
|
RoleButtonMap roleButtonMap = new RoleButtonMap();
|
||||||
|
roleButtonMap.setRoleId(1L);
|
||||||
|
roleButtonMap.setId(IdUtil.getSnowflakeNextId());
|
||||||
|
roleButtonMap.setButtonId(menuButton.getId());
|
||||||
|
|
||||||
|
roleButtonMaps.add(roleButtonMap);
|
||||||
|
}
|
||||||
|
roleButtonMapService.saveBatch(roleButtonMaps);
|
||||||
|
return ApiResult.success();
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("syncData")
|
@GetMapping("syncData")
|
||||||
public ApiResult<Void> syncData(@RequestParam String orderId) {
|
public ApiResult<Void> syncData(@RequestParam String orderId) {
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,8 @@ public class MenuControllerService {
|
||||||
private IMenuButtonApiMapService menuButtonApiMapService;
|
private IMenuButtonApiMapService menuButtonApiMapService;
|
||||||
|
|
||||||
public List<MenuAuthorizeVO> getMenuForAuthorize(Long roleId) {
|
public List<MenuAuthorizeVO> getMenuForAuthorize(Long roleId) {
|
||||||
return menuService.getMenuForAuthorize(roleId);
|
return menuService.getNodeForAuthorize(roleId);
|
||||||
|
// return menuService.getMenuForAuthorize(roleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IPage<MenuVO> searchMenu(@Valid MenuSearchQO request) {
|
public IPage<MenuVO> searchMenu(@Valid MenuSearchQO request) {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import lombok.experimental.Accessors;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
public class UserAddQO{
|
public class UserAddQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户名称
|
* 用户名称
|
||||||
|
|
@ -39,7 +39,7 @@ public class UserAddQO{
|
||||||
/**
|
/**
|
||||||
* 部门id
|
* 部门id
|
||||||
*/
|
*/
|
||||||
@NotBlank
|
@NotNull
|
||||||
private Long deptId;
|
private Long deptId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -62,12 +62,10 @@ public class UserAddQO{
|
||||||
/**
|
/**
|
||||||
* 初始化密码后是否强制要求登录后重设密码
|
* 初始化密码后是否强制要求登录后重设密码
|
||||||
*/
|
*/
|
||||||
@NotNull
|
|
||||||
private Boolean enableMustResetPwd;
|
private Boolean enableMustResetPwd;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认语言
|
* 默认语言
|
||||||
*/
|
*/
|
||||||
@NotBlank
|
|
||||||
private String languageCode;
|
private String languageCode;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,8 @@ public class MenuAuthorizeVO {
|
||||||
|
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
//名称
|
//名称
|
||||||
|
|
@ -22,6 +24,8 @@ public class MenuAuthorizeVO {
|
||||||
//是否已授权
|
//是否已授权
|
||||||
private Boolean selected;
|
private Boolean selected;
|
||||||
|
|
||||||
|
//排序
|
||||||
|
private Short sort;
|
||||||
//下级
|
//下级
|
||||||
private List<MenuAuthorizeVO> children;
|
private List<MenuAuthorizeVO> children;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package com.nflg.wms.repository.mapper;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.nflg.wms.common.pojo.vo.ButtonVO;
|
import com.nflg.wms.common.pojo.vo.ButtonVO;
|
||||||
|
import com.nflg.wms.common.pojo.vo.MenuAuthorizeVO;
|
||||||
import com.nflg.wms.repository.entity.Menu;
|
import com.nflg.wms.repository.entity.Menu;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -19,4 +20,6 @@ public interface MenuMapper extends BaseMapper<Menu> {
|
||||||
List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId);
|
List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId);
|
||||||
|
|
||||||
Boolean menuIsSelected(Long roleId, Long menuId);
|
Boolean menuIsSelected(Long roleId, Long menuId);
|
||||||
|
|
||||||
|
List<MenuAuthorizeVO> getAllDataForAuthorize(Long roleId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,4 +38,6 @@ public interface IMenuService extends IService<Menu> {
|
||||||
void enableMenu(@Valid EnableMenuQO request);
|
void enableMenu(@Valid EnableMenuQO request);
|
||||||
|
|
||||||
List<ButtonVO> getButtonsByMenuId(Long userId, @Valid @NotNull Long menuId);
|
List<ButtonVO> getButtonsByMenuId(Long userId, @Valid @NotNull Long menuId);
|
||||||
|
|
||||||
|
List<MenuAuthorizeVO> getNodeForAuthorize(Long roleId);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,12 +54,46 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||||
.eq(Menu::getEnable, true)
|
.eq(Menu::getEnable, true)
|
||||||
.list();
|
.list();
|
||||||
List<MenuAuthorizeVO> vos = datas.stream()
|
List<MenuAuthorizeVO> vos = datas.stream()
|
||||||
.map(d -> new MenuAuthorizeVO().setType(1).setId(d.getId()).setKey("menu-"+d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId())))
|
.map(d -> new MenuAuthorizeVO().setType(1).setId(d.getId()).setKey("menu-" + d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId())))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
vos.forEach(v -> bindMenuChildren(roleId, v));
|
vos.forEach(v -> bindMenuChildren(roleId, v));
|
||||||
return vos;
|
return vos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<MenuAuthorizeVO> getNodeForAuthorize(Long roleId) {
|
||||||
|
List<MenuAuthorizeVO> nodes = baseMapper.getAllDataForAuthorize(roleId);
|
||||||
|
List<MenuAuthorizeVO> rootNodes = nodes.stream().filter(v ->
|
||||||
|
v.getType() == 1 && v.getParentId() == 0
|
||||||
|
).toList();
|
||||||
|
for (MenuAuthorizeVO node : rootNodes) {
|
||||||
|
List<MenuAuthorizeVO> childNodes = getChildNode(node.getId(), nodes);
|
||||||
|
if (CollectionUtil.isNotEmpty(childNodes)) {
|
||||||
|
node.setChildren(new ArrayList<>());
|
||||||
|
node.getChildren().addAll(childNodes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// rootNodes.sort(Comparator.comparing(MenuAuthorizeVO::getSort));
|
||||||
|
return rootNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<MenuAuthorizeVO> getChildNode(Long parentId, List<MenuAuthorizeVO> nodes) {
|
||||||
|
List<MenuAuthorizeVO> rootNodes = nodes.stream().filter(v -> v.getParentId().equals(parentId)
|
||||||
|
).toList();
|
||||||
|
if (CollectionUtil.isNotEmpty(rootNodes)) {
|
||||||
|
for (MenuAuthorizeVO node : rootNodes) {
|
||||||
|
List<MenuAuthorizeVO> childNodes = getChildNode(node.getId(), nodes);
|
||||||
|
if (CollectionUtil.isNotEmpty(childNodes)) {
|
||||||
|
node.setChildren(new ArrayList<>());
|
||||||
|
node.getChildren().addAll(childNodes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// rootNodes.sort(Comparator.comparing(MenuAuthorizeVO::getSort));
|
||||||
|
return rootNodes;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<MenuVO> search(MenuSearchQO request) {
|
public IPage<MenuVO> search(MenuSearchQO request) {
|
||||||
if (StrUtil.isBlank(request.getName())) {
|
if (StrUtil.isBlank(request.getName())) {
|
||||||
|
|
@ -146,19 +180,19 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void enableMenu(EnableMenuQO request) {
|
public void enableMenu(EnableMenuQO request) {
|
||||||
if (request.isEnable()){
|
if (request.isEnable()) {
|
||||||
enable(request.getIds());
|
enable(request.getIds());
|
||||||
}else {
|
} else {
|
||||||
disable(request.getIds());
|
disable(request.getIds());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId) {
|
public List<ButtonVO> getButtonsByMenuId(Long userId, Long menuId) {
|
||||||
return baseMapper.getButtonsByMenuId(userId,menuId);
|
return baseMapper.getButtonsByMenuId(userId, menuId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void disable(List<Long> ids){
|
private void disable(List<Long> ids) {
|
||||||
if (CollectionUtil.isNotEmpty(ids)) {
|
if (CollectionUtil.isNotEmpty(ids)) {
|
||||||
lambdaUpdate()
|
lambdaUpdate()
|
||||||
.set(Menu::getEnable, false)
|
.set(Menu::getEnable, false)
|
||||||
|
|
@ -176,7 +210,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enable(List<Long> ids){
|
private void enable(List<Long> ids) {
|
||||||
lambdaUpdate()
|
lambdaUpdate()
|
||||||
.set(Menu::getEnable, true)
|
.set(Menu::getEnable, true)
|
||||||
.set(Menu::getUpdateBy, UserUtil.getUserName())
|
.set(Menu::getUpdateBy, UserUtil.getUserName())
|
||||||
|
|
@ -250,7 +284,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||||
}
|
}
|
||||||
|
|
||||||
private Boolean menuIsSelected(Long roleId, Long menuId) {
|
private Boolean menuIsSelected(Long roleId, Long menuId) {
|
||||||
return baseMapper.menuIsSelected(roleId,menuId);
|
return baseMapper.menuIsSelected(roleId, menuId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<MenuVO> getChildren(Long parentId) {
|
private List<MenuVO> getChildren(Long parentId) {
|
||||||
|
|
@ -265,7 +299,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||||
private void bindMenuChildren(Long roleId, MenuAuthorizeVO menu) {
|
private void bindMenuChildren(Long roleId, MenuAuthorizeVO menu) {
|
||||||
List<Menu> datas = lambdaQuery().eq(Menu::getParentId, menu.getId()).eq(Menu::getEnable, true).list();
|
List<Menu> datas = lambdaQuery().eq(Menu::getParentId, menu.getId()).eq(Menu::getEnable, true).list();
|
||||||
if (CollectionUtil.isNotEmpty(datas)) {
|
if (CollectionUtil.isNotEmpty(datas)) {
|
||||||
List<MenuAuthorizeVO> vos = datas.stream().map(d -> new MenuAuthorizeVO().setType(1).setId(d.getId()).setKey("menu-"+d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId()))).collect(Collectors.toList());
|
List<MenuAuthorizeVO> vos = datas.stream().map(d -> new MenuAuthorizeVO().setType(1).setId(d.getId()).setKey("menu-" + d.getId()).setName(d.getName()).setSelected(menuIsSelected(roleId, d.getId()))).collect(Collectors.toList());
|
||||||
menu.setChildren(vos);
|
menu.setChildren(vos);
|
||||||
vos.forEach(v -> bindMenuChildren(roleId, v));
|
vos.forEach(v -> bindMenuChildren(roleId, v));
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -276,7 +310,7 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||||
.orderByAsc(MenuButton::getId)
|
.orderByAsc(MenuButton::getId)
|
||||||
.list();
|
.list();
|
||||||
menu.setChildren(vos.stream()
|
menu.setChildren(vos.stream()
|
||||||
.map(d -> new MenuAuthorizeVO().setType(2).setId(d.getId()).setKey("button-"+d.getId()).setName(d.getName()).setSelected(buttonIsSelected(roleId, d.getId())))
|
.map(d -> new MenuAuthorizeVO().setType(2).setId(d.getId()).setKey("button-" + d.getId()).setName(d.getName()).setSelected(buttonIsSelected(roleId, d.getId())))
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,4 +19,29 @@
|
||||||
WHERE menu_id = #{menuId}
|
WHERE menu_id = #{menuId}
|
||||||
AND role_id = #{roleId})
|
AND role_id = #{roleId})
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getAllDataForAuthorize" resultType="com.nflg.wms.common.pojo.vo.MenuAuthorizeVO">
|
||||||
|
select id,
|
||||||
|
parent_id,
|
||||||
|
"name",
|
||||||
|
CONCAT('menu-', id) as key,
|
||||||
|
sort,
|
||||||
|
1 as type,
|
||||||
|
case when b.menu_id is null then false else true end as selected
|
||||||
|
from menu a
|
||||||
|
left join (select menu_id from role_menu_map where role_id = #{roleId}) b on a.id = b.menu_id
|
||||||
|
where "enable" = true
|
||||||
|
UNION
|
||||||
|
select id,
|
||||||
|
menu_id,
|
||||||
|
"name",
|
||||||
|
CONCAT('button-', id) as key,
|
||||||
|
sort,
|
||||||
|
2 as type,
|
||||||
|
case when b.button_id is null then false else true end as selected
|
||||||
|
from menu_button a
|
||||||
|
left join (select button_id from role_button_map where role_id = #{roleId}) b on a.id = b.button_id
|
||||||
|
where "enable" = true
|
||||||
|
order by sort;
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue