ludc
2025-01-16 5203081b68e3a8dc139d1807b2f8774e4a00a82a
退出登录接口增加清除session、jwttoken等缓存信息
已修改8个文件
67 ■■■■■ 文件已修改
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebFlowController.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebFlowServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java
@@ -1,5 +1,6 @@
package com.vci.starter.web.interceptor;
import com.vci.corba.common.PLException;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.SessionInfo;
import com.vci.starter.web.pagemodel.TokenVO;
@@ -60,8 +61,9 @@
    /**
     * 退出登录
     * @param userToken 用户的会话许可
     * @param userId 用户id
     */
    void logout(String userToken);
    void logout(String userToken,String userId) throws PLException;
    /**
     * 根据token获取用户在系统中还可以存在的时间
Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
@@ -1533,7 +1533,8 @@
    @Transactional(rollbackFor = Exception.class)
    public boolean stopUsers(String[] ids, boolean flag) throws PLException {
        VciBaseUtil.alertNotNull(ids,"停用/启用的用户id列表");
        return platformClientUtil.getFrameworkService().stopUsers(ids, flag,null);
        return platformClientUtil.getFrameworkService().stopUsers(ids, flag,new UserEntityInfo(WebUtil.getCurrentUserId(),"用户管理"));
    }
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
@@ -1,6 +1,7 @@
package com.vci.web.controller;
import com.vci.bo.LoginResultBO;
import com.vci.corba.common.PLException;
import com.vci.dto.LoginUserDTO;
import com.vci.starter.web.annotation.controller.VciUnCheckRight;
import com.vci.starter.web.annotation.log.VciBusinessLog;
@@ -12,6 +13,7 @@
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.starter.web.util.WebThreadLocalUtil;
import com.vci.web.service.OsLoginServiceI;
import com.zeroc.IceInternal.Ex;
import eu.bitwalker.useragentutils.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -179,8 +181,15 @@
    @ResponseBody
    public BaseResult logout(HttpServletRequest request){
        String userToken = request.getHeader(TokenKeyConstant.USER_TOKEN_KEY);
        loginService.logout(userToken);
        return BaseResult.success();
        try {
            loginService.logout(userToken);
            return BaseResult.success("退出成功");
        } catch (Exception e) {
            e.printStackTrace();
            String errorLog = "登出时出现异常,原因:"+ VciBaseUtil.getExceptionMessage(e);
            logger.error(errorLog);
            return BaseResult.fail(errorLog);
        }
    }
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebFlowController.java
@@ -1,7 +1,6 @@
package com.vci.web.controller;
import com.vci.corba.wf.data.ProcessCategoryInfo;
import com.vci.dto.OsEnumDTO;
import com.vci.starter.web.annotation.log.VciBusinessLog;
import com.vci.starter.web.pagemodel.BaseQueryObject;
import com.vci.starter.web.pagemodel.BaseResult;
@@ -61,9 +60,9 @@
     */
    @GetMapping( "/getProcessCategoriesByPage")
    @VciBusinessLog(operateName = "流程分类分页查询")
    public BaseResult<DataGrid<ProcessCategoryInfo>> getProcessCategoriesByPage(BaseQueryObject baseQueryObject){
    public BaseResult getProcessCategoriesByPage(BaseQueryObject baseQueryObject){
        try {
            return BaseResult.dataList(webFlowServiceI.getProcessCategoriesByPage(baseQueryObject));
            return BaseResult.dataGrid(webFlowServiceI.getProcessCategoriesByPage(baseQueryObject));
        } catch (Exception e) {
            e.printStackTrace();
            String exceptionMessage = "流程分类分页查询时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e);
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java
@@ -1,6 +1,7 @@
package com.vci.web.service;
import com.vci.bo.LoginResultBO;
import com.vci.corba.common.PLException;
import com.vci.dto.LoginUserDTO;
import com.vci.starter.web.exception.VciBaseException;
import com.vci.starter.web.pagemodel.RequestClientInfo;
@@ -26,5 +27,5 @@
     * @param userToken 用户的许可码
     * @throws VciBaseException 删除会话信息出错的时候会抛出异常
     */
    void logout(String userToken) throws VciBaseException;
    void logout(String userToken) throws Exception;
}
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java
@@ -181,16 +181,6 @@
            return loginResult;
        }
        //4、判断密码是否正确(平台的checkLogin方法好像有对密码进行比对的方法)
        /*if (checkPassword) {
            boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getOid());
            if (!passwordIsEqual) {
                if (logger.isDebugEnabled()) {
                    logger.debug("{}密码不正确", user.getId());
                }
            }
        }*/
        //5、调用平台登录接口,进行登录
        MachineInfo machine = getMachieInfo(clientInfo);
        machine.country = clientInfo.getCountry();
@@ -313,7 +303,7 @@
     * @throws VciBaseException 删除会话信息出错的时候会抛出异常
     */
    @Override
    public void logout(String userToken) throws VciBaseException {
    public void logout(String userToken) throws Exception {
        VciBaseUtil.alertNotNull(userToken,"用户的会话许可");
        Map<String, Object> logoutpluginBeanMap =ApplicationContextProvider.getApplicationContext().getBeansWithAnnotation(VciLogoutPlugin.class);
        if(!CollectionUtils.isEmpty(logoutpluginBeanMap)){
@@ -337,7 +327,10 @@
        }
        //清除存当前登录的用户(总数-1)
        redisService.decreOnlineUser(VConstant.CURRENT_LOGGED_USERS_KEY);
        sessionForLogin.logout(userToken);
        sessionForLogin.logout(
                WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getToken()
                ,WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId()
        );
        if(!CollectionUtils.isEmpty(logoutpluginBeanMap)){
            logoutpluginBeanMap.forEach((k,v) -> {
                Method[] methods = v.getClass().getDeclaredMethods();
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java
@@ -195,12 +195,15 @@
    /**
     * 退出登录
     *
     * 清除用户session
     * @param userToken 用户的会话许可
     */
    @Override
    public void logout(String userToken) {
    public void logout(String userToken,String userId) throws PLException {
        //TODO 根据情况,单独处理
        redisService.deleteObject(CacheNameConstant.USERID_TOKEN_KEY + userId);
        redisService.deleteObject(TokenKeyConstant.TOKEN_KEY_PREFIX_IN_REDIS + userToken);
        platformClientUtil.getFrameworkService().logoff(userToken);
    }
    /**
Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebFlowServiceImpl.java
@@ -8,13 +8,16 @@
import com.vci.starter.web.pagemodel.DataGrid;
import com.vci.starter.web.util.Lcm.Func;
import com.vci.starter.web.util.VciBaseUtil;
import com.vci.web.dao.WebProcessDaoI;
import com.vci.web.service.WebFlowServiceI;
import com.vci.web.util.PlatformClientUtil;
import com.vci.web.util.WebUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
@@ -31,6 +34,9 @@
     */
    @Autowired
    private PlatformClientUtil platformClientUtil;
    @Autowired
    private WebProcessDaoI webProcessDaoI;
    /**
     * 流程分类全查询
@@ -79,7 +85,12 @@
        if(Func.isBlank(category.parentId)){
            category.parentId = "root";
        }
        long time = new Date().getTime();
        String userId = WebUtil.getCurrentUserId();
        category.createTime = time;
        category.modifyTime = time;
        category.creator = userId;
        category.modifer = userId;
        return platformClientUtil.getWFService().saveProcessCategory(category);
    }
@@ -95,6 +106,8 @@
            category.parentId = "root";
        }
        this.checkNameExisted(category);
        category.modifyTime = new Date().getTime();
        category.modifer = WebUtil.getCurrentUserId();
        return platformClientUtil.getWFService().updateProcessCategory(category);
    }