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<String,String> 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();
|
}
|
}
|