65 lines
1.8 KiB
PHP
65 lines
1.8 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Services;
|
||
|
|
|
||
|
|
|
||
|
|
use App\Models\CommunityActivitySku;
|
||
|
|
use App\Models\Server\CommunityActivity;
|
||
|
|
|
||
|
|
class CommunityActivityService
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* 同步sku表
|
||
|
|
*/
|
||
|
|
public function syncSku($action, $type_id, $sku)
|
||
|
|
{
|
||
|
|
if (!$sku || !$type_id) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
$ids = array_column($sku, 'sku_id');
|
||
|
|
$unique_ids = array_unique($ids);
|
||
|
|
//有异常重复sku_id数据 重新生成
|
||
|
|
if (count($ids) != count($unique_ids)) {
|
||
|
|
$action = '';
|
||
|
|
}
|
||
|
|
|
||
|
|
$new_sku = [];
|
||
|
|
foreach ($sku as $item) {
|
||
|
|
$name = $item['name'] ?? '';
|
||
|
|
$price = $item['price'] ?? 0;
|
||
|
|
$num = $item['num'] ?? 0;
|
||
|
|
$sku_id = $item['sku_id'] ?? '';
|
||
|
|
$total_limit_num = $item['total_limit_num'] ?? 0;
|
||
|
|
if (!$name) {
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
$model = new CommunityActivitySku;
|
||
|
|
if ($action == 'edit') {
|
||
|
|
$data = CommunityActivitySku::where('type_id',$type_id)->where('id',$sku_id)->first();
|
||
|
|
$model = $data ?: $model;
|
||
|
|
}
|
||
|
|
$model->type_id = $type_id;
|
||
|
|
$model->name = $name;
|
||
|
|
$model->price = $price;
|
||
|
|
$model->num = $num;
|
||
|
|
$model->total_limit_num = $total_limit_num;
|
||
|
|
$model->save();
|
||
|
|
$item['sku_id'] = $model->id;
|
||
|
|
$new_sku[] = $item;
|
||
|
|
}
|
||
|
|
if (!$new_sku){
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
//同步兼容之前的json字段sku
|
||
|
|
$model = CommunityActivity::find($type_id);
|
||
|
|
$model->sku = json_encode($new_sku);
|
||
|
|
$model->save();
|
||
|
|
|
||
|
|
//删除不存在的sku
|
||
|
|
$ids = array_column($new_sku,'sku_id');
|
||
|
|
CommunityActivitySku::whereNotIn('id',$ids)->where('type_id',$type_id)->delete();
|
||
|
|
return $new_sku;
|
||
|
|
}
|
||
|
|
}
|