<?php namespace api\controllers; use app\common\controllers\AController; use app\common\controllers\CController; use app\models\Nav; use app\modules\admin\models\Config; use app\modules\ad\models\AdData; use app\modules\doc\models\DocReal; use app\modules\ucenter\models\UserNum; use app\assets\WapAsset; use app\modules\cms\models\Category; use app\common\components\MultiSearchUrl; use app\modules\cms\models\Page; use Yii; class MappController extends AController { public $assetsUrl; public $optional1 = [ 'config', 'index', 'catlist', 'catconfig', 'doclist', 'search', ]; public function init() { $this->optional = array_merge($this->optional,$this->optional1); $view = $this->getView(); $assets = WapAsset::register($view); $this->assetsUrl = API_URL.ltrim($assets->baseUrl,'/').'/'; parent::init(); } //读取小程序配置 public function actionConfig() { $request_from = $this->get['request_from']; //百度小程序 if($request_from==3) { $configResult = Config::find()->where("name = 'bdapp'")->limit(1)->one(); } //微信小程序 if($request_from==4) { $configResult = Config::find()->where("name = 'wxapp'")->limit(1)->one(); } $config = string2array($configResult->value); $config['logo'] = getFileUrl($config['logo']); $config['shortlogo'] = getFileUrl($config['shortlogo']); //附加配置 $hotWords = \app\models\SearchRecord::find()->where("recommend=1")->orderBy(['times'=>SORT_DESC])->limit(5)->all(); $config['hotWords'] = $hotWords; $config['docname'] = $this->docconfig['docname']?$this->docconfig['docname']:'文档'; $config['colname'] = $this->docconfig['colname']?$this->docconfig['colname']:'合辑'; $config['coin_name'] = $this->coinconfig['coin_name']; $config['doc_model_id'] = $this->docconfig['content_model_id']; $config['assetsUrl'] = $this->assetsUrl; $config['fastAccountType'] = $this->openauthconfig['fastAccountType']; $config['commonAccountType'] = $this->openauthconfig['commonAccountType']; if($config['fastAccountType']=='mobile') { $config['fastAccountTip'] = '手机号'; } else if($config['fastAccountType']=='email') { $config['fastAccountTip'] = '邮箱'; } else if($config['fastAccountType']=='all') { $config['fastAccountTip'] = '手机号/邮箱'; } if($config['commonAccountType']=='mobile') { $config['commonAccountTip'] = '手机号'; } else if($config['commonAccountType']=='email') { $config['commonAccountTip'] = '邮箱'; } else if($config['commonAccountType']=='all') { $config['commonAccountTip'] = '手机号/邮箱'; } $config['certTimeOut'] = $this->smsconfig['certTimeOut']; $config['certValidTime'] = $this->smsconfig['certValidTime'].'分钟'; $config['user_model_id'] = getSysconfigValue('default_user_model'); $config['share_arg_name'] = Yii::$app->params['shareArgName']; $config['refer_page_name'] = Yii::$app->params['referPageName']; $agreements = Page::findOne(getSysconfigValue('user_agreements_cat_id')); $privacy = Page::findOne(getSysconfigValue('privacy_agreements_cat_id')); $config['agreements'] = $agreements; $config['privacy'] = $privacy; return [ 'error' => 0, 'msg' => '操作成功', 'data' => ['config'=>$config], 'code'=>200 ]; } //首页 public function actionIndex() { $request_from = $this->get['request_from']; //首页BANNER $bannerList = $this->_getAdData(12); if(is_array($bannerList))foreach($bannerList as $k=>$banner) { $bannerList[$k]['thumb'] = getFileUrl($banner['thumb']); } //文档数量 $totalNum = DocReal::find()->where('is_delete=0 and status=1')->count(); $totalNum = $totalNum + $this->docconfig['virtualnum']; $preDate = get_date(strtotime("-1 day"),"Y-m-d"); $predayNum = UserNum::find()->where("date='".$preDate."'")->sum('doc_uploadnum'); $predayNum = $predayNum+$this->docconfig['virtualaddnum']; //首页菜单 if($request_from==3)//百度小程序 { $menuList = Nav::find()->where("type=81 and disabled=0")->orderBy(['list_order'=>SORT_ASC])->asArray()->all(); } if($request_from==4)//微信小程序 { $menuList = Nav::find()->where("type=91 and disabled=0")->orderBy(['list_order'=>SORT_ASC])->asArray()->all(); } //首页横幅广告 $adList = $this->_getAdData(13); if(is_array($adList))foreach($adList as $k=>$ad) { $adList[$k]['thumb'] = getFileUrl($ad['thumb']); } //最新文档 $newDocList = DocReal::find()->where("is_new=1 and status=1 and is_delete=0 and doc_type!=2")->orderBy(['create_time'=>SORT_DESC])->limit(10)->asArray()->all(); foreach($newDocList as $k=>$newDoc) { $newDocList[$k]['thumb'] = $this->makeThumb($newDoc['thumb'],320,340); $newDocList[$k]['icon'] = $this->assetsUrl.'images/icon/'.DocReal::getExtImgName($newDoc['ext']).'.png'; $newDocList[$k]['views'] = $this->getDocView($newDoc['views']); $newDocList[$k]['downs'] = $this->getDocDowns($newDoc['downs']); } //最新合辑 $newColList = DocReal::find()->where("is_new=1 and status=1 and is_delete=0 and doc_type=2")->orderBy(['create_time'=>SORT_DESC])->limit(10)->asArray()->all(); foreach($newColList as $k=>$newCol) { $newColList[$k]['thumb'] = $this->makeThumb($newCol['thumb'],354,254); $newColList[$k]['icon'] = $this->assetsUrl.'images/icon/'.DocReal::getExtImgName($newCol['ext']).'.png'; $newColList[$k]['views'] = $this->getDocView($newCol['views']); $newColList[$k]['downs'] = $this->getDocDowns($newCol['downs']); } $tabTitle[] = $this->docconfig['docname']?$this->docconfig['docname']:'文档'; $tabTitle[] = $this->docconfig['colname']?$this->docconfig['colname']:'合辑'; return [ 'error' => 0, 'msg' => '操作成功', 'data' => ['bannerList'=>$bannerList,'adList'=>$adList,'menuList'=>$menuList,'totalNum'=>$totalNum,'predayNum'=>$predayNum,'tabTitle'=>$tabTitle,'newDocList'=>$newDocList,'newColList'=>$newColList,'assetsUrl'=>$this->assetsUrl], 'code'=>200 ]; } //获取栏目列表 public function actionCatlist() { $level = $this->docconfig['catlevel']; $menuList = Category::getDocCatMenus($this->docconfig['content_model_id']); foreach($menuList as $i=>$menu) { if(empty($menu['childs'])) { $menuList[$i]['childs'][] = ['title'=>$menu['title'],'cat_id'=>$menu['cat_id']]; } else { foreach($menu['childs'] as $k=>$subMenu) { if(empty($subMenu['childs'])) { $menuList[$i]['childs'][$k]['childs'][] = ['title'=>$subMenu['title'],'cat_id'=>$subMenu['cat_id']]; } } } } return [ 'error' => 0, 'msg' => '操作成功', 'data' => ['menuList'=>$menuList,'level'=>$level], 'code'=>200 ]; } //获取栏目配置 public function actionCatconfig() { $cat_id = $this->get['cat_id']; $controller = new \app\common\controllers\FController('default','web'); $controller->initFilterConfig(); $docFilterConfig = $controller->filterConfig['doc']; if($cat_id>0) { $category = Category::findOne($cat_id); //栏目扩展配置(加入SEO) $extConfigList = $category->getExtconfig($docFilterConfig['xConfig']); } return [ 'error' => 0, 'msg' => '操作成功', 'data' => ['extConfigList'=>$extConfigList,'spConfig'=>$docFilterConfig['spConfig'],'vpConfig'=>$docFilterConfig['vpConfig'],'sortConfig'=>$docFilterConfig['sortConfigWap']], 'code'=>200 ]; } //文档列表 public function actionDoclist() { $doc_type = $this->get['doc_type']; $searchConditions = []; if(is_array($this->get))foreach($this->get as $k=>$v) { if($v==0)continue; $searchConditions[] = $k.$v; } //序列化筛选条件 $controller = new \app\common\controllers\FController('default','web'); $controller->initFilterConfig(); $docFilterConfig = $controller->filterConfig['doc']; $multiSearch = MultiSearchUrl::getSelfInstance(array('fieldConfig'=> $docFilterConfig['fieldConfig'],'sortConfig'=>$docFilterConfig['sortConfig'])); $multiSearch->existConditions = $searchConditions; $sqlInfo = $multiSearch->sqllizeConditions(); $catId = $multiSearch->getConditionValueByType($searchConditions,'c'); $st = $multiSearch->getConditionValueByType($searchConditions,'st'); if($catId) { $category = Category::findOne($catId); //栏目扩展配置(加入SEO) $extConfigList = $category->getExtconfig($docFilterConfig['xConfig']); if(is_array($extConfigList))foreach($extConfigList as $extname=>$extConfig){ if(is_array($extConfig['options']))foreach($extConfig['options'] as $k=>$v){ if(in_array($extConfig['key'].$k,$searchConditions)){ $$extname = $v; } } } //栏目SEO设置 $seosettingsPre = 'wap_'; $cat_name = $category->cat_name; $categorySeoSettings = Category::getCatSeoSettings($catId,$seosettingsPre); $_replaceconfig = array( 'targets'=>['{brand}','{cat_name}','{ext_type_1}','{ext_type_2}','{ext_type_3}','{ext_type_4}','{ext_type_5}'], 'values'=>[$this->baseconfig['brand'],$cat_name,$ext_type_1,$ext_type_2,$ext_type_3,$ext_type_4,$ext_type_5], 'pre'=>$seosettingsPre ); $metaInfo = seoSettings($categorySeoSettings,$_replaceconfig); } else { $metaInfo = [$this->docconfig['meta_title'],$this->docconfig['meta_keywords'],$this->docconfig['meta_description']]; } //初始化查询语句 $query = DocReal::find()->asArray(); $sql = " 1=1 "; if($sqlInfo['where']) $sql.= $sqlInfo['where']; if($doc_type==2) { $sql .= " and doc_type=2 and status=1 and is_delete=0"; } else { $sql .= " and doc_type!=2 and status=1 and is_delete=0"; } $currentPage = Yii::$app->request->get('page',1); $return = $controller->doList($query,$sql,$sqlInfo,'doc',10,$this->higherconfig); $pages = $return['pages']; $resultList = $return['resultList']; if(is_array($resultList))foreach($resultList as $k=>$result) { $tempDocType = $result['doc_type1']?$result['doc_type1']:$result['doc_type']; if($tempDocType==2) { $resultList[$k]['thumb'] = $this->makeThumb($result['thumb'],354,254); } else { $resultList[$k]['thumb'] = $this->makeThumb($result['thumb'],320,340); } $resultList[$k]['icon'] = $this->assetsUrl.'images/icon/'.DocReal::getExtImgName($result['ext']).'.png'; $resultList[$k]['views'] = $this->getDocView($result['views']); $resultList[$k]['downs'] = $this->getDocDowns($result['downs']); $resultList[$k]['doc_type'] = $tempDocType; $resultList[$k]['doc_num'] = $result['doc_num']; $resultList[$k]['coin_price'] = number_format($result['coin_price'],1); } return [ 'error' => 0, 'msg' => '请求成功', 'data' => ['resultList'=>$resultList,'count'=>$pages->totalCount,'pageCount'=>$pages->getPageCount(),'currentPage'=>$currentPage,'pageSize'=>$pages->pageSize,'metaInfo'=>$metaInfo], 'code'=>200 ]; } //搜索 public function actionSearch() { $kw = safe_replace(urldecode($_GET['kw'])); $model_id = intval($_GET['model_id']); if($kw&&$model_id) { $controller = new \app\common\controllers\FController('default','web'); $controller->initFilterConfig(); $searchReturn = $controller->doSearch($kw,$model_id,$this->higherconfig); extract($searchReturn); return [ 'error' => 0, 'msg' => '请求成功', 'data' => ['resultList'=>$resultList,'count'=>$count,'pageCount'=>$pageCount,'currentPage'=>$currentPage,'pageSize'=>$pageSize], 'code'=>200 ]; } } //获取用户信息 public function actionUserinfo() { $this->userInfo['avatar'] = getFileUrl($this->user['avatar']); return [ 'error' => 0, 'msg' => '请求成功', 'data' => ['userInfo'=>$this->userInfo], 'code'=>200 ]; } //返回文档浏览数 public function getDocView($views) { $virtualViews = $views+intval($this->docconfig['virtualviews']); return $virtualViews>=999?'999+':$virtualViews; } //返回文档下载数 public function getDocDowns($downs) { $virtualDowns = $downs+intval($this->docconfig['virtualdowns']); return $virtualDowns>=99?'99+':$virtualDowns; } //获取广告数据 private function _getAdData($space_id) { $dataList = AdData::find()->where("space_id='".$space_id."' and status=1 and end_time>".TIMESTAMP)->orderBy(['list_order'=>SORT_ASC])->asArray()->all(); return $dataList; } }