package com.foxinmy.weixin4j.qy.model; import java.io.Serializable; import java.util.List; import com.alibaba.fastjson.annotation.JSONField; import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.qy.type.AgentAuthType; import com.foxinmy.weixin4j.qy.type.LoginUserType; /** * 企业号oauth授权登陆信息&第三方应用授权信息 * * @className OUserInfo * @author jinyu(foxinmy@gmail.com) * @date 2015年6月12日 * @since JDK 1.6 * @see */ public class OUserInfo implements Serializable { private static final long serialVersionUID = -567063562050171293L; /** * 登录用户的类型:1.企业号创建者 2.企业号内部系统管理员 3.企业号外部系统管理员 4.企业号分级管理员 5. 企业号成员 */ @JSONField(name = "usertype") private int userType; /** * 是否系统管理员 */ @JSONField(name = "is_sys") private boolean isSysAdmin; /** * 是否内部管理员 */ @JSONField(name = "is_inner") private boolean isInnerAdmin; /** * 登陆管理员信息 */ @JSONField(name = "user_info") private User adminInfo; /** * 授权方企业信息 */ @JSONField(name = "corp_info") private CorpInfo corpInfo; /** * 该管理员在该提供商中能使用的应用列表 */ @JSONField(name = "agent") private List<AgentItem> agentInfo; /** * 该管理员拥有的通讯录权限 */ @JSONField(name = "auth_info") private AuthInfo authInfo; /** * 登录跳转的票据信息 */ @JSONField(name = "redirect_login_info") private Token redirectLoginInfo; public boolean isSysAdmin() { return isSysAdmin; } public boolean isInnerAdmin() { return isInnerAdmin; } public User getAdminInfo() { return adminInfo; } public CorpInfo getCorpInfo() { return corpInfo; } public List<AgentItem> getAgentInfo() { return agentInfo; } public AuthInfo getAuthInfo() { return authInfo; } public Token getRedirectLoginInfo() { return redirectLoginInfo; } // ---------- setter 应该全部去掉 public int getUserType() { return userType; } @JSONField(serialize = false) public LoginUserType getFormatUserType() { return LoginUserType.values()[userType - 1]; } public void setUserType(int userType) { this.userType = userType; } public void setSysAdmin(boolean isSysAdmin) { this.isSysAdmin = isSysAdmin; } public void setInnerAdmin(boolean isInnerAdmin) { this.isInnerAdmin = isInnerAdmin; } public void setAdminInfo(User adminInfo) { this.adminInfo = adminInfo; } public void setCorpInfo(CorpInfo corpInfo) { this.corpInfo = corpInfo; } public void setAgentInfo(List<AgentItem> agentInfo) { this.agentInfo = agentInfo; } public void setAuthInfo(AuthInfo authInfo) { this.authInfo = authInfo; } public void setRedirectLoginInfo(Token redirectLoginInfo) { this.redirectLoginInfo = redirectLoginInfo; } @Override public String toString() { return "OUserInfo [userType=" + userType + ", isSysAdmin=" + isSysAdmin + ", isInnerAdmin=" + isInnerAdmin + ", adminInfo=" + adminInfo + ", corpInfo=" + corpInfo + ", agentInfo=" + agentInfo + ", authInfo=" + authInfo + ", redirectLoginInfo=" + redirectLoginInfo + "]"; } /** * 授权信息 * * @className AuthInfo * @author jinyu(foxinmy@gmail.com) * @date 2015年6月22日 * @since JDK 1.6 * @see */ public static class AuthInfo implements Serializable { private static final long serialVersionUID = -4290240764958942370L; /** * 是否采用了新的授权,没有该字段或者该字段为false表示是旧授权,true表示是新授权 */ @JSONField(name = "is_new_auth") private boolean isNewAuth; /** * 授权的应用信息,新的权限体系其中通讯录权限以应用为节点 */ @JSONField(name = "agent") private List<AgentItem> agentItems; /** * 授权的通讯录部门,<font color="red">新的权限体系将废弃</font> */ @JSONField(name = "department") private List<DepartItem> departItems; public List<AgentItem> getAgentItems() { return agentItems; } public List<DepartItem> getDepartItems() { return departItems; } // ---------- setter 应该全部去掉 public boolean isNewAuth() { return isNewAuth; } public void setNewAuth(boolean isNewAuth) { this.isNewAuth = isNewAuth; } public void setAgentItems(List<AgentItem> agentItems) { this.agentItems = agentItems; } public void setDepartItems(List<DepartItem> departItems) { this.departItems = departItems; } @Override public String toString() { return "AuthInfo [isNewAuth=" + isNewAuth + ", agentItems=" + agentItems + ", departItems=" + departItems + "]"; } } /** * 授权的应用信息 * * @className AgentItem * @author jinyu(foxinmy@gmail.com) * @date 2015年6月22日 * @since JDK 1.6 * @see */ public static class AgentItem extends AgentOverview { private static final long serialVersionUID = -1188968391623633559L; /** * 管理员对应用的权限 */ @JSONField(name = "auth_type") private int authType; /** * 服务商套件中的对应应用id */ @JSONField(name = "appid") private int appId; /** * 授权方应用敏感权限组,目前仅有get_location,表示是否有权限设置应用获取地理位置的开关, <font * color="red">新的权限体系将废弃</font> */ @JSONField(name = "api_group") private List<String> apiGroup; /** * 应用对应的权限,<font color="red">新的权限体系</font> */ @JSONField(name = "privilege") private PrivilegeInfo privilege; public int getAuthType() { return authType; } @JSONField(serialize = false) public AgentAuthType getFormatAuthType() { if (authType == 0) { return AgentAuthType.USE; } else if (authType == 1) { return AgentAuthType.MANAGE; } return null; } public int getAppId() { return appId; } public List<String> getApiGroup() { return apiGroup; } // ---------- setter 应该全部去掉 public PrivilegeInfo getPrivilege() { return privilege; } public void setPrivilege(PrivilegeInfo privilege) { this.privilege = privilege; } public void setAuthType(int authType) { this.authType = authType; } public void setAppId(int appId) { this.appId = appId; } public void setApiGroup(List<String> apiGroup) { this.apiGroup = apiGroup; } @Override public String toString() { return "AgentItem [authType=" + authType + ", appId=" + appId + ", apiGroup=" + apiGroup + ", privilege=" + privilege + ", " + super.toString() + "]"; } } /** * 授权的通讯录部门 * * @className DepartItem * @author jinyu(foxinmy@gmail.com) * @date 2015年6月22日 * @since JDK 1.6 * @see */ public static class DepartItem extends Party { private static final long serialVersionUID = 556556672204642407L; /** * 是否具有该部门的写权限 */ private boolean writable; public boolean isWritable() { return writable; } // ---------- setter 应该全部去掉 public void setWritable(boolean writable) { this.writable = writable; } @Override public String toString() { return "DepartItem [writable=" + writable + ", " + super.toString() + "]"; } } }