option('appid'); $next_openid = $this->option('next_openid'); $add_balance = $this->option('add_balance'); if(empty($appid) || empty($next_openid) || empty($add_balance)){ \Log::info('ThirdPlatomUserTranser_appid_is_null:'.$appid); exit(); } \Log::info('ThirdPlatomUserTranser_start:$appid:'.$appid.' $next_openid:'.$next_openid); // 检查appid是否存在 $param_official_account = ['appid'=>$appid]; $official_account = OfficialAccountService::officialAccountByAppid($param_official_account); $distribution_channel_id = isset($official_account->distribution_channel_id)?$official_account->distribution_channel_id:''; if(empty($official_account) || empty($distribution_channel_id)){ \Log::info('ThirdPlatomUserTranser_official_account_is_null:'.$appid.' $distribution_channel_id:'.$distribution_channel_id); exit(); } \Log::info('ThirdPlatomUserTranser_exist:'.$appid.' official_account:'.json_encode($official_account)); if($next_openid == '-1'){ $next_openid = ''; } if($add_balance == '-1'){ $add_balance = 0; } $skip = $loop = 0; while ( $loop <= 100) { $loop++; $users = array(); // 全服务号粉丝发,要记录next_openid if($loop > 1 && empty($next_openid)){ \Log::info('OfficialAccountUserTranse_break,loop:'.$loop.' skip:'.$skip); break; } $user_res = ForceSubscribeService::getFullOfficialAccountUsers($appid,$next_openid); $users = $user_res['openids']; $next_openid = $user_res['next_openid']; \Log::info('loop'.$loop.' user_num:'.count($users).' next_openid:'.$next_openid); // \Log::info($users); $skip += count($users); if(count($users)>0){ for ($i=0; $i < count($users); $i++) { \Log::info('loop:'.$loop.' i:'.$i); try{ $openid = isset($users[$i]['openid'])?$users[$i]['openid']:''; $unionid = $openid; $userinfo = ForceSubscribeService::getUserInfoAll($appid, $openid); $nickname = isset($userinfo['nickname'])?$userinfo['nickname']:''; $province = isset($userinfo['province'])?$userinfo['province']:''; $city = isset($userinfo['city'])?$userinfo['city']:''; $country = isset($userinfo['country'])?$userinfo['country']:''; $headimgurl = isset($userinfo['headimgurl'])?$userinfo['headimgurl']:''; $sex = isset($userinfo['sex'])?$userinfo['sex']:'0'; \Log::info('openid:'.$openid.' nickname:'.$nickname); // 先用openid 判断强关表是否存在 $forceSubscribeUsers = ForceSubscribeUsers::forceSubscribeUsersByOpenidAndAC($openid,$appid,$distribution_channel_id); if(!empty($forceSubscribeUsers)){ \Log::info('user_exist:'.$openid); continue; } // user表 $user = [ 'openid'=>$openid, 'unionid'=>$unionid, 'nickname'=>$nickname, 'distribution_channel_id'=>$distribution_channel_id, 'province'=>$province, 'city'=>$city, 'country'=>$country, 'headimgurl'=>$headimgurl, 'sex'=>$sex, ]; // 实际是根据union_id和distribution_channel_id做更新 $added_user = UserService::addUser($user); $uid = $added_user->id; \Log::info('add_user_id:'.$uid); if(!empty($uid)){ // force_subsribe_users $add_forceSubscribeUsers = [ 'uid'=>$uid, 'openid'=>$openid, 'appid'=>$appid, 'is_subscribed'=>1, 'subscribe_time'=>date('Y-m-d H:i:s'), 'distribution_channel_id'=>$distribution_channel_id, 'last_interactive_time'=>date('Y-m-d H:i:s'), ]; \Log::info('create_force_subscribe_user:'.$openid); //ForceSubscribeUsers::firstOrCreate($add_forceSubscribeUsers); // temp_force_subsribe_users $add_tempForceSubscribeUsers = [ 'uid'=>$uid, 'openid'=>$openid, 'appid'=>$appid, 'is_subscribed'=>1, 'subscribe_time'=>date('Y-m-d H:i:s'), 'distribution_channel_id'=>$distribution_channel_id, 'last_interactive_time'=>date('Y-m-d H:i:s'), ]; \Log::info('create_temp_force_subscribe_user:'.$openid); //TempForceSubscribeUsers::firstOrCreate($add_tempForceSubscribeUsers); // 加书币 if($add_balance > 0){ $fee = $add_balance; $charge = 0; $given = $add_balance; \Log::info('addbalance:'.$uid.' fee:'.$fee); UserService::addBalance($uid, $fee, $charge, $given); } } }catch(\Exception $e){ \Log::info('auto_subscribe_ept:'.$e->getMessage()); } } } } \Log::info('ThirdPlatomUserTranser_end loop:'.$loop.' $skip:'.$skip); print_r("======其他平台公众号用户迁移到我们平台 【任务执行结束】=====".date("y-m-d H:i:s"."\n")); print_r('memory_used:'.memory_get_usage()."\n"); } }