123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <?php
- /**
- 其他平台公众号用户迁移到我们平台
- */
- namespace App\Console\Commands\Tool;
- use App\Modules\OfficialAccount\Services\OfficialAccountService;
- use App\Modules\OfficialAccount\Models\OfficialAccount;
- use App\Modules\OfficialAccount\Models\ForceSubscribeUsers;
- use App\Modules\OfficialAccount\Models\TempForceSubscribeUsers;
- use Log;
- use Illuminate\Console\Command;
- use App\Modules\User\Services\UserService;
- use App\Modules\OfficialAccount\Services\ForceSubscribeService;
- use DB;
- class ThirdPlatomUserTranser extends Command
- {
- /**
- * 执行命令 Tool:ThirdPlatomUserTranser {appid}
- *
- * nohup php artisan Tool:ThirdPlatomUserTranser --appid=wxdbc486f1b4f6a8c3 --next_openid='-1' --add_balance=500 &
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'Tool:ThirdPlatomUserTranser {--appid=} {--next_openid=} {--add_balance=}';
- /**
- * 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"));
-
- $appid = $this->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");
- }
- }
|