User.java

  1. package com.foxinmy.weixin4j.qy.model;

  2. import java.io.Serializable;
  3. import java.util.Arrays;
  4. import java.util.List;

  5. import com.alibaba.fastjson.annotation.JSONField;
  6. import com.foxinmy.weixin4j.qy.type.UserStatus;
  7. import com.foxinmy.weixin4j.type.Gender;
  8. import com.foxinmy.weixin4j.util.NameValue;

  9. /**
  10.  * 部门成员对象
  11.  *
  12.  * @className User
  13.  * @author jinyu(foxinmy@gmail.com)
  14.  * @date 2014年11月19日
  15.  * @since JDK 1.6
  16.  */
  17. public class User implements Serializable {

  18.     private static final long serialVersionUID = 4747301605060801611L;
  19.     /**
  20.      * 必须 员工UserID。对应管理端的帐号,企业内必须唯一。长度为1~64个字符
  21.      */
  22.     @JSONField(name = "userid")
  23.     private String userId;
  24.     /**
  25.      * 必须 成员名称。长度为1~64个字符
  26.      */
  27.     private String name;
  28.     /**
  29.      * 非必须 成员所属部门id列表,不超过20个
  30.      */
  31.     @JSONField(name = "department")
  32.     private List<Integer> partyIds;
  33.     /**
  34.      * 部门内的排序值,默认为0。数量必须和department一致,数值越大排序越前面。有效的值范围是[0, 2^32)
  35.      */
  36.     private List<Long> order;
  37.     /**
  38.      * 非必须 职位信息。长度为0~64个字符
  39.      */
  40.     private String position;
  41.     /**
  42.      * 非必须 手机号码。企业内必须唯一,mobile/weixinid/email三者不能同时为空
  43.      */
  44.     private String mobile;
  45.     /**
  46.      * 非必须 性别。gender=0表示男,=1表示女。默认gender=0
  47.      */
  48.     private Integer gender;
  49.     /**
  50.      * 非必须 邮箱。长度为0~64个字符。企业内必须唯一
  51.      */
  52.     private String email;
  53.     /**
  54.      * 头像url。注:如果要获取小图将url最后的"/0"改成"/64"即可
  55.      */
  56.     private String avatar;
  57.     /**
  58.      * 关注状态: 1=已关注,2=已冻结,4=未关注
  59.      */
  60.     private Integer status;
  61.     /**
  62.      * 非必须 扩展属性。扩展属性需要在WEB管理端创建后才生效,否则忽略未知属性的赋值
  63.      */
  64.     private List<NameValue> extattr;

  65.     /**
  66.      * 英文名。长度为1-64个字节。
  67.      */
  68.     @JSONField(name = "english_name")
  69.     private String englishName;
  70.     /**
  71.      * 座机。长度0-64个字节。
  72.      */
  73.     private String telephone;
  74.     /**
  75.      * 上级字段,标识是否为上级。
  76.      */
  77.     @JSONField(name = "isleader")
  78.     private Boolean isLeader;
  79.     /**
  80.      * 启用/禁用成员。1表示启用成员,0表示禁用成员
  81.      */
  82.     private Boolean enable;

  83.     protected User() {
  84.     }

  85.     public User(String userId, String name) {
  86.         this.userId = userId;
  87.         this.name = name;
  88.     }

  89.     public String getUserId() {
  90.         return userId;
  91.     }

  92.     public String getName() {
  93.         return name;
  94.     }

  95.     public List<Integer> getPartyIds() {
  96.         return partyIds;
  97.     }

  98.     public void setPartyIds(Integer... partyIds) {
  99.         this.partyIds = Arrays.asList(partyIds);
  100.     }

  101.     public String getPosition() {
  102.         return position;
  103.     }

  104.     public String getMobile() {
  105.         return mobile;
  106.     }

  107.     public Integer getGender() {
  108.         return gender;
  109.     }

  110.     @JSONField(serialize = false)
  111.     public Gender getFormatGender() {
  112.         if (gender != null) {
  113.             if (gender.intValue() == 0) {
  114.                 return Gender.male;
  115.             } else if (gender.intValue() == 1) {
  116.                 return Gender.female;
  117.             } else {
  118.                 return Gender.unknown;
  119.             }
  120.         }
  121.         return null;
  122.     }

  123.     public String getEmail() {
  124.         return email;
  125.     }

  126.     public String getAvatar() {
  127.         return avatar;
  128.     }

  129.     @JSONField(serialize = false)
  130.     public UserStatus getFormatStatus() {
  131.         if (status != null) {
  132.             for (UserStatus userStatus : UserStatus.values()) {
  133.                 if (userStatus.getVal() == status) {
  134.                     return userStatus;
  135.                 }
  136.             }
  137.         }
  138.         return null;
  139.     }

  140.     public Integer getStatus() {
  141.         return status;
  142.     }

  143.     @JSONField(serialize = false)
  144.     public Boolean getFormatEnable() {
  145.         if (status != null) {
  146.             return status.intValue() != 2;
  147.         }
  148.         return Boolean.FALSE;
  149.     }

  150.     public void setEnable(boolean enable) {
  151.         this.status = enable ? 1 : 0;
  152.     }

  153.     public List<NameValue> getExtattr() {
  154.         return extattr;
  155.     }

  156.     public void setExtattr(List<NameValue> extattr) {
  157.         this.extattr = extattr;
  158.     }

  159.     public void setExtattr(NameValue... extattr) {
  160.         this.extattr = Arrays.asList(extattr);
  161.     }

  162.     public void pushExattr(String name, String value) {
  163.         extattr.add(new NameValue(name, value));
  164.     }

  165.     // ---------- setter 应该全部去掉

  166.     public void setUserId(String userId) {
  167.         this.userId = userId;
  168.     }

  169.     public void setName(String name) {
  170.         this.name = name;
  171.     }

  172.     public void setPartyIds(List<Integer> partyIds) {
  173.         this.partyIds = partyIds;
  174.     }

  175.     public void setPosition(String position) {
  176.         this.position = position;
  177.     }

  178.     public void setMobile(String mobile) {
  179.         this.mobile = mobile;
  180.     }

  181.     public void setGender(Integer gender) {
  182.         this.gender = gender;
  183.     }

  184.     public void setEmail(String email) {
  185.         this.email = email;
  186.     }

  187.     public void setAvatar(String avatar) {
  188.         this.avatar = avatar;
  189.     }

  190.     public void setStatus(Integer status) {
  191.         this.status = status;
  192.     }

  193.     public String getEnglishName() {
  194.         return englishName;
  195.     }

  196.     public void setEnglishName(String englishName) {
  197.         this.englishName = englishName;
  198.     }

  199.     public String getTelephone() {
  200.         return telephone;
  201.     }

  202.     public void setTelephone(String telephone) {
  203.         this.telephone = telephone;
  204.     }

  205.     public Boolean getIsLeader() {
  206.         return isLeader;
  207.     }

  208.     public void setIsLeader(Boolean isLeader) {
  209.         this.isLeader = isLeader;
  210.     }

  211.     public Boolean getEnable() {
  212.         return enable;
  213.     }

  214.     public void setEnable(Boolean enable) {
  215.         this.enable = enable;
  216.     }

  217.     public List<Long> getOrder() {
  218.         return order;
  219.     }

  220.     public void setOrder(List<Long> order) {
  221.         this.order = order;
  222.     }

  223.     @Override
  224.     public int hashCode() {
  225.         final int prime = 31;
  226.         int result = 1;
  227.         result = prime * result + ((userId == null) ? 0 : userId.hashCode());
  228.         return result;
  229.     }

  230.     @Override
  231.     public boolean equals(Object obj) {
  232.         if (this == obj)
  233.             return true;
  234.         if (obj == null)
  235.             return false;
  236.         if (getClass() != obj.getClass())
  237.             return false;
  238.         User other = (User) obj;
  239.         if (userId == null) {
  240.             if (other.userId != null)
  241.                 return false;
  242.         } else if (!userId.equals(other.userId))
  243.             return false;
  244.         return true;
  245.     }

  246.     @Override
  247.     public String toString() {
  248.         return "User [userId=" + userId + ", name=" + name + ", partyIds=" + partyIds + ", position=" + position
  249.                 + ", mobile=" + mobile + ", gender=" + gender + ", email=" + email + ", avatar=" + avatar + ", status="
  250.                 + status + ", extattr=" + extattr + ", englishName=" + englishName + ", telephone=" + telephone
  251.                 + ", isLeader=" + isLeader + ", enable=" + enable + ", order=" + order + "]";
  252.     }
  253. }