Przeglądaj źródła

乡村网-获取特殊新闻模块

15313670163 3 tygodni temu
rodzic
commit
e38b1818ae
1 zmienionych plików z 106 dodań i 41 usunięć
  1. 106 41
      app/JsonRpc/NewsService.php

+ 106 - 41
app/JsonRpc/NewsService.php

@@ -818,6 +818,11 @@ class NewsService implements NewsServiceInterface
                 
                 // 查询所有子级栏目的图文新闻
                 $imgArticles = Article::where('catid', $childCategoryIds[0])
+                    ->where(function ($query) use ($data) {
+                        $query->where(function ($subQuery) use ($data) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($data['website_id'])."') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
                     ->where('status', 1)
                     ->where('imgurl', '!=', '')
                     ->select('*')
@@ -829,6 +834,11 @@ class NewsService implements NewsServiceInterface
                 // 查询所有子级栏目的文字新闻
                 $textArticles = Article::where('catid', $childCategoryIds[0])
                     ->where('status', 1)
+                    ->where(function ($query) use ($data) {
+                        $query->where(function ($subQuery) use ($data) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($data['website_id'])."') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
                     // ->where(function ($query) {
                     //     $query->whereNull('imgurl')
                     //         ->orWhere('imgurl', '');
@@ -906,23 +916,36 @@ class NewsService implements NewsServiceInterface
             }else{
                 // 查询图片新闻
                 $imgArticles = Article::where('catid', $parentCatId)
+                ->where('status', 1)
+                ->where(function ($query) use ($website) {
+                    $query->where(function ($subQuery) use ($website) {
+                        $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
+                    })->orWhereNull("ignore_ids");
+                })
                 ->where('imgurl', '!=', '')
-                // ->where($website)
+                ->orderBy('updated_at', 'desc')
                 ->limit($parentImgNum)
                 ->get()->all();
 
                 // 查询文字新闻
                 $textArticles = Article::where('catid', $parentCatId)
-                    // ->where($website)
+                    ->where('status', 1)
+                    ->where(function ($query) use ($website) {
+                        $query->where(function ($subQuery) use ($website) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
+                    ->orderBy('updated_at', 'desc')
                     ->limit($parentTextNum)
                     ->get()->all();
             }
             $resultItem = [
                 'alias' => $category ? $category->alias : null,
                 'category_id' => $parentCatId,
+                'pinyin' => $category->aLIas_pinyin ?? '',
                 'imgnum' => $imgArticles,
                 'textnum' => $textArticles,
-                'pinyin' => $category->aLIas_pinyin ?? '',
+                
             ];
 
             if (!empty($item['child']) && $item['child'] != "") {
@@ -930,7 +953,6 @@ class NewsService implements NewsServiceInterface
                 $childCategory = WebsiteCategory::where('pid', $parentCatId)->where($website)->select('category_id','alias','aLIas_pinyin')->get()->all();
                 if ($childCategory) {
                     list($childCatId, $childImgNum, $childTextNum) = explode(',', $item['child']);
-
                     // 查询子栏目名称
                     $childCategoryInfo = WebsiteCategory::where('category_id', $childCatId)->where($website)->first(['alias', 'category_id','aLIas_pinyin']);
                     // $childAllCartegory = WebsiteCategory::where('pid', $childCatId)->where($website)->first(['category_id']);
@@ -940,26 +962,36 @@ class NewsService implements NewsServiceInterface
                     }else{
                          // 查询子栏目图片新闻
                         $childImgArticles = Article::where('catid', $childCatId)
-                        ->where('imgurl', '!=', '')
-                        // ->where($website)
-                        ->limit($childImgNum)
-                        ->get()->all();
-
+                            ->where('status', 1)
+                            ->where(function ($query) use ($website) {
+                                $query->where(function ($subQuery) use ($website) {
+                                    $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
+                                })->orWhereNull("ignore_ids");
+                            })
+                            ->where('imgurl', '!=', '')
+                            ->orderBy('updated_at', 'desc')
+                            ->limit($childImgNum)
+                            ->get()->all();
                         // 查询子栏目文字新闻
                         $childTextArticles = Article::where('catid', $childCatId)
-                            // ->where($website)
+                            ->where('status', 1)
+                            ->where(function ($query) use ($website) {
+                                $query->where(function ($subQuery) use ($website) {
+                                    $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
+                                })->orWhereNull("ignore_ids");
+                            })
+                            ->orderBy('updated_at', 'desc')
                             ->limit($childTextNum)
                             ->get()->all();
-
                     }
-                   
                     $resultItem['child'] = [
                         'alias' => $childCategoryInfo ? $childCategoryInfo->alias : null,
                         'category_id' => $childCatId,
+                        'pinyin' => $childCategoryInfo->aLIas_pinyin?? '',
                         'all_childcat' => $childCategory,
                         'imgnum' => $childImgArticles,
                         'textnum' => $childTextArticles,
-                        'pinyin' => $childCategoryInfo->aLIas_pinyin?? '',
+                        
                     ];
                     // $resultItem['pinyin'] = $childCategoryInfo->aLIas_pinyin ?? '';
                 }
@@ -977,33 +1009,66 @@ class NewsService implements NewsServiceInterface
      */
     public function getWebsiteArticles(array $data): array
     {
-        $web = Website::where('id',$data['website_id'])->first();
-        if(empty($web)){
-            return Result::error("暂无此网站",0);
-        }
-        $where = [
-            // 'article.catid' => $data['catid'],
-            'article.status' => 1,
-        ];
-        $articles['img'] = Article::where($where)
-            ->where('imgurl', '!=', '')
-            ->whereNotNull('imgurl')
-            ->whereRaw("JSON_CONTAINS(category_arr_id, '".intval($data['catid'])."')")
-            ->leftJoin('website_category', 'website_category.category_id', 'article.catid','website_category.aLIas_pinyin')
-            ->select('article.*','website_category.category_id','website_category.alias')
-            ->orderBy('updated_at', 'desc')
-            ->limit($data['img_num'])
-            ->get()->all();
-        $articles['text'] = Article::where($where)
-            ->whereRaw("JSON_CONTAINS(category_arr_id, '".intval($data['catid'])."')")
-            ->leftJoin('website_category', 'website_category.category_id', 'article.catid')
-            ->select('article.*','website_category.category_id','website_category.alias','website_category.aLIas_pinyin')
-            ->orderBy('updated_at', 'desc')
-            ->limit($data['text_num'])
-            ->get()->all();
-        if(empty($articles)){
-            return Result::error("暂无此栏目",0); 
-        }
-        return Result::success($articles);
+        // 修正传入的字符串,将单引号替换为双引号
+        $input['id'] = $data['id'];
+        $input['website_id'] = $data['website_id'];
+        // 将 JSON 字符串转换为 PHP 数组
+        $data = json_decode($input['id'], true);
+        // 使用 array_map 处理每个元素
+        $result = array_map(function ($item) use ($input) {
+            list($parentCatId, $parentImgNum, $parentTextNum) = explode(',', $item['parent']);
+            $website = [
+                'website_id' => $input['website_id'],
+            ];
+            // 查询栏目名称
+            $category = WebsiteCategory::where('category_id', $parentCatId)->where($website)->first(['alias', 'category_id','aLIas_pinyin']);
+            if(empty($category)){
+                $imgArticles = [];
+                $textArticles = [];
+                // return Result::error("暂无此栏目",0);
+            }else{
+                // 查询图片新闻
+                $imgArticles = Article::where('status',1)
+                    ->where(function ($query) use ($website) {
+                        $query->where(function ($subQuery) use ($website) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
+                    ->where('imgurl', '!=', '')
+                    ->whereRaw("JSON_CONTAINS(category_arr_id, '".intval($parentCatId)."')")
+                    ->leftJoin('website_category', 'website_category.category_id', 'article.catid','website_category.aLIas_pinyin')
+                    ->select('article.*','website_category.category_id','website_category.alias')
+                    ->orderBy('updated_at', 'desc')
+                    ->limit($parentImgNum)
+                    ->get()->all();
+                
+
+                // 查询文字新闻
+                $textArticles = Article::where('status',1)
+                    ->where(function ($query) use ($website) {
+                        $query->where(function ($subQuery) use ($website) {
+                            $subQuery->whereRaw("JSON_CONTAINS(ignore_ids, '".intval($website['website_id'])."') = 0");
+                        })->orWhereNull("ignore_ids");
+                    })
+                    ->whereRaw("JSON_CONTAINS(category_arr_id, '".intval($parentCatId)."')")
+                    ->leftJoin('website_category', 'website_category.category_id', 'article.catid','website_category.aLIas_pinyin')
+                    ->select('article.*','website_category.category_id','website_category.alias','website_category.aLIas_pinyin')
+                    ->orderBy('updated_at', 'desc')
+                    ->limit($parentImgNum)
+                    ->get()->all();
+            }
+            $resultItem = [
+                'alias' => $category ? $category->alias : null,
+                'category_id' => $parentCatId,
+                'pinyin' => $category->aLIas_pinyin ?? '',
+                'imgnum' => $imgArticles,
+                'textnum' => $textArticles,
+                
+            ];
+
+
+            return $resultItem;
+        }, $data);
+        return Result::success($result);
     }
 }