User.java
package com.foxinmy.weixin4j.qy.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import com.alibaba.fastjson.annotation.JSONField;
import com.foxinmy.weixin4j.qy.type.UserStatus;
import com.foxinmy.weixin4j.type.Gender;
import com.foxinmy.weixin4j.util.NameValue;
/**
* 部门成员对象
*
* @className User
* @author jinyu(foxinmy@gmail.com)
* @date 2014年11月19日
* @since JDK 1.6
*/
public class User implements Serializable {
private static final long serialVersionUID = 4747301605060801611L;
/**
* 必须 员工UserID。对应管理端的帐号,企业内必须唯一。长度为1~64个字符
*/
@JSONField(name = "userid")
private String userId;
/**
* 必须 成员名称。长度为1~64个字符
*/
private String name;
/**
* 非必须 成员所属部门id列表,不超过20个
*/
@JSONField(name = "department")
private List<Integer> partyIds;
/**
* 部门内的排序值,默认为0。数量必须和department一致,数值越大排序越前面。有效的值范围是[0, 2^32)
*/
private List<Long> order;
/**
* 非必须 职位信息。长度为0~64个字符
*/
private String position;
/**
* 非必须 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空
*/
private String mobile;
/**
* 非必须 性别。gender=0表示男,=1表示女。默认gender=0
*/
private Integer gender;
/**
* 非必须 邮箱。长度为0~64个字符。企业内必须唯一
*/
private String email;
/**
* 头像url。注:如果要获取小图将url最后的"/0"改成"/64"即可
*/
private String avatar;
/**
* 关注状态: 1=已关注,2=已冻结,4=未关注
*/
private Integer status;
/**
* 非必须 扩展属性。扩展属性需要在WEB管理端创建后才生效,否则忽略未知属性的赋值
*/
private List<NameValue> extattr;
/**
* 英文名。长度为1-64个字节。
*/
@JSONField(name = "english_name")
private String englishName;
/**
* 座机。长度0-64个字节。
*/
private String telephone;
/**
* 上级字段,标识是否为上级。
*/
@JSONField(name = "isleader")
private Boolean isLeader;
/**
* 启用/禁用成员。1表示启用成员,0表示禁用成员
*/
private Boolean enable;
protected User() {
}
public User(String userId, String name) {
this.userId = userId;
this.name = name;
}
public String getUserId() {
return userId;
}
public String getName() {
return name;
}
public List<Integer> getPartyIds() {
return partyIds;
}
public void setPartyIds(Integer... partyIds) {
this.partyIds = Arrays.asList(partyIds);
}
public String getPosition() {
return position;
}
public String getMobile() {
return mobile;
}
public Integer getGender() {
return gender;
}
@JSONField(serialize = false)
public Gender getFormatGender() {
if (gender != null) {
if (gender.intValue() == 0) {
return Gender.male;
} else if (gender.intValue() == 1) {
return Gender.female;
} else {
return Gender.unknown;
}
}
return null;
}
public String getEmail() {
return email;
}
public String getAvatar() {
return avatar;
}
@JSONField(serialize = false)
public UserStatus getFormatStatus() {
if (status != null) {
for (UserStatus userStatus : UserStatus.values()) {
if (userStatus.getVal() == status) {
return userStatus;
}
}
}
return null;
}
public Integer getStatus() {
return status;
}
@JSONField(serialize = false)
public Boolean getFormatEnable() {
if (status != null) {
return status.intValue() != 2;
}
return Boolean.FALSE;
}
public void setEnable(boolean enable) {
this.status = enable ? 1 : 0;
}
public List<NameValue> getExtattr() {
return extattr;
}
public void setExtattr(List<NameValue> extattr) {
this.extattr = extattr;
}
public void setExtattr(NameValue... extattr) {
this.extattr = Arrays.asList(extattr);
}
public void pushExattr(String name, String value) {
extattr.add(new NameValue(name, value));
}
// ---------- setter 应该全部去掉
public void setUserId(String userId) {
this.userId = userId;
}
public void setName(String name) {
this.name = name;
}
public void setPartyIds(List<Integer> partyIds) {
this.partyIds = partyIds;
}
public void setPosition(String position) {
this.position = position;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public void setGender(Integer gender) {
this.gender = gender;
}
public void setEmail(String email) {
this.email = email;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getEnglishName() {
return englishName;
}
public void setEnglishName(String englishName) {
this.englishName = englishName;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public Boolean getIsLeader() {
return isLeader;
}
public void setIsLeader(Boolean isLeader) {
this.isLeader = isLeader;
}
public Boolean getEnable() {
return enable;
}
public void setEnable(Boolean enable) {
this.enable = enable;
}
public List<Long> getOrder() {
return order;
}
public void setOrder(List<Long> order) {
this.order = order;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((userId == null) ? 0 : userId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (userId == null) {
if (other.userId != null)
return false;
} else if (!userId.equals(other.userId))
return false;
return true;
}
@Override
public String toString() {
return "User [userId=" + userId + ", name=" + name + ", partyIds=" + partyIds + ", position=" + position
+ ", mobile=" + mobile + ", gender=" + gender + ", email=" + email + ", avatar=" + avatar + ", status="
+ status + ", extattr=" + extattr + ", englishName=" + englishName + ", telephone=" + telephone
+ ", isLeader=" + isLeader + ", enable=" + enable + ", order=" + order + "]";
}
}