CreateUserReq.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. package com.usoftchina.qywx.sdk.dto;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. /**
  7. * @author yingp
  8. */
  9. public class CreateUserReq {
  10. /**
  11. * 成员UserID。对应管理端的帐号,企业内必须唯一。不区分大小写,长度为1~64个字节。只能由数字、字母和“_-@.”四种字符组成,且第一个字符必须是数字或字母。
  12. */
  13. private String userId;
  14. /**
  15. * 成员名称。长度为1~64个utf8字符
  16. */
  17. private String name;
  18. /**
  19. * 成员别名。长度1~32个utf8字符
  20. */
  21. private String alias;
  22. /**
  23. * 手机号码。企业内必须唯一,mobile/email二者不能同时为空
  24. */
  25. private String mobile;
  26. /**
  27. * 成员所属部门列表,不超过20个
  28. */
  29. private List<Department> department;
  30. /**
  31. * 职务信息。长度为0~128个字符
  32. */
  33. private String position;
  34. /**
  35. * 对外职务,如果设置了该值,则以此作为对外展示的职务,否则以position来展示。长度12个汉字内
  36. */
  37. private String externalPosition;
  38. /**
  39. * 性别。1表示男性,2表示女性
  40. */
  41. private Gender gender;
  42. /**
  43. * 邮箱。长度6~64个字节,且为有效的email格式。企业内必须唯一,mobile/email二者不能同时为空
  44. */
  45. private String email;
  46. /**
  47. * 座机。32字节以内,由纯数字或’-‘号组成
  48. */
  49. private String telephone;
  50. /**
  51. * 成员头像的mediaid,通过素材管理接口上传图片获得的mediaid
  52. */
  53. private String avatarMediaId;
  54. /**
  55. * 启用/禁用成员。1表示启用成员,0表示禁用成员
  56. */
  57. private Boolean enable;
  58. /**
  59. * 地址。长度最大128个字符
  60. */
  61. private String address;
  62. /**
  63. * 是否邀请该成员使用企业微信(将通过微信服务通知或短信或邮件下发邀请,每天自动下发一次,最多持续3个工作日),默认值为true。
  64. */
  65. private Boolean toInvite;
  66. public CreateUserReq userId(String userId) {
  67. this.userId = userId;
  68. return this;
  69. }
  70. public CreateUserReq name(String name) {
  71. this.name = name;
  72. return this;
  73. }
  74. public CreateUserReq alias(String alias) {
  75. this.alias = alias;
  76. return this;
  77. }
  78. public CreateUserReq mobile(String mobile) {
  79. this.mobile = mobile;
  80. return this;
  81. }
  82. public CreateUserReq email(String email) {
  83. this.email = email;
  84. return this;
  85. }
  86. public CreateUserReq department(List<Department> department) {
  87. this.department = department;
  88. return this;
  89. }
  90. public CreateUserReq position(String position) {
  91. this.position = position;
  92. return this;
  93. }
  94. public CreateUserReq externalPosition(String externalPosition) {
  95. this.externalPosition = externalPosition;
  96. return this;
  97. }
  98. public CreateUserReq gender(Gender gender) {
  99. this.gender = gender;
  100. return this;
  101. }
  102. public CreateUserReq telephone(String telephone) {
  103. this.telephone = telephone;
  104. return this;
  105. }
  106. public CreateUserReq avatar(String avatarMediaId) {
  107. this.avatarMediaId = avatarMediaId;
  108. return this;
  109. }
  110. public CreateUserReq address(String address) {
  111. this.address = address;
  112. return this;
  113. }
  114. public CreateUserReq toInvite(boolean toInvite) {
  115. this.toInvite = toInvite;
  116. return this;
  117. }
  118. public CreateUserReq enable(boolean enable) {
  119. this.enable = enable;
  120. return this;
  121. }
  122. public Map<String, Object> build() {
  123. Map<String, Object> data = new HashMap<>(8);
  124. data.put("userid", userId);
  125. data.put("name", name);
  126. if (null != alias) {
  127. data.put("alias", alias);
  128. }
  129. if (null != mobile) {
  130. data.put("mobile", mobile);
  131. }
  132. if (null != email) {
  133. data.put("email", email);
  134. }
  135. if (null != department) {
  136. List<Integer> idList = new ArrayList<>(department.size());
  137. List<Integer> orderList = new ArrayList<>(department.size());
  138. List<Integer> leaderList = new ArrayList<>(department.size());
  139. department.forEach(dept -> {
  140. idList.add(dept.id);
  141. orderList.add(dept.order);
  142. leaderList.add(dept.leader ? 1 : 0);
  143. });
  144. data.put("department", idList);
  145. data.put("order", orderList);
  146. data.put("is_leader_in_dept", leaderList);
  147. }
  148. if (null != gender) {
  149. data.put("gender", gender.code);
  150. }
  151. if (null != telephone) {
  152. data.put("telephone", telephone);
  153. }
  154. if (null != avatarMediaId) {
  155. data.put("avatar_mediaid", avatarMediaId);
  156. }
  157. if (null != enable) {
  158. data.put("enable", enable ? 1 : 0);
  159. }
  160. if (null != toInvite) {
  161. data.put("to_invite", toInvite);
  162. }
  163. if (null != address) {
  164. data.put("address", address);
  165. }
  166. if (null != position) {
  167. data.put("position", position);
  168. }
  169. if (null != externalPosition) {
  170. data.put("external_position", externalPosition);
  171. }
  172. return data;
  173. }
  174. public enum Gender {
  175. MALE("1"), FEMALE("2");
  176. private final String code;
  177. Gender(String code) {
  178. this.code = code;
  179. }
  180. }
  181. public static class Department {
  182. /**
  183. * 成员所属部门id
  184. */
  185. private Integer id;
  186. /**
  187. * 部门内的排序值,默认为0,成员次序以创建时间从小到大排列,数值越大排序越前面。有效的值范围是[0, 2^32)
  188. */
  189. private Integer order;
  190. /**
  191. * 表示在所在的部门内是否为上级。1表示为上级,0表示非上级。在审批等应用里可以用来标识上级审批人
  192. */
  193. private boolean leader;
  194. public Department(Integer id, Integer order, boolean leader) {
  195. this.id = id;
  196. this.order = order;
  197. this.leader = leader;
  198. }
  199. }
  200. }