|
@@ -101,8 +101,34 @@ class PageService extends BaseService
|
|
|
$cidArr = $this->childCategoryIdArr($id);
|
|
|
|
|
|
$gidArr = GoodsCategoryMap::where("category_id", $cidArr)->get(['goods_id'])->pluck("goods_id")->unique()->toArray();
|
|
|
+ if ($attrs = Arr::get($params, "attr", [])) {
|
|
|
|
|
|
- $p = Goods::where("status", Goods::STATUS_OK)->orderByDesc("weight")->whereIn("id", $gidArr)->paginate($pageSize);
|
|
|
+ }
|
|
|
+ $p = Goods::where("status", Goods::STATUS_OK)->when($params['keyword'], function (Builder $query) use ($params) {
|
|
|
+ $query->where("name", "like", "%" . $params['keyword'] . "%");
|
|
|
+ })->orderByDesc("weight")->whereIn("id", $gidArr)->paginate($pageSize);
|
|
|
+
|
|
|
+ return [
|
|
|
+ "total" => $p->total(),
|
|
|
+ "page_total" => $p->lastPage(),
|
|
|
+ "list" => array_map(function (Goods $model) {
|
|
|
+ return [
|
|
|
+ "id" => $model->id,
|
|
|
+ "name" => $model->name,
|
|
|
+ "thumb" => $model->thumb,
|
|
|
+ "weight" => $model->weight,
|
|
|
+ ];
|
|
|
+ }, $p->items()),
|
|
|
+ ];
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public function search($params)
|
|
|
+ {
|
|
|
+ $pageSize = Arr::get($params, "page_size", 10);
|
|
|
+ $p = Goods::where("status", Goods::STATUS_OK)->when($params['keyword'], function (Builder $query) use ($params) {
|
|
|
+ $query->where("name", "like", "%" . $params['keyword'] . "%");
|
|
|
+ })->orderByDesc("weight")->paginate($pageSize);
|
|
|
|
|
|
return [
|
|
|
"total" => $p->total(),
|
|
@@ -115,7 +141,20 @@ class PageService extends BaseService
|
|
|
"weight" => $model->weight,
|
|
|
];
|
|
|
}, $p->items()),
|
|
|
+ "category" => $this->searchCategory($params['keyword']),
|
|
|
];
|
|
|
+ }
|
|
|
+
|
|
|
+ private function searchCategory($keyword)
|
|
|
+ {
|
|
|
+ $c = Category::where("name", "like", "%$keyword%")->get();
|
|
|
|
|
|
+ return $c->map(function (Category $model) {
|
|
|
+ return [
|
|
|
+ "id" => $model->id,
|
|
|
+ "thumb" => $model->thumb,
|
|
|
+ "name" => $model->name,
|
|
|
+ ];
|
|
|
+ });
|
|
|
}
|
|
|
}
|