|
|
|
@ -41,6 +41,9 @@ import java.util.ArrayList;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.concurrent.CompletableFuture;
|
|
|
|
|
import java.util.function.Function;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import static cn.estsh.i3plus.platform.common.util.CommonConstWords.RESOURCE_PREFIX_MENU;
|
|
|
|
|
import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.IMPP_REQUEST_ID;
|
|
|
|
@ -188,6 +191,14 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void updateRoleMenuChangeRoleNameRdd(Long roleId, String roleName) {
|
|
|
|
|
if (StringUtil.isEmpty(roleId) || StringUtil.isEmpty(roleName)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
refRoleMenuRDao.updateByProperties("roleId",roleId,"roleNameRdd",roleName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void refreshSysRoleRef(Long roleId, Integer softType, List<Long> idList, String userName) {
|
|
|
|
|
SysRole role = roleRDao.getById(roleId);
|
|
|
|
|
ValidatorBean.checkNotNull(role, "不存在的角色信息");
|
|
|
|
@ -195,18 +206,19 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
|
|
|
|
|
SysMenu menu = new SysMenu();
|
|
|
|
|
menu.setSoftType(softType);
|
|
|
|
|
List<SysMenu> menuList = menuService.findAllByBean(menu);
|
|
|
|
|
//查询修改前角色对应的菜单
|
|
|
|
|
List<SysRefRoleMenu> menus = refRoleMenuRDao.findByProperty(new String[]{"roleId", "softType"}, new Object[]{roleId, softType});
|
|
|
|
|
/**
|
|
|
|
|
* 2024/7/19 性能修复,不查询出当前softType,改为校验是否在数据库存在
|
|
|
|
|
*/
|
|
|
|
|
List<SysMenu> menuList = menuService.findByIdList(idList);
|
|
|
|
|
Map<Long, SysMenu> menuMap = menuList.stream().collect(Collectors.toMap(SysMenu::getId, Function.identity()));
|
|
|
|
|
refRoleMenuRDao.deleteByProperties(new String[]{"roleId", "softType"}, new Object[]{roleId, softType});
|
|
|
|
|
if (CollectionUtils.isNotEmpty(idList)) {
|
|
|
|
|
List<SysRefRoleMenu> refs = new ArrayList<>();
|
|
|
|
|
SysRefRoleMenu ref = null;
|
|
|
|
|
|
|
|
|
|
for (Long id : idList) {
|
|
|
|
|
if (CollectionUtils.isNotEmpty(menuList)) {
|
|
|
|
|
for (SysMenu sysMenu : menuList) {
|
|
|
|
|
if (sysMenu.getId().equals(id)) {
|
|
|
|
|
SysMenu sysMenu = menuMap.get(id);
|
|
|
|
|
if (sysMenu != null) {
|
|
|
|
|
ref = new SysRefRoleMenu();
|
|
|
|
|
ref.setRoleId(role.getId());
|
|
|
|
|
ref.setRoleNameRdd(role.getName());
|
|
|
|
@ -215,56 +227,49 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
ref.setMenuId(sysMenu.getId());
|
|
|
|
|
ref.setMenuTypeRdd(sysMenu.getMenuType());
|
|
|
|
|
ConvertBean.serviceModelInitialize(ref, AuthUtil.getSessionUser());
|
|
|
|
|
|
|
|
|
|
refs.add(ref);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(refs)) {
|
|
|
|
|
refRoleMenuRDao.saveAll(refs);
|
|
|
|
|
CompletableFuture.runAsync(() -> {
|
|
|
|
|
//记录角色权限变更日志
|
|
|
|
|
String newAuthority = "";
|
|
|
|
|
String delAuthority = "";
|
|
|
|
|
ArrayList<Long> menuIds = new ArrayList<>();
|
|
|
|
|
menus.stream().forEach(m -> {
|
|
|
|
|
menuIds.add(m.getMenuId());
|
|
|
|
|
});
|
|
|
|
|
//查询修改前角色对应的菜单
|
|
|
|
|
List<SysRefRoleMenu> menus = refRoleMenuRDao.findByProperty(new String[]{"roleId", "softType"}, new Object[]{roleId, softType});
|
|
|
|
|
StringBuilder newAuthority = new StringBuilder();
|
|
|
|
|
StringBuilder delAuthority = new StringBuilder();
|
|
|
|
|
List<Long> menuIds = menus.stream().map(SysRefRoleMenu::getMenuId).collect(Collectors.toList());
|
|
|
|
|
List<Long> newAuthorityList = getAddaListThanbList(idList,menuIds);
|
|
|
|
|
List<Long> delAuthorityList = getReduceaListThanbList(idList,menuIds);
|
|
|
|
|
if (newAuthorityList != null) {
|
|
|
|
|
for (Long id : newAuthorityList) {
|
|
|
|
|
String menuTreeName = "";
|
|
|
|
|
List<String> newAuthoritys = new ArrayList<>();
|
|
|
|
|
getParentName(id, newAuthoritys);
|
|
|
|
|
if (newAuthoritys.get(0).length()>0) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(newAuthoritys) && !newAuthoritys.get(0).isEmpty()) {
|
|
|
|
|
menuTreeName = newAuthoritys.get(0).substring(1);
|
|
|
|
|
}
|
|
|
|
|
newAuthority += menuTreeName + "\n";
|
|
|
|
|
}
|
|
|
|
|
newAuthority.append(menuTreeName).append("\n");
|
|
|
|
|
}
|
|
|
|
|
if (delAuthorityList != null) {
|
|
|
|
|
for (Long id : delAuthorityList) {
|
|
|
|
|
List<String> delAuthoritys = new ArrayList<>();
|
|
|
|
|
String menuTreeName = "";
|
|
|
|
|
getParentName(id, delAuthoritys);
|
|
|
|
|
if (delAuthoritys.get(0).length()>0) {
|
|
|
|
|
if (!CollectionUtils.isEmpty(delAuthoritys) && !delAuthoritys.get(0).isEmpty()) {
|
|
|
|
|
menuTreeName = delAuthoritys.get(0).substring(1);
|
|
|
|
|
}
|
|
|
|
|
delAuthority += menuTreeName + "\n";
|
|
|
|
|
}
|
|
|
|
|
delAuthority.append(menuTreeName).append("\n");
|
|
|
|
|
}
|
|
|
|
|
SysLogRoleMenuChange sysLogRoleMenuChange = new SysLogRoleMenuChange();
|
|
|
|
|
sysLogRoleMenuChange.setRoleId(roleId);
|
|
|
|
|
sysLogRoleMenuChange.setRoleName(role.getName());
|
|
|
|
|
sysLogRoleMenuChange.setNewAuthority(newAuthority);
|
|
|
|
|
sysLogRoleMenuChange.setDelAuthority(delAuthority);
|
|
|
|
|
sysLogRoleMenuChange.setNewAuthority(newAuthority.toString());
|
|
|
|
|
sysLogRoleMenuChange.setDelAuthority(delAuthority.toString());
|
|
|
|
|
insertSysLogRoleMenuChange(sysLogRoleMenuChange);
|
|
|
|
|
//更新角色
|
|
|
|
|
ConvertBean.serviceModelUpdate(role,AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
roleRDao.update(role);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|