/** * 获取疾病文章的相关文章 * @author gaoqing * @date 2016-04-26 * @param array $params 参数 * @return array 疾病文章的相关文章集 */ private static function getRelArticlesBySymptomid($symptomid, $iswapjb = false) { $articleids = []; $darticle = new DArticle(); $rarticles = $darticle->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], 22, 0, 'id DESC'); if (isset($rarticles) && !empty($rarticles)) { $relArticles = $rarticles; if ($iswapjb) { foreach ($relArticles as &$relArticle) { $date_path = date('Y/md', $relArticle['inputtime']); $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $relArticle['id']); $relArticle['url'] = sprintf('%s/%s', \Yii::getAlias('@jb_domain'), $article_path); $relArticle['wap_url'] = sprintf('%s/%s', \Yii::getAlias('@mjb_domain'), $article_path); } } } else { $relArticles = []; } return $relArticles; }
/** * 文章sitemap * * <url> <loc>http://m.jb.9939.com/article/2009/0327/22.shtml</loc> <mobile:mobile type="mobile"/> <lastmod>2009-12-14</lastmod> <changefreq>daily</changefreq> <priority>0.8</priority> </url> */ public function articleSitemap() { $this->_changefreq = 'daily'; $this->_priority = '0.8'; $where = $this->_ownership; //目录 if ($where == 'pc') { $frontend = \Yii::getAlias("@frontend"); $frontDomain = \Yii::getAlias("@frontdomain"); } elseif ($where == 'wap') { $frontend = \Yii::getAlias("@wapjb"); $frontDomain = \Yii::getAlias("@mjb_domain"); } $sitemapFolder = $this->_baidu ? 'sitemap/sitemapbaiduaricleindex' : 'sitemap/sitemaparicleindex'; $fileFolder = $frontend . '/web/' . $sitemapFolder; if (!file_exists($fileFolder) || !is_dir($fileFolder)) { mkdir($fileFolder, 0755, true); } //判断jb还是wapjb $type = $where == 'pc' ? 'article' : 'wap_article'; //文章数据 $art_obj = new Article(); $limit = 10000; $sitemap_site = $this->getSitemapCount($fileFolder); $offset = $sitemap_site['limit']; $articles = $art_obj->listByCondition([['status' => 99]], $limit, $offset, 'id ASC'); $flag = count($articles) == $limit ? 1 : 2; //为2时提示已经生成完毕 //xml $sitemap = '<?xml version="1.0" encoding="UTF-8"?>'; $sitemap .= $this->_baidu ? '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">' : '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'; $sitemap .= $this->setSitemapURL($articles, $type); $sitemap .= '</urlset>'; //写入计数文件 $this->setSitemapCount(['limit' => (int) $offset + $limit], $fileFolder); $name_tail = intval($offset / 10000 + 1); $fileName = 'sitemap' . $name_tail . '.xml'; if (file_put_contents($fileFolder . '/' . $fileName, $sitemap)) { $res = $this->generateSitemapIndex($fileFolder, $sitemapFolder); return ['flag' => $flag, 'url' => $frontDomain . '/' . $sitemapFolder . '/' . $fileName, 'name' => $fileName, 'siteindex' => $res['url']]; } return []; }
/** * 右侧公共信息,跟疾病有关的 * lc 2016-4-6 * @param type $symptomid * @param array $filter ['disease','relSymptom'] 筛选需要的数据 * @return type */ public function getRightInfo($symptomid, $filter = []) { $cacheHelper = new CacheHelper(); $filter = !empty($filter) ? $filter : ['disease', 'articles', 'doctorInfos', 'leftDoctor', 'medicalDepartment', 'relSymptom']; $model = []; $diseaseList = []; $parms = ['id' => $symptomid]; $diseaseCache = $cacheHelper->getCache('frontend_symptom_index_knjb', $parms); if (in_array('medicalDepartment', $filter) || in_array('disease', $filter)) { if (!empty($diseaseCache)) { $model['disid'] = $diseaseCache['diseaseId']; //症状首页左侧可能疾病及伴随症状 $model['disease'] = $diseaseCache['diseaseTmp']; } } //右侧就诊科室 // if (in_array('medicalDepartment', $filter)) { // if (!empty($diseaseCache)) { // //在取到的所有科室数据合并去重 // $medicalDepartment = []; // foreach ($diseaseCache['departmentMap'] as $vv) { // $Tmp['medicalDepartmentTmp'][] = $vv['id']; // $Tmp['medicalDepartmentTmpName'][] = $vv['name']; // $Tmp['medicalDepartmentTmpPinyin'][] = $vv['pinyin']; // } // $medicalDepartment['id'] = array_unique($Tmp['medicalDepartmentTmp']); // $medicalDepartment['name'] = array_unique($Tmp['medicalDepartmentTmpName']); // $medicalDepartment['pinyin'] = array_unique($Tmp['medicalDepartmentTmpPinyin']); //// print_r($medicalDepartment);exit; // $model['medicalDepartment'] = $medicalDepartment; // //科室拼音 // $model['departPinyin'] = $this->department->getDepartmentPinyin(); // } // } //右侧相关症状 if (in_array('relSymptom', $filter)) { $relateObj = new Relate(); $model['relSymptom'] = $relateObj->getRelateSymptoms($symptomid); } //症状相关文章 if (in_array('articles', $filter)) { $articleObj = new Article(); $model['articles'] = []; $articles = $articleObj->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], 7, 0, 'id DESC'); if (!empty($articles)) { $model['articles'] = $articles; } else { if (!empty($diseaseCache)) { $diseaseId = $diseaseCache['diseaseId']; $disease_ids = implode(',', $diseaseId); $articles = $articleObj->listBySqlCondition($disease_ids, 7, 0); $arts = []; foreach ($articles as $k => $v) { $date_path = date('Y/md', $v['inputtime']); $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $v['id']); $articleUrl = sprintf('%s/%s', Yii::getAlias('@jb_domain'), $article_path); foreach ($v as $kk => $vv) { $arts[$k][$kk] = $vv; $arts[$k]['url'] = $articleUrl; } } $model['articles'] = $arts; } } } //专家(左侧) if (in_array('doctorInfos', $filter)) { if (!empty($diseaseCache)) { //取所有相关疾病里第一个疾病id来查专家 $diseaserandid = $diseaseCache['diseaseId']['0']; $doctors = $this->getDoctor($diseaserandid, 0, 6); //专家(右侧) $rightDoctor = array_slice($doctors, 3, 3); $model['doctorInfos'] = $rightDoctor; //在线咨询 左侧 $leftDoctor = [['uid' => 1440561, 'nickname' => '陶丽萍', 'zhicheng' => '', 'best_dis' => '保健综合', 'pic' => '201601/1440561_avatar_middle.jpg'], ['uid' => 221102, 'nickname' => '王庆松', 'zhicheng' => '', 'best_dis' => '上呼吸道综合', 'pic' => '201601/221102_avatar_middle.jpg'], ['uid' => 831181, 'nickname' => '刘业生', 'zhicheng' => '', 'best_dis' => '常见病综合,呼吸道系统诊疗', 'pic' => '201604/831181_avatar_middle.jpg']]; $model['leftDoctor'] = $leftDoctor; } } return $model; }