/** * 是否已经选择了公众号并且公众号属于当前登录用户. * * @return bool */ private function checkAccount() { // 当前选中的公众号ID $accountId = get_chosed_account(); if (empty($accountId)) { return false; } //选中的公众号所属用户ID $accountUserId = $this->accountRepository->getAccountUserId($accountId); if ($accountUserId != auth()->user()->id) { return false; } return true; }
/** * 同步粉丝数据到本地数据库. */ public function syncToLocal() { $easywechat = app('easywechat'); $user = $easywechat->user; $nextOpenid = ''; // 删除本地旧数据 FanModel::where('account_id', '=', get_chosed_account())->delete(); // 备忘:batchGet 批量获取粉丝信息时一次最多获取100个粉丝 do { $fansList = $user->lists($nextOpenid, 100); if (empty($fansList['next_openid'])) { break; } else { $nextOpenid = $fansList['next_openid']; } if ($fansList['count'] > 0 && $fansList['count'] <= 100) { // 粉丝 openid 列表 $openIds = $fansList->get('data.openid'); $fanList = $user->batchGet($openIds)->get('user_info_list'); $fans = array_map(function ($item) { $item['account_id'] = get_chosed_account(); $item['created_at'] = date('Y-md H:i:s'); $item['updated_at'] = date('Y-md H:i:s'); $item['subscribe_time'] = date('Y-m-d H:i:s', $item['subscribe_time']); return $item; }, $fanList); FanModel::insert($fans); } elseif ($fansList['count'] > 100) { // 粉丝 openid 列表 $openIds = $fansList->get('data.openid'); $openidsChunk = array_chunk($openIds, 100); foreach ($openidsChunk as $value) { $fanList = $user->batchGet($value)->get('user_info_list'); $fans = array_map(function ($item) { $item['account_id'] = get_chosed_account(); $item['created_at'] = date('Y-md H:i:s'); $item['updated_at'] = date('Y-md H:i:s'); $item['subscribe_time'] = date('Y-m-d H:i:s', $item['subscribe_time']); return $item; }, $fanList); FanModel::insert($fans); } } } while ($fansList['count'] > 0 && $fansList['next_openid']); return success('同步成功'); }
/** * 删除指定公众号的本地分组数据. * * @param null $accountId */ public function deleteAll($accountId = null) { $accountId = $accountId ?: get_chosed_account(); $this->model->where('account_id', '=', $accountId)->delete(); }