问题说明:平台商品分类批量设置没有同步修改门店商品分类
修改文件:app\services\product\product\StoreProductBatchProcessServices
修改方法:setPrdouctCate()
public function setPrdouctCate(int $id, array $data)
{
if (!$id || !$data) {
return true;
}
$cate_id = $data['cate_id'] ?? [];
$store_cate_id = $data['store_cate_id'] ?? [];
$update = [];
$ids = [];
/** @var StoreProductServices $productService */
$productService = app()->make(StoreProductServices::class);
$product = $productService->getOne(['id' => $id], 'pid,type,cate_id,store_cate_id');
if(!$product['pid']) {
$ids = $productService->getColumn(['pid'=>$id],'id');
}
if ($cate_id && !$store_cate_id) {
$storeCateId = $product['store_cate_id'];
$storeCateIdArr = explode(',', $storeCateId);
$update1 = ['cate_id' => implode(',', $cate_id)];
$update = array_merge($update, $update1);
$relation_id = array_merge($storeCateIdArr, $cate_id);
} else if ($store_cate_id && !$cate_id) {
$cateId = $product['cate_id'];
$cateIdArr = explode(',', $cateId);
$update = ['store_cate_id' => implode(',', $store_cate_id)];
$relation_id = array_merge($cateIdArr, $store_cate_id);
} else {
$update1 = ['cate_id' => implode(',', $cate_id), 'store_cate_id' => implode(',', $store_cate_id)];
$update = array_merge($update, $update1);
$relation_id = array_merge($cate_id, $store_cate_id);
}
$this->dao->update($id, $update);
//商品分类关联
ProductRelationJob::dispatch([$id, $relation_id, 1]);
if($ids) {
$data['cate_id'] = isset($update['cate_id']) ? explode(',', $update['cate_id']) : [];
$data['store_cate_id'] = isset($update['store_cate_id']) ? explode(',', $update['store_cate_id']) : [];
//加入批量队列
ProductBatchJob::dispatchSece(10,'productBatch', [1, $ids, $data, false]);
}
return true;
}