erp/app/Services/Business/BusinessClient.php

114 lines
2.6 KiB
PHP
Raw Normal View History

<?php
namespace App\Services\Business;
use App\Models\Log;
use App\Models\Shop;
2022-08-08 13:59:44 +08:00
use GuzzleHttp\Client;
abstract class BusinessClient
{
protected $redirectUri = 'http://erp.chutang66.com/callback';
protected $code;
protected $shop;
2022-08-08 15:05:17 +08:00
protected $skuId = 0;
abstract public function auth();
abstract public function downloadGoodsList();
abstract public function downloadGoods($skuId);
abstract public function bindGoods($goods);
abstract public function incrQuantity($skuId);
2022-08-09 10:34:36 +08:00
abstract public function downloadOrders($beginTime, $endTime, $activityNo = '', $downloadType = 'default');
2022-08-06 16:38:04 +08:00
abstract public function saveOrders($orders);
public function authCallback($code, $shopId)
{
$this->setCode($code);
$this->setShop($shopId);
$this->auth();
return $this;
}
public function setShopWithId($shopId)
{
$this->shop = Shop::query()->find($shopId);
return $this;
}
public function setShop(Shop $shop)
{
$this->shop = $shop;
return $this;
}
public function getShop()
{
return $this->shop;
}
2022-08-08 15:05:17 +08:00
public function setCode($code)
{
$this->code = $code;
return $this;
}
2022-08-08 15:05:17 +08:00
public function getCode()
{
return $this->code;
}
2022-08-08 15:05:17 +08:00
public function setSkuId($skuId)
{
$this->skuId = $skuId;
return $this;
}
public function getSkuId()
{
return $this->skuId;
}
public function formDataPostRequest($url, $params)
{
$headers = [
2022-08-08 15:05:17 +08:00
'headers' => ['Content-type' => 'application/x-www-form-urlencoded;charset=UTF-8'],
'form_params' => $params
];
2022-08-08 13:59:44 +08:00
$res = (new Client())->request('POST', $url, $headers);
$res = json_decode($res->getBody()->getContents(), true);
$disableLogType = [
'pdd.ktt.goods.query.list',
'pdd.ktt.order.list',
'pdd.ktt.increment.order.query'
];
2022-08-09 10:34:36 +08:00
$log = new Log();
$log->module = 'plat';
$log->action = 'POST';
$log->target_type = $this->shop->plat_id;
$log->target_id = $this->skuId;
$log->target_field = $params['type'];
$log->user_id = 1;
if (!in_array($params['type'], $disableLogType, true)) {
$log->message = json_encode($res, 256);
}
2022-08-09 10:34:36 +08:00
$log->save();
2022-08-08 16:00:47 +08:00
if (isset($res['error_response'])) {
throw new \Exception($res['error_response']['error_msg'], $res['error_response']['error_code']);
}
return $res;
}
}