浏览代码

1vsN平台功能扩展

huangbo 9 年之前
父节点
当前提交
19e6bddaab

+ 1 - 26
multiple-server/src/com/ai/server/multiple/bean/IndexBean.java

@ -1,36 +1,11 @@
1 1
package com.ai.server.multiple.bean;
2 2

3 3
import com.ai.server.multiple.core.bean.MultipleBean;
4
import com.ai.server.multiple.core.config.AppConfig;
5
import com.ailk.common.data.IData;
6
import com.ailk.common.data.IDataset;
7
import com.ailk.common.data.impl.DataMap;
8 4

9 5
/**
10 6
 * @author huangbo 打开首页的逻辑
11 7
 */
12 8
public class IndexBean extends MultipleBean {
13 9

14
	/**
15
	 * 获取首页数据
16
	 */
17
	public IData getAppDatas(IData param) throws Exception {
18
		IData result = new DataMap();
19
		result.put("APPS", getAppDatas());
20
		return result;
21
	}
22

23
	/**
24
	 * 获取所有应用的菜单数据
25
	 */
26
	private IDataset getAppDatas() {
27
		try {
28
			return AppConfig.getAppsMap();
29
		} catch (Exception e1) {
30
			// TODO Auto-generated catch block
31
			e1.printStackTrace();
32
			return null;
33
		}
34

35
	}
10
	
36 11
}

+ 13 - 68
multiple-server/src/com/ai/server/multiple/bean/LoginBean.java

@ -1,14 +1,13 @@
1 1
package com.ai.server.multiple.bean;
2 2

3
import java.util.Map;
4

5 3
import com.ai.server.multiple.core.bean.MultipleBean;
4
import com.ai.server.multiple.core.config.AppConfig;
6 5
import com.ai.server.multiple.core.context.MultipleContextData;
7 6
import com.ai.server.multiple.core.session.MultipleSessionManager;
8
import com.ai.server.multiple.tool.AccountMappingManager;
9 7
import com.ai.server.multiple.util.Constant;
10 8
import com.ailk.common.data.IData;
11 9
import com.ailk.common.data.impl.DataMap;
10
import com.ailk.mobile.util.MobileUtility;
12 11

13 12
/**
14 13
 * @author huangbo
@ -18,82 +17,28 @@ public class LoginBean extends MultipleBean {
18 17
	/**
19 18
	 * 登陆逻辑
20 19
	 */
20
	@SuppressWarnings("unchecked")
21 21
	public IData login(IData param) throws Exception{
22 22
		String account = param.getString("ACCOUNT");
23
		//判断账号密码校验
24
		if(!checkLogin(param)){
25
			MobileUtility.error("登陆校验失败!请重新登陆");
26
		}
27
		
23 28
		MultipleContextData multipleContextData = new MultipleContextData(account);
24 29
		String sessionId = MultipleSessionManager.getInstance().createSession(multipleContextData);
25 30
		IData result = new DataMap();
26 31
		result.put(Constant.Session.SESSION_ID, sessionId);
32
		result.putAll(AppConfig.getConfig());//加载应用配置信息
27 33
		return result;
28 34
	}
29
	
30
	/**
31
	 * 登陆应用的逻辑
32
	 */
33
	public IData loginApp(IData param) throws Exception{
34
		String appType = param.getString("APP_TYPE");
35
		String appId = param.getString("APP_ID");
36
		IData result = new DataMap();
37
		
38
		if("I".equals(appType)){//IPU应用则执行IPU的登陆逻辑
39
			loginIpuApp();
40
		}else if("N".equals(appType)){
41
			String tokenId = (String) getContextData().getData().get(appId);
42
			
43
			boolean isValid = false;
44
			if(tokenId!=null){
45
				/*校验tokenId的有效性*/
46
				isValid = true;
47
			}
48 35

49
			if(!isValid){
50
				//从上下文对象中获取ipu账号
51
				String ipuAccount = getContextData().getAccount();
52
				//根据ipu账号和应用ID获取第三方应用的账号信息
53
				Map<String, String> appAccountInfo = getAppAccountInfo(ipuAccount, appId);
54
				tokenId = loginOtherApp(appId, appAccountInfo.get("ACCOUNT"), appAccountInfo.get("PASSWORD"));//登录第三方系统
55
				getContextData().put(appId, tokenId);//将打开应用的tokenId存储到当前Session中。
56
			}
57
			
58
			Map<String,String> appInfo = AccountMappingManager.getNativeAppInfo(appId);
59
			result.put("PACKAGE_NAME", appInfo.get("PACKAGE_NAME"));
60
			result.put("CLASS_NAME", appInfo.get("CLASS_NAME"));
61
			result.put("TOKEN_ID", tokenId);//将打开应用的tokenId返回到页面
62
		}
63
		
64
		return result;
65
	}
66
	
67
	/**
68
	 * IPU登陆
69
	 */
70
	private String loginIpuApp(){
71
		/*
72
		 * 登陆Ipu应用的逻辑
73
		 * 其实就是直接返回sessionId
74
		 */
75
		return  String.valueOf((Math.random()*10000)); 
76
	}
77
	
78
	/**
79
	 * 第三方应用登陆
80
	 */
81
	private String loginOtherApp(String appId,String account,String passsword){
82
		/*
83
		 * 登陆第三方应用的逻辑,登陆逻辑各有不同,应该切面化
84
		 * 登陆成功以后返回tokenId
85
		 */
86
		return String.valueOf(Math.random()*10000);
87
	}
88
	
89 36
	/**
90
	 * 根据IPU账号和应用ID获取第三方应用的账号信息
37
	 * 校验账号密码
91 38
	 */
