Ejemplo n.º 1
0
 public function actionAdd()
 {
     $commitUserID = Yii::app()->user->id;
     //获取用户ID
     if (empty($commitUserID)) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => '请登录后再分享App'));
         // ReturnInfo($a,$b,$c)  传入的$b是什么类型,返回到js 的data就是什么类型
         Yii::app()->end();
         //            return;
     }
     if (!Yii::app()->request->isPostRequest) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => '数据请求方式错误'));
         Yii::app()->end();
     }
     $appUrl = trim(Yii::app()->request->getParam('appUrl', ''));
     // 前台trim()之后,后台也要trim() 防止注入
     if (empty($appUrl)) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => 'App链接不能为空'));
         Yii::app()->end();
     }
     $appHost = parse_url($appUrl);
     $domains = Source::getSourceDomains();
     if (!isset($appHost['host']) || !in_array($appHost['host'], $domains)) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => 'App链接有误,请参考填写规则'));
         Yii::app()->end();
     }
     $userInfo = array();
     $userInfo = unserialize(Yii::app()->cache->get('user_' . $commitUserID));
     $md5AppUrl = md5($appUrl);
     if (isset($userInfo['share_list']) && in_array($md5AppUrl, $userInfo['share_list'])) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => '您已经提交过该App了'));
         Yii::app()->end();
     }
     $explain = Yii::app()->request->getParam('explain');
     $officialUrl = Yii::app()->request->getParam('url');
     $link = new AppInfoList();
     $link->SourceId = Source::getSourceByDomain($appUrl);
     $link->CommitUserId = $commitUserID;
     $link->Remarks = empty($explain) ? '' : $explain;
     $link->AppUrl = $appUrl;
     $link->CommitTime = date('Y-m-d H:i:s');
     $link->OfficialWeb = empty($officialUrl) ? '' : $officialUrl;
     $link->Status = 1;
     $link->Sort = $link->model()->getMaxSort() + 1;
     if ($link->save()) {
         if (!isset($userInfo['share_list']) || empty($userInfo['share_list'])) {
             $userInfo['share_list'] = array();
         }
         $userInfo['share_list'][] = $md5AppUrl;
         Yii::app()->cache->set('user_' . $commitUserID, serialize($userInfo));
         echo new ReturnInfo(RET_SUC, 0);
     } else {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => $link->getErrors()));
     }
 }
Ejemplo n.º 2
0
 public function actionAddApp()
 {
     $commitUserID = $this->apiUser->ID;
     if (empty($commitUserID)) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => '请登录后再分享App'));
         Yii::app()->end();
     }
     if (!Yii::app()->request->isPostRequest) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => '数据请求方式错误'));
         Yii::app()->end();
     }
     $appUrl = Yii::app()->request->getParam('appUrl');
     if (empty($appUrl)) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => 'App链接不能为空'));
         Yii::app()->end();
     }
     $app = AppInfoList::model()->findByAttributes(array('CommitUserId' => $commitUserID, 'AppUrl' => $appUrl));
     if ($app instanceof AppInfoList) {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => '您已经提交过该App了'));
         Yii::app()->end();
     }
     $explain = Yii::app()->request->getParam('explain');
     $officialUrl = Yii::app()->request->getParam('url');
     $link = new AppInfoList();
     $link->SourceId = Source::getSourceByDomain($appUrl);
     $link->CommitUserId = $commitUserID;
     $link->Remarks = empty($explain) ? '' : $explain;
     $link->AppUrl = $appUrl;
     $link->CommitTime = date('Y-m-d H:i:s', time());
     $link->OfficialWeb = empty($officialUrl) ? '' : $officialUrl;
     $link->Status = 1;
     $link->Sort = $link->model()->getMaxSort() + 1;
     if ($link->save()) {
         echo new ReturnInfo(RET_SUC, 0);
     } else {
         echo new ReturnInfo(RET_SUC, array('code' => -1, 'msg' => $link->getErrors()));
     }
 }
