public function getListByDiseaseid($condition = [], $offset = 0, $limit = 10, $orderBy = 'id DESC')
 {
     $article = new Article();
     $articles = $article->getListByDiseaseid($condition, $offset, $limit, $orderBy);
     if (isset($articles) && !empty($articles)) {
         foreach ($articles as $key => &$article) {
             $article['url'] = '/article/' . date("Y/md", $article["inputtime"]) . '/' . $article['id'] . '.shtml';
         }
     }
     return $articles;
 }
 /**
  * 生成 404 静态页面
  * @author gaoqing
  * @date 2016-04-20
  * @param string $cacheKey 缓存的唯一标识
  * @return boolean$generateFlag是否生成成功
  */
 public static function cache404Page($cacheKey, $param = [], $forceCache = false)
 {
     $generateFlag = false;
     $frontend = \Yii::getAlias('@frontend');
     $page404FileName = $frontend . '/web/404.shtml';
     if (!file_exists($page404FileName)) {
         $forceCache = true;
     }
     if ($forceCache) {
         $view = "404";
         //获取最新的资讯文章
         $article = new Article();
         $where = ' status=20';
         $order = ' articleid DESC';
         $lastestNews = $article->List_Articles($where, $order, 5, 0);
         //获取 疾病健康 文章
         $darticle = new \common\models\disease\Article();
         $lastestJibingArticle = $darticle->getLatestArticle(5, 0);
         //精彩问答
         $ask = new Ask();
         $where1 = ' 1';
         $order1 = ' id DESC';
         $lastestAsk = $ask->getList($where1, $order1, 5, 0);
         //字母部分
         $letters = range('A', 'Z');
         $condition = array('typeid' => array(0, 2, 3, 4, 5, 6, 7, 8, 9));
         $rand_words = KeyWords::getCacheRandWords(100, $condition);
         //热门疾病、热门部位
         $commonDisDep = CacheHelper::getCache('frontend_article_detail_rmksbw_404', []);
         $params = ['lastestNews' => $lastestNews, 'lastestJibingArticle' => $lastestJibingArticle, 'lastestAsk' => $lastestAsk, 'letters' => $letters, 'rand_words' => $rand_words, 'commonDisDep' => $commonDisDep, 'searchurl' => 'http://www.9939.com/zhuanti/'];
         $controller = new BaseController('base404', null);
         $controller->id = "base404";
         $page404FilePath = $frontend . '/views/site';
         $controller->viewPath = $page404FilePath;
         $page404 = $controller->renderPartial($view, $params);
         if (isset($page404) && !empty($page404)) {
             if (file_put_contents($page404FileName, $page404)) {
                 $generateFlag = true;
             }
         }
     }
     return $generateFlag;
 }
 public function actionSearchart()
 {
     \Yii::$app->response->format = Response::FORMAT_JSON;
     $article = [];
     $articleid = $this->helpGquery('articleid', '0');
     $type = $this->helpGquery('type', '1');
     if (!empty($articleid)) {
         if ($type == 2) {
             $articleObj = new \common\models\Article();
             $temp = $articleObj->List_ArticleByIds([$articleid]);
             if (!empty($temp)) {
                 $article = $temp[0];
             }
         } elseif ($type == 1) {
             $temp = Article::find()->where(['id' => $articleid])->asArray()->one();
             if (!empty($temp)) {
                 $temp['url'] = \Yii::getAlias("@domain") . '/article/' . date('Y/md', $temp['inputtime']) . '/' . $temp['id'] . '.shtml';
                 $article = $temp;
             }
         }
     }
     return $article;
 }
 public static function search_jb_article_data($sphinx_data)
 {
     $total = 0;
     $ret_list = array();
     if (!empty($sphinx_data['matches'])) {
         $art_obj = new \common\models\disease\Article();
         $arr_ids = array();
         foreach ($sphinx_data['matches'] as $k => $v) {
             $arr_ids[] = $k;
         }
         $disease_list = $art_obj->List_DiseaseArticleByIds($arr_ids);
         if ($disease_list) {
             foreach ($disease_list as $k => $v) {
                 $v['tmp_source_id'] = 2;
                 $date_path = date('Y/md', $v['inputtime']);
                 $article_path = sprintf("%s/%s/%d.shtml", 'article', $date_path, $v['id']);
                 $v['url'] = sprintf('%s/%s', Yii::getAlias('@jb_domain'), $article_path);
                 $v['wap_url'] = sprintf('%s/%s', Yii::getAlias('@mjb_domain'), $article_path);
                 $ret_list[] = $v;
             }
         }
         $total = $sphinx_data['total'];
     }
     $explain_words = $sphinx_data['explain_words'];
     return array('list' => $ret_list, 'total' => $total, 'explain_words' => $explain_words);
 }
 /**
  * 获取更多文章
  *  ajax 
  */
 public function actionLoadArticle()
 {
     $condition['diseaseid'] = $this->helpGpost('diseaseid', '');
     $condition['type'] = [$this->helpGpost('type', 0)];
     $offset = $this->helpGpost('offset', 0);
     $length = $this->helpGpost('length', 5);
     $obj_article = new Article();
     $article = $obj_article->getListByDiseaseid($condition, $offset, $length);
     $data['article'] = $article;
     return $this->renderPartial('inc_article_list', $data);
 }
 /**
  * 文章缓存
  */
 public function articleCache($param)
 {
     $article = new DArticle();
     $res = $article->getAllArticle();
     $i = 0;
     foreach ($res as $k => $v) {
         if (CacheHelper::$param['function']($param['key_prefix'], $v, true)) {
             $i++;
         }
     }
     return $i;
 }
 /**
  * 文章列表页
  * @author gaoqing
  * @date 2016-03-25
  * @return string 视图
  */
 public function actionList()
 {
     $data = [];
     $limit = 40;
     $paging = $this->helpPaging('pager_disease_article')->setSize($limit)->setPageSetSize(5);
     $offset = $paging->getOffset();
     $records = Article::search(['status' => 99], $offset, $limit, ['id' => SORT_DESC], true);
     $paging->setTotal($records['total']);
     $article = $records['list'];
     $letters = range('A', 'Z');
     $rand_words = $this->rand_words();
     // KeyWords::getCacheRandWords();
     $randWords['letter'] = $letters;
     $randWords['words'] = $rand_words;
     //广告
     $obj_ads = new Ads();
     $ads_interest = $obj_ads->ads(4543);
     //右侧:最新文章
     $lastestArticles = $this->getLatestArticles(20);
     $data['article'] = $article;
     $data['paging'] = $paging;
     $data['ads_interest'] = $ads_interest;
     $data['randWords'] = $randWords;
     $data['lastestArticles'] = $lastestArticles;
     return $this->render('article_list', $data);
 }
 /**
  * 文章列表页
  * @author gaoqing
  * @date 2016-03-25
  * @return string 视图
  */
 public function actionList()
 {
     $data = [];
     $limit = 10;
     $paging = $this->helpPaging('pager_disease_wapjb_article_list')->setSize($limit);
     $offset = $paging->getOffset();
     $records = Article::search(['status' => 99], $offset, $limit, ['id' => SORT_DESC], true);
     $paging->setTotal($records['total']);
     $article = $records['list'];
     $data['article'] = $article;
     $data['paging'] = $paging;
     return $this->renderPartial('article_list', $data);
 }
 /**
 * 文章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 [];
 }
 /**
  * 获取疾病文章的相关文章
  * @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;
 }
Exemple #11
0
 public static function getListByDiseaseid($condition = [], $offset = 0, $limit = 10, $orderBy = 'id DESC')
 {
     $article = new Article();
     $articles = Article::find()->select(['id', 'title', 'description', 'inputtime', 'content'])->where($condition)->offset($offset)->limit($limit)->asArray()->all();
     if (isset($articles) && !empty($articles)) {
         foreach ($articles as $key => &$article) {
             if (empty($article['description'])) {
                 $article['description'] = String::cutString($article['content'], 66);
             } else {
                 $article['description'] = String::cutString($article['description'], 66);
             }
             $article['url'] = '/article/' . date("Y/md", $article["inputtime"]) . '/' . $article['id'] . '.shtml';
         }
     }
     return $articles;
 }
function get_disease_articles($match_count)
{
    return \common\models\disease\Article::find()->where(['diseaseid' => 0, 'status' => 99])->andWhere(['ismatch' => 0])->limit($match_count)->all();
}
Exemple #13
0
 /**
  * 设置文章字段属性值
  * @param type $attribute
  * @param type $condtion
  * @return type
  */
 public function editArticle($attribute, $condtion)
 {
     $result = Article::updateAll($attribute, $condtion);
     return $result;
 }
 /**
  * 根据分类id获取该分类下的疾病内容
  * lc 2016-4-11
  * @param type $optionMap 分类id数组
  * @param type $contain_article 是否包含文章
  * @return type
  */
 public function getCategoryData($optionMap, $disease_length = 10, $contain_article = false, $article_length = 4)
 {
     $data = [];
     foreach ($optionMap as $k => $v) {
         $catId[] = $k;
     }
     $obj_disease = new Disease();
     $tmp = $obj_disease->batGetDiseaseByCategoryId($catId);
     $obj_article = new Article();
     //
     $disid = [];
     foreach ($tmp as $k => $v) {
         $data[$v['categoryid']]['disease'][] = $v;
         $disid[$v['categoryid']][] = $v['id'];
     }
     $new_data = [];
     foreach ($disid as $kk => $vv) {
         $new_data[$kk]['disease'] = array_slice($data[$kk]['disease'], 0, $disease_length);
         if ($contain_article) {
             $dis_str = implode(',', $vv);
             $res = $obj_article->getListByGroup($dis_str);
             $new_data[$kk]['article'] = array_slice($res, 0, $article_length);
         }
     }
     ksort($new_data);
     return $new_data;
 }
 /**
  * 疾病症状 饮食护理
  * @return type
  */
 public function actionArticle()
 {
     $pinyin = $this->helpGquery('pinyin');
     $result = $this->getColumn('cause', $pinyin);
     //获取基本信息及字段对应信息
     $name = $result['info']['name'];
     $symptomid = $result['info']['id'];
     //症状基本信息
     $model['id'] = $symptomid;
     $model['info'] = $result['info'];
     $model['content'] = $result['content'];
     $model['pinyin_initial'] = $pinyin;
     //设置title,keywords,description
     $this->setMeta($name, 'article');
     //右侧公用信息
     $rightTmp = $this->getRightInfo($symptomid, ['disease', 'articles', 'doctorInfos', 'relSymptom']);
     foreach ($rightTmp as $k => $v) {
         $model[$k] = $v;
     }
     //症状相关文章
     $article_count = Article::find()->andWhere('symptomid=:symptomid', [':symptomid' => $symptomid])->count('id');
     if ($article_count > 0) {
         $perpage = 20;
         $pagenum = $this->helpGparam('page', 1);
         $total = $article_count;
         $page = $pagenum <= $total / $perpage ? $pagenum : $total / $perpage;
         $paging = $this->helpPaging('pager_symptom_article')->setSize($perpage)->setPageSetSize(5);
         $paging->setUrlFormat(Url::to("@domain/zhengzhuang/{$pinyin}/article_list_%u.shtml"));
         $paging->setTotal($total)->setCurrent($page);
         $offset = $paging->getOffset();
         $articles = $this->article->listByCondition([['status' => '99'], ['symptomid' => $symptomid]], $perpage, $offset, 'id DESC');
         //查询结果
         $model['articles'] = $articles;
         $model['paging'] = $paging;
     } else {
         if (isset($model['disid'])) {
             //通过疾病id查找【疾病与疾病文章关联表】得到疾病文章id
             $diseaseIdStr = implode(',', $model['disid']);
             $perpage = 20;
             $pagenum = $this->helpGparam('page', 1);
             $tmp = $this->article->getRecordsBySql($diseaseIdStr);
             $totalPage = $tmp[0]['num'];
             $page = $pagenum <= $totalPage / $perpage ? $pagenum : $totalPage / $perpage;
             $paging = $this->helpPaging('pager_symptom_article')->setSize($perpage)->setPageSetSize(5);
             $paging->setUrlFormat(Url::to("@domain/zhengzhuang/{$pinyin}/article_list_%u.shtml"));
             $paging->setTotal($totalPage)->setCurrent($page);
             $offset = $paging->getOffset();
             $articles = $this->article->listBySqlCondition($diseaseIdStr, $perpage, $offset);
             //查询结果
             $model['articles'] = $articles;
             $model['paging'] = $paging;
         }
     }
     //底部随机词
     $randWords = $this->letterHotWordsBatch($name);
     $model['randWords'] = $randWords;
     return $this->render('article', ['model' => $model]);
 }
Exemple #16
0
 /**
  * 右侧公共信息,跟疾病有关的
  * 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;
 }