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; }
/** * iheima会员数据导出到数据中心 */ public function actionIhm() { $member = new Member(); $connection = Yii::$app->iheima; $transaction = $connection->beginTransaction(); try { $result = $member->ihm(); if ($result) { echo 'success', "\r\n"; $transaction->commit(); } else { echo 'failure', "\r\n"; $transaction->rollBack(); } } catch (Exception $ex) { $transaction->rollBack(); FileLogger::getInstance('iheima.exception.log')->writeOne($ex->getMessage(), Logger::LEVEL_ERROR, 'iHeiMa数据导出'); echo 'exception', "\r\n"; } }
private function _store($data) { $mMember = new Member(); $insertData = ['username' => uniqid() . mt_rand(10, 99), 'password' => $data['password'], 'email' => empty($data['email']) ? $data['mobile'] . '@iheima.com' : $data['mobile'], 'groupid' => 6, 'regip' => '', 'regtime' => $data['create_time'], 'lastloginip' => '', 'salt' => $data['password_salt'], 'mobile' => $data['mobile'], 'open_id' => $data['open_id']]; return $mMember->store($insertData); }
public function actionReport($startTime = false, $endTime = false) { date_default_timezone_set('PRC'); if (empty($startTime) && empty($endTime)) { $startTime = strtotime(date('Y-m-d 00:00:00', strtotime("-1 day"))); $endTime = strtotime(date('Y-m-d 23:59:59', strtotime("-1 day"))); } else { if (empty($startTime) || empty($endTime)) { $tmp = $startTime; $startTime = strtotime($tmp . ' 00:00:00'); $endTime = strtotime($tmp . ' 23:59:59'); } else { if ($startTime > $endTime) { $tmp = $startTime; $startTime = $endTime; $endTime = $tmp; } $startTime = strtotime($startTime); $endTime = strtotime($endTime); } } //获取i黑马注册用户的信息 $ihmUsers = Member::getByTime($startTime, $endTime); //获取数据中心注册用户的信息 $dcUsers = UserBaseInfo::getByTime($startTime, $endTime); if (empty($dcUsers) && empty($ihmUsers)) { $errorMessage[] = date('Y-m-d H:i:s', $startTime) . '至' . date('Y-m-d H:i:s', $endTime) . ' 无用户注册。'; } else { if (empty($dcUsers) && isset($ihmUsers)) { $errorMessage[] = date('Y-m-d H:i:s', $startTime) . '至' . date('Y-m-d H:i:s', $endTime) . ' 数据中心中无用户注册,而i黑马有用户注册。'; } else { $ihmOpenIds = array(); foreach ($ihmUsers as $key => $user) { $mobile = $user['mobile']; if (isset($ihmOpenIds[$mobile])) { if (is_string($ihmOpenIds[$mobile])) { $ihmOpenIds[$mobile] = [$ihmOpenIds[$mobile], $user['open_id']]; } else { if (is_array($ihmOpenIds[$mobile])) { $ihmOpenIds[$mobile][] = $user['open_id']; } } } else { $ihmOpenIds[$mobile] = $user['open_id']; } } foreach ($dcUsers as $key => $user) { $mobile = $ihmOpenIds[$user['mobile']]; if (!isset($mobile)) { $errorMessage[] = $user['mobile'] . '(' . $user['open_id'] . ') : 同步失败'; } else { if (is_array($mobile)) { $mobile = implode(", ", $mobile); $errorMessage[] = $user['mobile'] . '(' . $user['open_id'] . ') : 存在多OPENID (' . $mobile . ')'; } else { if (is_string($mobile)) { if ($mobile != $user['open_id']) { $errorMessage[] = $user['mobile'] . '(' . $user['open_id'] . ') : OPENID不匹配(' . $user['open_id'] . ',' . $mobile . ')'; } } } } } } } $errorMessage = implode("<br/>", $errorMessage); //发送邮件操作 $userID = UserBaseInfo::SYSTEM_USER; $email = Yii::$app->params['syncUserEmail']; $data = ['userID' => $userID, 'to' => $email, 'appID' => '100000', 'business' => S_SYNCUSER_CHECK, 'tplno' => 5, 'subject' => '检测同步用户报告', 'content' => $errorMessage]; $sender = Yii::$app->mailer; $result = $sender->check($data, true); if (!$result[0]) { $result = $sender->exec($result[1]); } else { //邮箱发送失败记录到日志文件中 FileLogger::getInstance(date('Ymd') . '_sync_user_report.log')->writeOne('邮箱发送失败', Logger::LEVEL_ERROR, 'report'); } }