Ejemplo n.º 1
0
 public function ihm()
 {
     $now = time();
     $query = Member::find()->from(self::tableName() . ' member')->where(['and', 'regtime>1439879084', "regtime<{$now}"])->asArray()->select(['member.*', 'mdetail.sex', 'mdetail.company'])->leftJoin(MemberDetail::tableName() . ' mdetail', 'member.userid=mdetail.userid');
     // ->groupBy(['member.mobile']);
     // $query = $query->from(Member::tableName());
     $user = new UserBaseInfo();
     // $user_openid = new UserOpenid();
     $fileLogger = FileLogger::getInstance('iheima.log');
     foreach ($query->batch(1000, Yii::$app->iheima) as $rows) {
         $params = [];
         $openId = [];
         if (!arr_null($rows)) {
             foreach ($rows as $row) {
                 $openIds = openId('iHeiMa');
                 $params[] = ['username' => $row['username'], 'password' => $row['password'], 'password_salt' => $row['salt'], 'mobile' => $row['mobile'], 'email' => $row['email'], 'gender' => $row['sex'], 'reg_ip' => $row['regip'], 'last_login_time' => $row['lastlogintime'], 'last_login_ip' => $row['lastloginip'], 'create_time' => $row['regtime'], 'update_time' => time(), 'status' => $row['status'], 'open_id' => $openIds];
                 $openId[] = ['openid' => $openIds, 'userid' => $row['userid'], 'flag' => 'iheima'];
             }
             $result = $user->batchInsertUser($params);
             if (!$result) {
                 $fileLogger->writeOne('同步失败' . json_encode($row['email']), Logger::LEVEL_INFO, 'iHeiMa用户同步失败');
                 return false;
             }
             // $rt = $user_openid->batchInsert($openId);
             // if (!$rt) {
             //     return false;
             // }
             //$fileLogger->writeOne('同步成功' . json_encode($params), Logger::LEVEL_INFO, 'iHeiMa用户同步成功');
         }
     }
     $fileLogger->writeOne(json_encode($openId), Logger::LEVEL_INFO, 'iHeiMa用户openId与用户id对应关系数据');
     return $openId;
 }
Ejemplo n.º 2
0
 /**
  * 分页同步数据
  * select * from i_member where length(mobile)>11 手机长度超过11位
  * @param int $page 数据库分页当前页数
  * @param int $totalNum 数据库总记录
  */
 public function sync($page)
 {
     $params = null;
     $prefixAvatar = 'http://www.idaiyan.cn';
     $sexMap = [1 => 1, 2 => 2, 3 => 0, 0 => 0];
     $statusMap = [0 => 1, 1 => 0];
     if ($page <= 0) {
         $page = 1;
     }
     $page = ($page - 1) * self::$pageSize;
     $multiMobile = $this->multi();
     $multiMobile = implode(',', $multiMobile);
     $query = self::find()->where(['AND', "mobile not in ({$multiMobile})", "mobile<>''", "is_admin=0", "is_del<>2"])->orderBy('uid')->offset($page)->limit(self::$pageSize)->asArray();
     $fileLogger = FileLogger::getInstance('idaiyan.log');
     $fileLog = FileLogger::getInstance('idaiyan_dc.log');
     $user = new UserBaseInfo();
     foreach ($query->batch(self::$batchSize) as $members) {
         $now = time();
         foreach ($members as $member) {
             //                $exists = $user->uniqueUser($member['mobile']);
             //                if ($exists) {
             //                    $fileLog->writeOne($member['mobile'] , Logger::LEVEL_INFO, 'i代言语句数据中心用户同步手机重复检测');
             //                    continue;
             //                }
             if ($member['avatar']) {
                 $avatar = $prefixAvatar . $member['avatar'];
             } else {
                 $avatar = '';
             }
             $openId = openId('idaiyan');
             $params[] = ['username' => $member['nickname'], 'realname' => $member['truename'], 'password' => $member['password'], 'password_salt' => $member['random'], 'mobile' => $member['mobile'], 'email' => $member['email'], 'gender' => $sexMap[$member['sex']], 'avatar' => $avatar, 'birthday' => date('Y-m-d', $member['birthday']), 'reg_ip' => $member['create_ip'], 'reg_channel' => 'idaiyan', 'last_login_time' => $member['update_at'], 'last_login_ip' => '', 'create_time' => $now, 'update_time' => $member['update_at'], 'status' => $statusMap[$member['is_del']], 'open_id' => $openId];
         }
         $result = $user->batchInsertUser($params);
         if (!$result) {
             $mobiles = i_array_column($members, 'mobile');
             $fileLogger->writeOne('同步失败' . json_encode($mobiles), Logger::LEVEL_INFO, 'iDaiyan用户同步失败');
         }
         unset($params);
     }
 }