package com.vci.web.service.impl; import com.vci.corba.common.data.VCIInvocationInfo; import com.vci.mw.client.ClientContextVariable; import com.vci.mw.client.IInvocationContext; import com.vci.starter.corba.constant.CorbaKeyConstant; import com.vci.starter.corba.initializer.JacorbSessionContext; import com.vci.starter.web.annotation.log.VciUnLog; import com.vci.starter.web.enumpck.DataSecretEnum; import com.vci.starter.web.pagemodel.SessionInfo; import com.vci.starter.web.util.WebThreadLocalUtil; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; /** * 获取会话的信息 * @author weidy * @date 2021-2-2 */ @Component public class WebContextInfoFetcher implements IInvocationContext, JacorbSessionContext { /** * 获取corba所需的会话的信息 * @return 不存在会初始化 */ @Override @VciUnLog public VCIInvocationInfo getInvocationInfo() { SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().get(); if(sessionInfo == null){ return ClientContextVariable.getInvocationInfo(); }else { VCIInvocationInfo vcii = new VCIInvocationInfo(); if (sessionInfo != null) { vcii.clientIPInfo = sessionInfo.getIp()==null?"127.0.0.1":sessionInfo.getIp(); vcii.clientMachine = sessionInfo.getMachine()== null?"PC":sessionInfo.getMachine(); vcii.clientOS = sessionInfo.getOs()==null?"windows":sessionInfo.getOs(); vcii.clientOSUser = sessionInfo.getOsUser() == null?"unknow":sessionInfo.getOsUser(); vcii.email=sessionInfo.getEmail() ==null?"":sessionInfo.getEmail(); vcii.groupIDs = sessionInfo.getDeptOid()==null?new String[0]:sessionInfo.getDeptOid().split(","); vcii.groupNames =sessionInfo.getDeptName() ==null?new String[0]:sessionInfo.getDeptName().split(","); vcii.language = sessionInfo.getLanguage()==null?"ZH_CN":sessionInfo.getLanguage(); vcii.secretGrade = sessionInfo.getUserSecret()==null?"10": sessionInfo.getUserSecret(); vcii.trueName = sessionInfo.getUserName() ==null?"":sessionInfo.getUserName(); vcii.userID = sessionInfo.getUserOid()==null?"":sessionInfo.getUserOid(); vcii.userName = sessionInfo.getUserId() == null?"":sessionInfo.getUserId(); vcii.roleIDs = sessionInfo.getRolesName() == null ? new String[0]:sessionInfo.getRolesName().keySet().toArray(new String[0]); vcii.roleNames = sessionInfo.getRolesName() == null ? new String[0]:sessionInfo.getRolesName().values().toArray(new String[0]); Map globalAttributeMap = sessionInfo.getGlobalAttributeMap(); if(globalAttributeMap==null){ globalAttributeMap = new HashMap<>(); } String[] globalAttributeString = new String[11]; globalAttributeString[0]= CorbaKeyConstant.CURRENT_USER_ID + "=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_USER_ID,sessionInfo.getUserId()); globalAttributeString[1]=CorbaKeyConstant.CURRENT_USER_NAME + "=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_USER_NAME,sessionInfo.getUserName()); globalAttributeString[2]=CorbaKeyConstant.CURRENT_USER_SECRET +"=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_USER_SECRET,sessionInfo.getUserSecret()); globalAttributeString[3]=CorbaKeyConstant.CURRENT_USER_EMAIL +"=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_USER_EMAIL,sessionInfo.getEmail()); globalAttributeString[4]=CorbaKeyConstant.CURRENT_USER_GROUPNUM +"=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_USER_GROUPNUM,""); globalAttributeString[5]=CorbaKeyConstant.CURRENT_MACHINE_SECRET + "=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_MACHINE_SECRET, DataSecretEnum.NONE.getValue()+""); String ipSec = globalAttributeMap.getOrDefault(CorbaKeyConstant.IP_SECRET_SWITCH,"off"); globalAttributeString[6]=CorbaKeyConstant.IP_SECRET_SWITCH + "=" + ipSec; globalAttributeString[7]=CorbaKeyConstant.CURRENT_USER_GROUPNAME +"=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.CURRENT_USER_GROUPNAME,sessionInfo.getDeptName()); globalAttributeString[8]=CorbaKeyConstant.USER_SECRET_SWITCH+ "=" + globalAttributeMap.getOrDefault(CorbaKeyConstant.USER_SECRET_SWITCH,"off"); globalAttributeString[9]=String.valueOf(System.currentTimeMillis()); globalAttributeString[10]=sessionInfo.getToken(); //现在不确定老的是否可以接受数组多个的情况 vcii.extAttribs = globalAttributeString; } return vcii; } } /** * 获取当前会话 * @return 会话的对象 */ @Override public SessionInfo getSessionInfo() { return WebThreadLocalUtil.getCurrentUserSessionInfoInThread().get(); } }