View Javadoc
1   package com.foxinmy.weixin4j.qy.model;
2   
3   import java.io.Serializable;
4   import java.util.List;
5   
6   import com.alibaba.fastjson.annotation.JSONField;
7   import com.foxinmy.weixin4j.model.Token;
8   import com.foxinmy.weixin4j.qy.type.AgentAuthType;
9   import com.foxinmy.weixin4j.qy.type.LoginUserType;
10  
11  /**
12   * 企业号oauth授权登陆信息&第三方应用授权信息
13   * 
14   * @className OUserInfo
15   * @author jinyu(foxinmy@gmail.com)
16   * @date 2015年6月12日
17   * @since JDK 1.6
18   * @see
19   */
20  public class OUserInfo implements Serializable {
21  
22  	private static final long serialVersionUID = -567063562050171293L;
23  	/**
24  	 * 登录用户的类型:1.企业号创建者 2.企业号内部系统管理员 3.企业号外部系统管理员 4.企业号分级管理员 5. 企业号成员
25  	 */
26  	@JSONField(name = "usertype")
27  	private int userType;
28  	/**
29  	 * 是否系统管理员
30  	 */
31  	@JSONField(name = "is_sys")
32  	private boolean isSysAdmin;
33  	/**
34  	 * 是否内部管理员
35  	 */
36  	@JSONField(name = "is_inner")
37  	private boolean isInnerAdmin;
38  	/**
39  	 * 登陆管理员信息
40  	 */
41  	@JSONField(name = "user_info")
42  	private User adminInfo;
43  	/**
44  	 * 授权方企业信息
45  	 */
46  	@JSONField(name = "corp_info")
47  	private CorpInfo corpInfo;
48  	/**
49  	 * 该管理员在该提供商中能使用的应用列表
50  	 */
51  	@JSONField(name = "agent")
52  	private List<AgentItem> agentInfo;
53  	/**
54  	 * 该管理员拥有的通讯录权限
55  	 */
56  	@JSONField(name = "auth_info")
57  	private AuthInfo authInfo;
58  	/**
59  	 * 登录跳转的票据信息
60  	 */
61  	@JSONField(name = "redirect_login_info")
62  	private Token redirectLoginInfo;
63  
64  	public boolean isSysAdmin() {
65  		return isSysAdmin;
66  	}
67  
68  	public boolean isInnerAdmin() {
69  		return isInnerAdmin;
70  	}
71  
72  	public User getAdminInfo() {
73  		return adminInfo;
74  	}
75  
76  	public CorpInfo getCorpInfo() {
77  		return corpInfo;
78  	}
79  
80  	public List<AgentItem> getAgentInfo() {
81  		return agentInfo;
82  	}
83  
84  	public AuthInfo getAuthInfo() {
85  		return authInfo;
86  	}
87  
88  	public Token getRedirectLoginInfo() {
89  		return redirectLoginInfo;
90  	}
91  
92  	// ---------- setter 应该全部去掉
93  
94  	public int getUserType() {
95  		return userType;
96  	}
97  
98  	@JSONField(serialize = false)
99  	public LoginUserType getFormatUserType() {
100 		return LoginUserType.values()[userType - 1];
101 	}
102 
103 	public void setUserType(int userType) {
104 		this.userType = userType;
105 	}
106 
107 	public void setSysAdmin(boolean isSysAdmin) {
108 		this.isSysAdmin = isSysAdmin;
109 	}
110 
111 	public void setInnerAdmin(boolean isInnerAdmin) {
112 		this.isInnerAdmin = isInnerAdmin;
113 	}
114 
115 	public void setAdminInfo(User adminInfo) {
116 		this.adminInfo = adminInfo;
117 	}
118 
119 	public void setCorpInfo(CorpInfo corpInfo) {
120 		this.corpInfo = corpInfo;
121 	}
122 
123 	public void setAgentInfo(List<AgentItem> agentInfo) {
124 		this.agentInfo = agentInfo;
125 	}
126 
127 	public void setAuthInfo(AuthInfo authInfo) {
128 		this.authInfo = authInfo;
129 	}
130 
131 	public void setRedirectLoginInfo(Token redirectLoginInfo) {
132 		this.redirectLoginInfo = redirectLoginInfo;
133 	}
134 
135 	@Override
136 	public String toString() {
137 		return "OUserInfo [userType=" + userType + ", isSysAdmin=" + isSysAdmin
138 				+ ", isInnerAdmin=" + isInnerAdmin + ", adminInfo=" + adminInfo
139 				+ ", corpInfo=" + corpInfo + ", agentInfo=" + agentInfo
140 				+ ", authInfo=" + authInfo + ", redirectLoginInfo="
141 				+ redirectLoginInfo + "]";
142 	}
143 
144 	/**
145 	 * 授权信息
146 	 * 
147 	 * @className AuthInfo
148 	 * @author jinyu(foxinmy@gmail.com)
149 	 * @date 2015年6月22日
150 	 * @since JDK 1.6
151 	 * @see
152 	 */
153 	public static class AuthInfo implements Serializable {
154 
155 		private static final long serialVersionUID = -4290240764958942370L;
156 		/**
157 		 * 是否采用了新的授权,没有该字段或者该字段为false表示是旧授权,true表示是新授权
158 		 */
159 		@JSONField(name = "is_new_auth")
160 		private boolean isNewAuth;
161 		/**
162 		 * 授权的应用信息,新的权限体系其中通讯录权限以应用为节点
163 		 */
164 		@JSONField(name = "agent")
165 		private List<AgentItem> agentItems;
166 		/**
167 		 * 授权的通讯录部门,<font color="red">新的权限体系将废弃</font>
168 		 */
169 		@JSONField(name = "department")
170 		private List<DepartItem> departItems;
171 
172 		public List<AgentItem> getAgentItems() {
173 			return agentItems;
174 		}
175 
176 		public List<DepartItem> getDepartItems() {
177 			return departItems;
178 		}
179 
180 		// ---------- setter 应该全部去掉
181 
182 		public boolean isNewAuth() {
183 			return isNewAuth;
184 		}
185 
186 		public void setNewAuth(boolean isNewAuth) {
187 			this.isNewAuth = isNewAuth;
188 		}
189 
190 		public void setAgentItems(List<AgentItem> agentItems) {
191 			this.agentItems = agentItems;
192 		}
193 
194 		public void setDepartItems(List<DepartItem> departItems) {
195 			this.departItems = departItems;
196 		}
197 
198 		@Override
199 		public String toString() {
200 			return "AuthInfo [isNewAuth=" + isNewAuth + ", agentItems="
201 					+ agentItems + ", departItems=" + departItems + "]";
202 		}
203 	}
204 
205 	/**
206 	 * 授权的应用信息
207 	 * 
208 	 * @className AgentItem
209 	 * @author jinyu(foxinmy@gmail.com)
210 	 * @date 2015年6月22日
211 	 * @since JDK 1.6
212 	 * @see
213 	 */
214 	public static class AgentItem extends AgentOverview {
215 
216 		private static final long serialVersionUID = -1188968391623633559L;
217 		/**
218 		 * 管理员对应用的权限
219 		 */
220 		@JSONField(name = "auth_type")
221 		private int authType;
222 		/**
223 		 * 服务商套件中的对应应用id
224 		 */
225 		@JSONField(name = "appid")
226 		private int appId;
227 		/**
228 		 * 授权方应用敏感权限组,目前仅有get_location,表示是否有权限设置应用获取地理位置的开关, <font
229 		 * color="red">新的权限体系将废弃</font>
230 		 */
231 		@JSONField(name = "api_group")
232 		private List<String> apiGroup;
233 		/**
234 		 * 应用对应的权限,<font color="red">新的权限体系</font>
235 		 */
236 		@JSONField(name = "privilege")
237 		private PrivilegeInfo privilege;
238 
239 		public int getAuthType() {
240 			return authType;
241 		}
242 
243 		@JSONField(serialize = false)
244 		public AgentAuthType getFormatAuthType() {
245 			if (authType == 0) {
246 				return AgentAuthType.USE;
247 			} else if (authType == 1) {
248 				return AgentAuthType.MANAGE;
249 			}
250 			return null;
251 		}
252 
253 		public int getAppId() {
254 			return appId;
255 		}
256 
257 		public List<String> getApiGroup() {
258 			return apiGroup;
259 		}
260 
261 		// ---------- setter 应该全部去掉
262 
263 		public PrivilegeInfo getPrivilege() {
264 			return privilege;
265 		}
266 
267 		public void setPrivilege(PrivilegeInfo privilege) {
268 			this.privilege = privilege;
269 		}
270 
271 		public void setAuthType(int authType) {
272 			this.authType = authType;
273 		}
274 
275 		public void setAppId(int appId) {
276 			this.appId = appId;
277 		}
278 
279 		public void setApiGroup(List<String> apiGroup) {
280 			this.apiGroup = apiGroup;
281 		}
282 
283 		@Override
284 		public String toString() {
285 			return "AgentItem [authType=" + authType + ", appId=" + appId
286 					+ ", apiGroup=" + apiGroup + ", privilege=" + privilege
287 					+ ", " + super.toString() + "]";
288 		}
289 	}
290 
291 	/**
292 	 * 授权的通讯录部门
293 	 * 
294 	 * @className DepartItem
295 	 * @author jinyu(foxinmy@gmail.com)
296 	 * @date 2015年6月22日
297 	 * @since JDK 1.6
298 	 * @see
299 	 */
300 	public static class DepartItem extends Party {
301 
302 		private static final long serialVersionUID = 556556672204642407L;
303 
304 		/**
305 		 * 是否具有该部门的写权限
306 		 */
307 		private boolean writable;
308 
309 		public boolean isWritable() {
310 			return writable;
311 		}
312 
313 		// ---------- setter 应该全部去掉
314 		public void setWritable(boolean writable) {
315 			this.writable = writable;
316 		}
317 
318 		@Override
319 		public String toString() {
320 			return "DepartItem [writable=" + writable + ", " + super.toString()
321 					+ "]";
322 		}
323 	}
324 }