Procházet zdrojové kódy

修改角色关联菜单

master
WendyYang před 1 rokem
rodič
revize
05fd14df64
3 změnil soubory, kde provedl 37 přidání a 18 odebrání
  1. +13
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java
  2. +11
    -16
      pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java
  3. +13
    -2
      pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java

+ 13
- 0
pmapi/src/main/java/com/ningdatech/pmapi/sys/service/IUserRoleService.java Zobrazit soubor

@@ -3,6 +3,8 @@ package com.ningdatech.pmapi.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ningdatech.pmapi.sys.model.entity.UserRole;

import java.util.List;

/**
* <p>
* 业务接口
@@ -20,4 +22,15 @@ public interface IUserRoleService extends IService<UserRole> {
* @return 是否正确
*/
boolean initAdmin(Long userId);

/**
* 查询角色关联的用户ID
*
* @param roleId 角色ID
* @return 用户ID集合
* @author WendyYang
**/
List<Long> listUserIdByRoleId(Long roleId);


}

+ 11
- 16
pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/RoleServiceImpl.java Zobrazit soubor

@@ -12,10 +12,10 @@ import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.exception.code.ExceptionCode;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.cache.repository.CachePlusOps;
import com.ningdatech.pmapi.sys.mapper.RoleMapper;
import com.ningdatech.pmapi.sys.model.dto.MenuDataScopeDTO;
import com.ningdatech.pmapi.sys.model.dto.RoleSaveDTO;
import com.ningdatech.pmapi.sys.model.dto.RoleUpdateDTO;
import com.ningdatech.pmapi.sys.mapper.RoleMapper;
import com.ningdatech.pmapi.sys.model.entity.*;
import com.ningdatech.pmapi.sys.service.*;
import com.ningdatech.pmapi.sys.utils.AuthCacheKeyUtils;
@@ -40,18 +40,12 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService {

private final IUserRoleService IUserRoleService;
private final IUserRoleService userRoleService;
private final RoleMapper roleMapper;
private final IRoleMenuDatascopeService roleMenuDatascopeService;

private final CachePlusOps cachePlusOps;

private final IRoleMenuService roleMenuService;

private final IMenuService IMenuService;

private static final String SUPER_ADMIN = "SUPER_ADMIN";

private final IMenuService menuService;

/**
* 删除角色时,需要级联删除跟角色相关的一切资源:
@@ -68,7 +62,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
return true;
}

if (IUserRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId)
if (userRoleService.count(Wrappers.lambdaQuery(UserRole.class).select(UserRole::getUserId)
.in(UserRole::getRoleId, ids)) > 0) {
throw new BizException(ExceptionCode.OPERATION_EX.getCode(), "该角色下还有用户 不能随意删除!");
}
@@ -77,7 +71,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
boolean removeFlag = removeByIds(ids);

//角色拥有的用户
IUserRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids));
userRoleService.remove(Wrappers.lambdaQuery(UserRole.class).in(UserRole::getRoleId, ids));
if (removeFlag) {
// 角色绑定了那些用户
if (roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).in(RoleMenu::getRoleId, ids))) {
@@ -149,18 +143,19 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
public void updateRole(RoleUpdateDTO data, Long userId) {
Role roleOld = roleMapper.selectById(data.getId());
if (Objects.isNull(roleOld)) {
throw new BaseUncheckedException(HttpStatus.HTTP_OK, String.format("修改用户%d 为空", data.getId()));
throw BizException.wrap("修改用户 %d 为空", data.getId());
}

if (StrUtil.isNotBlank(data.getName()) && check(data.getName(), roleOld.getId())) {
throw BizException.wrap("角色名{} 已经存在", data.getName());
throw BizException.wrap("角色名 %s 已经存在", data.getName());
}
Role role = BeanUtil.toBean(data, Role.class);
role.setUpdateBy(userId);
updateById(role);
saveRoleMenu(data.getMenuIds(), role.getId());
saveRoleMenuDatascope(data.getMenuDataScopeList(), role.getId());
cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(userId));
List<Long> userIdList = userRoleService.listUserIdByRoleId(role.getId());
userIdList.forEach(w -> cachePlusOps.del(AuthCacheKeyUtils.userResourceCacheKey(w)));
}

@Override
@@ -184,7 +179,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
roleMenuService.remove(Wrappers.lambdaQuery(RoleMenu.class).eq(RoleMenu::getRoleId, roleId));
Set<RoleMenu> toAddMenus = new HashSet<>();
for (Long menuId : menuIds) {
Menu menu = IMenuService.getById(menuId);
Menu menu = menuService.getById(menuId);
if (Objects.isNull(menu)) {
continue;
}
@@ -203,7 +198,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
if (Objects.isNull(menu.getPid()) || menu.getPid().equals(0L)) {
return;
}
Menu parent = IMenuService.getById(menu.getPid());
Menu parent = menuService.getById(menu.getPid());
if (Objects.isNull(parent)) {
return;
}


+ 13
- 2
pmapi/src/main/java/com/ningdatech/pmapi/sys/service/impl/UserRoleServiceImpl.java Zobrazit soubor

@@ -4,16 +4,19 @@ import cn.hutool.http.HttpStatus;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ningdatech.basic.exception.BaseUncheckedException;
import com.ningdatech.pmapi.sys.model.entity.Role;
import com.ningdatech.pmapi.sys.model.entity.UserRole;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.pmapi.sys.mapper.RoleMapper;
import com.ningdatech.pmapi.sys.mapper.UserRoleMapper;
import com.ningdatech.pmapi.sys.model.entity.Role;
import com.ningdatech.pmapi.sys.model.entity.UserRole;
import com.ningdatech.pmapi.sys.service.IUserRoleService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
* <p>
* 业务实现类
@@ -46,4 +49,12 @@ public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> i

return super.save(userRole);
}

@Override
public List<Long> listUserIdByRoleId(Long roleId) {
List<UserRole> userRoles = this.list(Wrappers.<UserRole>lambdaQuery()
.eq(UserRole::getRoleId, roleId));
return CollUtils.fieldList(userRoles, UserRole::getUserId);
}

}

Načítá se…
Zrušit
Uložit