|
@@ -5,7 +5,10 @@ namespace App\Modules\Mini\Services;
|
|
|
use App\Base\BaseService;
|
|
|
use App\Models\Goods\Category;
|
|
|
use App\Models\Goods\Goods;
|
|
|
+use App\Models\Goods\GoodsCategoryMap;
|
|
|
use App\Models\Setting;
|
|
|
+use Illuminate\Database\Eloquent\Builder;
|
|
|
+use Illuminate\Support\Arr;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class PageService extends BaseService
|
|
@@ -81,4 +84,38 @@ class PageService extends BaseService
|
|
|
];
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ public function childCategoryIdArr($id)
|
|
|
+ {
|
|
|
+ $cids = Category::where("parent_id", $id)->get(["id"])->pluck("id")->toArray();
|
|
|
+
|
|
|
+ $cidss = Category::whereIn("parent_id", $cids)->get(['id'])->pluck("id")->toArray();
|
|
|
+
|
|
|
+ return array_merge($cids, $cidss, [$id]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function categoryGoods($params)
|
|
|
+ {
|
|
|
+ $id = $params['id'];
|
|
|
+ $pageSize = Arr::get($params, "page_size");
|
|
|
+ $cidArr = $this->childCategoryIdArr($id);
|
|
|
+
|
|
|
+ $gidArr = GoodsCategoryMap::where("category_id", $cidArr)->get(['goods_id'])->pluck("goods_id")->unique()->toArray();
|
|
|
+
|
|
|
+ $p = Goods::where("status", Goods::STATUS_OK)->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()),
|
|
|
+ ];
|
|
|
+
|
|
|
+ }
|
|
|
}
|