cmbYouku_Api/app/service/ProductService.php

57 lines
1.8 KiB
PHP

<?php
declare (strict_types=1);
namespace app\service;
use app\exception\BusinessException;
use app\model\Product;
use app\service\util\BlueBrothersClientUtil;
use BlueBrothers\Openapi\OpenapiException;
/**
* @author canny
* @date 2024/2/23 16:51
**/
class ProductService extends BaseService
{
public function __construct()
{
$this->model = app()->make(Product::class);
}
public function updateProductSaleNum($productId, $saleNum)
{
$product = $this->detailById($productId);
$this->updateOne([['id', '=', $productId]], ['sale_num' => $product['sale_num'] + $saleNum]);
}
/**
* @throws OpenapiException
* @throws BusinessException
*/
public function sync()
{
$list = BlueBrothersClientUtil::getClient()->RechargeProduct();
if (empty($list['products'])) {
throw new BusinessException('未查询到关联商品.');
}
// $productMapService = app()->make(ProductMapService::class);
foreach ($list['products'] as $product) {
$supplierProduct = Product::getBySupplierProductId($product['product_id']);
if ($supplierProduct->isEmpty()) {
Product::create([
'name' => $product['item_name'],
'face_amount' => $product['original_price'],
'price' => $product['channel_price'],
'supplier_product_id' => $product['product_id']
]);
} else {
Product::update([
'name' => $product['item_name'],
'face_amount' => $product['original_price'],
'price' => $product['channel_price']],
['supplier_product_id' => $product['product_id']]);
}
}
}
}