|
@@ -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');
|