ludc
2024-10-22 b73a1b5eb0c4a974cb5b16ccddb582f60347707c
日志查询接口修改,支持管理员和普通用户分开查询。
已修改9个文件
121 ■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);//累计加上各个操作的权限值
            }
        }