如果抖店数据已存在则更新数据

This commit is contained in:
wangxiaowei 2024-06-17 20:57:57 +08:00
parent bc38b148d3
commit bdbb296aa2
2 changed files with 247 additions and 8 deletions

@ -197,7 +197,7 @@ class DouDianServer
}
/**
* @note 山茶油上传
* @note 山茶油产品上传
*/
public function camelliaProduct($goods_id = 0)
{
@ -364,7 +364,7 @@ class DouDianServer
foreach ($goods['item'] as $k => $v) {
$spec_value_str = explode(',', $v['spec_value_str']);
// 如果产品规格向下面的规格值是多个的话
foreach ($spec_value_str as $k2 => $v2) {
foreach ($spec_value_str as $v2) {
// 获取spec的名称
$goods_spec_prices_v2 = ($v['weight'] * 2) . '斤*1瓶';
if ($goods['base']['remark']) {
@ -381,7 +381,6 @@ class DouDianServer
}
}
$goods_spec = [];
foreach ($goods['spec'] as $v) {
foreach ($v['values'] as $k2 => $v2) {
@ -413,8 +412,7 @@ class DouDianServer
];
}
$param->spec_info = json_encode($spec, JSON_UNESCAPED_UNICODE);
$param->spec_prices_v2 = json_encode($spec_prices_v2, JSON_UNESCAPED_UNICODE);
$param->standard_brand_id = 596120136; #品牌
$param->spec_prices_v2 = json_encode($spec_prices_v2, JSON_UNESCAPED_UNICODE);
$response = $request->execute($this->access_token);
@ -430,6 +428,241 @@ class DouDianServer
}
}
/**
* @note 山茶油产品编辑
*/
public function camelliaProductEdit($product_id = 0, $goods_id = 0)
{
$goods = GoodsLogic::info($goods_id);
$request = new \ProductAddV2Request();
$param = new \ProductAddV2Param();
$request->setParam($param);
$param->product_id = $product_id;
// if (isset($goods['base']['code'])) {
// // 自己的后台商品编码
// $param->outer_product_id = $goods['base']['code'] + 6;
// }
$param->name = $goods['base']['name'];
// 0-普通,3-虚拟
$param->product_type = $goods['base']['type'] == 0 ? 0 : 3;
// 叶子类目ID通过/shop/getShopCategory接口获取
$param->category_leaf_id = 28227;
// 获取商品品牌,泰宇品牌ID:1804083496
// $this->getBrand($param->category_leaf_id);
$param->standard_brand_id = 1804083496;
// 获取商品发布规则
// $rule = $this->getProductRule($param->category_leaf_id);
// 商品轮播图
$param->pic = implode('|', $this->batchUploadImage($goods['base']['goods_image']));
// $param->pic = 'https://p3-aio.ecombdimg.com/obj/ecom-shop-material/ALSUvYM_m_4aedee0c4d90d0488e6e8521a0555758_sx_107771_www800-800';
// 商品描述,目前只支持图片
$doc = new DOMDocument();
$doc->loadHTML($goods['base']['content']);
$images = $doc->getElementsByTagName('img');
$src = array();
foreach ($images as $k => $image) {
// src[$k]['uri'] = str_replace('http://admin.dlh.com', 'https://dlh.hainings.com', $image->getAttribute('src'));
$src[$k]['uri'] = str_replace('http://admin.dlh.com', 'https://dlh.hainings.com', 'https://dlh.hainings.com/uploads/images/20240528170003c16046671.jpg');
$src[$k]['id'] = $goods_id . '_goods_detail_' . $k;
}
$param->description = implode('|', $this->batchUploadImage($src, true));
// $param->description = 'https://p3-aio.ecombdimg.com/obj/ecom-shop-material/ALSUvYM_m_4aedee0c4d90d0488e6e8521a0555758_sx_107771_www800-800';
// 获取资质
$param->quality_list = $this->getQualificationConfig($param->category_leaf_id);
// 支付方式,0货到付款 1在线支付,2,货到付款+在线支付
$param->pay_type = 1;
// 减库存类型:1-拍下减库存 2-付款减库存
$param->reduce_type = 1;
// 运费模板id,传0表示包邮,通过/freightTemplate/list接口获取
$param->freight_id = 0;
// 承诺发货时间,具体规则用/product/getProductUpdateRule获取
$param->delivery_delay_day = 2;
// 发货模式,0-现货发货,1-预售发货,2-阶梯发货,默认0
$param->presell_type = 0;
$param->after_sale_service = "{\"supply_day_return_selector\":\"7-1\"}";
// 客服号码
$param->mobile = "400123456";
$param->commit = true; #false仅保存草稿,true保存+提审
/* 这个是商品属性规格 对应的接口为 getCateProperty, 以下必填项可以参考抖店商家类目数据*/
$product_format_new = array(
2685 => [
[
'diy_type' => 0,
'name' => '永兴泰宇茶油有限公司',
'value' => 0
]
],
4118 => [
[
'diy_type' => 0,
'name' => '常温',
'value' => 37269
]
],
58 => [
[
'diy_type' => 0,
'name' => '是',
'value' => 23964
]
],
1758 => [
[
'diy_type' => 1,
'name' => '包装',
'value' => 8197
]
],
1880 => [
[
'diy_type' => 0,
'name' => '中国大陆',
'value' => 13850
]
],
3999 => [
[
'diy_type' => 0,
'name' => self::$organic_food_license,
'value' => 0
]
],
4031 => [
[
'diy_type' => 0,
'name' => self::$food_license,
'value' => 0
]
],
2988 => [
[
'diy_type' => 0,
'name' => '18月',
'value' => 0
]
]
);
$param->product_format_new = json_encode($product_format_new, JSON_UNESCAPED_UNICODE);
// 统一规格 = 1; 多规格 = 2;
if ($goods['base']['spec_type'] == 1) {
// 在公司后台系统中有商品卖点,含有2L*2罐装(因为抖店后台有瓶数可以设置),先暂时将它添加为商品规格
$goods_spec = ($goods['item'][0]['weight'] * 2) . '斤*1瓶';
if ($goods['base']['remark']) {
$goods_spec = $goods['base']['remark'];
}
$spec = [
'spec_values' =>[
0 => [
'property_name' => '规格',
'property_id' => 0,
'values' => [
0 => [
'value_name' => $goods_spec,
'value_id' => 0
]
]
]
]
];
$spec_prices_v2 = [
0 => [
'sell_properties' => [
0 => [
'value_name' => $goods_spec,
'property_name' => '规格'
]
],
'stock_num' => $goods['item'][0]['stock'],
'price' => floatval($goods['item'][0]['price']) * 100
]
];
} else if($goods['base']['spec_type'] == 2) {
$spec_prices_v2 = [];
foreach ($goods['item'] as $k => $v) {
$spec_value_str = explode(',', $v['spec_value_str']);
// 如果产品规格向下面的规格值是多个的话
foreach ($spec_value_str as $v2) {
// 获取spec的名称
$goods_spec_prices_v2 = ($v['weight'] * 2) . '斤*1瓶';
if ($goods['base']['remark']) {
$goods_spec_prices_v2 = $goods['base']['remark'];
}
// $res = GoodsSpec::where(['goods_id' => $goods_id]);
$spec_prices_v2[$k]['sell_properties'][0]['value_name'] = $goods_spec_prices_v2;
$spec_prices_v2[$k]['sell_properties'][0]['property_name'] = '规格'; // 先固定为口味分类(抖店后台设置了口味分类)
$spec_prices_v2[$k]['sell_properties'][1]['value_name'] = str_replace('茶油', ' ', $v2);
$spec_prices_v2[$k]['sell_properties'][1]['property_name'] = '口味分类'; // 先固定为口味分类(抖店后台设置了口味分类)
$spec_prices_v2[$k]['stock_num'] = $v['stock'];
$spec_prices_v2[$k]['price'] = floatval($v['price']) * 100;
}
}
$goods_spec = [];
foreach ($goods['spec'] as $v) {
foreach ($v['values'] as $k2 => $v2) {
$goods_spec[$k2] = array(
'value_name' => str_replace('茶油', ' ', $v2['value']),
'value_id' => 0
);
}
}
// 现有的商品中没有规格这一个规格项,所以value_name使用上面的$goods_spec_prices_v2
$spec = [
'spec_values' =>[
0 => [
'property_name' => '规格',
'property_id' => 0,
'values' => [
0 => [
'value_name' => $goods_spec_prices_v2,
'value_id' => 0
]
]
],
1 => [
'property_name' => '口味分类',
'property_id' => 0,
'values' => $goods_spec
]
]
];
}
$param->spec_info = json_encode($spec, JSON_UNESCAPED_UNICODE);
$param->spec_prices_v2 = json_encode($spec_prices_v2, JSON_UNESCAPED_UNICODE);
$response = $request->execute($this->access_token);
if ($response->code == 10000) {
try {
GoodsLogic::updateDouDianData($goods_id, json_encode($response->data));
return $response->code;
} catch (\Exception $e) {
throw new \think\Exception($e->getMessage());
}
} else {
throw new \think\Exception($response->sub_msg);
}
}
/**
* @note 上传的商品是统一规格的
*/

@ -399,8 +399,14 @@ class Goods extends ShopBase
if ($this->shop_id === 4) {
try {
$doudian = new DouDianServer();
if ($doudian->camelliaProduct($goods_id) == 10000) {
return JsonServer::success('同步成功');
$result = \app\common\model\goods\Goods::where(['id' => $goods_id])->find();
if ($result['doudian_data']) {
$product = json_decode($result['doudian_data'], true);
$doudian->camelliaProductEdit($product['product_id'], $goods_id);
} else {
if ($doudian->camelliaProduct($goods_id) == 10000) {
return JsonServer::success('同步成功');
}
}
} catch (Exception $e) {
return JsonServer::error($e->getMessage());
@ -415,7 +421,7 @@ class Goods extends ShopBase
public function export()
{
$result = GoodsLogic::exportData($this->shop_id);
if(false === $result) {
if (!$result) {
return JsonServer::error(OrderLogic::getError() ?: '导出失败');
}
$src = input('server.REQUEST_SCHEME') . '://' . input('server.SERVER_NAME');