- 开发思路
- 重点关注
基于企业微信API,结合公司组织人员的数据结构,有多种应对场景:
- 第一优先使用公司组织code 同步至企业微信,前提是公司组织编码规则,适用于企业微信API 关于部门id 的定义(32位整型,取值范围[1-4294967296]),
- 如不适用于上一条,则建议由企业微信自动生成,生成规则(自增,父级id 比子级id 小)
本文是基于第2条应用场景实现的案例
# coding: utf-8
import sys
import datetime
import requests
import json
from logUtils import Logger
import pypyodbc as pyodbc
import collections
lfn = ''
if sys.argv[0].find('/') > -1:
lfn = sys.argv[0][0:sys.argv[0].rindex('/')] + '/logs/' + datetime.datetime.now().strftime('%Y-%m-%d') + '.log'
else:
lfn = sys.argv[0][0:sys.argv[0].rindex('\\')] + '\\logs\\' + datetime.datetime.now().strftime('%Y-%m-%d') + '.log'
log = Logger(filename=lfn, when='D')
class HRDept(object):
code = ''
name = ''
wechatid = ''
parentwechatid = ''
objectid = ''
parentid = ''
description = ''
state = 0
def __init__(self, code, name, wechatid, parentwechatid, objectid, parentid, description, state):
self.code = code
self.name = name
self.wechatid = wechatid
self.parentwechatid = parentwechatid
self.objectid = objectid
self.parentid = parentid
self.description = description
self.state = state
class HRUser(object):
code = ''
name = ''
mobile = ''
wechatid = ''
parentid = ''
title = ''
gender = ''
email = ''
officephone = ''
orgpath = ''
servicestate = 0
def __init__(self, code, name, mobile, wechatid, parentid, title, gender, email, officephone, orgpath, servicestate):
self.code = code
self.name = name
self.mobile = mobile
self.wechatid = wechatid
self.parentid = parentid
self.title = title
self.gender = gender
self.email = email
self.officephone = officephone
self.orgpath = orgpath
self.servicestate = servicestate
class WXDept(object):
id = ''
name = ''
parentid = 0
order = 0
name_path = ''
id_path = ''
def __init__(self, id, name, parentid, order, name_path, id_path):
self.id = id
self.name = name
self.parentid = parentid
self.order = order
self.name = name
self.id = id
self.name_path = name_path
self.id_path = id_path
class WXUser(object):
userid = '' # 成员UserID。对应管理端的帐号
name = '' # 成员名称,此字段从2019年12月30日起,对新创建第三方应用不再返回,2020年6月30日起,对所有历史第三方应用不再返回,后续第三方仅通讯录应用可获取,第三方页面需要通过通讯录展示组件来展示名字
mobile = '' # 手机号码,第三方仅通讯录应用可获取
department = '' # 成员所属部门id列表,仅返回该应用有查看权限的部门id
order = '' # 部门内的排序值,32位整数,默认为0。数量必须和department一致,数值越大排序越前面。
position = '' # 职务信息;第三方仅通讯录应用可获取
gender = '' # 性别。0表示未定义,1表示男性,2表示女性
email = '' # 邮箱,第三方仅通讯录应用可获取
is_leader_in_dept = '' # 表示在所在的部门内是否为上级;第三方仅通讯录应用可获取
avatar = '' # 头像url。第三方仅通讯录应用可获取
thumb_avatar = '' # 头像缩略图url。第三方仅通讯录应用可获取
telephone = '' # 座机。第三方仅通讯录应用可获取
enable = '' # ---成员启用状态。1表示启用的成员,0表示被禁用。服务商调用接口不会返回此字段
alias = '' # 别名;第三方仅通讯录应用可获取
status = '' # ---激活状态: 1=已激活,2=已禁用,4=未激活 已激活代表已激活企业微信或已关注微工作台(原企业号)。未激活代表既未激活企业微信又未关注微工作台(原企业号)。
extattr = '' # 扩展属性,第三方仅通讯录应用可获取
qr_code = '' # 员工个人二维码,扫描可添加为外部联系人;第三方仅通讯录应用可获取
external_profile = '' # 成员对外属性,字段详情见对外属性;第三方仅通讯录应用可获取
external_position = '' # 对外职务。 第三方仅通讯录应用可获取
address = '' # 地址
hide_mobile = '' # 是否隐藏手机号
english_name = '' # 英文名
def __init__(self, userid, name, mobile, department, order, position, gender, email, is_leader_in_dept, avatar, thumb_avatar, telephone, enable, alias, status, extattr, qr_code, external_profile,
external_position, address, hide_mobile, english_name):
self.userid = userid
self.name = name
self.mobile = mobile
self.department = department
self.order = order
self.position = position
self.gender = gender
self.email = email
self.is_leader_in_dept = is_leader_in_dept
self.avatar = avatar
self.thumb_avatar = thumb_avatar