1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?php
- namespace App\Modules\Admin\Services;
- use App\Base\BaseService;
- use App\Models\Goods\Goods;
- use App\Models\Goods\GoodsCategoryMap;
- use App\Models\Goods\GoodsSku;
- use App\Models\Goods\SpecAttr;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Arr;
- class GoodsService extends BaseService
- {
- public function paginate($params)
- {
- $p = Goods::query()->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;
- }
- }
|