权限保存时,记录权变变更修改为异步,修改查询逻辑;修改记录字段为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.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;
@ -203,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());
@ -223,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 (!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) {
getParentName(id, delAuthoritys);
if (!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);
});
}
}
}

Loading…
Cancel
Save