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

<?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();
}
}