ExpressDelivery.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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 addon\electronicsheet\model\ExpressElectronicsheet;
  12. use app\model\member\Member;
  13. use app\model\BaseModel;
  14. /**
  15. * 物流配送
  16. */
  17. class ExpressDelivery extends BaseModel
  18. {
  19. /**
  20. * 物流配送
  21. */
  22. public function delivery($param)
  23. {
  24. $order_id = $param[ 'order_id' ] ?? 0;//订单id
  25. $order_goods_id_array = $param[ 'order_goods_id_array' ];
  26. $goods_id_array = $param[ 'goods_id_array' ];
  27. $delivery_type = $param[ 'delivery_type' ];//物流方式 1 物流配送 0 无需物流
  28. $delivery_no = $param[ 'delivery_no' ] ?? '';//物流单号
  29. $member_id = $param[ 'member_id' ];
  30. $site_id = $param[ 'site_id' ];
  31. $member_model = new Member();
  32. $member_info_result = $member_model->getMemberInfo([ [ 'member_id', '=', $member_id ] ], 'nickname');
  33. $member_info = $member_info_result[ 'data' ];
  34. if ($param[ 'type' ] == 'manual') {
  35. $express_company_id = $param[ 'express_company_id' ] ?? 0;
  36. $express_company_name = '';
  37. if ($express_company_id > 0) {
  38. $express_company_info = model('express_company')->getInfo([ [ 'company_id', '=', $express_company_id ] ], 'company_name');
  39. $express_company_name = $express_company_info[ 'company_name' ];
  40. }
  41. $template_id = 0;
  42. $template_name = '';
  43. //查询物流单号是否已存在,如果存在就合并入已存在的数据(手动发货才会合并)
  44. $condition = array (
  45. [ 'site_id', '=', $site_id ],
  46. [ 'delivery_no', '=', $delivery_no ],
  47. [ 'order_id', '=', $order_id ],
  48. [ 'delivery_type', '=', $delivery_type ],
  49. [ 'express_company_id', '=', $express_company_id ],
  50. [ 'member_id', '=', $member_id ]
  51. );
  52. $info = model('express_delivery_package')->getInfo($condition, '*');
  53. if (!empty($info)) {
  54. $temp_order_goods_id_arr = explode(',', $info[ 'order_goods_id_array' ]);
  55. $temp_goods_id_arr = explode(',', $info[ 'goods_id_array' ]);
  56. $order_goods_id_array = implode(',', array_unique(array_merge($temp_order_goods_id_arr, $order_goods_id_array)));
  57. $goods_id_array = implode(',', array_merge($temp_goods_id_arr, $goods_id_array));
  58. $data = array (
  59. 'order_goods_id_array' => $order_goods_id_array,
  60. 'goods_id_array' => $goods_id_array,
  61. );
  62. $result = model('express_delivery_package')->update($data, $condition);
  63. return $this->success($result);
  64. }
  65. } else {
  66. $delivery_type = 1;
  67. //获取模板信息
  68. $template_model = new ExpressElectronicsheet();
  69. $template_info = $template_model->getExpressElectronicsheetInfo(
  70. [
  71. [ 'id', '=', $param[ 'template_id' ] ],
  72. [ 'site_id', '=', $site_id ]
  73. ],
  74. 'template_name,company_id,company_name'
  75. );
  76. $template_id = $param[ 'template_id' ];
  77. $template_name = $template_info[ 'data' ][ 'template_name' ];
  78. $express_company_id = $template_info[ 'data' ][ 'company_id' ];
  79. $express_company_name = $template_info[ 'data' ][ 'company_name' ];
  80. }
  81. if ($delivery_type > 0) {
  82. $count = model('express_delivery_package')->getCount([ [ 'site_id', '=', $site_id ], [ 'order_id', '=', $order_id ], [ 'delivery_type', '=', $delivery_type ] ]);
  83. $num = $count + 1;
  84. $package_name = '包裹' . $num;
  85. } else {
  86. $package_name = '无需物流';
  87. }
  88. $express_company_info = model('express_company_template')->getInfo([ [ 'company_id', '=', $express_company_id ] ], 'logo');
  89. $express_company_image = empty($express_company_info) ? '' : $express_company_info[ 'logo' ];
  90. $data = array (
  91. 'order_id' => $order_id,
  92. 'order_goods_id_array' => implode(',', $order_goods_id_array),
  93. 'goods_id_array' => implode(',', $goods_id_array),
  94. 'delivery_no' => $delivery_no,
  95. 'site_id' => $site_id,
  96. 'member_id' => $member_id,
  97. 'member_name' => $member_info[ 'nickname' ] ?? '',
  98. 'delivery_type' => $delivery_type,
  99. 'express_company_id' => $express_company_id,
  100. 'express_company_name' => $express_company_name,
  101. 'package_name' => $package_name,
  102. 'delivery_time' => time(),
  103. 'express_company_image' => $express_company_image,
  104. 'type' => $param[ 'type' ],
  105. 'template_id' => $template_id,
  106. 'template_name' => $template_name
  107. );
  108. $result = model('express_delivery_package')->add($data);
  109. return $result;
  110. }
  111. }