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