|
@@ -308,130 +308,119 @@ class NewsService implements NewsServiceInterface
|
|
|
*/
|
|
|
public function getWebsiteArticlett(array $data): array
|
|
|
{
|
|
|
- // return Result::success($data['website_id']);
|
|
|
- $category = WebsiteCategory::where('website_id', $data['website_id'])->pluck('category_id');
|
|
|
- $category = array_values(array_unique($category->toArray()));
|
|
|
- $web['website_id'] = $data['website_id'];
|
|
|
- if ($category) {
|
|
|
- $where = [
|
|
|
- 'status' => 1,
|
|
|
- ];
|
|
|
- var_dump($data, 'data-----------------');
|
|
|
- // level=7 根据文章key来匹配文章
|
|
|
- if (isset($data['level']) && $data['level'] == 7) {
|
|
|
- // 根据文章id获取key
|
|
|
- // $data['id'] = 50142;
|
|
|
- if (isset($data['id']) && !empty($data['id'])) {
|
|
|
+ $website_id = $data['website_id'];
|
|
|
+ $categorys = $this->processArticlePro($website_id);
|
|
|
+ $catiall = $categorys['catiall'];
|
|
|
+ $categoryIds = $categorys['categoryIds'];
|
|
|
+ $where = [
|
|
|
+ 'status' => 1
|
|
|
+ ];
|
|
|
+ $website_id = $data['website_id'];
|
|
|
+ $month = date("Y-m-d H:i:s", strtotime("-30 day"));
|
|
|
+ //如果是4:最新资讯(数据库已不存在) 5:资讯推荐(数据库已不存在);
|
|
|
+ // 1:头条资讯;2:轮播图;6:热点资讯;(数据库)
|
|
|
+ switch($data['level']){
|
|
|
+ case 1:
|
|
|
+ case 2:
|
|
|
+ case 3:
|
|
|
+ case 6:
|
|
|
+ $query = Article::where($where)
|
|
|
+ ->where('level','like','%'.$data['level'].'%')
|
|
|
+ ->orderBy('updated_at','desc');
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ $query = Article::where($where)
|
|
|
+ ->where('updated_at', '>', $month);
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ $query = Article::where($where)->orderBy('updated_at','desc');;
|
|
|
+ break;
|
|
|
+ case 7:
|
|
|
+ if(isset($data['id']) && !empty($data['id'])){
|
|
|
$keyword = Article::where('id', $data['id'])->value('keyword');
|
|
|
$keywordArray = explode(',', $keyword);
|
|
|
$whereL7 = [];
|
|
|
foreach ($keywordArray as $k => $v) {
|
|
|
$whereL7[] = ['keyword', 'like', '%' . $v . '%'];
|
|
|
}
|
|
|
- // 原始查询
|
|
|
- $result['level7'] = Article::where($whereL7)
|
|
|
- ->when(!empty($data['imgnum']), function ($query) use ($data) {
|
|
|
- $query->where('article.imgurl', '!=', '')
|
|
|
- ->select('article.*')
|
|
|
- ->offset($data['placeid'])
|
|
|
- ->limit($data['imgnum']);
|
|
|
- })
|
|
|
- ->when(!empty($data['textnum']), function ($query) use ($data) {
|
|
|
- $query->select('article.*')
|
|
|
- ->offset($data['placeid'])
|
|
|
- ->limit($data['textnum']);
|
|
|
- })
|
|
|
- ->orderBy('updated_at', 'desc')
|
|
|
- ->get();
|
|
|
- $result['level7'] = $this->processArticle($result['level7'],$web);
|
|
|
- if (empty($result)) {
|
|
|
- return Result::success();
|
|
|
- }
|
|
|
- return Result::success($result);
|
|
|
- } else {
|
|
|
- return Result::error("参数错误level=7,id不能为空", 0);
|
|
|
+ $query = Article::where($where)->where($whereL7)->orderBy('updated_at','desc');;
|
|
|
+ break;
|
|
|
+ }else{
|
|
|
+ return Result::error("请输入资讯ID",0);
|
|
|
+ break;
|
|
|
}
|
|
|
- }
|
|
|
- //如果是4:最新资讯(数据库已不存在) 5:资讯推荐(数据库已不存在);
|
|
|
- // 1:头条资讯;2:轮播图;6:热点资讯;(数据库)
|
|
|
- var_dump($where, 'where-----------------');
|
|
|
- // 初始化基础查询
|
|
|
- $query = Article::where($where)
|
|
|
- ->whereIn("catid", $category)
|
|
|
- ->where(function ($query) use ($data) {
|
|
|
- $query->whereRaw("JSON_CONTAINS(ignore_ids, '" . intval($data['website_id']) . "') = 0")
|
|
|
- ->orWhereNull("ignore_ids");
|
|
|
- });
|
|
|
-
|
|
|
- // 处理 level 相关查询条件
|
|
|
- $query->when($data['level'] == 5, function ($query) {
|
|
|
- $query->inRandomOrder()
|
|
|
- ->where('updated_at', '>', date("Y-m-d H:i:s", strtotime("-30 day")));
|
|
|
- })->when($data['level'] == 4, function ($query) {
|
|
|
- $query->orderBy("article.updated_at", "desc");
|
|
|
- })->when(!empty($data['level']), function ($query) use ($data) {
|
|
|
- if ($data['level'] != 4 && $data['level'] != 5) {
|
|
|
- $query->whereRaw("JSON_CONTAINS(level, '" . intval($data['level']) . "') = 1")
|
|
|
- ->orderBy("article.updated_at", "desc");
|
|
|
- }
|
|
|
- });
|
|
|
- // 初始化结果数组
|
|
|
- $result = [];
|
|
|
- // $input = $data['website_id'];
|
|
|
- // 处理图片新闻查询
|
|
|
- if (!empty($data['imgnum'])) {
|
|
|
- // 原错误提示表明 cleanBindings 方法需要传入数组类型的参数,而实际传入了 null。
|
|
|
- // 这里克隆查询构建器,确保绑定参数为数组,避免该错误。
|
|
|
- $imgQuery = clone $query;
|
|
|
- if ($imgQuery->getBindings() === null) {
|
|
|
- $imgQuery->setBindings([]);
|
|
|
- }
|
|
|
- $result['img'] = $imgQuery->where('article.imgurl', '!=', '')
|
|
|
- ->select('article.id',
|
|
|
- 'article.title',
|
|
|
- 'article.imgurl',
|
|
|
- 'article.author',
|
|
|
- 'article.updated_at',
|
|
|
- 'article.introduce',
|
|
|
- 'article.islink',
|
|
|
- 'article.linkurl',
|
|
|
- 'article.copyfrom',
|
|
|
- 'article.cat_arr_id',
|
|
|
- 'article.catid')
|
|
|
- ->offset($data['placeid'])
|
|
|
- ->limit($data['imgnum'])
|
|
|
- ->get();
|
|
|
- $result['img'] = $this->processArticles( $result['img'], $web);
|
|
|
- }
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // $whereL7 = [];
|
|
|
+ // if(isset($data['id']) && !empty($data['id'])){
|
|
|
+ // $keyword = Article::where('id', $data['id'])->value('keyword');
|
|
|
+ // $keywordArray = explode(',', $keyword);
|
|
|
|
|
|
- // 处理文字新闻查询
|
|
|
- if (!empty($data['textnum'])) {
|
|
|
- $textQuery = clone $query;
|
|
|
- $result['text'] = $textQuery
|
|
|
- ->select('article.id',
|
|
|
- 'article.title',
|
|
|
- 'article.imgurl',
|
|
|
- 'article.author',
|
|
|
- 'article.updated_at',
|
|
|
- 'article.introduce',
|
|
|
- 'article.islink',
|
|
|
- 'article.linkurl',
|
|
|
- 'article.copyfrom',
|
|
|
- 'article.cat_arr_id',
|
|
|
- 'article.catid')
|
|
|
- ->offset($data['placeid'])
|
|
|
- ->limit($data['textnum'])
|
|
|
- ->get();
|
|
|
- $result['text'] = $this->processArticles($result['text'], $web);
|
|
|
+ // foreach ($keywordArray as $k => $v) {
|
|
|
+ // $whereL7[] = ['keyword', 'like', '%' . $v . '%'];
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // $query = Article::where($where)
|
|
|
+ // ->when(isset($data['level']) && !empty($data['level']), function ($query) use ($data,$whereL7) {
|
|
|
+ // if($data['level'] == 1 || $data['level'] == 2 || $data['level'] == 3 || $data['level'] == 6){
|
|
|
+ // $query = $query->where('article.level','like','%'.$data['level'].'%')->orderBy('updated_at','desc');
|
|
|
+ // }
|
|
|
+ // if($data['level'] == 7){
|
|
|
+ // $query = $query->where($whereL7)->orderBy('updated_at','desc');
|
|
|
+ // }
|
|
|
+ // if($data['level'] == 4){
|
|
|
+ // $query = $query->inRandomOrder()
|
|
|
+ // ->where('updated_at', '>', date("Y-m-d H:i:s", strtotime("-30 day")));
|
|
|
+ // }
|
|
|
+ // if($data['level'] == 5){
|
|
|
+ // $query = $query->orderBy('updated_at','desc');
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ if($data['textnum'] > 0){
|
|
|
+ $query = clone $query;
|
|
|
+ $result['text'] = $query
|
|
|
+ ->whereIn('catid',$categoryIds)
|
|
|
+ ->leftJoinSub(function ($query) use ($website_id) {
|
|
|
+ $query->from('article_ignore')
|
|
|
+ ->where('website_id', $website_id);
|
|
|
+ }, 'article_ignore', function ($join) {
|
|
|
+ $join->on('article_ignore.article_id', '=', 'article.id');
|
|
|
+ })
|
|
|
+ ->where(function ($query) use ($website_id) {
|
|
|
+ $query->whereNull('article_ignore.article_id')
|
|
|
+ ->orWhere('article_ignore.website_id', '!=', $website_id);
|
|
|
+ })
|
|
|
+ ->select('article.id','article.title','article.author','article.updated_at'
|
|
|
+ ,'article.introduce','article.islink','article.linkurl','article.copyfrom','article.cat_arr_id',
|
|
|
+ 'article.catid','article.level')
|
|
|
+ ->offset($data['placeid'])
|
|
|
+ ->limit($data['textnum'])
|
|
|
+ ->get()->all();
|
|
|
+ foreach ($result['text'] as $k => $v) {
|
|
|
+ $result['text'][$k]->pinyin = $catiall[$v->catid]['pinyin'];
|
|
|
}
|
|
|
-
|
|
|
- if (empty($result) || count($result) == 0) {
|
|
|
- return Result::error("暂无头条新闻");
|
|
|
+ }
|
|
|
+ if($data['imgnum'] > 0){
|
|
|
+ $query = clone $query;
|
|
|
+ $result['img'] = $query
|
|
|
+ ->where('article.imgurl', '!=','')
|
|
|
+ ->select('article.id','article.title','article.imgurl','article.author','article.updated_at'
|
|
|
+ ,'article.introduce','article.islink','article.linkurl','article.copyfrom','article.cat_arr_id',
|
|
|
+ 'article.catid','article.level')
|
|
|
+ ->offset($data['placeid'])
|
|
|
+ ->limit($data['imgnum'])
|
|
|
+ ->get()->all();
|
|
|
+ foreach ($result['img'] as $k => $v) {
|
|
|
+ $result['img'][$k]->pinyin = $catiall[$v->catid]['pinyin'];
|
|
|
}
|
|
|
- return Result::success($result);
|
|
|
- } else {
|
|
|
- return Result::error("本网站下暂无相关栏目", 0);
|
|
|
}
|
|
|
+
|
|
|
+ if(empty($result)){
|
|
|
+ return Result::error("暂无相关资讯",0);
|
|
|
+ }
|
|
|
+ return Result::success($result);
|
|
|
}
|
|
|
/**
|
|
|
* 获取模块新闻
|
|
@@ -1114,7 +1103,7 @@ class NewsService implements NewsServiceInterface
|
|
|
// var_dump($v);
|
|
|
// var_dump($k);
|
|
|
$img_article[$k]->category_name = $catiall[$v->catid]['alias'];
|
|
|
- $img_article[$k]->alias = $catiall[$v->catid]['alias'];
|
|
|
+ $img_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
|
|
|
}
|
|
|
}else{
|
|
|
$img_article = [];
|
|
@@ -1141,7 +1130,7 @@ class NewsService implements NewsServiceInterface
|
|
|
// var_dump($k);
|
|
|
$text_article[$k]->category_name = $catiall[$v->catid]['alias'];
|
|
|
// $text_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
|
|
|
- $text_article[$k]->alias = $catiall[$v->catid]['alias'];
|
|
|
+ $text_article[$k]->pinyin = $catiall[$v->catid]['pinyin'];
|
|
|
}
|
|
|
}else{
|
|
|
$text_article = [];
|
|
@@ -1688,6 +1677,7 @@ private function fetchArticles($catId, $website, $limit, $isImageArticle = false
|
|
|
'cat_1st_arr' => $cat_1st_arr,
|
|
|
'catiall' => $catiall,
|
|
|
'websiteInfoIndexed' => $websiteInfoIndexed,
|
|
|
+ 'categoryIds' => $categoryIds,
|
|
|
];
|
|
|
|
|
|
}
|