sync_user(new Model()); return 0; } catch (\Throwable $th) { // 记录错误信息 Log::error('staff_relation',$th->getMessage()); return 0; } } /** * 客户关系同步 * * */ public function sync_user(Model $Model) { // 更新维度 $source = 'staff_relation'; // 同步关系的任务 $task = $Model->getOneBySource($source); // 返回结果 if( !$task['id'] ) return ['error'=>'无执行任务']; // 获取列表 $userList = OpenApi::getUserList($task['limit'],$task['offset'],$task['last_time'],$source); // 放到队列执行 foreach ($userList['user_list'] as $key=>$value) { // 外部联系人 $value = ['id'=>$value['id']]; // 发送到队列执行,上锁成功则发送到队列执行 if( $Model->lockSyncExtidMark($value['id']) ) WeiBanSyncJobs::dispatch($value); // 重组下数据 $userList['user_list'][$key] = $value; } // 存在用户列表的话,更新OR新增 if( $userList['user_list'] ) { // 更新下一页偏移量 $task['offset'] = $task['offset'] + $task['limit']; // 同步数量 $task['sync_total'] = $task['sync_total'] + count($userList['user_list']); } // 更新任务总数 if( $userList['total'] ) { // 更新任务总数 $task['total'] = $userList['total']; // 偏移量大于总数,更新任务状态 if( $task['offset'] >= $userList['total'] ) { // 状态结束 $task['status'] = 1; // 最后的修改时间 $task['last_time'] = time() - 1; } } // 修改任务情况 $Model->edit($task['id'],$task); } }