ExpressPackage.php 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\model\express;
  11. use app\model\BaseModel;
  12. use app\model\order\OrderCommon;
  13. /**
  14. * 物流配送
  15. */
  16. class ExpressPackage extends BaseModel
  17. {
  18. /**
  19. * 修改物流单号和物流公司
  20. * @param $data
  21. * @return array
  22. */
  23. public function editOrderExpressDeliveryPackage($data)
  24. {
  25. $order_common_model = new OrderCommon();
  26. //订单状态
  27. $order_status = model('order')->getValue([ [ 'site_id', '=', $data[ 'site_id' ] ], [ 'order_id', '=', $data[ 'order_id' ] ] ], 'order_status');
  28. if (empty($order_status)) {
  29. return $this->error('', '订单不存在');
  30. }
  31. if (!in_array($order_status, [ $order_common_model::ORDER_PAY, $order_common_model::ORDER_DELIVERY ])) {
  32. return $this->error('', '订单已收货或已完成');
  33. }
  34. //包裹信息
  35. $package_count = model('express_delivery_package')->getCount(
  36. [
  37. [ 'site_id', '=', $data[ 'site_id' ] ], [ 'order_id', '=', $data[ 'order_id' ] ], [ 'id', '=', $data[ 'package_id' ] ]
  38. ]
  39. );
  40. if ($package_count == 0) {
  41. return $this->error('', '包裹信息不存在');
  42. }
  43. model('express_delivery_package')->startTrans();
  44. try {
  45. if ($data[ 'delivery_type' ] == 0) {
  46. $data[ 'express_company_id' ] = 0;
  47. $data[ 'delivery_no' ] = '';
  48. $express_company_name = '';
  49. $express_company_image = '';
  50. } else {
  51. if ($data[ 'express_company_id' ] == '') {
  52. return $this->error('', '物流公司不能为空');
  53. }
  54. if ($data[ 'delivery_no' ] == '') {
  55. return $this->error('', '物流单号不能为空');
  56. }
  57. //获取物流公司名称
  58. $express_company_info = model('express_company_template')->getInfo([ [ 'company_id', '=', $data[ 'express_company_id' ] ] ], 'company_name,logo');
  59. $express_company_name = $express_company_info[ 'company_name' ];
  60. $express_company_image = $express_company_info[ 'logo' ];
  61. }
  62. $condition = [
  63. [ 'site_id', '=', $data[ 'site_id' ] ], [ 'order_id', '=', $data[ 'order_id' ] ], [ 'id', '=', $data[ 'package_id' ] ]
  64. ];
  65. model('express_delivery_package')->update(
  66. [
  67. 'delivery_type' => $data[ 'delivery_type' ],
  68. 'express_company_id' => $data[ 'express_company_id' ],
  69. 'express_company_name' => $express_company_name,
  70. 'delivery_no' => $data[ 'delivery_no' ],
  71. 'express_company_image' => $express_company_image
  72. ], $condition
  73. );
  74. model('express_delivery_package')->commit();
  75. return $this->success();
  76. } catch (\Exception $e) {
  77. model('express_delivery_package')->rollback();
  78. return $this->error('', $e->getMessage());
  79. }
  80. }
  81. /**
  82. * 获取物流包裹列表
  83. * @param $condition
  84. * @param string $field
  85. */
  86. public function getExpressDeliveryPackageList($condition, $field = '*')
  87. {
  88. $list = model('express_delivery_package')->getList($condition, $field);
  89. return $this->success($list);
  90. }
  91. /**
  92. * 获取包裹信息
  93. * @param $condition
  94. */
  95. public function package($condition, $mobile = '')
  96. {
  97. $list_result = $this->getExpressDeliveryPackageList($condition);
  98. $list = $list_result[ 'data' ];
  99. $trace_model = new Trace();
  100. foreach ($list as $k => $v) {
  101. $temp_array = explode(',', $v[ 'goods_id_array' ]);
  102. if (!empty($temp_array)) {
  103. foreach ($temp_array as $temp_k => $temp_v) {
  104. $temp_str = str_replace('http://', 'http//', $temp_v);
  105. $temp_str = str_replace('https://', 'https//', $temp_str);
  106. $temp_item = explode(':', $temp_str);
  107. $sku_image = str_replace('https//', 'https://', $temp_item[ '3' ]);
  108. $sku_image = str_replace('http//', 'http://', $sku_image);
  109. $list[ $k ][ 'goods_list' ][] = [ 'sku_name' => $temp_item[ '2' ], 'num' => $temp_item[ '1' ], 'sku_image' => $sku_image, 'sku_id' => $temp_item[ '0' ] ];
  110. }
  111. }
  112. $trace_list = $trace_model->trace($v[ 'delivery_no' ], $v[ 'express_company_id' ], $v[ 'site_id' ], $mobile);
  113. $list[ $k ][ 'trace' ] = $trace_list[ 'data' ];
  114. }
  115. return $list;
  116. }
  117. /**
  118. * 获取订单分页列表
  119. * @param array $condition
  120. * @param number $page
  121. * @param string $page_size
  122. * @param string $order
  123. * @param string $field
  124. */
  125. public function getExpressDeliveryPackagePageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*')
  126. {
  127. $order_list = model('order')->pageList($condition, $field, $order, $page, $page_size);
  128. if (!empty($order_list[ 'list' ])) {
  129. foreach ($order_list[ 'list' ] as $k => $v) {
  130. $order_goods_list = model('order_goods')->getList([
  131. 'order_id' => $v[ 'order_id' ]
  132. ]);
  133. foreach ($order_goods_list as $ck => $cv) {
  134. $order_goods_list[ $ck ][ 'num' ] = numberFormat($order_goods_list[ $ck ][ 'num' ]);
  135. }
  136. $order_list[ 'list' ][ $k ][ 'order_goods' ] = $order_goods_list;
  137. }
  138. }
  139. return $this->success($order_list);
  140. }
  141. }