You've already forked qlg.tsgz.moe
Init Repo
This commit is contained in:
229
hyhproject/home/model/Articles.php
Executable file
229
hyhproject/home/model/Articles.php
Executable file
@ -0,0 +1,229 @@
|
||||
<?php
|
||||
namespace wstmart\home\model;
|
||||
/**
|
||||
* ============================================================================
|
||||
* 文章类
|
||||
*/
|
||||
use think\Db;
|
||||
class Articles extends Base{
|
||||
/**
|
||||
* 获取帮助左侧列表
|
||||
*/
|
||||
public function helpList(){
|
||||
$arts = cache('arts');
|
||||
if(!$arts){
|
||||
$rs = $this->alias('a')->join('article_cats ac','a.catId=ac.catId','inner')
|
||||
->field('a.articleId,a.catId,a.articleTitle,ac.catName')
|
||||
->where(['a.dataFlag'=>1,
|
||||
'a.isshow'=>1,
|
||||
'ac.dataFlag'=>1,
|
||||
'ac.isShow'=>1,
|
||||
'ac.parentId'=>7])
|
||||
->cache(true)
|
||||
->select();
|
||||
//同一分类下的文章放一起
|
||||
$catName = [];
|
||||
$arts = [];
|
||||
foreach($rs as $k=>$v){
|
||||
if(in_array($v['catName'],$catName)){
|
||||
$arts[$v['catName'].'-'.$v['catId']][] = $v;
|
||||
}else{
|
||||
$catName[] = $v['catName'];
|
||||
$arts[$v['catName'].'-'.$v['catId']][] = $v;
|
||||
}
|
||||
}
|
||||
cache('arts',$arts,86400);
|
||||
}
|
||||
return $arts;
|
||||
}
|
||||
/**
|
||||
* 根据id获取帮助文章
|
||||
*/
|
||||
public function getHelpById(){
|
||||
$id = (int)input('id');
|
||||
WSTArticleVisitorNum($id);// 统计文章访问量
|
||||
return $this->alias('a')->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')->where('ac.parentId=7 and a.dataFlag=1 and a.isShow=1')->cache(true)->find($id);
|
||||
}
|
||||
/**
|
||||
* 根据id获取资讯文章
|
||||
*/
|
||||
public function getNewsById($id = 0){
|
||||
$id = $id>0?$id:(int)input('id');
|
||||
WSTArticleVisitorNum($id);// 统计文章访问量
|
||||
return $this->alias('a')
|
||||
->field('a.*,ac.catName')
|
||||
->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
|
||||
->where('a.catId<>7 and ac.parentId<>7 and a.dataFlag=1 and a.isShow=1')
|
||||
->cache(true)
|
||||
->find($id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取资讯列表【左侧分类】
|
||||
*/
|
||||
public function NewsList(){
|
||||
$list = $this->getTree();
|
||||
foreach($list as $k=>$v){
|
||||
if(!empty($v['children'])){
|
||||
foreach($v['children'] as $k1=>$v1){
|
||||
// 二级分类下的文章总条数
|
||||
$list[$k]['children'][$k1]['newsCount'] = $this->where(['catId'=>$v1['catId'],
|
||||
'dataFlag'=>1,'isShow'=>1])->cache(true)->count();
|
||||
}
|
||||
}
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
|
||||
public function getTree(){
|
||||
$artTree = cache('artTree');
|
||||
if(!$artTree){
|
||||
$data = Db::name('article_cats')->field('catName,catId,parentId')->where('parentId <> 7 and catId <> 7 and dataFlag=1 and isShow=1')->cache(true)->select();
|
||||
$artTree = $this->_getTree($data, 0);
|
||||
cache('artTree',$artTree,86400);
|
||||
}
|
||||
return $artTree;
|
||||
}
|
||||
public function _getTree($data,$parentId){
|
||||
$tree = [];
|
||||
foreach($data as $k=>$v){
|
||||
if($v['parentId']==$parentId){
|
||||
// 再找其下级分类
|
||||
$v['children'] = $this->_getTree($data,$v['catId']);
|
||||
$tree[] = $v;
|
||||
}
|
||||
}
|
||||
return $tree;
|
||||
}
|
||||
/**
|
||||
* 根据分类id获取文章列表
|
||||
*/
|
||||
public function nList(){
|
||||
$catId = (int)input('catId');
|
||||
$rs = $this->alias('a')
|
||||
->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
|
||||
->field('a.*')
|
||||
->where(['a.catId'=>$catId,
|
||||
'a.dataFlag'=>1,
|
||||
'a.isShow'=>1,
|
||||
'ac.dataFlag'=>1,
|
||||
'ac.isShow'=>1,
|
||||
'ac.parentId'=>['<>',7],
|
||||
])
|
||||
->cache(true)
|
||||
->paginate();
|
||||
return $rs;
|
||||
}
|
||||
/**
|
||||
* 面包屑导航
|
||||
*/
|
||||
public function bcNav(){
|
||||
$catId = (int)input('catId'); //分类id
|
||||
$artId = (int)input('id'); //文章id
|
||||
$data = Db::name('article_cats')->field('catId,parentId,catName')->cache(true)->select();
|
||||
if($artId){
|
||||
$catId = $this->where('articleId',$artId)->value('catId');
|
||||
}
|
||||
$bcNav = $this->getParents($data,$catId,$isClear=true);
|
||||
return $bcNav;
|
||||
|
||||
}
|
||||
/**
|
||||
* 获取父级分类
|
||||
*/
|
||||
public function getParents($data, $catId,$isClear=false){
|
||||
static $bcNav = [];
|
||||
if($isClear)
|
||||
$bcNav = [];
|
||||
foreach($data as $k=>$v){
|
||||
if($catId == $v['catId']){
|
||||
if($catId!=0){
|
||||
$this->getParents($data, $v['parentId']);
|
||||
$bcNav[] = $v;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $bcNav;
|
||||
}
|
||||
|
||||
/**
|
||||
* 记录解决情况
|
||||
*/
|
||||
public function recordSolve(){
|
||||
$articleId = (int)input('id');
|
||||
$status = (int)input('status');
|
||||
if($status==1){
|
||||
$rs = $this->where('articleId',$articleId)->setInc('solve');
|
||||
}else{
|
||||
$rs = $this->where('articleId',$articleId)->setInc('unsolve');
|
||||
}
|
||||
if($rs!==false){
|
||||
return WSTReturn('操作成功',1);
|
||||
}else{
|
||||
return WSTReturn('操作失败',-1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取资讯中心的子集分类id
|
||||
*/
|
||||
public function getChildIds(){
|
||||
$ids = [];
|
||||
$data = Db::name('article_cats')->cache(true)->select();
|
||||
foreach($data as $k=>$v){
|
||||
if($v['parentId']!=7 && $v['catId']!=7 && $v['parentId']!=0 ){
|
||||
$ids[] = $v['catId'];
|
||||
}
|
||||
}
|
||||
return $ids;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取咨询中中心所有文章
|
||||
*/
|
||||
public function getArticles(){
|
||||
// 获取咨询中心下的所有分类id
|
||||
$ids = $this->getChildIds();
|
||||
$rs = $this->alias('a')
|
||||
->field('a.*')
|
||||
->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
|
||||
->where(['a.catId'=>['in',$ids],
|
||||
'a.dataFlag'=>1,
|
||||
'a.isShow'=>1,
|
||||
'ac.dataFlag'=>1,
|
||||
'ac.isShow'=>1,
|
||||
'ac.parentId'=>['<>',7],
|
||||
])
|
||||
->distinct(true)
|
||||
->cache(true)
|
||||
->paginate(15);
|
||||
return $rs;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定分类下的文章
|
||||
*/
|
||||
public function getArticlesByCat($catId){
|
||||
$ids = $this->getChildIds();
|
||||
$rs = $this->alias('a')
|
||||
->field('a.*')
|
||||
->join('__ARTICLE_CATS__ ac','a.catId=ac.catId','inner')
|
||||
->where(['a.catId'=>['in',$ids],
|
||||
'a.dataFlag'=>1,
|
||||
'a.isShow'=>1,
|
||||
'ac.dataFlag'=>1,
|
||||
'ac.isShow'=>1,
|
||||
'ac.parentId'=>['<>',7],
|
||||
])
|
||||
->distinct(true)
|
||||
->cache(true)
|
||||
->select();
|
||||
$data = [];
|
||||
if(!empty($rs)){
|
||||
foreach($rs as $key =>$v){
|
||||
$data[$v['articleId']] = $v;
|
||||
}
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user