Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java
@@ -1,7 +1,10 @@ package com.vci.dto; import lombok.Data; import java.util.List; @Data public class ClonePortalVIDTOList implements java.io.Serializable{ private List<ClonePortalVIDTO> clonePortalVIDTOList; Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java
@@ -3,6 +3,7 @@ import lombok.Data; import java.io.Serializable; import java.util.List; /** * 日志查询传输对象 @@ -33,4 +34,12 @@ int pageNo; //页面条数 int pageSize; //查询类型(管理员日志,普通日志) String roleType; /** * 根绝roleType查询出来的用户名,后续根据这个参数查询指定的日志 */ private List<String> userNameList; } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -160,14 +160,13 @@ */ List<Tree> refTreeUsers(TreeQueryObject treeQueryObject) throws VciBaseException; /*** /** * 人员权限选择树 * @param treeQueryObject * @return * @throws VciBaseException */ List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException; /** * 校验密码是否相同,在新平台中存储的密码是两次md5 @@ -265,4 +264,11 @@ */ BaseResult importUser(File file) throws Exception; /** * 根据角色类型查询用户名 * @param roleType * @return */ List<String> queryUserNameByRoleType(String roleType) throws PLException; } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -975,7 +975,7 @@ return rootTreeList; } /*** /** * * @param dataType * @param orgType @@ -1094,7 +1094,7 @@ } } /*** /** * * @param oid * @param text @@ -1112,6 +1112,7 @@ } return ObjectTreeNode; } /** * 校验密码是否相同,在新平台中存储的密码是两次md5 * @param userOid 用户主键 @@ -1634,4 +1635,25 @@ return BaseResult.success("用户导入成功!"); } /** * 根据角色类型查询用户名 * @param roleType * @return */ @Override public List<String> queryUserNameByRoleType(String roleType) throws PLException { List<String> userNameList = new ArrayList<>(); if(Func.isBlank(roleType)){ return userNameList; } String sql = "SELECT PLUSERNAME FROM PLUSER p WHERE PLUID IN " + "(SELECT PLUSERUID FROM PLUSERROLE p WHERE PLROLEUID IN " + "( SELECT PLUID FROM PLROLE p WHERE PLTYPE = "+ roleType + "))"; List<BusinessObject> cbos = boService.queryBySql(sql, null); cbos.stream().forEach(cbo->{ userNameList.add(ObjectTool.getNewBOAttributeValue(cbo,"plusername")); }); return userNameList; } } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
@@ -88,6 +88,7 @@ throw new VciBaseException(errorMsg); } } /** * 查询日志 * @param dto 查询条件传输对象 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
@@ -142,7 +142,7 @@ return portalVIServiceI.clone(portalVIDTOList) ? BaseResult.success("克隆成功!"):BaseResult.fail("克隆失败!"); } catch (Throwable e) { e.printStackTrace(); String exceptionMessage = "删除表单时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); String exceptionMessage = "克隆表单/表格时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
@@ -9,6 +9,7 @@ import com.vci.dto.LogInfoDTO; import com.vci.dto.LogPeriodInfoDTO; import com.vci.dto.LogQueryCriteriaDTO; import com.vci.frameworkcore.compatibility.SmUserQueryServiceI; import com.vci.starter.web.pagemodel.BaseResult; import com.vci.web.service.*; import com.vci.web.util.*; @@ -41,6 +42,10 @@ */ @Autowired private PlatformClientUtil platformClientUtil; @Autowired private SmUserQueryServiceI userQueryServiceI; public static final String UTF8_BOM="\uFEFF"; private final String LOG_SAVE_PERIOD = "logSavePeriod";//日志保存期限 @@ -131,8 +136,11 @@ */ @Override public BaseResult getLogListByContion(LogQueryCriteriaDTO queryDto) throws PLException { List<String> userNameList = userQueryServiceI.queryUserNameByRoleType(queryDto.getRoleType()); queryDto.setUserNameList(userNameList); String querySql = getSQL(queryDto); LogInfo[] logInfos = platformClientUtil.getLogService().getLogListByContion(queryDto.getPageNo(),queryDto.getPageSize(),querySql); List<LogInfoDTO> dtos = new ArrayList<>(); for (LogInfo logInfo : logInfos) { LogInfoDTO dto = new LogInfoDTO(); @@ -160,6 +168,7 @@ result.setTotal(sumLogRows); return result; } /** * 操作用户获取 */ @@ -233,13 +242,14 @@ } return userNames; } /** * 获取查询条件并拼成SQL,只拼where子句后面的SQL * @return */ public String getSQL(LogQueryCriteriaDTO dto) throws PLException { StringBuffer sql = new StringBuffer(""); // int period = getPeriod(LOG_SAVE_PERIOD);//获取保存期限,以月为单位 // int period = getPeriod(LOG_SAVE_PERIOD);//获取保存期限,以月为单位 int period = platformClientUtil.getLogService().getCurPeriod();;//获取保存期限,以月为单位 //下面是拼出SQL if(period != 0){ @@ -274,6 +284,21 @@ } sql.append("PLLOGTYPE in('" + getLogTypeString(LogType.General) + "')"); } if(Func.isNotEmpty(dto.getUserNameList())){ if(!sql.toString().equals("")){ sql.append(" and "); } if(dto.getUserNameList().size()<=1){ sql.append(" PLUSER = '").append(dto.getUserNameList().get(0).trim()).append("'"); }else{ sql.append(" PLUSER in ("); String inWhere = dto.getUserNameList().stream() .map(item -> "'" + item + "'") .collect(Collectors.joining(",")); sql.append(inWhere).append(")"); } } if(StringUtils.isNotBlank(dto.getUserName())){//操作用户 if(!dto.getUserName().trim().equals("")){//如果用户名为空格则不加用户条件 if(!sql.toString().equals("")){ @@ -320,6 +345,7 @@ } return sql.toString(); } protected String getLogTypeString(LogType logType){ String res = ""; if(logType == LogType.Login) { Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -248,7 +248,7 @@ */ @Override public boolean clone(ClonePortalVIDTOList clonePortalVIDTOList) throws VciBaseException { if(clonePortalVIDTOList==null||CollectionUtils.isEmpty(clonePortalVIDTOList.getClonePortalVIDTOList())){ if(clonePortalVIDTOList == null || CollectionUtils.isEmpty(clonePortalVIDTOList.getClonePortalVIDTOList())){ throw new VciBaseException("请选择要克隆的对象!"); } try { @@ -883,7 +883,7 @@ portalVIVO.setViType(portalVI.viType); portalVIVO.setViTypeText(PortalVIType.getByIntVal(portalVI.viType).getLabel()); String prm= portalVI.prm; String prm = portalVI.prm; if(StringUtils.isNotBlank(prm)) { PRMDO prmdo = UITools.getPRM(prm); portalVIVO.setPrm(prmDOO2VOS(prmdo, portalVI.viType)); Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1776,18 +1776,20 @@ treeQueryObject.setConditionMap(conditionMap); List<Tree> treeList = this.getUIAuthor(treeQueryObject); HashMap<String,Tree> allTreeMap = new HashMap<>(); Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>(); //Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>(); if(!CollectionUtil.isEmpty(treeList)){ if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ /*if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){ String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); RoleRightInfo[] rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName); List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos)); roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue)); } }*/ convertTreeDOO2Map(treeList,allTreeMap); List<RoleRightDTO> roleRightDTOList = new ArrayList<>(); List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList(); getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,roleRightDTOList); List<Tree> selectTreeList2 = this.authTreeListConvert(selectTreeList); getSelectedRoleRightObjs_old(uiAuthorDTO.getRoleId(),selectTreeList2,allTreeMap,roleRightDTOList); SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); String currentUserName = sessionInfo.getUserId(); //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName); @@ -1805,14 +1807,30 @@ } /** * 获取筛选后的数据 * @param selectTreeList */ private List<Tree> authTreeListConvert(List<Tree> selectTreeList){ // 创建一个包含另一个集合中满足条件的 oid 的集合 List<String> validOids = selectTreeList.stream() .filter(Tree::isChecked) // checked 为 true .map(Tree::getOid) // 提取 oid .collect(Collectors.toList()); return selectTreeList.stream() .filter(tree -> tree.isChecked() && !validOids.contains(tree.getParentId())) // 过滤条件 .collect(Collectors.toList()); } /** *根据权限计算上下权限 * @param roleOid * @param selectTreeList * @param allTreeMap * @param roleRightDTOList */ private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, Map<String,RoleRightDTO> allRoleRightDTOMap, List<RoleRightDTO> roleRightDTOList){ //Date date=new Date(); private void getSelectedRoleRightObjs_old(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){ Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>(); if(!CollectionUtil.isEmpty(selectTreeList)){ selectTreeList.stream().forEach(tree -> { @@ -1844,7 +1862,7 @@ }else{ roleRightDTO.setRightType((short) 2); } roleRightDTO.setRightValue(1);// 权限值,没有操作的模块权限值存储为0 roleRightDTO.setRightValue(countRightValue(parentNode,false));// 权限值,没有操作的模块权限值存储为0 roleRightDTO.setRoleId(roleOid);//角色ID roleRightDTO.setCreateUser(currentUserName);//创建者 roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//创建时间 @@ -1994,10 +2012,10 @@ */ private long countRightValue(Tree node,boolean isAll){ long value = 0; for(int i = 0;i < node.getChildren().size();i++){ for(int i = 0; i < node.getChildren().size(); i++){ Tree childNode = (Tree)node.getChildren().get(i); if(isAll && node.getData() instanceof PLTabButton ){ PLTabButton obj = (PLTabButton)node.getData(); if(isAll || node.getData() instanceof PLTabButton ){ PLTabButton obj = (PLTabButton)childNode.getData(); value += (long)Math.pow(2, obj.plSeq);//累计加上各个操作的权限值 } }