| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | <?php/**公众号用户迁移 */namespace App\Console\Commands\Tool;use Log;use Illuminate\Console\Command;use App\Modules\User\Services\UserService;use App\Modules\OfficialAccount\Services\ForceSubscribeService;use DB;class OfficialAccountUserTranser extends Command{    /**     * 执行命令   Tool:OfficialAccountUserTranser  {distribution_channel_id} {from_appid} {to_appid}     *     * The name and signature of the console command.     *     * @var string     */    protected $signature = 'Tool:OfficialAccountUserTranser {distribution_channel_id} {from_appid} {to_appid}';    /**     * The console command description.     *     * @var string     */    protected $description = '公众号用户数据迁移';    /**     * Execute the console command.     *     * @return mixed     */    public function handle()    {        ini_set('memory_limit', '1024M');        print_r('memory_used:'.memory_get_usage()."\n");        print_r("======公众号用户数据迁移【任务执行开始】=====".date("y-m-d H:i:s"."\n"));                $distribution_channel_id = $this->argument('distribution_channel_id');        $from_appid = $loop = $this->argument('from_appid');        $to_appid = $this->argument('to_appid');                \Log::info('OfficialAccountUserTranser_start:distribution_channel_id:'.$distribution_channel_id.' from_appid:'.$from_appid.' to_appid:'.$to_appid);        $next_openid = '';        $skip = $loop = 0;        while ( $loop <= 50) {        	$loop++;        	$users = array();        	// 全服务号粉丝发,要记录next_openid        	if($loop > 1 && empty($next_openid)){        		\Log::info('OfficialAccountUserTranse_break,loop:'.$loop.' skip:'.$skip);        		break;        	}        	$user_res = ForceSubscribeService::getFullOfficialAccountUsers($to_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++) {        			$openid = isset($users[$i]['openid'])?$users[$i]['openid']:'';        			$userinfo = ForceSubscribeService::getUserInfo($to_appid, $openid);        			$nickname = isset($userinfo['nickname'])?$userinfo['nickname']:'';        			\Log::info('openid:'.$openid.' nickname:'.$nickname);        			//         			if(empty($nickname)) continue;        			$origin_user = UserService::getUserByNickAndChannelId($distribution_channel_id,$nickname);        			if(!empty($origin_user)){        				\Log::info('distribution_channel_id:'.$distribution_channel_id.' to_appid:'.$to_appid.' openid:'.$openid.' uid:'.$origin_user->id);        				ForceSubscribeService::updateSubscribeUserTransfer($distribution_channel_id,$origin_user->id,$from_appid,$to_appid,$openid);        			}        		}        	}        }               \Log::info('OfficialAccountUserTranser_end loop:'.$loop.' $skip:'.$skip);                print_r("======公众号用户数据迁移 【任务执行结束】=====".date("y-m-d H:i:s"."\n"));        print_r('memory_used:'.memory_get_usage()."\n");    }}
 |