ExpressService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace crmeb\services;
  3. use crmeb\services\express\Express;
  4. class ExpressService
  5. {
  6. protected static $api = [
  7. 'query' => 'https://wuliu.market.alicloudapi.com/kdi'
  8. ];
  9. protected static $express = [];
  10. /**
  11. * @param string $type
  12. * @return Express|mixed
  13. */
  14. public static function init($type = 'express')
  15. {
  16. if (isset(self::$express['express_' . $type])) {
  17. return self::$express['express_' . $type];
  18. }
  19. $config = [];
  20. $config['account'] = sys_config('sms_account', '');
  21. $config['secret'] = sys_config('sms_token', '');
  22. return self::$express['express_' . $type] = new Express($type, $config);
  23. }
  24. public static function expressList()
  25. {
  26. $key = md5('crmeb_plat_express_list');
  27. $express = CacheService::get($key);
  28. if (!$express) {
  29. $expressInit = self::init();
  30. try {
  31. $express = $expressInit->express(1, 1, 100);
  32. $express = $express['data'] ?? [];
  33. CacheService::set($key, $express, 86400);
  34. } catch (\Throwable $e) {
  35. $express = [];
  36. }
  37. }
  38. return $express;
  39. }
  40. public static function query($no, $com = '')
  41. {
  42. $expressInit = self::init();
  43. $express = self::expressList();
  44. $code = '';
  45. if ($express) {
  46. $express = array_combine(array_column($express, 'name'), $express);
  47. $code = $express[$com]['code'] ?? '';
  48. }
  49. try {
  50. if ($code) {
  51. $data = $expressInit->query($code, $no);
  52. $result['status'] = 0;
  53. $result['msg'] = 'ok';
  54. $result['result'] = [
  55. 'number' => $data['num'],
  56. 'type' => $data['com'],
  57. 'list' => $data['content']
  58. ];
  59. } else {
  60. $result = self::oldquery($no);
  61. }
  62. } catch (\Throwable $e) {
  63. $result = [];
  64. }
  65. return $result;
  66. }
  67. public static function oldquery($no, $type = '')
  68. {
  69. $appCode = sys_config('system_express_app_code');
  70. if (!$appCode) return false;
  71. $res = HttpService::getRequest(self::$api['query'], compact('no', 'type'), ['Authorization:APPCODE ' . $appCode]);
  72. $result = json_decode($res, true) ?: false;
  73. return $result;
  74. }
  75. }