85 lines
3.3 KiB
PHP
85 lines
3.3 KiB
PHP
<?php
|
|
namespace app\model\express;
|
|
use app\model\system\Config as ConfigModel;
|
|
use app\model\BaseModel;
|
|
class KdZhuShou extends BaseModel
|
|
{
|
|
|
|
public function setKdZSConfig($data, $is_use, $site_id)
|
|
{
|
|
if ($is_use > 0) {
|
|
event("CloseTrace", ['site_id' => $site_id]);
|
|
}
|
|
$config = new ConfigModel();
|
|
$res = $config->setConfig($data, '快递设置', $is_use, [['app_module', '=', 'shop'], ["site_id", "=", $site_id], ['config_key', '=', 'EXPRESS_KDZHUSHOU_CONFIG']]);
|
|
return $res;
|
|
}
|
|
|
|
public function getKdZSConfig($site_id)
|
|
{
|
|
$config = new ConfigModel();
|
|
$res = $config->getConfig([['app_module', '=', 'shop'], ["site_id", "=", $site_id], ['config_key', '=', 'EXPRESS_KDZHUSHOU_CONFIG']]);
|
|
if (empty($res['data']['value']['status'])) {
|
|
$res['data']['value']['status'] = 0;
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 开关状态
|
|
* @param $is_use
|
|
* @return array
|
|
*/
|
|
public function modifyStatus($is_use, $site_id)
|
|
{
|
|
$config = new ConfigModel();
|
|
$res = $config->modifyConfigIsUse($is_use, [['app_module', '=', 'shop'], ['site_id', '=', $site_id], ['config_key', '=', 'EXPRESS_KDZHUSHOU_CONFIG']]);
|
|
return $res;
|
|
}
|
|
/*********************************************************************** 快递100 end ***********************************************************************/
|
|
|
|
/**
|
|
* 查询物流轨迹 并且转化为兼容数据结构
|
|
* @param $code
|
|
* @param $express_no
|
|
* @return array
|
|
*/
|
|
public function trace($express_no, $code, $site_id, $mobile)
|
|
{
|
|
$config_result = $this->getKdZSConfig($site_id);
|
|
$config = $config_result['data'];
|
|
if ($config['is_use'] == 0) return $this->error();
|
|
$data = [
|
|
'kdzhushou_Key' => $config['value']['Key'],
|
|
'kdzhushou_Secret' => $config['value']['Secret'],
|
|
];
|
|
$kd100_extend = new \extend\Kdzhushou($data);
|
|
$result = $kd100_extend->search($express_no, $code, $mobile);
|
|
if (isset($result['success']) && $result['success']) {
|
|
$logisticsTrace = $result['logisticsTrace']??[];
|
|
$logisticsTraceDetailList = $logisticsTrace['logisticsTraceDetailList']??[];
|
|
$lists = [];
|
|
if ($logisticsTraceDetailList) {
|
|
foreach ($logisticsTraceDetailList as $k => $v) {
|
|
$lists[] = array(
|
|
"datetime" => date('Y-m-d H:i:s', $v["time"] / 1000),
|
|
"remark" => $v["desc"],
|
|
);
|
|
}
|
|
}
|
|
$res = [
|
|
'success' => $result['success'],
|
|
'reason' => !empty($result['Reason']) ? $result['Reason'] : '',
|
|
'status' => !empty($result['State']) ? $result['State'] : '',
|
|
'status_name' => $logisticsTrace['logisticsStatusDesc']??'',
|
|
'shipper_code' => !empty($result['cpCode']) ? $result['cpCode'] : '',
|
|
'logistic_code' => !empty($result['LogisticCode']) ? $result['LogisticCode'] : '',
|
|
'list' => $lists
|
|
];
|
|
return $this->success($res);
|
|
} else {
|
|
$result['reason'] = $result['msg'] ?? $result['message'];
|
|
return $this->error($result, $result['reason']);
|
|
}
|
|
}
|
|
} |