jh-admin/app/model/express/KdZhuShou.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']);
}
}
}