徐总多门店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
jiuhaoshenghuo/app/jobs/product/ProductSyncStoreJob.php

110 lines
3.4 KiB

<?php
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
namespace app\jobs\product;
use app\services\product\branch\StoreBranchProductServices;
use app\services\product\product\StoreProductServices;
use crmeb\basic\BaseJobs;
use crmeb\traits\QueueTrait;
use think\facade\Log;
/**
* 商品同步到门店
* Class ProductSyncStoreJob
* @package app\jobs\product
*/
class ProductSyncStoreJob extends BaseJobs
{
use QueueTrait;
/**
* 同步某个商品到某个门店
* @param $product_id
* @param $store_id
* @return bool
*/
public function syncProduct($product_id, $store_id)
{
$product_id = (int)$product_id;
$store_id = (int)$store_id;
if (!$product_id || !$store_id) {
return true;
}
try {
/** @var StoreBranchProductServices $storeBranchProductServices */
$storeBranchProductServices = app()->make(StoreBranchProductServices::class);
$storeBranchProductServices->syncProduct($product_id, $store_id);
} catch (\Throwable $e) {
Log::error('同步商品到门店发生错误,错误原因:' . $e->getMessage());
}
return true;
}
/**
* 新增门店:同步平台商品(选择多个,或者所有)
* @param $store_id
* @param $product_id
* @return bool
*/
public function syncProducts($store_id, $product_id = [])
{
if (!$store_id) {
return true;
}
try {
$where = ['is_show' => 1, 'is_del' => 0, 'type' => 0, 'product_type' => [0, 4], 'is_verify' => 1, 'pid' => 0];
if ($product_id) {//同步某些商品
$where['id'] = is_array($product_id) ? $product_id : explode(',', $product_id);
}
/** @var StoreProductServices $productServices */
$productServices = app()->make(StoreProductServices::class);
$products = $productServices->getSearchList($where, 0, 0, ['id'], '', []);
if ($products) {
$productIds = array_column($products, 'id');
foreach ($productIds as $id) {
ProductSyncStoreJob::dispatchDo('syncProduct', [$id, $store_id]);
}
}
} catch (\Throwable $e) {
Log::error('同步商品到门店发生错误,错误原因:' . $e->getMessage());
}
return true;
}
/**
* 同步一个商品到多个门店
* @param $product_id
* @param $store_ids
* @return bool
*/
public function syncProductToStores($product_id, $applicable_type = 0, $store_ids = [])
{
$product_id = (int)$product_id;
if (!$product_id) {
return true;
}
try {
if ($store_ids) {//同步门店
$store_ids = is_array($store_ids) ? $store_ids : explode(',', $store_ids);
}
/** @var StoreBranchProductServices $storeBranchProductServices */
$storeBranchProductServices = app()->make(StoreBranchProductServices::class);
$storeBranchProductServices->syncProductToStores($product_id, $applicable_type, $store_ids);
} catch (\Throwable $e) {
Log::error('同步商品到门店发生错误,错误原因:' . $e->getMessage());
}
return true;
}
}