ExpressController.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace hd\controllers;
  3. use bizHd\express\classes\ExpressClass;
  4. use bizHd\express\classes\ExpressOrderClass;
  5. use bizHd\merchant\services\ExpressService;
  6. use bizHd\merchant\services\ShopService;
  7. use bizHd\order\classes\OrderClass;
  8. use bizHd\purchase\classes\PurchaseClass;
  9. use common\components\dict;
  10. use common\components\IntraCityExpress;
  11. use common\components\noticeUtil;
  12. use Yii;
  13. use common\components\util;
  14. use yii\db\Query;
  15. class ExpressController extends BaseController
  16. {
  17. public $guestAccess = ['get-has-map'];
  18. //获取采购单物流运单的轨迹 ssh 20250705
  19. public function actionGetCgExpressTrack()
  20. {
  21. $get = Yii::$app->request->get();
  22. $id = $get['id'] ?? 0;
  23. $cg = PurchaseClass::getById($id, true);
  24. if (empty($cg)) {
  25. util::fail('没有找到订单');
  26. }
  27. if ($cg->mainId != $this->mainId) {
  28. util::fail('不是你的订单');
  29. }
  30. $bizIdMap = dict::getDict('expressBizIdMap');
  31. if (getenv('YII_ENV') == 'production') {
  32. $bizId = $bizIdMap[$mainId] ?? 0;
  33. if (empty($bizId)) {
  34. util::fail('没有找到月结账号');
  35. }
  36. //暂时只支持顺丰
  37. $deliveryId = 'SF';
  38. } else {
  39. $deliveryId = 'TEST';
  40. $bizId = 'test_biz_id';
  41. }
  42. $params = [
  43. 'deliveryId' => $deliveryId,
  44. ];
  45. $respond = ExpressClass::getTrack($params, $cg);
  46. util::success($respond);
  47. }
  48. //计算客户距离和运费 ssh 2020.5.14
  49. public function actionGetUserDistance()
  50. {
  51. //经度
  52. $lng = Yii::$app->request->get('lng', '');
  53. //纬度
  54. $lat = Yii::$app->request->get('lat', '');
  55. if (empty($lng) || empty($lat)) {
  56. util::fail('经度或纬度不能为空');
  57. }
  58. $shopId = ShopService::getDefaultShopId($this->sj);
  59. $respond = ExpressService::getUserDistance($lng, $lat, $shopId, $this->sjExtend);
  60. util::success($respond);
  61. }
  62. // 获取字典中的 hasMap
  63. public function actionGetHasMap()
  64. {
  65. util::success(['hasMap' => dict::getDict('hasMap')]);
  66. }
  67. // 配送详情
  68. public function actionDetail()
  69. {
  70. $post = Yii::$app->request->post();
  71. $orderId = intval($post['orderId']);
  72. $order = OrderClass::getById($orderId, false, 'id, mainId, sendStatus');
  73. if ($order['mainId'] != $this->mainId) {
  74. util::fail('订单未找到');
  75. }
  76. // 检查是否存在重复的订单:如果存在,则使用最后一个订单的 store_order_id
  77. $storeOrderId = $orderId; // ------------------------------------- 注意区分:$storeOrderId , $orderId 。它们有可能不相同
  78. $query = (new Query())
  79. ->from('xhExpressOrder')
  80. ->where(['and',
  81. new \yii\db\Expression('storeOrderId LIKE CONCAT(:prefix, "%")', [':prefix' => $orderId]),
  82. ['mainId' => $this->mainId]
  83. ])->orderBy('addTime DESC');
  84. $esDatas = $query->all();
  85. $count = count($esDatas);
  86. $es = null;
  87. if ($count > 0) {
  88. $es = $esDatas[0];
  89. //$storeOrderId = $es['storeOrderId'];
  90. if ($count > 1) {
  91. //noticeUtil::push('一个订单有多个配送订单');
  92. }
  93. }
  94. if (!empty($es)) {
  95. util::success($es, "查询成功");
  96. } else {
  97. util::complete();
  98. }
  99. }
  100. }