[ 'class' => QueryParamAuth::className(), 'tokenParam' => "token",//access-token修改为token 'optional' => [//不需要认证方法名 array ], ] ]); } /** * 搜索页面 * @return array */ public function actionPage() { $type = Yii::$app->request->post('type'); if(in_array($type,array(Building::TYPE_SITE,Building::TYPE_HOUSE)))//工地/样板房 { $list = array_merge(CompanyBuildingController::$layout_arr,CompanyBuildingController::$style_arr); }else{ $list = MaterType::find()->select('id,name')->where(['status'=>MaterType::STATUS_YES])->asArray()->all(); } return Apireturn::sent(1,'success',200,$list); } /** * 搜索结果 */ public function actionList() { $latitude = Yii::$app->request->post('latitude'); $longitude = Yii::$app->request->post('longitude'); $type = Yii::$app->request->post('type'); $page = Yii::$app->request->POST('page', 1);//分页页数 $display = Yii::$app->request->POST('display', self::DISPLAY);//分页页数 $search = Yii::$app->request->post('name'); switch ($type) { case Building::TYPE_SITE : $count = Building::find()->where(['posted'=>Building::POSTED_YES,'type'=>Building::TYPE_SITE])->andWhere('name like :search or address like :search or layout like :search or stage like :search or pattern like :search or style like :search ',[':search'=>'%'.$search.'%'])->count(); $list = Building::findBySql("select *,get_Distance(latitude,longitude,:latitude,:longitude) as distance from {{%building}} WHERE posted = :posted AND type = :type AND ( name like :search or address like :search or layout like :search or stage like :search or pattern like :search or style like :search) ORDER BY distance ASC LIMIT ".($page-1) * $display.",".$display, [':latitude' => $latitude, ':longitude' => $longitude,':posted'=>Building::POSTED_YES,':type'=>Building::TYPE_SITE,':search'=>'%'.$search.'%'])->all(); break; case Building::TYPE_HOUSE : $count = Building::find()->where(['posted'=>Building::POSTED_YES,'type'=>Building::TYPE_HOUSE])->andWhere('name like :search or address like :search or layout like :search or stage like :search or pattern like :search or style like :search ',[':search'=>'%'.$search.'%'])->count(); $list = Building::findBySql("select *,get_Distance(latitude,longitude,:latitude,:longitude) as distance from {{%building}} WHERE posted = :posted AND type = :type AND ( name like :search or address like :search or layout like :search or stage like :search or pattern like :search or style like :search) ORDER BY distance ASC LIMIT ".($page-1) * $display.",".$display, [':latitude' => $latitude, ':longitude' => $longitude,':posted'=>Building::POSTED_YES,':type'=>Building::TYPE_HOUSE,':search'=>'%'.$search.'%'])->all(); break; case 10 : $count = UserMater::find()->where(['{{%user_mater}}.member'=>UserMater::MEMBER_YES])->andWhere('{{%user_mater}}.company like :search OR {{%mater_type}}.name like :search ',[':search'=>'%'.$search.'%'])->joinWith('type')->count(); $list = UserMater::findBySql("select a.id,a.company,a.backpic,a.age,a.address,b.name as type_name,get_Distance(latitude,longitude,:latitude,:longitude) as distance from {{%user_mater}} a LEFT JOIN {{%mater_type}} b ON a.type_id = b.id WHERE a.member = :member AND (a.company like :search OR b.name like :search ) ORDER BY distance ASC LIMIT ".($page-1) * $display.",".$display, [':latitude' => $latitude, ':longitude' => $longitude,':member'=>UserMater::MEMBER_YES,':search'=>'%'.$search.'%'])->asArray()->all(); break; default : break; } $lists = array(); if(!empty($list)) { if(in_array($type,array(Building::TYPE_SITE,Building::TYPE_HOUSE))) { foreach ($list as $key => $value) { $lists[$key]['id'] = $value->id; $lists[$key]['name'] = $value->name; $lists[$key]['pic'] = $value->all ? $value->all->pic : ""; $lists[$key]['address'] = $value->address; $lists[$key]['layout'] = $value->layout; $lists[$key]['style'] = $value->style; $lists[$key]['acreage'] = $value->acreage; $lists[$key]['type'] = $value->type; $lists[$key]['distance'] = $value->distance >= 0 ? sprintf("%.1f",$value->distance/1000) : ""; } }else{ $lists = $list; foreach ($lists as $key => $value) { $lists[$key]['distance'] = $value['distance'] >= 0 ? sprintf("%.1f",$value['distance']/1000) : ""; } } } return Apireturn::sent(1,'success',200,array('count'=>$count,'list'=>$lists)); } }