xieruidong 2 年之前
父节点
当前提交
0cd52101f8
共有 2 个文件被更改,包括 29 次插入43 次删除
  1. 26 42
      application/admin/controller/Goods.php
  2. 3 1
      application/common/model/GoodsSize.php

+ 26 - 42
application/admin/controller/Goods.php

@@ -11,6 +11,7 @@ use app\common\model\GoodsDetail;
 use app\common\model\GoodsSku;
 use app\common\model\Refund;
 use think\Db;
+use Yansongda\Supports\Arr;
 
 /**
  * 商品列管理
@@ -120,20 +121,15 @@ class Goods extends Backend
             'is_kill'=>['require'],
             'logo|LOGO'=>['require','array','min:1','max:6'],
         ]);
-        if(empty($data['size'])||empty($data['spec'])){
-            $this->error('请填写尺寸和规格');
+        if(empty($data['size'])){
+            $this->error('请填写规格');
         }
         if(empty($data['sku'])){
             $this->error('请填写参数');
         }
         foreach ($data['size'] as $key=>$item){
             $this->validate($item,[
-                'name|尺寸名称'=>['require']
-            ]);
-        }
-        foreach ($data['spec'] as $key=>$item){
-            $this->validate($item,[
-                'name|规格名称'=>['require']
+                'type|规格名称'=>['require']
             ]);
         }
         foreach ($data['sku'] as $key=>$item){
@@ -144,29 +140,27 @@ class Goods extends Backend
             ]);
             foreach ($item['amount_ladder'] as $ladder){
                 $this->validate($ladder,[
-                    'min|数量区间'=>['require','float','egt:0'],
-                    'max|数量区间'=>['require','float','egt:0'],
-                    'amount|区间售价'=>['require','float','egt:0'],
+                    'min|售价数量区间'=>['require','float','egt:0'],
+                    'max|售价数量区间'=>['require','float','egt:0'],
+                    'amount|售价区间价格'=>['require','float','egt:0'],
+                ]);
+            }
+            foreach ($item['detail'] as $d){
+                $this->validate($d,[
+                    'name|规格介绍参数名'=>['require','max:20'],
+                    'value|规格介绍参数值'=>['require','max:20'],
                 ]);
             }
             if($data['is_kill']) {
                 foreach ($item['amount_kill_ladder'] as $ladder) {
                     $this->validate($ladder, [
-                        'min|数量区间' => ['require', 'float', 'egt:0'],
-                        'max|数量区间' => ['require', 'float', 'egt:0'],
-                        'amount|区间价' => ['require', 'float', 'egt:0'],
+                        'min|秒杀价数量区间' => ['require', 'float', 'egt:0'],
+                        'max|秒杀价数量区间' => ['require', 'float', 'egt:0'],
+                        'amount|秒杀价区间价' => ['require', 'float', 'egt:0'],
                     ]);
                 }
             }
         }
-        foreach ($data['detail'] as $item){
-            foreach ($item['arr'] as $d){
-                $this->validate($d,[
-                    'name|规格介绍参数名'=>['require','max:20'],
-                    'value|规格介绍参数值'=>['require','max:20'],
-                ]);
-            }
-        }
         foreach ($data['service'] as $item){
             $this->validate($item,[
                 'name|售后服务参数名'=>['require','max:20'],
@@ -201,21 +195,13 @@ class Goods extends Backend
             }
             $sizeId[]=$size['id'];
         }
-        foreach ($data['spec'] as $size){
-            $size['goods_id']=$goods['id'];
-            if(!empty($size['id'])){
-                $size=GoodsSize::get($size['id']);
-                $size->allowField($size)->save();
-            }else{
-                $size=GoodsSize::create($size);
-            }
-            $sizeId[]=$size['id'];
-        }
         $goods->size()->whereNotIn('id',$sizeId)->delete();
 
         $skuId=[];
-        foreach ($data['sku'] as $key=>$sku){
-            $sku['name']=$sku['size']['name'].$sku['spec']['name'];
+        $detailId=[];
+        foreach ($data['sku'] as $key=>$_sku){
+            $sku=Arr::only($_sku,['amount_cost','amount_kill_ladder','amount_ladder','num_stock','num_stock_kill']);
+            $sku['name']=$_sku['specValues'];
             if(!empty($sku['id'])){
                 $model=GoodsSku::get($sku['id']);
                 $model->allowField(true)->save($sku);
@@ -223,22 +209,20 @@ class Goods extends Backend
                 $model=GoodsSku::create($sku);
             }
             $skuId[]=$model['id'];
-        }
-        $goods->sku()->whereNotIn('id',$skuId)->delete();
 
-        $detailId=[];
-        foreach ($data['detail'] as $key=>$item){
-            foreach ($item['arr'] as $detail){
+            foreach ($_sku['detail'] as $detail){
                 if(!empty($detail['id'])){
                     $model=GoodsDetail::get($detail['id']);
                     $model->allowField(true)->save($detail);
                 }else{
-                    $model=GoodsDetail::create([
-                        ''
-                    ]);
+                    $detail['goods_id']=$goods['id'];
+                    $model=GoodsDetail::create($detail);
                 }
+                $detailId[]=$model['id'];
             }
         }
+        $goods->sku()->whereNotIn('id',$skuId)->delete();
+        $goods->detail()->whereNotIn('id',$detailId)->delete();
 
         $goods->setAmount();
         Db::commit();

+ 3 - 1
application/common/model/GoodsSize.php

@@ -9,5 +9,7 @@ use think\Model;
  */
 class GoodsSize Extends Model
 {
-
+    protected $type=[
+        'names'=>'array',
+    ];
 }