|
|
|
@ -17,10 +17,7 @@ import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.util.StringUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.bean.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysLogRoleOperateRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.repository.*;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
|
|
|
|
|
import cn.estsh.i3plus.pojo.wms.bean.WmsPart;
|
|
|
|
|
import cn.estsh.impp.framework.base.service.CrudService;
|
|
|
|
@ -85,6 +82,9 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
@Autowired
|
|
|
|
|
private SysLogRoleOperateRepository sysLogRoleOperateRDao;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private SysLogRoleMenuChangeRepository sysLogRoleMenuChangeRDao;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public BaseRepository<SysRole, Long> getRepository() {
|
|
|
|
|
return roleRDao;
|
|
|
|
@ -193,7 +193,8 @@ 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});
|
|
|
|
|
refRoleMenuRDao.deleteByProperties(new String[]{"roleId", "softType"}, new Object[]{roleId, softType});
|
|
|
|
|
if (CollectionUtils.isNotEmpty(idList)) {
|
|
|
|
|
List<SysRefRoleMenu> refs = new ArrayList<>();
|
|
|
|
@ -221,6 +222,43 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(refs)) {
|
|
|
|
|
refRoleMenuRDao.saveAll(refs);
|
|
|
|
|
//记录角色权限变更日志
|
|
|
|
|
String newAuthority = "";
|
|
|
|
|
String delAuthority = "";
|
|
|
|
|
ArrayList<Long> menuIds = new ArrayList<>();
|
|
|
|
|
menus.stream().forEach(m -> {
|
|
|
|
|
menuIds.add(m.getMenuId());
|
|
|
|
|
});
|
|
|
|
|
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) {
|
|
|
|
|
menuTreeName = newAuthoritys.get(0).substring(1);
|
|
|
|
|
}
|
|
|
|
|
newAuthority += menuTreeName + "\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (delAuthorityList != null) {
|
|
|
|
|
for (Long id : delAuthorityList) {
|
|
|
|
|
List<String> delAuthoritys = new ArrayList<>();
|
|
|
|
|
String menuTreeName = "";
|
|
|
|
|
getParentName(id,delAuthoritys);
|
|
|
|
|
if (delAuthoritys.get(0).length()>0) {
|
|
|
|
|
menuTreeName = delAuthoritys.get(0).substring(1);
|
|
|
|
|
}
|
|
|
|
|
delAuthority += menuTreeName + "\n";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
SysLogRoleMenuChange sysLogRoleMenuChange = new SysLogRoleMenuChange();
|
|
|
|
|
sysLogRoleMenuChange.setRoleId(roleId);
|
|
|
|
|
sysLogRoleMenuChange.setRoleName(role.getName());
|
|
|
|
|
sysLogRoleMenuChange.setNewAuthority(newAuthority);
|
|
|
|
|
sysLogRoleMenuChange.setDelAuthority(delAuthority);
|
|
|
|
|
insertSysLogRoleMenuChange(sysLogRoleMenuChange);
|
|
|
|
|
//更新角色
|
|
|
|
|
ConvertBean.serviceModelUpdate(role,AuthUtil.getSessionUser().getUserName());
|
|
|
|
|
roleRDao.update(role);
|
|
|
|
@ -228,6 +266,74 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//递归获取菜单结点
|
|
|
|
|
private void getParentName(Long id, List<String> menuTreeName) {
|
|
|
|
|
SysMenu sysMenu = menuService.get(id);
|
|
|
|
|
String menuNames = "";
|
|
|
|
|
if(menuNames != null && menuTreeName.size()>0){
|
|
|
|
|
menuNames = menuTreeName.get(0);
|
|
|
|
|
}
|
|
|
|
|
//如果这个获取到的menu不是父节点
|
|
|
|
|
if(!StringUtil.isEmpty(sysMenu) && sysMenu.getParentId() != CommonEnumUtil.PARENT.DEFAULT.getValue()){
|
|
|
|
|
menuNames = "-"+sysMenu.getName() + menuNames;
|
|
|
|
|
menuTreeName.add(0,menuNames);
|
|
|
|
|
getParentName(sysMenu.getParentId(), menuTreeName);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param aList 本列表
|
|
|
|
|
* @param bList 对照列表
|
|
|
|
|
* @return 返回增加的元素组成的列表
|
|
|
|
|
* @Description: 计算列表aList相对于bList的增加的情况,兼容任何类型元素的列表数据结构
|
|
|
|
|
*/
|
|
|
|
|
private <E> List<E> getAddaListThanbList(List<E> aList, List<E> bList) {
|
|
|
|
|
List<E> addList = new ArrayList<E>();
|
|
|
|
|
for (int i = 0; i < aList.size(); i++) {
|
|
|
|
|
if (!myListContains(bList, aList.get(i))) {
|
|
|
|
|
addList.add(aList.get(i));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return addList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param aList 本列表
|
|
|
|
|
* @param bList 对照列表
|
|
|
|
|
* @return 返回减少的元素组成的列表
|
|
|
|
|
* @Description: 计算列表aList相对于bList的减少的情况,兼容任何类型元素的列表数据结构
|
|
|
|
|
*/
|
|
|
|
|
private <E> List<E> getReduceaListThanbList(List<E> aList, List<E> bList) {
|
|
|
|
|
List<E> reduceaList = new ArrayList<E>();
|
|
|
|
|
for (int i = 0; i < bList.size(); i++) {
|
|
|
|
|
if (!myListContains(aList, bList.get(i))) {
|
|
|
|
|
reduceaList.add(bList.get(i));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return reduceaList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @param sourceList 源列表
|
|
|
|
|
* @param element 待判断的包含元素
|
|
|
|
|
* @return 包含返回 true,不包含返回 false
|
|
|
|
|
* @Description: 判断元素element是否是sourceList列表中的一个子元素
|
|
|
|
|
*/
|
|
|
|
|
private <E> boolean myListContains(List<E> sourceList, E element) {
|
|
|
|
|
if (sourceList == null || element == null) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (sourceList.isEmpty()) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
for (E tip : sourceList) {
|
|
|
|
|
if (element.equals(tip)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系")
|
|
|
|
|
public List<SysRefRoleMenu> findSysRefRoleMenuByRoleId(Long roleId) {
|
|
|
|
@ -350,6 +456,15 @@ public class SysRoleService extends CrudService<SysRole> implements ISysRoleServ
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public SysLogRoleMenuChange insertSysLogRoleMenuChange(SysLogRoleMenuChange sysLogRoleMenuChange) {
|
|
|
|
|
if (StringUtil.isEmpty(sysLogRoleMenuChange)) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
LOGGER.debug("平台角色菜单权限变更操作记录 SysLogRoleOperate sysLogRoleOperate:{}", sysLogRoleMenuChange);
|
|
|
|
|
return sysLogRoleMenuChangeRDao.insert(sysLogRoleMenuChange);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// @Override
|
|
|
|
|
// public void packAfterRefreshCache() {
|
|
|
|
|