Base.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace addons\shopro\library\express\provider;
  3. use addons\shopro\library\express\contract\ExpressInterface;
  4. use app\admin\model\shopro\order\Express;
  5. use app\admin\model\shopro\order\ExpressLog;
  6. use app\admin\model\shopro\order\Aftersale;
  7. use app\admin\model\shopro\order\AftersaleExpressLog;
  8. class Base implements ExpressInterface
  9. {
  10. public function __construct()
  11. {
  12. }
  13. /**
  14. * 快递查询
  15. *
  16. * @param array $data
  17. * @param mixed $order_express_id
  18. * @return array
  19. */
  20. public function search(array $data, $orderExpress = 0)
  21. {
  22. return null;
  23. }
  24. /**
  25. * 物流信息订阅
  26. *
  27. * @param array $data
  28. * @return void
  29. */
  30. public function subscribe(array $data)
  31. {
  32. error_stop('当前快递驱动不支持物流信息订阅');
  33. }
  34. /**
  35. * 物流信息推送
  36. *
  37. * @param array $data
  38. * @return array
  39. */
  40. public function push(array $data)
  41. {
  42. error_stop('当前快递驱动不支持接受推送');
  43. }
  44. /**
  45. * 电子面单
  46. *
  47. * @param array $data
  48. * @param array $items
  49. * @return array
  50. */
  51. public function eOrder(array $data, $items)
  52. {
  53. error_stop('当前快递驱动不支持电子面单');
  54. }
  55. /**
  56. * 更新包裹信息
  57. *
  58. * @param array $data
  59. * @param mixed $orderExpress
  60. * @return array
  61. */
  62. protected function updateExpress(array $data, $orderExpress)
  63. {
  64. // 更新包裹状态
  65. if (is_numeric($orderExpress)) {
  66. $orderExpress = Express::find($orderExpress);
  67. }
  68. if ($orderExpress) {
  69. $orderExpress->status = $data['status'];
  70. $orderExpress->save();
  71. $this->syncTraces($data['traces'], $orderExpress);
  72. }
  73. }
  74. /**
  75. * 更新物流信息
  76. *
  77. * @param array $traces
  78. * @param mixed $orderExpress
  79. * @return void
  80. */
  81. protected function syncTraces($traces, $orderExpress)
  82. {
  83. // 查询现有轨迹记录
  84. $orderExpressLog = ExpressLog::where('order_express_id', $orderExpress->id)->select();
  85. $log_count = count($orderExpressLog);
  86. if ($log_count > 0) {
  87. // 移除已经存在的记录
  88. array_splice($traces, 0, $log_count);
  89. }
  90. // 增加包裹记录
  91. foreach ($traces as $k => $trace) {
  92. $orderExpressLog = new ExpressLog();
  93. $orderExpressLog->user_id = $orderExpress['user_id'];
  94. $orderExpressLog->order_id = $orderExpress['order_id'];
  95. $orderExpressLog->order_express_id = $orderExpress['id'];
  96. $orderExpressLog->content = $trace['content'];
  97. $orderExpressLog->change_date = $trace['change_date'];
  98. $orderExpressLog->status = $trace['status'];
  99. $orderExpressLog->save();
  100. }
  101. }
  102. }