private function getAreaHospitalData($nowPage, $pageSize) 
    {/*{{{*/
        $res = array();
        $cityRes = $proviceRes = array();
        $provinceList = Area::getAllProvinceNameList();
        $cityList = Area::getCities();
        foreach($provinceList as $province)
        {
            echo date('Y-m-d H:i:s')."计算".$province."的数据。。。。\n";
            foreach($cityList[$province] as $city)
            {
                if($province != $city)
                {
                    $cityParams = array('province'=>$province, 'city'=>$city);
                    //通过市级查询
                    $itemCity = $this->buildAreaData($cityParams, $nowPage, $pageSize);
                    if(false == empty($itemCity))
                    {
                        $cityRes[] = $itemCity;
                    }
                    unset($itemCity);
                }
                BeanFinder::get('LocalCache')->removeAll(); 
            }

            //通过省级查询
            $provinceParams = array('province'=>$province);
            $itemProvice = $this->buildAreaData($provinceParams, $nowPage, $pageSize);
            if(false == empty($itemProvice))
            {
                $proviceRes[] = $itemProvice;
            }
            unset($itemProvice);
            BeanFinder::get('LocalCache')->removeAll(); 
        }
        $data = array_merge($cityRes, $proviceRes);
        return $this->formatData($data);
    }/*}}}*/
 private function dealSearchOptions($request, $response)
 {
     /*{{{*/
     $response->isMatchPrecisely = $request->getRequest('isMatchPrecisely', 0);
     $response->filters = $request->getRequest('filters', array());
     $response->hospitalName = $request->getRequest('hospitalName', '');
     $response->facultyName = $request->getRequest('facultyName', '');
     $response->doctorName = $request->getRequest('doctorName', '');
     $response->diseaseName = $request->getRequest('diseaseName', '');
     $response->userName = $request->getRequest('userName', '');
     $response->serviceDef = $request->getRequest('serviceDef', ServiceDef::TYPE_TELORDER);
     $response->doctorType = $request->getRequest('doctorType', '');
     $response->groups = $request->getRequest('groups', 0);
     $response->groupCategories = $request->getRequest('groupCategories', 0);
     $response->childCategories = $request->getRequest('childCategories', 0);
     $response->provinces = $request->getRequest('provinces', array());
     $response->canBind = $request->getRequest('canBind', 0);
     $response->provNameList = Area::getAllProvinceNameList();
 }
    protected function getData($nowPage, $pageSize)
    {/*{{{*/
        $facultyIds = FacultyClient::getInstance()->getFacultyListByOption($nowPage, $pageSize);
        $faculties = DAL::get()->find('Faculty', $facultyIds['ids']);
        $provinces = Area::getAllProvinceNameList();
        $provinces[] = "全国";
        $res = array();
        foreach ($faculties as $faculty)
        {
            $info['key'] = $faculty->name;
            $offices = $doctorInfos = array();
            foreach ($provinces as $province)
            {
                if (Area::isZXS($province))
                {
                    $cities = array($province);
                }
                elseif($province == "全国")
                {
                   $cities = array("全国"); 
                }
                else
                {
                    $cities = Area::getProvinceCities($province);
                    $cities[] = $province;
                }

                foreach ($cities as $city)
                {
                    $options = array();
                    $options['facultyId'] = $faculty->id;
                    $options['orderBy']['rank'] = true;
                    $options['isVirtual'] = 0;
                    $options['hospitalIsActivated'] = 1;
                    if ($city != "全国")
                    {
                        if (Area::isProvince($city) || Area::isZXS($city))
                        {
                            $options['province'] = $city;
                            $areaUrl = "http://haoping.haodf.com/keshi/".$faculty->getEncodeId()."/keshi/".Area::getProvKeyByName($city).".htm";
                        }
                        else
                        {
                            $options['city'] = $city;
                            $str = Area::retrieveCityEnglishName($province, Area::getProvKeyByName($province), $city);
                            $areaUrl = "http://haoping.haodf.com/keshi/".$faculty->getEncodeId()."/keshi/".Area::getProvKeyByName($province).".htm?city=".$str;
                        }
                    }
                    else
                    {
                        $areaUrl = "http://haoping.haodf.com/keshi/".$faculty->getEncodeId()."/keshi/all.htm";
                    }

                    $hospitalfaculties = HospitalFacultyClient::getInstance()->getHospitalFacultyByOption(1, 30, $options);
                    if (false == empty($hospitalfaculties)) 
                    {
                        $office['area'] = $city;
                        $office['areaurl'] = $areaUrl;
                        foreach ($hospitalfaculties as $hospitalfaculty) 
                        {
                            if ($hospitalfaculty->doctorCount < 1)
                            {
                                continue;
                            }
                            $officeInfo['office']['officename'] = $hospitalfaculty->hospital->name.$hospitalfaculty->name;
                            $officeInfo['office']['city'] = $hospitalfaculty->hospital->city;
                            $officeInfo['office']['officeurl'] = $hospitalfaculty->getUrl();
                            $officeInfo['office']['aptitude'] = $hospitalfaculty->hospital->getGradeStr();
                            $officeInfo['office']['gooddoctornum'] = $hospitalfaculty->doctorCount;
                            $officeInfo['office']['votenum'] = $hospitalfaculty->rank;
                            $office[] = $officeInfo;
                            $officeInfo = array();
                        }

                        $offices[] = array('offices' =>$office);
                        $office = array();
                    }

                    $page = $params = array();
                    $page['nowPage'] = 1;
                    $page['pageSize'] = 30;
                    $doctorList = DoctorClient::getInstance()->getDoctorBetweenFaculty($faculty->id, $faculty->id+1, $options, $page);
                    if (false == empty($doctorList['list'])) 
                    {
                        $doctors['area'] = $city;
                        $pre = "all";
                        if ($city != "全国")
                        {
                            $pre = Area::getProvKeyByName($province);
                        }
                        $doctors['areaurl'] = "http://haoping.haodf.com/keshi/".$faculty->getEncodeId()."/daifu/".$pre.".htm";
                        $doctorInfo = array();
                        foreach ($doctorList['list'] as $doctor)
                        {
                            if (74154 != $doctor->id && $doctor->hospitalfaculty->hospital->isActivated && $doctor->hospitalfaculty->hospital->name != "未收录医院")
                            {
                                $doctors['doctor']['doctorname'] = $doctor->name;    
                                $doctors['doctor']['doctorurl'] = $doctor->getUrl();
                                $doctors['doctor']['doctorgrade'] = $doctor->grade ? $doctor->grade : " ";
                                $doctors['doctor']['doctorjob'] = $doctor->educateGrade ? $doctor->educateGrade : " ";
                                $doctors['doctor']['hospitalname'] = $doctor->hospitalfaculty->hospital->commonName;
                                $doctors['doctor']['hospitalurl'] = $doctor->hospitalfaculty->hospital->getUrl();
                                $doctors['doctor']['votenum'] = $doctor->rank;
                                $doctorInfo[] = $doctors;
                                $doctors = array();
                            }
                        }

                        $doctorInfos[] = array('doctors' => $doctorInfo);
                        $doctorInfo = array();
                    }
                }
                BeanFinder::get('LocalCache')->removeAll(); 
            }
            $offices = array_filter($offices);
            $doctorInfos = array_filter($doctorInfos);

            $info = array_merge($info, $offices, $doctorInfos);
            $res[] = array('item' => $info);
            $info = array();
        }
        return $res;
    }/*}}}*/