|
@@ -7,6 +7,7 @@ use App\Exceptions\ClientException;
|
|
|
use App\Models\Goods\Goods;
|
|
|
use App\Models\Goods\GoodsCategoryMap;
|
|
|
use App\Models\Goods\GoodsSku;
|
|
|
+use App\Models\Goods\GoodsSpecMap;
|
|
|
use App\Models\Goods\Spec;
|
|
|
use App\Models\Goods\SpecAttr;
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
@@ -57,6 +58,8 @@ class GoodsService extends BaseService
|
|
|
DB::transaction(function () use ($params, $goods, $specIdArr) {
|
|
|
|
|
|
$goods->image_list = Arr::get($params, "image_list", []);
|
|
|
+ $goods->sn = Arr::get($params, "sn", []);
|
|
|
+ $goods->url_3d = Arr::get($params, "url_3d", []);
|
|
|
$goods->spec = $specIdArr;
|
|
|
$goods->name = Arr::get($params, "name", []);
|
|
|
$goods->weight = Arr::get($params, "weight", 0);
|
|
@@ -79,44 +82,24 @@ class GoodsService extends BaseService
|
|
|
'is_public' => $c['is_public'],
|
|
|
]);
|
|
|
}
|
|
|
- $skuArr = Arr::get($params, "sku", []);
|
|
|
+ $specMap = Arr::get($params, "spec_map", []);
|
|
|
$doNotDelIdArr = [];
|
|
|
- foreach ($skuArr as $c) {
|
|
|
- /**
|
|
|
- * [
|
|
|
- * "id" => 0
|
|
|
- * "sn" => "规格型号"
|
|
|
- * "url_3d" => null
|
|
|
- * "spec_attr" => array:2 [
|
|
|
- * 0 => array:2 [
|
|
|
- * "id" => 1
|
|
|
- * "name" => "属性一"
|
|
|
- * ]
|
|
|
- * 1 => array:2 [
|
|
|
- * "id" => 2
|
|
|
- * "name" => "属性二"
|
|
|
- * ]
|
|
|
- * ]
|
|
|
- * "is_use" => 1
|
|
|
- * ]
|
|
|
- */
|
|
|
- if ($id = Arr::get($c, "id")) {
|
|
|
- $sku = GoodsSku::where("goods_id", $goods->id)->where("id", $id)->first();
|
|
|
- } else {
|
|
|
- $sku = new GoodsSku();
|
|
|
- $sku->goods_id = $goods->id;
|
|
|
- }
|
|
|
- $sku->sn = Arr::get($c, "sn", "");
|
|
|
- if (empty($sku->sn)) {
|
|
|
- $sku->is_use = 0;
|
|
|
+ foreach ($specMap as $c) {
|
|
|
+
|
|
|
+ $model = GoodsSpecMap::where("goods_id", $goods->id)->where("spec_id", $c['spec_id'])->first();
|
|
|
+ if (is_null($model)) {
|
|
|
+ $model = new GoodsSpecMap();
|
|
|
+ $model->goods_id = $goods->id;
|
|
|
+ $model->spec_id = $c['spec_id'];
|
|
|
}
|
|
|
- $sku->url_3d = Arr::get($c, "url_3d", "");
|
|
|
- $sku->spec_attr_list = Arr::get($c, "spec_attr", []);
|
|
|
- $sku->save();
|
|
|
- $doNotDelIdArr[] = $sku->id;
|
|
|
+
|
|
|
+ $model->value = $c['value'];
|
|
|
+
|
|
|
+ $model->save();
|
|
|
+ $doNotDelIdArr[] = $model->id;
|
|
|
}
|
|
|
|
|
|
- GoodsSku::where("goods_id", $goods->id)->whereNotIn("id", $doNotDelIdArr)->delete();
|
|
|
+ GoodsSpecMap::where("goods_id", $goods->id)->whereNotIn("id", $doNotDelIdArr)->delete();
|
|
|
});
|
|
|
|
|
|
}
|
|
@@ -138,25 +121,21 @@ class GoodsService extends BaseService
|
|
|
];
|
|
|
}),
|
|
|
"spec" => $model->spec,
|
|
|
- "sku" => $model->sku->map(function (GoodsSku $sku) {
|
|
|
- return [
|
|
|
- "id" => $sku->id,
|
|
|
- "sn" => $sku->sn,
|
|
|
- "url_3d" => $sku->url_3d,
|
|
|
- "is_use" => $sku->is_use,
|
|
|
- "spec_attr" => array_map(function ($specAttr) {
|
|
|
- $id = Arr::get($specAttr, "id");
|
|
|
- return [
|
|
|
- "id" => $id,
|
|
|
- "name" => SpecAttr::where("id", $id)->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,
|
|
|
+ "sn" => $model->sn,
|
|
|
+ "url_3d" => $model->url_3d,
|
|
|
+ "spec_map" => $model->specMap->map(function (GoodsSpecMap $map) {
|
|
|
+ return [
|
|
|
+ "id" => $map->id,
|
|
|
+ "spec_id" => $map->spec_id,
|
|
|
+ "value" => $map->value,
|
|
|
+ "name" => $map->spec->name,
|
|
|
+ ];
|
|
|
+ }),
|
|
|
];
|
|
|
|
|
|
return $return;
|