kphcdr 1 year ago
parent
commit
46d305303a
2 changed files with 22 additions and 12 deletions
  1. 3 1
      app/Console/Commands/TestCommand.php
  2. 19 11
      app/Modules/Admin/Services/SpecService.php

+ 3 - 1
app/Console/Commands/TestCommand.php

@@ -42,6 +42,8 @@ class TestCommand extends Command
 
     public function time()
     {
-        dump(date('Y-m-d H:i:s'));
+        $cartesianProduct = new CartesianProduct();
+        $cartesianProduct->appendSet(["红色", "白色"]);
+        dump($cartesianProduct->compute());
     }
 }

+ 19 - 11
app/Modules/Admin/Services/SpecService.php

@@ -109,18 +109,10 @@ class SpecService extends BaseService
         }
         // TODO 这个第三方库有问题,如果只有一个规格的时候,格式不同要兼容一下
         $cartesian = $cartesianProduct->compute();
-        if ($specS->count() == 1) {
-            $cartesian = [$cartesian];
-        }
 
         foreach ($cartesian as $c) {
-
-            $return[] = [
-                "id" => 0,
-                "sn" => "",
-                "url_3d" => "",
-                "is_use" => 1,
-                "spec_attr" => array_map(function ($cname) use ($attrS) {
+            if (is_array($c)) {
+                $specAttr = array_map(function ($cname) use ($attrS) {
                     /** @var SpecAttr $attr */
                     $attr = $attrS->where("name", $cname)->first();
                     return [
@@ -128,7 +120,23 @@ class SpecService extends BaseService
                         "name" => $cname,
                         "spec_name" => optional($attr->spec)->name,
                     ];
-                }, $c),
+                }, $c);
+            } else {
+                /** @var SpecAttr $attr */
+                $attr = $attrS->where("name", $c)->first();
+                $specAttr = [[
+                    "id" => $attr->id,
+                    "name" => $c,
+                    "spec_name" => optional($attr->spec)->name,
+                ]];
+
+            }
+            $return[] = [
+                "id" => 0,
+                "sn" => "",
+                "url_3d" => "",
+                "is_use" => 1,
+                "spec_attr" => $specAttr,
             ];
         }
         return $return;