权限保存时,记录权变变更修改为异步,修改查询逻辑;修改记录字段为text

yun-zuoyi
臧学普 10 months ago
parent da9ad4154a
commit 0bbfb03bc2

@ -41,6 +41,9 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; 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.CommonConstWords.RESOURCE_PREFIX_MENU;
import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.IMPP_REQUEST_ID; import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.IMPP_REQUEST_ID;
@ -203,76 +206,70 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
SysMenu menu = new SysMenu(); SysMenu menu = new SysMenu();
menu.setSoftType(softType); menu.setSoftType(softType);
List<SysMenu> menuList = menuService.findAllByBean(menu); /**
//查询修改前角色对应的菜单 * 2024/7/19 ,softType,
List<SysRefRoleMenu> menus = refRoleMenuRDao.findByProperty(new String[]{"roleId", "softType"}, new Object[]{roleId, 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}); refRoleMenuRDao.deleteByProperties(new String[]{"roleId", "softType"}, new Object[]{roleId, softType});
if (CollectionUtils.isNotEmpty(idList)) { if (CollectionUtils.isNotEmpty(idList)) {
List<SysRefRoleMenu> refs = new ArrayList<>(); List<SysRefRoleMenu> refs = new ArrayList<>();
SysRefRoleMenu ref = null; SysRefRoleMenu ref = null;
for (Long id : idList) { for (Long id : idList) {
if (CollectionUtils.isNotEmpty(menuList)) { SysMenu sysMenu = menuMap.get(id);
for (SysMenu sysMenu : menuList) { if (sysMenu != null) {
if (sysMenu.getId().equals(id)) { ref = new SysRefRoleMenu();
ref = new SysRefRoleMenu(); ref.setRoleId(role.getId());
ref.setRoleId(role.getId()); ref.setRoleNameRdd(role.getName());
ref.setRoleNameRdd(role.getName()); ref.setSoftType(sysMenu.getSoftType());
ref.setSoftType(sysMenu.getSoftType()); ref.setMenuNameRdd(sysMenu.getName());
ref.setMenuNameRdd(sysMenu.getName()); ref.setMenuId(sysMenu.getId());
ref.setMenuId(sysMenu.getId()); ref.setMenuTypeRdd(sysMenu.getMenuType());
ref.setMenuTypeRdd(sysMenu.getMenuType()); ConvertBean.serviceModelInitialize(ref, AuthUtil.getSessionUser());
ConvertBean.serviceModelInitialize(ref, AuthUtil.getSessionUser()); refs.add(ref);
refs.add(ref);
break;
}
}
} }
} }
if (CollectionUtils.isNotEmpty(refs)) { if (CollectionUtils.isNotEmpty(refs)) {
refRoleMenuRDao.saveAll(refs); refRoleMenuRDao.saveAll(refs);
//记录角色权限变更日志 CompletableFuture.runAsync(() -> {
String newAuthority = ""; //记录角色权限变更日志
String delAuthority = ""; //查询修改前角色对应的菜单
ArrayList<Long> menuIds = new ArrayList<>(); List<SysRefRoleMenu> menus = refRoleMenuRDao.findByProperty(new String[]{"roleId", "softType"}, new Object[]{roleId, softType});
menus.stream().forEach(m -> { StringBuilder newAuthority = new StringBuilder();
menuIds.add(m.getMenuId()); StringBuilder delAuthority = new StringBuilder();
}); List<Long> menuIds = menus.stream().map(SysRefRoleMenu::getMenuId).collect(Collectors.toList());
List<Long> newAuthorityList = getAddaListThanbList(idList,menuIds); List<Long> newAuthorityList = getAddaListThanbList(idList,menuIds);
List<Long> delAuthorityList = getReduceaListThanbList(idList,menuIds); List<Long> delAuthorityList = getReduceaListThanbList(idList,menuIds);
if (newAuthorityList != null) {
for (Long id : newAuthorityList) { for (Long id : newAuthorityList) {
String menuTreeName = ""; String menuTreeName = "";
List<String> newAuthoritys = new ArrayList<>(); List<String> newAuthoritys = new ArrayList<>();
getParentName(id, newAuthoritys); getParentName(id, newAuthoritys);
if (newAuthoritys.get(0).length()>0) { if (!newAuthoritys.get(0).isEmpty()) {
menuTreeName = newAuthoritys.get(0).substring(1); menuTreeName = newAuthoritys.get(0).substring(1);
} }
newAuthority += menuTreeName + "\n"; newAuthority.append(menuTreeName).append("\n");
} }
}
if (delAuthorityList != null) {
for (Long id : delAuthorityList) { for (Long id : delAuthorityList) {
List<String> delAuthoritys = new ArrayList<>(); List<String> delAuthoritys = new ArrayList<>();
String menuTreeName = ""; String menuTreeName = "";
getParentName(id,delAuthoritys); getParentName(id, delAuthoritys);
if (delAuthoritys.get(0).length()>0) { if (!delAuthoritys.get(0).isEmpty()) {
menuTreeName = delAuthoritys.get(0).substring(1); menuTreeName = delAuthoritys.get(0).substring(1);
} }
delAuthority += menuTreeName + "\n"; delAuthority.append(menuTreeName).append("\n");
} }
} SysLogRoleMenuChange sysLogRoleMenuChange = new SysLogRoleMenuChange();
SysLogRoleMenuChange sysLogRoleMenuChange = new SysLogRoleMenuChange(); sysLogRoleMenuChange.setRoleId(roleId);
sysLogRoleMenuChange.setRoleId(roleId); sysLogRoleMenuChange.setRoleName(role.getName());
sysLogRoleMenuChange.setRoleName(role.getName()); sysLogRoleMenuChange.setNewAuthority(newAuthority.toString());
sysLogRoleMenuChange.setNewAuthority(newAuthority); sysLogRoleMenuChange.setDelAuthority(delAuthority.toString());
sysLogRoleMenuChange.setDelAuthority(delAuthority); insertSysLogRoleMenuChange(sysLogRoleMenuChange);
insertSysLogRoleMenuChange(sysLogRoleMenuChange); //更新角色
//更新角色 ConvertBean.serviceModelUpdate(role,AuthUtil.getSessionUser().getUserName());
ConvertBean.serviceModelUpdate(role,AuthUtil.getSessionUser().getUserName()); roleRDao.update(role);
roleRDao.update(role); });
} }
} }
} }

Loading…
Cancel
Save