user.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. from optionaldict import optionaldict
  4. from wechatpy.client.api.base import BaseWeChatAPI
  5. class WeChatUser(BaseWeChatAPI):
  6. """
  7. 成员管理
  8. https://work.weixin.qq.com/api/doc#90000/90135/90194
  9. 邀请成员接口位于 `WeChatBatch.invite`
  10. """
  11. def create(self, user_id, name, department=None, position=None,
  12. mobile=None, gender=0, tel=None, email=None,
  13. weixin_id=None, extattr=None):
  14. """
  15. 创建成员
  16. https://work.weixin.qq.com/api/doc#90000/90135/90195
  17. """
  18. user_data = optionaldict()
  19. user_data['userid'] = user_id
  20. user_data['name'] = name
  21. user_data['gender'] = gender
  22. user_data['department'] = department
  23. user_data['position'] = position
  24. user_data['mobile'] = mobile
  25. user_data['tel'] = tel
  26. user_data['email'] = email
  27. user_data['weixinid'] = weixin_id
  28. user_data['extattr'] = extattr
  29. return self._post(
  30. 'user/create',
  31. data=user_data
  32. )
  33. def get(self, user_id):
  34. """
  35. 读取成员
  36. https://work.weixin.qq.com/api/doc#90000/90135/90196
  37. """
  38. return self._get(
  39. 'user/get',
  40. params={
  41. 'userid': user_id
  42. }
  43. )
  44. def update(self, user_id, name=None, department=None, position=None,
  45. mobile=None, gender=None, tel=None, email=None,
  46. weixin_id=None, enable=None, extattr=None):
  47. """
  48. 更新成员
  49. https://work.weixin.qq.com/api/doc#90000/90135/90197
  50. """
  51. user_data = optionaldict()
  52. user_data['userid'] = user_id
  53. user_data['name'] = name
  54. user_data['gender'] = gender
  55. user_data['department'] = department
  56. user_data['position'] = position
  57. user_data['mobile'] = mobile
  58. user_data['tel'] = tel
  59. user_data['email'] = email
  60. user_data['weixinid'] = weixin_id
  61. user_data['extattr'] = extattr
  62. user_data['enable'] = enable
  63. return self._post(
  64. 'user/update',
  65. data=user_data
  66. )
  67. def delete(self, user_id):
  68. """
  69. 删除成员
  70. https://work.weixin.qq.com/api/doc#90000/90135/90198
  71. """
  72. return self._get(
  73. 'user/delete',
  74. params={
  75. 'userid': user_id
  76. }
  77. )
  78. def batch_delete(self, user_ids):
  79. """
  80. 批量删除成员
  81. https://work.weixin.qq.com/api/doc#90000/90135/90199
  82. """
  83. return self._post(
  84. 'user/batchdelete',
  85. data={
  86. 'useridlist': user_ids
  87. }
  88. )
  89. def list(self, department_id, fetch_child=False, status=0, simple=False):
  90. """
  91. 批量获取部门成员 / 批量获取部门成员详情
  92. https://work.weixin.qq.com/api/doc#90000/90135/90200
  93. https://work.weixin.qq.com/api/doc#90000/90135/90201
  94. 此接口和 `WeChatDepartment.get_users` 是同一个接口,区别为 simple 的默认值不同。
  95. """
  96. url = 'user/simplelist' if simple else 'user/list'
  97. res = self._get(
  98. url,
  99. params={
  100. 'department_id': department_id,
  101. 'fetch_child': 1 if fetch_child else 0,
  102. 'status': status
  103. }
  104. )
  105. return res['userlist']
  106. def convert_to_openid(self, user_id, agent_id=None):
  107. """
  108. user_id 转成 openid
  109. https://work.weixin.qq.com/api/doc#90000/90135/90202
  110. :param user_id: 企业微信内的成员 ID
  111. :param agent_id: 可选,需要发送红包的应用ID,若只是使用微信支付和企业转账,则无需该参数
  112. :return: 返回的 JSON 数据包
  113. """
  114. data = optionaldict(
  115. userid=user_id,
  116. agentid=agent_id
  117. )
  118. return self._post('user/convert_to_openid', data=data)
  119. def convert_to_user_id(self, openid):
  120. """
  121. openid 转成 user_id
  122. https://work.weixin.qq.com/api/doc#90000/90135/90202
  123. :param openid: 在使用微信支付、微信红包和企业转账之后,返回结果的openid
  124. :return: 该 openid 在企业微信中对应的成员 user_id
  125. """
  126. res = self._post('user/convert_to_userid', data={'openid': openid})
  127. return res['userid']
  128. def verify(self, user_id):
  129. """
  130. 二次验证
  131. https://work.weixin.qq.com/api/doc#90000/90135/90203
  132. :param user_id: 成员UserID。对应管理端的帐号
  133. """
  134. return self._get(
  135. 'user/authsucc',
  136. params={
  137. 'userid': user_id
  138. }
  139. )
  140. def get_info(self, agent_id, code):
  141. return self._get(
  142. 'user/getuserinfo',
  143. params={
  144. 'agentid': agent_id,
  145. 'code': code
  146. }
  147. )