rkljw пре 3 дана
родитељ
комит
2d2997775d
3 измењених фајлова са 70 додато и 1 уклоњено
  1. 62 0
      app/JsonRpc/NewsService.php
  2. 7 0
      app/JsonRpc/NewsServiceInterface.php
  3. 1 1
      runtime/hyperf.pid

+ 62 - 0
app/JsonRpc/NewsService.php

@@ -5690,4 +5690,66 @@ class NewsService implements NewsServiceInterface
     }
     return Result::success($result);
   }
+
+
+  /**
+   * 农网导航首页数据
+   */
+  public function getWebsiteNwHomeList(array $data): array{
+      $categoryIds =  WebsiteCategory::where(['website_id'=> $data['website_id']])->where("pid","!=",0)
+          ->pluck('category_id')
+          ->toArray();
+      // 使用子查询优化
+      $articlesList = DB::table('article')
+          ->select([
+              'article.id',
+              'article.title',
+              'article.imgurl',
+              'article.created_at',
+              'category.name as category_name',
+              'category.id as category_id',
+              'website_category.aLIas_pinyin as pinyin',
+              DB::raw('100 as type')
+          ])
+          ->join('category', 'article.catid', '=', 'category.id')
+          ->leftJoin('website_category', 'website_category.category_id', '=', 'category.id')
+          ->where('website_category.website_id', $data['website_id'])
+          ->where('article.status', 1)
+          ->whereIn('category.id', $categoryIds)
+          // ->whereRaw('article.created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)')
+          ->orderBy('article.created_at', 'desc')
+          ->get()
+          ->groupBy('category_id')
+          ->map(function ($group) {
+              // 确保第一条数据有图片
+              $firstWithImage = $group->first(function ($item) {
+                  return !empty($item->imgurl);
+              });
+
+              if ($firstWithImage) {
+                  // 如果有带图片的文章,将其放在第一位
+                  $group = $group->filter(function ($item) use ($firstWithImage) {
+                      return $item->id !== $firstWithImage->id;
+                  })->prepend($firstWithImage);
+              }
+
+              return [
+                  'category_name' => $group->first()->category_name,
+                  'catid' => $group->first()->category_id,
+                  'pinyin' => $group->first()->pinyin,
+//                  'type' => 100,
+                  'list' => $group->take(4)->map(function ($item) {
+                      return [
+                          'id' => $item->id,
+                          'title' => $item->title,
+//                          'imgurl' => $item->imgurl,
+//                          'created_at' => $item->created_at
+                      ];
+                  })->values()
+              ];
+          })
+          ->values()
+          ->toArray();
+      return Result::success($articlesList);
+  }
 }

+ 7 - 0
app/JsonRpc/NewsServiceInterface.php

@@ -396,4 +396,11 @@ interface NewsServiceInterface
      */
     public function getWebsiteTsbbDetail(array $data):array;
     public function getWebsiteLevelJob(array $data):array;
+
+    /**
+     * 农网导航首页
+     * @param array $data
+     * @return array
+     */
+    public function getWebsiteNwHomeList(array $data):array;
 }

+ 1 - 1
runtime/hyperf.pid

@@ -1 +1 @@
-10203
+17978