LogisticsSearch.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: wniu
  5. * Date: 2021/10/8
  6. * Time: 3:29 下午
  7. */
  8. namespace common\models\logistics;
  9. use addons\Logistics\common\service\ApiService;
  10. use common\enums\ExpressEnum;
  11. use common\helpers\ExpressBirdHelper;
  12. use common\models\common\MallSetting;
  13. use common\models\order\OrderExpressLog;
  14. use Flex\Express\Exceptions\HttpException;
  15. use Flex\Express\Exceptions\InvalidArgumentException;
  16. use yii\helpers\Json;
  17. class LogisticsSearch extends \common\models\base\BaseActiveRecord
  18. {
  19. const request_type_pay = 8001;
  20. const request_type_no_pay = 8001; // 不再提供免费版 现在仅提供7天的试用版 试用版和付费版的请求指令类型一样
  21. public $mobile; // 手机号,用于顺丰查信息
  22. public $express;
  23. public $request_type;
  24. public $express_no;
  25. public $express_code;//物流编码
  26. public $customer_name;//京东物流特殊要求字段,商家编码
  27. public function rules()
  28. {
  29. return [
  30. [['customer_name', 'mobile', 'express', 'express_code'], 'string'],
  31. [['express_no'], 'required'],
  32. ];
  33. }
  34. /**
  35. *
  36. * 快递鸟
  37. * User: wniu
  38. * Date: 2021/10/9
  39. * Time: 10:11 上午
  40. * *
  41. * @param $params
  42. * @param $express_account
  43. * @throws HttpException
  44. * @throws InvalidArgumentException
  45. */
  46. public static function getExpressBird($params, $express_account)
  47. {
  48. try {
  49. $express = new ExpressBirdHelper($express_account['kdniao_mch_id'], $express_account['kdniao_api_key']);
  50. if (empty($params['express_no'])) {
  51. return false;
  52. }
  53. if (empty($params['express_code'])) {
  54. return false;
  55. }
  56. $request_type = self::request_type_no_pay;
  57. if ($express_account['kdniao_request_type'] == ExpressEnum::EXPRESS_PAY) {
  58. $request_type = self::request_type_pay;
  59. }
  60. $list = $express->track($params['express_no'], $params['express_code'], '', $params['customer_name'], $params['id'], $request_type);
  61. $list = (Json::decode($list, true));
  62. if (isset($list['Success']) && $list['Success'] == true) {//成功
  63. $params['express_status'] = $list['State'];
  64. if ($list['State'] == ExpressEnum::EXPRESS_ALREADY_SIGN) {
  65. $params['table_express_status'] = ExpressEnum::TABLE_EXPRESS_SUCCESS;
  66. }
  67. $params['list'] = Json::encode($list);
  68. }
  69. return $params;
  70. } catch (\Exception $e) {
  71. self::setStaticError('物流更新任务处理出错:' . $e->getMessage());
  72. return false;
  73. }
  74. }
  75. /**
  76. * 阿里云
  77. * @param array $params
  78. * @return array|false
  79. */
  80. public static function getExpressAliyun(array $params)
  81. {
  82. try {
  83. $service = (new ApiService());
  84. $res = $service->getLogistics($params);
  85. if (!$res) throw new \Exception($service->getError());
  86. if (is_string($res)) throw new \Exception($res);
  87. $res['Traces'] = $res['list'] ?? [];
  88. if (!empty($res['Traces'])) {
  89. foreach ($res['Traces'] as &$item) {
  90. $item['AcceptStation'] = $item['status'];
  91. $item['AcceptTime'] = $item['time'];
  92. }
  93. }
  94. return [
  95. 'list' => Json::encode($res),
  96. 'id' => $params['id'],
  97. 'express_status' => $res['deliverystatus'] ?? 1,
  98. 'table_express_status' => ($res['issign'] ?? 0) == 1 ? ExpressEnum::TABLE_EXPRESS_SUCCESS : ExpressEnum::TABLE_EXPRESS_WAIT,
  99. ];
  100. } catch (\Exception $e) {
  101. self::setStaticError('物流更新任务处理出错:' . $e->getMessage());
  102. return false;
  103. }
  104. }
  105. }