Browse Source

w完善功能

gorden 11 months ago
parent
commit
d954a463e4

+ 36 - 25
app/admin/controller/asset/HouseTypeController.php

@@ -74,16 +74,25 @@ class HouseTypeController extends Curd
     {
         $specs = self::$specs;
         foreach ($items as &$item) {
-            $item->content_config_json = json_decode($item->content_config_json, true);
-            $newSpecs = [];
-            foreach ($item->content_config_json['specs'] as $key => $value) {
-                if (in_array($key, $specs) && !empty($value)) {
-                    $key = array_search($key, $specs);
-                    $newSpecs[$key] = $value;
-                }
+            $configJson = json_decode($item->content_config_json, true);
+            if (isset($configJson['img'])){
+                $configJson['img'] = getenv("STORAGE_DOMAIN").$configJson['img'][0];
+            }
+            if (isset($configJson['cover'])){
+                $configJson['cover'] = getenv("STORAGE_DOMAIN").$configJson['cover'][0];
             }
-            if (!empty($newSpecs)) {
-                $item->content_config_json['specs'] = $newSpecs;
+            if (isset($configJson['specs'])){
+                $newSpecs = [];
+                foreach ($configJson['specs'] as $key => $value) {
+                    if (in_array($key, $specs)) {
+                        $key = array_search($key, $specs);
+                        $newSpecs[$key] = $value;
+                    }
+                }
+                if (!empty($newSpecs)) {
+                    $configJson['specs'] = $newSpecs;
+                    $item->content_config_json = $configJson;
+                }
             }
         }
 
@@ -106,10 +115,10 @@ class HouseTypeController extends Curd
         $data = $this->inputFilter($params);
         $data['content_config_json'] = json_decode($data['content_config_json'], true);
         if (!empty($data['content_config_json']['cover'])) {
-            $data['content_config_json']['cover'] = str_replace(getenv("STORAGE_DOMAIN"), '', $data['content_config_json']['cover']);
+            $data['content_config_json']['cover'] = [str_replace(getenv("STORAGE_DOMAIN"), '', $data['content_config_json']['cover'])];
         }
         if (!empty($data['content_config_json']['img'])) {
-            $data['content_config_json']['img'] = str_replace(getenv("STORAGE_DOMAIN"), '', $data['content_config_json']['img']);
+            $data['content_config_json']['img'] = [str_replace(getenv("STORAGE_DOMAIN"), '', $data['content_config_json']['img'])];
         }
         $specs = [];
         foreach ($data['content_config_json']['specs'] as $key => $item) {
@@ -119,34 +128,36 @@ class HouseTypeController extends Curd
 
         $data['content_config_json'] = json_encode($data['content_config_json']);
 
-        $data['img'] = [$data['img']];
-        $data['cover'] = [$data['cover']];
-        dump($data);
-
         return $data;
     }
 
     protected function updateInput(Request $request): array
     {
+        $params = $request->post();
+        $params['content_config_json'] = json_encode($params['content_config_json']);
+
         $primary_key = $this->model->getKeyName();
         $id = $request->post($primary_key);
-        $data = $this->inputFilter($request->post());
+        $data = $this->inputFilter($params);
         $model = $this->model->find($id);
         if (!$model) {
             throw new BusinessException('记录不存在', 2);
         }
 
-        if (!empty($request->post('floor_plan'))) {
-            $data['asset_house_json'] = json_encode(['floor_plan' => str_replace(getenv('STORAGE_DOMAIN'), '', $request->post('floor_plan'))]);
-        } else {
-            $data['asset_house_json'] = [];
+        $data['content_config_json'] = json_decode($data['content_config_json'], true);
+        if (!empty($data['content_config_json']['cover'])) {
+            $data['content_config_json']['cover'] = [str_replace(getenv("STORAGE_DOMAIN"), '', $data['content_config_json']['cover'])];
         }
-//        dump($request->post('asset_house_address'));
-        if (!empty($request->post('asset_house_address'))) {
-            $data['asset_json'] = json_encode(['address' => $request->post('asset_house_address')]);
-        } else {
-            $data['asset_json'] = '[]';
+        if (!empty($data['content_config_json']['img'])) {
+            $data['content_config_json']['img'] = [str_replace(getenv("STORAGE_DOMAIN"), '', $data['content_config_json']['img'])];
+        }
+        $specs = [];
+        foreach ($data['content_config_json']['specs'] as $key => $item) {
+            $specs[self::$specs[$key]] = $item;
         }
+        $data['content_config_json']['specs'] = $specs;
+
+        $data['content_config_json'] = json_encode($data['content_config_json']);
 
         unset($data[$primary_key]);
         return [$id, $data];

+ 43 - 17
app/admin/service/goods/GoodsService.php

@@ -164,11 +164,11 @@ class GoodsService
                         $good['sku'][$key]['goods_sku_specs_json'] = json_decode($sku['goods_sku_specs_json']);
 
                         $skuName = '';
-                        foreach ($good['sku'][$key]['goods_sku_specs_json'] as $specsKey => $skuSpecs){
-                            if (is_array($skuSpecs)){
-                                $skuName = $skuName.' '.$specsKey.' '.implode(' ',$skuSpecs);
-                            }else{
-                                $skuName = $skuName.' '.$specsKey.' '.$skuSpecs;
+                        foreach ($good['sku'][$key]['goods_sku_specs_json'] as $specsKey => $skuSpecs) {
+                            if (is_array($skuSpecs)) {
+                                $skuName = $skuName . ' ' . $specsKey . ' ' . implode(' ', $skuSpecs);
+                            } else {
+                                $skuName = $skuName . ' ' . $specsKey . ' ' . $skuSpecs;
                             }
                         }
                         $good['sku'][$key]['sku_name'] = $skuName;
@@ -256,6 +256,7 @@ class GoodsService
                     }
                     $storage = json_decode($sku['goods_sku_storage_json'], true);
                     $priceStorage = [
+                        'sku_id' => $sku['goods_sku_id'],
                         'sku' => rtrim($skuSpecs, ',') ?? '',
                         'stock' => $storage['storage'] ?? '',
                         'price' => $sku['goods_sku_sales_price'] ?? '',
@@ -379,16 +380,16 @@ class GoodsService
                         ->select('goods_sku_id', 'join_sku_goods_id', 'goods_sku_specs_json', 'goods_sku_sales_price')
                         ->get()
                         ->toArray();
-                    foreach ($skus as $key => $sku2){
-                        if(!empty($sku2['goods_sku_specs_json'])){
-                            $skus[$key]['goods_sku_specs_json'] = json_decode($sku2['goods_sku_specs_json'],true);
+                    foreach ($skus as $key => $sku2) {
+                        if (!empty($sku2['goods_sku_specs_json'])) {
+                            $skus[$key]['goods_sku_specs_json'] = json_decode($sku2['goods_sku_specs_json'], true);
 
                             $skuName = '';
-                            foreach ($skus[$key]['goods_sku_specs_json'] as $specsKey => $skuSpecs){
-                                if (is_array($skuSpecs)){
-                                    $skuName = $skuName.' '.$specsKey.' '.implode(' ',$skuSpecs);
-                                }else{
-                                    $skuName = $skuName.' '.$specsKey.' '.$skuSpecs;
+                            foreach ($skus[$key]['goods_sku_specs_json'] as $specsKey => $skuSpecs) {
+                                if (is_array($skuSpecs)) {
+                                    $skuName = $skuName . ' ' . $specsKey . ' ' . implode(' ', $skuSpecs);
+                                } else {
+                                    $skuName = $skuName . ' ' . $specsKey . ' ' . $skuSpecs;
                                 }
                             }
                             $skus[$key]['sku_name'] = $skuName;
@@ -1041,9 +1042,12 @@ class GoodsService
     {
         try {
             Db::beginTransaction();
+            $skusOldIds = [];
             if ($operation == 'update') {
+                // 查出所有的
+                $skusOldIds = GoodsSku::where('join_sku_goods_id', $params['goods_id'])->pluck('goods_sku_id', 'goods_sku_id');
                 // 删掉原有的
-                GoodsSku::where('join_sku_goods_id', $params['goods_id'])->delete();
+//                GoodsSku::where('join_sku_goods_id', $params['goods_id'])->delete();
             }
             // 入新的
             if (!empty($params['goods_sku_json_value'])) {
@@ -1055,12 +1059,30 @@ class GoodsService
                         $key = $item[$skuName];
                         $skuArr[$key] = $skus[$i - 1];
                     }
+                    $specsJson = json_encode($skuArr);
+                    $skuTitle = str_replace('-', ',', $item['sku']) . $params['goods_name'];
+                    if ($operation == 'update' && !empty($item['sku_id'])) {
+                        $model = GoodsSku::where('goods_sku_id', $item['sku_id'])->first();
+                        if (!$model) {
+                            $model = new GoodsSku();
+                        } else {
+                            unset($skusOldIds[$model->goods_sku_id]);
+                        }
+                    } else {
+                        $model = GoodsSku::where('join_sku_goods_id', $params['goods_id'])->where('goods_sku_title', $skuTitle)->first();
+                        if (!$model) {
+                            $model = new GoodsSku();
+                        } else {
+                            dump($model->goods_sku_id);
+                            unset($skusOldIds[$model->goods_sku_id]);
+                        }
+
+                    }
 
-                    $model = new GoodsSku();
                     $model->join_sku_goods_id = $params['goods_id'];
                     $model->goods_sku_status = $params['goods_status'];
-                    $model->goods_sku_specs_json = json_encode($skuArr);
-                    $model->goods_sku_title = str_replace('-', ',', $item['sku']) . $params['goods_name'];
+                    $model->goods_sku_specs_json = $specsJson;
+                    $model->goods_sku_title = $skuTitle;
                     $model->goods_sku_market_price = $params['goods_market_price'] ?? 0;
                     $model->goods_sku_sales_price = $item['price'];
                     $model->goods_sku_storage_json = json_encode(['storage' => $item['stock']]);
@@ -1068,8 +1090,12 @@ class GoodsService
 
                 }
             }
+            if ($operation == 'update' && !empty($skusOldIds)) {
+                GoodsSku::whereIn('goods_sku_id', $skusOldIds)->delete();
+            }
             Db::commit();
         } catch (\Exception $e) {
+            dump($e->getTrace());
             Db::rollBack();
 
             throw new BusinessException('数据更新异常~5');

+ 1 - 1
app/controller/Curd.php

@@ -126,7 +126,7 @@ class Curd
         } catch (BusinessException $e) {
             return json_fail($e->getMessage());
         } catch (\Exception $e) {
-            dump($e->getTrace());
+            dump($e->getMessage());
             return json_fail('数据更新失败');
         }