JDDeliveryService.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?php
  2. namespace App\Services;
  3. use App\OracleDocOrderDeliveryInfo;
  4. use App\OracleDOCOrderHeader;
  5. use App\OwnerLogisticPrintTemplate;
  6. use App\Services\Interfaces\DeliveryInterface;
  7. use App\Traits\DeliveryProcess;
  8. use App\Traits\DrawImage;
  9. use Illuminate\Database\Query\Builder;
  10. use Illuminate\Support\Str;
  11. class JDDeliveryService implements DeliveryInterface
  12. {
  13. use DeliveryProcess;
  14. function getDeliveryInfo($logistic_number): array
  15. {
  16. $oracleDocOrderHeaders = OracleDOCOrderHeader::query()
  17. ->with('oracleBASCustomer','oracleDOCWaveDetail')
  18. ->whereIn('deliveryno',$logistic_number)
  19. ->whereIn('consigneeId',['JD','BSZX','BSZFC','BSZXDF','BSZFCDF'])
  20. ->get();
  21. return $oracleDocOrderHeaders->map(function ($item){
  22. return [
  23. 'type' => 'JD',
  24. 'is_process' => true,
  25. 'task_id' => Str::uuid(),
  26. 'data' => '',
  27. 'component_type' => 'JD',
  28. 'owner_code' => $item->customerid ?? '',
  29. 'logistic_code' => $item->userdefine1 ?? '',
  30. 'logistic_number' => $item['deliveryno'],
  31. 'delivery' => null,
  32. 'base64' => $this->getBase64($item),
  33. ];
  34. })->toArray();
  35. }
  36. public function getBase64($item): string
  37. {
  38. $printTemplate = OwnerLogisticPrintTemplate::query()->with('printTemplate')->where('owner_id', function(Builder $query)use($item){
  39. $query->from("owners")->selectRaw('id')->where("code",$item['customerid']);
  40. })->where('logistic_id', function(Builder $query)use($item){
  41. $query->from("logistics")->selectRaw('id')->where("code",$item['userdefine1']);
  42. })->first();
  43. $delivery = $this->getDelivery($item);
  44. $image = $this->draw($delivery,$printTemplate->printTemplate ?? null,null);
  45. if (!$image) return '';
  46. $path = '';
  47. $this->saveImage($image,$path);
  48. return $this->readImageBase64($path);
  49. }
  50. /*
  51. * 订单号
  52. * 波次号
  53. * 运单号
  54. * 店铺
  55. * 商家联系号
  56. * 商家订单号
  57. * 发货地址,省,市区
  58. *
  59. * 发货分拣中心
  60. * 发货人
  61. * 发货人号码
  62. * 收货地址
  63. * 收货分拣中心
  64. * 收件人
  65. * 商品
  66. * 备注
  67. *
  68. */
  69. function getDelivery($item): array
  70. {
  71. $delivery = $this->getDocOrderInfo($item);
  72. $delivery['b_addresss1'] = $item['MJ-ZP'];
  73. $delivery['d_addresss1'] = $item['BB-Y3-21'];
  74. return $delivery;
  75. }
  76. function processing(&$params)
  77. {
  78. return null;
  79. }
  80. }