Ejemplo n.º 3
0
 public function actionFakeShare()
 {
     $this->_log->setLogFile('share.log');
     if ($this->_isFake(self::SHARE_NUM_MIN, self::SHARE_NUM_MAX)) {
         $hasFilteredModel = AppHasFiltered::model()->findAll(array('condition' => 'Status=1', 'order' => new CDbExpression('RAND()'), 'limit' => 1));
         if (!$hasFilteredModel || !$hasFilteredModel[0]) {
             return;
         }
         $userId = $this->_getRandomUserId();
         if (!$userId) {
             return;
         }
         $hasFiltered = $hasFilteredModel[0];
         $date = date('Y-m-d H:i:s');
         $appInfoModel = new AppInfoList();
         $appInfoModel->PushId = $hasFiltered->PushId;
         $appInfoModel->AppId = $hasFiltered->AppId;
         $appInfoModel->SourceId = $hasFiltered->SourceId;
         $appInfoModel->AppName = $hasFiltered->AppName;
         $appInfoModel->MainCategory = $hasFiltered->MainCategory;
         $appInfoModel->CommitUserId = $userId;
         $appInfoModel->IconUrl = $hasFiltered->IconUrl;
         $appInfoModel->AppUrl = $hasFiltered->AppUrl;
         $appInfoModel->ScreenShoot = $hasFiltered->ScreenShoot;
         $appInfoModel->VideoUrl = $hasFiltered->VideoUrl;
         $appInfoModel->UpdateTime = $date;
         $appInfoModel->CommitTime = $date;
         $appInfoModel->OfficialWeb = $hasFiltered->OfficialWeb;
         $appInfoModel->AppInfo = $hasFiltered->AppInfo;
         $appInfoModel->ApkUrl = $hasFiltered->ApkUrl;
         $appInfoModel->Sort = $appInfoModel->model()->getMaxSort() + 1;
         $appInfoModel->ShareType = 1;
         $hasFiltered->Status = 0;
         $transaction = Yii::app()->db->beginTransaction();
         try {
             if (!$appInfoModel->save() || !$hasFiltered->save()) {
                 throw new Exception();
             }
             $this->_log->log('userId#' . $userId . '#于#' . $date . '#分享App PushId#' . $hasFiltered->PushId . '#');
             $transaction->commit();
         } catch (Exception $e) {
             $transaction->rollBack();
         }
         //线上请求baidu sitemap api
         if (CommonFunc::getProjectEnv() == 'online') {
             $this->baiduSiteMap($appInfoModel->Id);
         }
     }
 }
Ejemplo n.º 4
0
 static function up(AppInfoList $app, User $user, $isUpped)
 {
     if (!is_bool($isUpped)) {
         throw new ErrorException('Argument 3 passed to ' . __CLASS__ . '::' . __FUNCTION__ . '() that must be a boolean');
     }
     $appID = $app->Id;
     $userID = $user->ID;
     $linkKey = 'link_' . $appID;
     $userKey = 'user_' . $userID;
     $datetime = date('Y-m-d H:i:s');
     $appArray = CommonFunc::getRedis($linkKey);
     if (empty($appArray)) {
         $appArray = array('user' => array(), 'count' => 0);
     }
     $memberArray = CommonFunc::getRedis($userKey, 'like');
     if ($isUpped) {
         if (isset($appArray['user'][$userID])) {
             throw new ErrorException('你已经赞过该App');
         }
         if (!isset($appArray['count'])) {
             $appArray['count'] = 0;
         }
         $appArray['count'] += 1;
         $appArray['user'][$userID] = array('ID' => $userID, 'time' => $datetime, 'status' => $user->Status);
         CommonFunc::setRedis($linkKey, '', $appArray);
         $memberArray[$appID] = $appID;
         CommonFunc::setRedis($userKey, 'like', $memberArray);
         $app->Up += 1;
     } else {
         if (!isset($appArray['user'][$userID])) {
             throw new ErrorException('取消赞失败');
         }
         if (isset($appArray['user'][$userID])) {
             $appArray['count'] -= 1;
             unset($appArray['user'][$userID]);
             CommonFunc::setRedis($linkKey, '', $appArray);
             $app->Up -= 1;
         }
         if (isset($memberArray[$appID])) {
             unset($memberArray[$appID]);
             CommonFunc::setRedis($userKey, 'like', $memberArray);
         }
     }
     if ($app->save()) {
         return true;
     } else {
         throw new CDbException($app->getErrors());
     }
 }