love_php/app/Services/CommunityActivityService.php
2026-04-02 09:20:51 +08:00

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;
}
}