同步企业微信号通讯录数据
- 原企业微信号通讯录中已存在数据(与新数据结构,信息不一致);
- 通讯录中字段有扩展字段
- 从数据源拉取数据,同步更新至企业号;
- 每天定时同步数据;
- 不能改变人员关注状态
- 注意:部门只能有
覆盖
- 数据切换,数据自动同步
由于存在历史数据,因此项目需要做数据切换,切换成功后才可以进行每天定时同步数据
- 备份数据
- 创建临时部门
- 获取人员数据,并重新设置
所在部门为对应的临时部门,生成CSV人员表 - 上传人员CSV数据表(实质:统一将人员移动至临时部门)
- 数据融合
由于原数据部门不正确,故以新数据部门为准- 新部门数据生成CSV部门数据表
- 获取新的人员数据,并和之前获取的历史人员数据进行做比较匹配融合数据
- 如果新数据中存在的人,历史数据不存在,则保留
- 如果新数据中存在的人,历史数据也存在,以新数据人员所在部门为准,其他扩展字段数据也以新数据为准,如果扩宽字段新数据没有,则以历史数据扩展字段为准
- 将融合后的数据生成CSV人员表
- 同步数据
- 上传部门CSV表
- 部门数据同步成功后,上传人员CSV表
-
同步部门数据
-
同步人员数据
- 增量获取新数据,并上传增量生成人员表
注意:该方案,适用于原历史数据与新数据相差比较大
CREATE TABLE tbl_wx_syn_data_record (
id varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'ID',
type int(2) DEFAULT NULL COMMENT '类型 (1)',
start_time datetime DEFAULT NULL COMMENT '开始时间',
end_time datetime DEFAULT NULL COMMENT '结束时间',
operator varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '操作人',
operate_time datetime DEFAULT NULL COMMENT '操作时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='数据同步记录表'
日常从外部数据拉取数据是增量方式(调度任务),在此工程外部数据的场景是每天从其他系统根据时间拉取数据,本次开始时间(start_time)即上次的结束时间(end_time)。
二、第二期
- 数据自动同步,并清理已离职人员
- 数据同步完成,并发送消息给管理员,通知同步结果
稍后上传源码