rkljw пре 1 месец
родитељ
комит
f34dbbf1fd
1 измењених фајлова са 27 додато и 32 уклоњено
  1. 27 32
      app/JsonRpc/LinkService.php

+ 27 - 32
app/JsonRpc/LinkService.php

@@ -16,38 +16,33 @@ class LinkService implements LinkServiceInterface
      */
      */
     public function getLinkList(array $data): array
     public function getLinkList(array $data): array
     {
     {
-        $where = [];
-        if(isset($data['title']) && !empty($data['title'])){
-            array_push($where,['link.title','like','%'.$data['title'].'%']);
-        }
-        if(isset($data['website_id']) && !empty($data['website_id'])){
-            array_push($where,['link.website_id','=',$data['website_id']]);
-        }
-        $result  = [];
-        // return Result::success($where);
-        if(!empty($where)){
-            $query = Link::where($where);
-            $count = $query->count();
-        }else{
-            $query = Link::query();
-            $count = $query->count();
-        }
-    // 重新构建查询,避免 $query 已经被修改
-    $rep = $query
-        ->leftJoin("website", "website.id", "link.website_id")
-        ->select("link.*", "website.website_name")
-        ->limit($data['pageSize'])->offset(($data['page'] - 1) * $data['pageSize'])
-        ->orderBy("link.updated_at", "desc")
-        ->get();
-
-        $result = [
-            'rows'=>$rep,
-            'count'=>$count
-        ];
-        if(empty($result)){
-            return Result::error("没有查到数据");
-        }
-        return $result?Result::success($result):Result::error("没有查到数据");
+            $result = Link::when($data, function ($query) use ($data) {
+                    if (isset($data['title']) && !empty($data['title'])) {
+                        $query->where('link.title', 'like', '%' . trim($data['title']) . '%');
+                    }
+                    if (isset($data['website_id']) && !empty($data['website_id'])) {
+                        $query->where('link.website_id', '=', $data['website_id']);
+                    }
+                })
+                ->leftJoin("website","website.id","link.website_id")
+                ->select("link.*","website.website_name")
+                ->limit($data['pageSize'])
+                ->offset(($data['page']-1)*$data['pageSize'])
+                ->orderBy("link.updated_at","desc")
+                ->paginate(intval($data['pageSize']),
+                    [
+                        'link.*',
+                        'website.website_name'
+                    ],
+                    'page', intval($data['page']));
+            if(empty($result)){
+                return Result::error("没有查到数据");
+            }
+            $result = [
+                'rows'=>$result->items(),
+                'count'=>$result->total()
+            ];
+            return Result::success($result);
     }
     }
 
 
     /**
     /**