You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
4.7 KiB
148 lines
4.7 KiB
<?php
|
|
|
|
namespace app\news\controller\api;
|
|
|
|
|
|
|
|
use app\news\model\NewsCategory;
|
|
use app\news\model\NewsEvaluate;
|
|
use app\news\model\NewsInteractive;
|
|
|
|
class News extends Base
|
|
{
|
|
/**
|
|
* 新闻分类
|
|
*/
|
|
public function getCategoryData()
|
|
{
|
|
$category_model = new NewsCategory();
|
|
|
|
$category = $category_model->getAllData(['uid' => UID],'id,name','sort desc')->toArray();
|
|
array_unshift($category, ['id' => 0, 'name' => '推荐']);
|
|
|
|
return sendMessage(['category'=>$category]);
|
|
}
|
|
|
|
/**
|
|
* 新闻列表
|
|
*/
|
|
public function getNewsList()
|
|
{
|
|
$param = input('post.');
|
|
$news_model = new \app\news\model\News();
|
|
|
|
$where = [['uid','=',UID],['is_publish','=',1]];
|
|
$hasWhere = [];
|
|
if($param['category_id']){
|
|
$hasWhere[] = ['category_id','=',$param['category_id']];
|
|
}else{
|
|
$where[] = ['is_recommend','=',1];
|
|
}
|
|
|
|
if($param['keyword']){
|
|
$where[] = ['name', 'like', '%' . $param['keyword'] . '%'];
|
|
}
|
|
$where = $news_model->whereChange($where);
|
|
|
|
$list = $news_model::hasWhere('categoryRelation',$hasWhere,'id,name,author,img_path,is_top,review_num,create_time')
|
|
->where($where)->order('is_top desc,id desc')->paginate([
|
|
'list_rows' => 20,
|
|
'page' => $param['page'],
|
|
], false)
|
|
->each(function ($item) {
|
|
if($item['img_path'])
|
|
{
|
|
$image_path = [];
|
|
foreach($item['img_path'] as $value)
|
|
{
|
|
$image_path[] = ['type'=>2,'image_url'=>$value];
|
|
}
|
|
$item['img_path'] = $image_path;
|
|
}
|
|
$item['publish_time'] = timeRefine(strtotime($item['create_time']),2);
|
|
return $item;
|
|
});
|
|
|
|
return sendMessage(['list'=>$list]);
|
|
}
|
|
|
|
/**
|
|
* 新闻详情
|
|
*/
|
|
public function getNewsDetail()
|
|
{
|
|
$param = input('post.');
|
|
$news_model = new \app\news\model\News();
|
|
$interactive_model = new NewsInteractive();
|
|
|
|
$where = ['id'=>$param['news_id']];
|
|
|
|
$detail = $news_model->getOneData($where,'id,name,author,(browse_num + browse_actual) as browse,browse_actual,(praise_num + praise_actual) as praise,content,review_num,create_time');
|
|
|
|
$detail['publish_time'] = timeRefine(strtotime($detail['create_time']),2);
|
|
$detail['is_praise'] = $interactive_model->getNumber(['user_id'=>$param['user_id'],'info_id'=>$param['news_id'],'type'=>1]);
|
|
$detail['is_collect'] = $interactive_model->getNumber(['user_id'=>$param['user_id'],'info_id'=>$param['news_id'],'type'=>2]);
|
|
$detail['is_share'] = $interactive_model->getNumber(['user_id'=>$param['user_id'],'info_id'=>$param['news_id'],'type'=>3]);
|
|
$detail['share_url'] = '';
|
|
|
|
//增加新闻浏览数
|
|
$res = $news_model->where([['id','=',$param['news_id']]])->update(['browse_actual'=>$detail['browse_actual']+1]);
|
|
|
|
return sendMessage(['detail'=>$detail]);
|
|
}
|
|
|
|
/**
|
|
* 新闻点赞
|
|
*/
|
|
public function newsPraise()
|
|
{
|
|
$param = input('post.');
|
|
$news_model = new \app\news\model\News();
|
|
$interactive_model = new NewsInteractive();
|
|
|
|
$news = $news_model->getOneData(['id'=>$param['news_id']]);
|
|
if(!$news){
|
|
return sendErrorMessage(1,'新闻不存在');
|
|
}
|
|
|
|
$where = ['uid'=>UID,'user_id'=>$param['user_id'],'type'=>1,'info_id'=>$param['news_id']];
|
|
$is_praise = $interactive_model->getNumber($where);
|
|
if($is_praise)
|
|
{
|
|
$res = $interactive_model->destroy($where,true);
|
|
if($res === false)
|
|
{
|
|
return sendErrorMessage(1,'取消失败');
|
|
}
|
|
$res = $news_model->update(['praise_actual'=>$news['praise_actual']-1],['id'=>$news['id']]);
|
|
if(!$res)
|
|
{
|
|
return sendErrorMessage(1,'点赞失败');
|
|
}
|
|
return sendSuccessMessage([],'取消成功');
|
|
}else{
|
|
$res = $interactive_model->dataUpdate($where);
|
|
if(!$res)
|
|
{
|
|
return sendErrorMessage(1,'点赞失败');
|
|
}
|
|
$res = $news_model->update(['praise_actual'=>$news['praise_actual']+1],['id'=>$news['id']]);
|
|
if(!$res)
|
|
{
|
|
return sendErrorMessage(1,'点赞失败');
|
|
}
|
|
return sendSuccessMessage([],'点赞成功');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 获取新闻评论列表
|
|
*/
|
|
public function getNewsEvaluateList()
|
|
{
|
|
$param = input('post.');
|
|
$new_evaluate = new NewsEvaluate();
|
|
|
|
}
|
|
|
|
} |