From 5203081b68e3a8dc139d1807b2f8774e4a00a82a Mon Sep 17 00:00:00 2001
From: ludc <ludc@vci-tech.com>
Date: 星期四, 16 一月 2025 11:11:59 +0800
Subject: [PATCH] 退出登录接口增加清除session、jwttoken等缓存信息

---
 Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java |    3 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java                        |    3 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java                   |   13 +++++-
 Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java   |    4 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebFlowServiceImpl.java                |   15 +++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java             |    7 ++-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebFlowController.java                   |    5 +-
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java                |   17 ++------
 8 files changed, 44 insertions(+), 23 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java b/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java
index 8e42f23..50a9d85 100644
--- a/Source/plt-web/plt-web-parent/plt-web-base/src/main/java/com/vci/starter/web/interceptor/VciSessionForLoginI.java
+++ b/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鑾峰彇鐢ㄦ埛鍦ㄧ郴缁熶腑杩樺彲浠ュ瓨鍦ㄧ殑鏃堕棿
diff --git a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
index 7b8ea7e..1b5d344 100644
--- a/Source/plt-web/plt-web-parent/plt-web-permission/src/main/java/com/vci/web/service/impl/SmUserQueryServiceImpl.java
+++ b/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,"鍋滅敤/鍚敤鐨勭敤鎴穒d鍒楄〃");
-		return platformClientUtil.getFrameworkService().stopUsers(ids, flag,null);
+
+		return platformClientUtil.getFrameworkService().stopUsers(ids, flag,new UserEntityInfo(WebUtil.getCurrentUserId(),"鐢ㄦ埛绠$悊"));
 	}
 
 	/**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
index 097a66e..112c102 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/OsLoginController.java
+++ b/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);
+		}
 	}
 
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebFlowController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebFlowController.java
index 766d249..86ad5e6 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebFlowController.java
+++ b/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);
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java
index 182ca2d..50fb3b4 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/OsLoginServiceI.java
+++ b/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;
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java
index 9e88c5c..4b0f835 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsLoginServiceImpl.java
+++ b/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銆佸垽鏂瘑鐮佹槸鍚︽纭紙骞冲彴鐨刢heckLogin鏂规硶濂藉儚鏈夊瀵嗙爜杩涜姣斿鐨勬柟娉曪級
-        /*if (checkPassword) {
-            boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getOid());
-            if (!passwordIsEqual) {
-                if (logger.isDebugEnabled()) {
-                    logger.debug("{}瀵嗙爜涓嶆纭�", user.getId());
-                }
-            }
-        }*/
-
         //5銆佽皟鐢ㄥ钩鍙扮櫥褰曟帴鍙o紝杩涜鐧诲綍
         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();
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java
index 072665b..de7c6ef 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmSessionForLoginImpl.java
+++ b/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);
     }
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebFlowServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebFlowServiceImpl.java
index aa34f8e..6ca01fb 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/WebFlowServiceImpl.java
+++ b/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);
     }
 

--
Gitblit v1.9.3