kphcdr 1 年間 前
コミット
c4690b0cd4

+ 5 - 3
app/Models/Goods/Category.php

@@ -40,9 +40,11 @@ use Illuminate\Database\Eloquent\SoftDeletes;
  * @method static \Illuminate\Database\Query\Builder|Category withTrashed()
  * @method static \Illuminate\Database\Query\Builder|Category withoutTrashed()
  * @mixin \Eloquent
- * @property-read Category|null                                       $parent
- * @property-read \Illuminate\Database\Eloquent\Collection|Category[] $childS
- * @property-read int|null                                            $child_s_count
+ * @property-read Category|null                                                                 $parent
+ * @property-read \Illuminate\Database\Eloquent\Collection|Category[]                           $childS
+ * @property-read int|null                                                                      $child_s_count
+ * @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\Goods\GoodsCategoryMap[] $gcMap
+ * @property-read int|null                                                                      $gc_map_count
  */
 class Category extends BaseModel
 {

+ 27 - 0
app/Models/Goods/GoodsCustom.php

@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Models\Goods;
+
+use App\Base\BaseModel;
+use Illuminate\Database\Eloquent\SoftDeletes;
+
+/**
+ * App\Models\Goods\GoodsCustom
+ *
+ * @property int                             $id
+ * @property string                          $title
+ * @property \Illuminate\Support\Carbon|null $created_at
+ * @property \Illuminate\Support\Carbon|null $updated_at
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom newModelQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom newQuery()
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom query()
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom whereCreatedAt($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom whereId($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom whereTitle($value)
+ * @method static \Illuminate\Database\Eloquent\Builder|GoodsCustom whereUpdatedAt($value)
+ * @mixin \Eloquent
+ */
+class GoodsCustom extends BaseModel
+{
+    protected $table = "goods_custom";
+}

+ 13 - 0
app/Modules/Admin/Controllers/Admin/CommonController.php

@@ -6,6 +6,7 @@ use App\Base\BaseController;
 use App\Models\Auth\AdminGroup;
 use App\Models\Auth\AdminPermission;
 use App\Models\Goods\Category;
+use App\Models\Goods\GoodsCustom;
 use App\Models\Goods\Spec;
 use App\Modules\Admin\Services\SettingService;
 
@@ -76,4 +77,16 @@ class CommonController extends BaseController
             }),
         ]);
     }
+
+    public function allCustom()
+    {
+        return $this->ok([
+            "list" => GoodsCustom::get()->map(function (GoodsCustom $c) {
+                return [
+                    "id" => $c->id,
+                    "name" => $c->title,
+                ];
+            }),
+        ]);
+    }
 }

+ 1 - 0
app/Modules/Admin/Controllers/Admin/GoodsController.php

@@ -77,6 +77,7 @@ class GoodsController extends BaseController
             "faq_html" => "",
             "url_3d" => "",
             "sn" => "",
+            "sku" => "array",
         ]);
         return $this->ok($this->service->store($params));
     }

+ 16 - 0
app/Modules/Admin/Services/GoodsService.php

@@ -5,6 +5,7 @@ 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\GoodsSpecMap;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Arr;
@@ -94,6 +95,21 @@ class GoodsService extends BaseService
             }
 
             GoodsSpecMap::where("goods_id", $goods->id)->whereNotIn("id", $doNotDelIdArr)->delete();
+
+            $skuArr = Arr::get($params, "sku", []);
+            $doNotDelIdArr = [];
+            foreach ($skuArr as $skuParam) {
+                $sku = GoodsSku::where("goods_id", $goods->id)->find($skuParam['id']);
+                if (is_null($sku)) {
+                    $sku = new GoodsSku();
+                    $sku->goods_id = $goods->id;
+                }
+                $sku->spec_attr_list = $skuParam['attr'];
+
+                $sku->save();
+                $doNotDelIdArr[] = $sku->id;
+            }
+            GoodsSku::where("goods_id", $goods->id)->whereNotIn("id", $doNotDelIdArr)->delete();
         });
 
     }

+ 31 - 0
database/migrations/2023_05_23_164351_create_goods_custom_table.php

@@ -0,0 +1,31 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('goods_custom', function (Blueprint $table) {
+            $table->id();
+            $table->string("title");
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('goods_custom');
+    }
+};

+ 33 - 0
database/migrations/2023_05_24_094359_alert_goods_sku_url3d.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration {
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table("goods_sku", function (Blueprint $table) {
+            $table->dropColumn("url_3d");
+            $table->dropColumn("sn");
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table("goods_sku", function (Blueprint $table) {
+            $table->string("sn")->default("")->comment("型号");
+            $table->string("url_3d")->default("")->comment("3D的跳转地址");
+        });
+    }
+};

+ 1 - 0
routes/admin.php

@@ -23,6 +23,7 @@ Route::middleware([\App\Http\Middleware\AdminAuthMiddleware::class])->group(func
     Route::post("/admin/common/settingSave", [\App\Modules\Admin\Controllers\Admin\CommonController::class, "settingSave"]);
     Route::get("/admin/common/allCategory", [\App\Modules\Admin\Controllers\Admin\CommonController::class, "allCategory"]);
     Route::get("/admin/common/allSpec", [\App\Modules\Admin\Controllers\Admin\CommonController::class, "allSpec"]);
+    Route::get("/admin/common/allCustom", [\App\Modules\Admin\Controllers\Admin\CommonController::class, "allCustom"]);
 
     Route::get("/admin/goods/specPaginate", [\App\Modules\Admin\Controllers\Admin\GoodsController::class, "specPaginate"]);
     Route::get("/admin/goods/specInfo", [\App\Modules\Admin\Controllers\Admin\GoodsController::class, "specInfo"]);