【无标题】


@ApiOperation(value = "根据用户获取角色数据")
@GetMapping("/toAssign/{userId}")
public Result toAssign(@PathVariable Long userId) {
    Map<String, Object> roleMap = sysRoleService.findRoleByAdminId(userId);
    return Result.ok(roleMap);
}

 

@ApiOperation(value = "根据用户分配角色")
@PostMapping("/doAssign")
public Result doAssign(@RequestBody AssginRoleVo assginRoleVo) {
    sysRoleService.doAssign(assginRoleVo);
    return Result.ok();

service接口实现

操作类:SysRoleServiceImpl

@Autowired

private SysUserRoleServices sysUserRoleServices;

@Autowired

private SysUserRoleMapper sysUserRoleMapper;

//获取用户的角色
@Override
public Map<String, Object> getUserRole(Integer id) {
    

    //获取所有角色
    List<SysRole> sysRoleList = baseMapper.selectList(null);
 //用户的角色列表
 List<SysUserRole> sysUserRolesList = mapper/service.selectList(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, id));
    //获取用户角色id的集合
    List<Long> roleIdList = sysUserRolesList.stream().map(obj -> obj.getRoleId()).collect(Collectors.toList());

    //获取用户分配的角色信息
    List<SysRole> assignList = new ArrayList<>();
    for (SysRole sysRole : sysRoleList) {
        if(roleIdList.contains(sysRole.getId()))
        assignList.add(sysRole);
    }
    Map<String ,Object> map = new HashMap<>();
    //用户分配到的角色
    map.put("assignList",assignList);
    //全部的角色
    map.put("sysRoleList",sysRoleList);
    return map;
}


 
@Transactional
@Override
public void doAssign(AssginRoleVo assginRoleVo) {

//1删除之前用户角色

    sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, assginRoleVo.getUserId()));
 
    for(Long roleId : assginRoleVo.getRoleIdList()) {

如果空跳出循环
        if(StringUtils.isEmpty(roleId)) continue;
        SysUserRole userRole = new SysUserRole();
        userRole.setUserId(assginRoleVo.getUserId());
        userRole.setRoleId(roleId);
        sysUserRoleMapper.insert(userRole);  --save
    }

 }

 


@Transactional
@Override
public void updateStatus(Long id, Integer status) {
   SysUser sysUser = this.getById(id);
   if(status.intValue() == 1) {
      sysUser.setStatus(status);
   } else {
      sysUser.setStatus(0);
   }
   this.updateById(sysUser);
}
}

菜单

@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {

    @Autowired
    SysRoleMenuService sysRoleMenuService;
    @Override
    public List<SysMenu> findNodes() {
        List<SysMenu> menuList = baseMapper.selectList(null);
        List<SysMenu> sysMenus = MenuHelper.buildTree(menuList);
        return sysMenus;
    }

}

package com.atguigu.auth.utils;
 
 
import com.atguigu.model.system.SysMenu;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * <p>
 * 根据菜单数据构建菜单数据
 * </p>
 *
 */
public class MenuHelper {
 
    /**
     * 使用递归方法建菜单-
     * @param sysMenuList
     * @return
     */
    public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {

//
        List<SysMenu> trees = new ArrayList<>();
        for (SysMenu sysMenu : sysMenuList) {
            if (sysMenu.getParentId().longValue() == 0) {
                trees.add(findChildren(sysMenu,sysMenuList));
            }
        }
        return trees;
    }
 
    /**
     * 递归查找子节点
     * @param treeNodes
     * @return
     */
    public static SysMenu findChildren(SysMenu sysMenu, List<SysMenu> treeNodes) {
        sysMenu.setChildren(new ArrayList<SysMenu>());
 
        for (SysMenu it : treeNodes) {
            if(sysMenu.getId().longValue() == it.getParentId().longValue()) {
                if (sysMenu.getChildren() == null) {
                    sysMenu.setChildren(new ArrayList<>());
                }
                sysMenu.getChildren().add(findChildren(it,treeNodes));
            }
        }
        return sysMenu;
    }

@Override
public boolean removeMenuById(Integer id) throws GlobalException.myException {

    if(baseMapper.selectCount(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getParentId, id))!=0){
        throw new GlobalException.myException(201,"菜单不能删除");
    }
    if(baseMapper.deleteById(id)!=0)
        return true;
        return false;

}

菜单

@Override
public List<SysMenu> findSysMenuByRoleID(Integer roleID) {
    //所有菜单
    List<SysMenu> sysMenus = baseMapper.selectList(new LambdaQueryWrapper<SysMenu>().eq(SysMenu::getStatus,1));
    //获取角色对应的菜单id
    List<SysRoleMenu> list = sysRoleMenuService.list(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleID));
    List<Long> menuIdList = list.stream().map(obj -> obj.getMenuId()).collect(Collectors.toList());
    sysMenus.stream().forEach(obj -> {
        if(menuIdList.contains(obj.getId()))
            obj.setSelect(true);
        else
            obj.setSelect(false);
    });
    //返回树形结构的菜单
    List<SysMenu> menus = MenuHelper.buildTree(sysMenus);
    return menus;
}
 
@Transactional
@Override
public void doAssign(AssginMenuVo assginMenuVo) {
    sysRoleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, assginMenuVo.getRoleId()));
 
    for (Long menuId : assginMenuVo.getMenuIdList()) {
        if (StringUtils.isEmpty(menuId)) continue;
        SysRoleMenu rolePermission = new SysRoleMenu();
        rolePermission.setRoleId(assginMenuVo.getRoleId());
        rolePermission.setMenuId(menuId);
        sysRoleMenuMapper.insert(rolePermission);
    }
}
 

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值