| | |
| | | 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.client.mw.ClientSessionUtility; |
| | | import com.vci.client.mw.IInvocationContext; |
| | | import com.vci.corba.common.data.InvocationInfo; |
| | | 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 com.vci.web.constant.CorbaKeyConstant; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.HashMap; |
| | |
| | | * @date 2021-2-2 |
| | | */ |
| | | @Component |
| | | public class WebContextInfoFetcher implements IInvocationContext, JacorbSessionContext { |
| | | public class WebContextInfoFetcher implements IInvocationContext { |
| | | |
| | | /** |
| | | * 获取corba所需的会话的信息 |
| | |
| | | */ |
| | | @Override |
| | | @VciUnLog |
| | | public VCIInvocationInfo getInvocationInfo() { |
| | | public InvocationInfo getInvocationInfo() { |
| | | SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().get(); |
| | | if(sessionInfo == null){ |
| | | return ClientContextVariable.getInvocationInfo(); |
| | | return ClientSessionUtility.getInvocation(); |
| | | }else { |
| | | VCIInvocationInfo vcii = new VCIInvocationInfo(); |
| | | InvocationInfo vcii = new InvocationInfo(); |
| | | 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]); |
| | | vcii.setToken(sessionInfo.getToken()); |
| | | Map<String,String> globalAttributeMap = sessionInfo.getGlobalAttributeMap(); |
| | | if(globalAttributeMap==null){ |
| | | globalAttributeMap = new HashMap<>(); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_USER_ID,sessionInfo.getUserId()); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_USER_NAME,sessionInfo.getUserName()); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_USER_SECRET,sessionInfo.getUserSecret()); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_USER_EMAIL,sessionInfo.getEmail()); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_USER_GROUPNUM,""); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_MACHINE_SECRET, DataSecretEnum.NONE.getValue()+""); |
| | | globalAttributeMap.put(CorbaKeyConstant.IP_SECRET_SWITCH,"off"); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENT_USER_GROUPNAME,sessionInfo.getDeptName()); |
| | | globalAttributeMap.put(CorbaKeyConstant.USER_SECRET_SWITCH,"off"); |
| | | globalAttributeMap.put(CorbaKeyConstant.CURRENTTIME, String.valueOf(System.currentTimeMillis())); |
| | | } |
| | | 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; |
| | | vcii.extAttribs = globalAttributeMap; |
| | | } |
| | | return vcii; |
| | | } |
| | |
| | | * 获取当前会话 |
| | | * @return 会话的对象 |
| | | */ |
| | | @Override |
| | | public SessionInfo getSessionInfo() { |
| | | return WebThreadLocalUtil.getCurrentUserSessionInfoInThread().get(); |
| | | } |