| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- <?php
- /**
- * Created by PhpStorm.
- * User: wniu
- * Date: 2021/10/8
- * Time: 3:29 下午
- */
- namespace common\models\logistics;
- use addons\Logistics\common\service\ApiService;
- use common\enums\ExpressEnum;
- use common\helpers\ExpressBirdHelper;
- use common\models\common\MallSetting;
- use common\models\order\OrderExpressLog;
- use Flex\Express\Exceptions\HttpException;
- use Flex\Express\Exceptions\InvalidArgumentException;
- use yii\helpers\Json;
- class LogisticsSearch extends \common\models\base\BaseActiveRecord
- {
- const request_type_pay = 8001;
- const request_type_no_pay = 8001; // 不再提供免费版 现在仅提供7天的试用版 试用版和付费版的请求指令类型一样
- public $mobile; // 手机号,用于顺丰查信息
- public $express;
- public $request_type;
- public $express_no;
- public $express_code;//物流编码
- public $customer_name;//京东物流特殊要求字段,商家编码
- public function rules()
- {
- return [
- [['customer_name', 'mobile', 'express', 'express_code'], 'string'],
- [['express_no'], 'required'],
- ];
- }
- /**
- *
- * 快递鸟
- * User: wniu
- * Date: 2021/10/9
- * Time: 10:11 上午
- * *
- * @param $params
- * @param $express_account
- * @throws HttpException
- * @throws InvalidArgumentException
- */
- public static function getExpressBird($params, $express_account)
- {
- try {
- $express = new ExpressBirdHelper($express_account['kdniao_mch_id'], $express_account['kdniao_api_key']);
- if (empty($params['express_no'])) {
- return false;
- }
- if (empty($params['express_code'])) {
- return false;
- }
- $request_type = self::request_type_no_pay;
- if ($express_account['kdniao_request_type'] == ExpressEnum::EXPRESS_PAY) {
- $request_type = self::request_type_pay;
- }
- $list = $express->track($params['express_no'], $params['express_code'], '', $params['customer_name'], $params['id'], $request_type);
- $list = (Json::decode($list, true));
- if (isset($list['Success']) && $list['Success'] == true) {//成功
- $params['express_status'] = $list['State'];
- if ($list['State'] == ExpressEnum::EXPRESS_ALREADY_SIGN) {
- $params['table_express_status'] = ExpressEnum::TABLE_EXPRESS_SUCCESS;
- }
- $params['list'] = Json::encode($list);
- }
- return $params;
- } catch (\Exception $e) {
- self::setStaticError('物流更新任务处理出错:' . $e->getMessage());
- return false;
- }
- }
- /**
- * 阿里云
- * @param array $params
- * @return array|false
- */
- public static function getExpressAliyun(array $params)
- {
- try {
- $service = (new ApiService());
- $res = $service->getLogistics($params);
- if (!$res) throw new \Exception($service->getError());
- if (is_string($res)) throw new \Exception($res);
- $res['Traces'] = $res['list'] ?? [];
- if (!empty($res['Traces'])) {
- foreach ($res['Traces'] as &$item) {
- $item['AcceptStation'] = $item['status'];
- $item['AcceptTime'] = $item['time'];
- }
- }
- return [
- 'list' => Json::encode($res),
- 'id' => $params['id'],
- 'express_status' => $res['deliverystatus'] ?? 1,
- 'table_express_status' => ($res['issign'] ?? 0) == 1 ? ExpressEnum::TABLE_EXPRESS_SUCCESS : ExpressEnum::TABLE_EXPRESS_WAIT,
- ];
- } catch (\Exception $e) {
- self::setStaticError('物流更新任务处理出错:' . $e->getMessage());
- return false;
- }
- }
- }
|