Ldc
2024-04-07 0652600959e5e3b5796fb6e8da129704ca95347a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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();
    }
}