Example #1
0
 /**
  * 是否已经选择了公众号并且公众号属于当前登录用户.
  *
  * @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;
 }
Example #2
0
 /**
  * 同步粉丝数据到本地数据库.
  */
 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();
 }