添加登录成功,登录错误次数清零逻辑,ui定义的数据查询服务中增加通用查询接口。
已修改7个文件
101 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LoginServiceI.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsQueryTemplateController.java
@@ -265,6 +265,7 @@
            return objectBaseResult;
        }
    }
    /**
     * 导出链接类型查询模板
     * names 查询模板名
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebUIDataController.java
@@ -98,6 +98,25 @@
    }
    /**
     * 根据查询模板查询数据,返回值按照页面定义
     * @param treeQuery 树查询对象
     * @return 树的数据
     */
    @PostMapping("/getDataByTemp")
    @VciUnCheckRight
    @VciBusinessLog(operateName = "查询")
    public BaseResult getDataByTemp(UITreeQuery treeQuery){
        try {
            return uiDataService.getDataByTemp(treeQuery);
        }catch (Exception e){
            e.printStackTrace();
            String errorMsg = "数据查询出现错误,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorMsg);
            throw new VciBaseException(errorMsg);
        }
    }
    /**
     * 添加数据。前端使用JSON提交
     * @param formDataDTO 表单
     * @return 执行的结果
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/LoginServiceI.java
@@ -20,7 +20,7 @@
     * @return 登录的结果对象
     * @throws VciBaseException 登录失败的时候抛出异常
     */
    LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws PLException;
    LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception;
    /**
     * 单点登录
@@ -29,7 +29,7 @@
     * @return 登录的结果对象
     * @throws VciBaseException 登录失败的时候抛出异常
     */
    LoginResultBO singleLogin(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws PLException;
    LoginResultBO singleLogin(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception;
    /**
     * 退出系统
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIDataServiceI.java
@@ -53,6 +53,14 @@
    List<Tree> getDataForTree(UITreeQuery treeQuery) throws VciBaseException, PLException;
    /**
     * 获取树形数据(根据查询模板查询对象)
     * @param treeQuery 树形查询条件
     * @return 树形数据
     * @throws VciBaseException 查询出错的时候会抛出异常
     */
    BaseResult getDataByTemp(UITreeQuery treeQuery) throws VciBaseException, PLException;
    /**
     * 调用前置事件
     * @param baseModelDTOList 业务数据的信息
     * @param baseLinkModelDTOList 链接类型的数据
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
@@ -135,7 +135,7 @@
     * @throws VciBaseException 登录发生异常的时候出现了错误
     */
    @Override
    public LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws PLException {
    public LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception {
        return login(userDTO,clientInfo,true);
    }
@@ -147,7 +147,7 @@
     * @return 执行结果
     * @throws VciBaseException 参数错误,用户不能登录等会抛出异常
     */
    private LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo, boolean checkPassword/*单点登录不需要校验密码*/) throws VciBaseException {
    private LoginResultBO login(LoginUserDTO userDTO, RequestClientInfo clientInfo, boolean checkPassword/*单点登录不需要校验密码*/) throws Exception {
        LoginResultBO loginResult = new LoginResultBO();
        loginResult.setSuccess(false);
@@ -238,7 +238,8 @@
        }
        //6、登录成功之后需要处理的逻辑
        user.setLastLoginTime(new Date());//最后登录时间
        user.setPwdWrongCount(0);//密码错误次数清0
        //user.setPwdWrongCount(0);//登录成功密码错误次数清0
        platformClientUtil.getFrameworkService().updateLogonInfo(user.getOid(),true);
        //处理用户登录成功的session
        SessionInfo sessionInfo = new SessionInfo();
        sessionInfo.setToken(token);
@@ -529,7 +530,7 @@
     * @throws VciBaseException 登录失败的时候抛出异常
     */
    @Override
    public LoginResultBO singleLogin(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws PLException {
    public LoginResultBO singleLogin(LoginUserDTO userDTO, RequestClientInfo clientInfo) throws Exception {
        return login(userDTO,clientInfo,false);
    }
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIDataServiceImpl.java
@@ -391,7 +391,7 @@
        if(StringUtils.isBlank(treeDefineVO.getLinkType())){
            //这个是业务类型的自参照
            //以前的平台没有对自参照这种有全部查询的
            OsBtmTypeVO btmTypeVO = btmService.getBtmById(treeDefineVO.getBtmType(),attributeVOMap);
            OsBtmTypeVO btmTypeVO = btmService.getBtmByName(treeDefineVO.getBtmType());
            queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
            queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
@@ -543,6 +543,62 @@
    }
    /**
     * 获取数据(根据查询模板查询对象,返回的结构按照ui定义,定义的模板类型返回)
     * @param treeQuery 树形查询条件
     * @return 树形数据
     * @throws VciBaseException 查询出错的时候会抛出异常
     */
    @Override
    public BaseResult getDataByTemp(UITreeQuery treeQuery) throws VciBaseException, PLException {
        VciBaseUtil.alertNotNull(treeQuery,"表单的查询对象",treeQuery.getComponentOid(),"当前组件的主键");
        //1、先查询页面定义组件
        Map<String, OsAttributeVO> attributeVOMap = attrService.selectAllAttributeMap();
        UIComponentVO componentVO = uiEngineService.getComponentByOid(treeQuery.getComponentOid(),attributeVOMap);
        if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){
            throw new VciBaseException("未获取到界面配置信息!");
        }
        // 2、根据配置的查询模板查询数据(需要考虑全面一点),
        // 这儿根据当前类型来获取是什么类型的查询模板,然后做对应的查询处理
        UITreeDefineVO treeDefineVO = componentVO.getTreeDefineVO();
        String queryTemplate = StringUtils.isNotBlank(treeQuery.getQueryTemplate())?treeQuery.getQueryTemplate():(!CollectionUtils.isEmpty(treeQuery.getSourceData())?treeQuery.getSourceData().getOrDefault("querytemplate",treeDefineVO.getQueryTemplateName()):treeDefineVO.getQueryTemplateName());
        Map<String, String> replaceMap = wrapperReplaceMap(treeQuery.getSourceData());
        List<String> queryFieldList = new ArrayList<>();
        String valueField = treeQuery.isLinkTypeFlag()?(!treeDefineVO.isOrientation()?"${oid}" + TREE_NODE_ID_SEP + "${t_oid}":"${oid}" + TREE_NODE_ID_SEP + "${f_oid}"):(StringUtils.isNotBlank(treeQuery.getValueField())?treeQuery.getValueField():"oid");
        String textField = StringUtils.isNotBlank(treeDefineVO.getTreeNodeExpression())?treeDefineVO.getTreeNodeExpression():(StringUtils.isNotBlank(treeQuery.getTextField())?treeQuery.getTextField():"name");
        String rootExpress = StringUtils.isNotBlank(treeQuery.getRootExpress())?treeQuery.getRootExpress():treeDefineVO.getRootContent();
        String parentFieldName = treeQuery.getParentFieldName();
        if(parentFieldName.contains(",")){
            parentFieldName = parentFieldName.split(",")[0];
        }
        queryFieldList.add("creator_name");
        queryFieldList.add("lastmodifier_name");
        OsBtmTypeVO btmTypeVO = btmService.getBtmByName(treeDefineVO.getBtmType());
        queryFieldList.addAll(btmTypeVO.getAttributes().stream().map(OsBtmTypeAttributeVO::getId).collect(Collectors.toList()));
        queryFieldList.addAll(WebBoServiceImpl.BO_BASE_FIELD_MAP.values());
        addQueryField(queryFieldList,valueField);
        addQueryField(queryFieldList,textField);
        List<BusinessObject> rootCbos = boService.queryCBOByScheme(queryTemplate, null, replaceMap);
        //3、根据不同的组件返回不同的数据类型(树、列表、树表、自定义模板、表单等)
        List<Tree> rootTreeList = null;
        if(!CollectionUtils.isEmpty(rootCbos)){
            rootTreeList = cbo2Trees(rootCbos,valueField,StringUtils.isBlank(rootExpress)?textField:rootExpress,parentFieldName,treeQuery.isShowCheckBox(),null);
            TreeQueryObject treeQueryObject = new TreeQueryObject();
            treeQueryObject.setValueField(valueField);
            treeQueryObject.setTextField(textField);
            treeQueryObject.setParentFieldName(parentFieldName);
            treeQueryObject.setShowCheckBox(treeQuery.isShowCheckBox());
            if(UITreeLoadTypeEnum.ALL.getValue().equalsIgnoreCase(treeDefineVO.getLoadType())){
                treeQueryObject.setQueryAllLevel(false);
            }
            //queryTreeForBO(rootTreeList,treeDefineVO.getQueryTemplateName(),queryFieldList,treeQueryObject);
        }
        return BaseResult.tree(rootTreeList);
    }
    /**
     * 业务类型的属性查询
     * @param rootTreeList 根节点的内容
     * @param queryTemplate 查询模板
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -3724,7 +3724,7 @@
                return res;
            }
            // 链接类型不为空时,需要同时检查链接类型及链接类型下的查询模板是否有效
            if(Func.isBlank(linkType)){
            if(Func.isNotBlank(linkType)){
                if(!(super.checkLinkTypeTxtIsOk("链接类型", linkType,false))){
                    res = false;
                    return res;