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