|
@@ -9,6 +9,7 @@ use App\Models\Goods\GoodsSku;
|
|
|
use App\Models\Goods\SpecAttr;
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
use Illuminate\Support\Arr;
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class GoodsService extends BaseService
|
|
|
{
|
|
@@ -37,6 +38,81 @@ class GoodsService extends BaseService
|
|
|
];
|
|
|
}
|
|
|
|
|
|
+ public function store($params)
|
|
|
+ {
|
|
|
+ if ($id = Arr::get($params, "id", 0)) {
|
|
|
+ $goods = Goods::findOrFail($id);
|
|
|
+ } else {
|
|
|
+ $goods = new Goods();
|
|
|
+ }
|
|
|
+
|
|
|
+ DB::transaction(function () use ($params, $goods) {
|
|
|
+
|
|
|
+ $goods->image_list = Arr::get($params, "image_list", []);
|
|
|
+ $goods->spec = Arr::get($params, "spec", []);
|
|
|
+ $goods->name = Arr::get($params, "name", []);
|
|
|
+ $goods->weight = Arr::get($params, "weight", 0);
|
|
|
+ $goods->desc_html = Arr::get($params, "desc_html", "");
|
|
|
+ $goods->spec_attr_html = Arr::get($params, "spec_attr_html", "");
|
|
|
+ $goods->faq_html = Arr::get($params, "faq_html", "");
|
|
|
+ $goods->save();
|
|
|
+ $categoryArr = Arr::get($params, "category", []);
|
|
|
+ GoodsCategoryMap::where("goods_id", $goods->id)->whereNotIn("category_id", Arr::pluck($categoryArr, "id"))->delete();
|
|
|
+ foreach ($categoryArr as $c) {
|
|
|
+ /**
|
|
|
+ * [
|
|
|
+ * "id" => 1
|
|
|
+ * "is_public" => 1
|
|
|
+ * ]
|
|
|
+ */
|
|
|
+ GoodsCategoryMap::updateOrCreate([
|
|
|
+ "goods_id" => $goods->id,
|
|
|
+ "category_id" => $c['id'],
|
|
|
+ 'is_public' => $c['is_public'],
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ $skuArr = Arr::get($params, "sku", []);
|
|
|
+ $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;
|
|
|
+ }
|
|
|
+ $sku->url_3d = Arr::get($c, "url_3d", "");
|
|
|
+ $sku->spec_attr_list = Arr::get($c, "spec_attr", []);
|
|
|
+ $sku->save();
|
|
|
+ $doNotDelIdArr[] = $sku->id;
|
|
|
+ }
|
|
|
+
|
|
|
+ GoodsSku::where("goods_id", $goods->id)->whereNotIn("id", $doNotDelIdArr)->delete();
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
public function info($params)
|
|
|
{
|
|
|
$id = $params['id'];
|