92
	private Map<String, String> getAppAccountInfo(String ipuAccount,String appId) {
39
	private boolean checkLogin(IData param) {
93 40
		// TODO Auto-generated method stub
94
		//根据ipu账号获取第三方应用的账号映射关系
95
		Map<String, Map<String,String>> accountMapping = AccountMappingManager.getAccountMapping(ipuAccount);
96
		Map<String, String> appAccountInfo = accountMapping.get(appId);
97
		return appAccountInfo;
41
		/*需要补充实现逻辑:调用接口或者数据库校验*/
42
		return true;
98 43
	}
99 44
}

+ 12 - 14
multiple-server/src/com/ai/server/multiple/core/config/AppConfig.java

@ -7,7 +7,7 @@ import java.util.Map;
7 7
import org.dom4j.Element;
8 8
import org.dom4j.Node;
9 9

10
import com.ai.server.multiple.core.util.Constant;
10
import com.ai.server.multiple.util.Constant;
11 11
import com.ailk.common.config.XMLConfig;
12 12
import com.ailk.common.data.IData;
13 13
import com.ailk.common.data.IDataset;
@ -16,22 +16,20 @@ import com.ailk.common.data.impl.DatasetList;
16 16
import com.ailk.mobile.config.AbstractConfig;
17 17

18 18
public class AppConfig extends AbstractConfig {
19
	private static final String classKey = AppConfig.class.getSimpleName();
20
	private static AppConfig config;
21
	
19 22
	protected AppConfig() throws Exception {
20 23
		super();
21 24
	}
22 25

23
	private static AppConfig config;
24

25
	private static Map<String, IDataset> result = new HashMap<String, IDataset>();;
26

27 26
	@Override
28 27
	protected Map<String, IDataset> loadConfig() throws Exception {
29 28
		Element root = XMLConfig.getRoot(Constant.AppConfig.APP_CONFIG_FILE);
30 29
		List<Node> nodes = XMLConfig.getNodes(root,
31 30
				Constant.AppConfig.APP_CONFIG_PATH);
32 31

33
		result = new HashMap<String, IDataset>();
34
		IDataset appsMap = new DatasetList();
32
		IDataset results = new DatasetList();
35 33
		IData appMap = null;
36 34
		for (Node node : nodes) {
37 35
			appMap = new DataMap();
@ -59,11 +57,11 @@ public class AppConfig extends AbstractConfig {
59 57
					.attributeValue(Constant.AppConfig.PACKAGE_NAME));
60 58
			appMap.put(Constant.AppConfig.CLASS_NAME, ((Element) node)
61 59
					.attributeValue(Constant.AppConfig.CLASS_NAME));
62
			appsMap.add(appMap);
63

60
			
61
			results.add(appMap);
64 62
		}
65

66
		result.put("AppConfig", appsMap);
63
		Map<String, IDataset> result = new HashMap<String, IDataset>();
64
		result.put("APPS", results);
67 65
		return result;
68 66
	}
69 67

@ -74,8 +72,8 @@ public class AppConfig extends AbstractConfig {
74 72
		return config;
75 73
	}
76 74

77
	public static IDataset getAppsMap() throws Exception {
78
		getInstance();
79
		return result.get("AppConfig");
75
	@SuppressWarnings("static-access")
76
	public static Map<String, ?> getConfig() throws Exception {
77
		return getInstance().configsMap.get(classKey);
80 78
	}
81 79
}

+ 0 - 27
multiple-server/src/com/ai/server/multiple/core/util/Constant.java

@ -1,27 +0,0 @@
1
package com.ai.server.multiple.core.util;
2

3
/**
4
 * 
5
 * @ClassName: Constant
6
 * @Description: 框架里的常量类
7
 * @author 王玉娟
8
 * @date 2015年11月28日 上午10:18:14
9
 *
10
 */
11
public class Constant {
12
	public final static class AppConfig {
13
		public static final String APP_CONFIG_FILE = "app-config.xml";
14
		public static final String APP_CONFIG_PATH = "app";
15
		public static final String APP_ID = "appId";
16
		public static final String APP_NAME = "appName";
17
		public static final String APP_TYPE = "appType";
18
		public static final String APP_ICON = "appIcon";
19
		public static final String APP_WELCOME_PAGE = "appWelcomePage";
20
		public static final String REQUEST_HOST = "requestHost";
21
		public static final String REQUEST_PATH = "requestPath";
22
		public static final String REQUEST_SERVLET = "requestServlet";
23
		public static final String APP_PATH = "appPath";
24
		public static final String PACKAGE_NAME = "packageName";
25
		public static final String CLASS_NAME = "className";
26
	}
27
}

+ 16 - 1
multiple-server/src/com/ai/server/multiple/util/Constant.java

@ -27,5 +27,20 @@ public class Constant {
27 27
		public static final String IMAGE_RANDOM_CODE = "IMAGE_RANDOM_CODE";
28 28
		public static final String RANDOM_CODE = "RANDOM_CODE";
29 29
	}
30

30
	
31
	public final static class AppConfig {
32
		public static final String APP_CONFIG_FILE = "app-config.xml";
33
		public static final String APP_CONFIG_PATH = "app";
34
		public static final String APP_ID = "appId";
35
		public static final String APP_NAME = "appName";
36
		public static final String APP_TYPE = "appType";
37
		public static final String APP_ICON = "appIcon";
38
		public static final String APP_WELCOME_PAGE = "appWelcomePage";
39
		public static final String REQUEST_HOST = "requestHost";
40
		public static final String REQUEST_PATH = "requestPath";
41
		public static final String REQUEST_SERVLET = "requestServlet";
42
		public static final String APP_PATH = "appPath";
43
		public static final String PACKAGE_NAME = "packageName";
44
		public static final String CLASS_NAME = "className";
45
	}
31 46
}