when($params['status'], function (Builder $query) use ($params) { return $query->where("status", $params['status']); })->when($params['name'], function (Builder $query) use ($params) { return $query->where("name", "like", "%{$params['name']}%"); })->orderByDesc("id")->paginate($params['page_size']); return [ "total" => $p->total(), "page_total" => $p->lastPage(), "list" => array_map(function (Goods $model) { return [ "id" => $model->id, "name" => $model->name, "thumb" => Arr::first($model->image_list), "weight" => $model->weight, "status" => $model->status, "created_at" => $model->created_at->format("Y-m-d H:i:s"), ]; }, $p->items()), ]; } public function info($params) { $id = $params['id']; $model = Goods::findOrFail($id); $return = [ "id" => $model->id, "image_list" => $model->image_list, "category" => $model->map->map(function (GoodsCategoryMap $map) { return [ "id" => $map->category->id, "is_public" => $map->is_public, ]; }), "spec" => $model->spec, "sku" => $model->sku->map(function (GoodsSku $sku) { return [ "id" => $sku->id, "sn" => $sku->sn, "3d_url" => $sku->url_3d, "is_use" => $sku->is_use, "spec_attr" => array_map(function ($specAttrId) { return [ "id" => $specAttrId, "name" => SpecAttr::where("id", $specAttrId)->value("name"), ]; }, $sku->spec_attr_list), ]; }), "weight" => $model->weight, "desc_html" => $model->desc_html, "spec_attr_html" => $model->spec_attr_html, "faq_html" => $model->faq_html, ]; return $return; } }