/** * 使用用户手机号、邮箱 查询该用户信息 * @param $username 用户名(手机号、邮箱) * * @return array */ public function getByUserName($username = '') { $result = ''; if (empty($username)) { return $result; } if (PublicLibrary::checkMobileType($username) > 0) { $key = 'mobile'; } if (PublicLibrary::is_valid_email($username)) { $key = 'email'; } if (isset($key)) { $result = Member::find()->where([$key => $username, 'is_del' => Member::STATUS_MEMBERIS_DEL])->asArray()->one(); return $result; } }
/** */ public function tplSuccessCallback($client) { $mTplogin = new UserThirdPartyLogin(); $id = $client->getId(); $key = $client->openid(); $result = ''; $userAttrs = $client->getUserAttributes(); $userProfile = $client->getUserInfo(); $openid = $userAttrs[$key]; $data = ['type' => $id, 'open_id' => $openid, 'profile_info' => json_encode($userProfile)]; if (isset($userAttr['expire_in'])) { $data['expire_time'] = $userAttr['expire_in']; } try { if (!($result = $mTplogin->checkBindByOpenid($openid))) { if ($userAr = $mTplogin->bind($data)) { $userAr['profile'] = $userProfile; $this->setTplSessionToUser($userAr); } else { // TODO: 绑定失败 } } else { if ($result === TRUE) { $this->setTplSessionToUser(['type' => $id, 'open_id' => $openid, 'profile' => $userProfile]); } else { //登陆状态 $mMember = new Member(); $userData = $mMember->find()->where(['uid' => $result])->one(); if ($userData) { $session = Yii::$app->session; $session->isActive ? '' : $session->open(); $user = array('uid' => $userData['uid'], 'mobile' => $userData['mobile'], 'email' => $userData['email'], 'username' => $userData['mobile'] ? $userData['mobile'] : $userData['email'], 'nickname' => $userData['nickname'] ? $userData['nickname'] : $userData['username'], 'is_admin' => 0); $session->set('user', $user); } } // TODO: 已经绑定 } } catch (Exception $e) { // TODO: 登录异常 } }
/** * [产品详情] * @param int $id 产品id * @return array 产品信息渲染到页面view */ public function actionView($id) { $session = Yii::$app->session; $session->isActive ? '' : $session->open(); //判断产品是否发布 $base = IProductBase::find()->select('status,uid')->where('id = :id', [':id' => $id])->asArray()->one(); if (!empty($_SESSION['user'])) { if ($base['status'] != IProductBase::STATUS_VERIFEND) { if ($base['uid'] != $_SESSION['user']['uid']) { return $this->redirect(['index']); //跳转到完善信息 } } } else { if ($base['status'] != IProductBase::STATUS_VERIFEND) { return $this->redirect(['index']); //跳转到完善信息 } } //增加总访问量 $mProductStat = new IProductStat(); $mProductStat->modify('page_views', $id, 1, true); //访问日志 $mViewsLog = new ViewsLog(); $mViewsLog->modify($id, ViewsLog::PRODUCT_TYPE); //增加周访问量,月访问量 $week_num = $mViewsLog->ViewsNum($id, ViewsLog::PRODUCT_TYPE, 7); $month_num = $mViewsLog->ViewsNum($id, ViewsLog::PRODUCT_TYPE, 30); $mProductStat->modifyviewnum('week_views', $id, $week_num); $mProductStat->modifyviewnum('month_views', $id, $month_num); //基础数据和扩展数据查询 $re = IProductBase::find()->With('extra', 'stat')->where(IProductBase::tableName() . '.id = :id', [':id' => $id])->asArray()->one(); //该产品用户共发布产品数 $presentNum = IProductBase::find()->where(['uid' => $re['uid'], 'status' => IProductBase::STATUS_VERIFEND])->count(); //喜欢此产品用户 $model = new ProductFollow(); $loves = $model->getFollowUsers($id); //产品发布人头像及姓名 $model = new Member(); $user = $model->find()->select(['avatar', 'nickname'])->where(['uid' => $re['uid']])->asArray()->one(); //参加活动 $model = new ActivityProduct(); // print_r($id);exit; $actives = $model->getActivityDetail($id); // $actives = $model->getActivitiseById($id); // print_r($actives);exit; foreach ($actives as $key => $value) { if ($value['acti_id'] == 8) { $mBaiyingShare = new BaiyingShare(); $number = $mBaiyingShare->getShareNum($value['id']); } if ($value['acti_id'] == 9) { $rel_id = $value['id']; } } //活动map $activityBase = new ActivityBase(); $activesMap = $activityBase->getActivityMap(); if (isset($rel_id)) { //投票信息 $city = "上海"; $poll_type_id = PollType::GOODPRODUCT_TYPE; $mpoll = new poll(); $pollone = $mpoll->getPollByCity($city, $poll_type_id); //投票项信息 $moption = new polloption(); $optione = $moption->getOptionByowner($pollone['poll_id'], $rel_id); } return $this->render('view', ['re' => $re, 'present_num' => $presentNum, 'actives' => $actives, 'now' => time(), 'number' => isset($number) ? intval($number) : '', 'loves' => $loves, 'user' => $user, 'activesMap' => $activesMap, 'optione' => isset($optione) ? $optione : '']); }